不由自主地成为程序员:如何正确地做?[关闭]


21

我的背景是电气工程,更精确地说是DSP。我目前工作的公司从事许多不同的项目,主要用于构建模拟硬件。与这里的其他人相比,我离计算机更近一些,我通常是同时为嵌入式设备(我非常满意)和Windows或Linux OS编写代码的人。在我看来,后者是外国领土。

我可以编码,并且我知道几种语言(C / C ++,Java,某些VB.NET),但是我仅将它们用于信号和图像处理,神经网络以及其他类似应用程序中的算法仿真。对我而言,编程已成为一种计算工具,比什么都重要。但是,我有越来越多的项目需要编写适当的功能完善的软件,而且我真的不知道该怎么做,因为我从未必须做过,而且我也从未真正感兴趣。我自己看到有很多工程师由于工作需要而在一定程度上转换为编码器,而大多数工程师的工作并不那么出色。我敢肯定,很多人也遇到过同样的情况。

如果我要学习编写具有良好用户界面,良好内部架构等的合适软件,我该怎么做?我们没有人可以告诉我什么是好的做法,什么不是什么。鉴于我可以用最原始的方式编写代码,那么关于编写好的软件还有什么要知道的,以及如何独自实现?


如果您告诉我们您使用的语言,我们也许可以为您提供更深入的答案。再者,那将否定通用答案的意义。
Sardathrion-恢复莫妮卡2011年

2
如果没有正式的培训或没有直接的指导工作经验,那么Right Way™的做事将是不现实的。你在学习。计算机科学和工程学与电气工程学有所不同是有原因的。一家理智的公司将聘请软件工程师来编写应用程序界面,应用程序驱动程序甚至固件,因为他们想要质量,并希望正确完成并保持其可维护性。我会向您的老板解释,您的工作超出了您的专业领域,这些任务最好留给软件工程师处理。
maple_shaft

4
...我也想补充一点,我认为您的情况不像您在标题中所说的那样“非自愿”。您说自己,您的同龄人甚至都不知道如何使用计算机,但是您还被要求自愿成为软件工程师吗?这似乎不公平。我赞扬您具有编写易用的软件的能力,以及您渴望以正确的方式学习和做事的愿望,但是,向老板和自己承认有些事情不在您的能力范围内,这并不可耻。如果他们真的想让您担任这个职位,请他们花一些时间为您培训。
maple_shaft

@maple_shaft我同意您所说的大多数话;但是,我从未说过我的同龄人不怎么使用计算机。他们都不是可以让我满意的软件工程师,但他们都非常精通计算机。我不必编写代码,我喜欢学习新事物,而且我真的没有问题。
声子

6
@Phonon太好了,这是一种很好的态度,但是请确保您的公司为您购买书籍,培训课程,并给您时间来学习他们是否希望您扮演这样的角色。这就是我要说的。因此,许多公司会说服您自己购买这些东西是您的责任,以此来欺骗您。
maple_shaft

Answers:


11

有几本书对您有很大帮助。我建议始终在您旁边完成代码。这是一个宝贵的参考。在我以前工作的一家公司中,这本书也是一本我们被录用后送给所有初级程序员的书。

实用程序员也是一个非常有用的资源,它很短,但是我建议您在代码完成之后阅读。

这些书会让您入门,然后编写代码,代码,更多代码和代码...但是知道何时停止,您的软件将永远不是完美的。


6

我的公司一直在这样做……这让我发疯。

“我是软件开发人员,如何成为EE?”

好吧,我认为答案很明显。这需要很多时间和辛苦的工作。当然,还有正确的学习材料。工程背景有所帮助,在我的大学中,计算机科学与工程学校位于同一栋建筑物中,彼此重叠。算法和数学基础就在那里。

我看到大多数新手犯的一个错误是,咬东西的方式比他们咀嚼的要多。跨UI,体系结构,质量代码学习材料...这有很多基础。确实需要花费数年的时间,并且通常由软件公司的不同专家组成的团队来完成。

并不是说,如果花时间的话,就不能靠自己过得去。刚认识的材料的大小,这样你就不会压倒自己,要么A.退出或B.通过在学习过程中采取重大的快捷方式构建重大技术债务到你的应用程序。

由于所有这些,本书就不存在成为一个很棒的开发人员的“包罗万象”的开发了。我建议您首先从使用最常用的语言精选一本好评的书开始,并同时参加Stack社区,尤其是进行代码审查。

试试Amazon.com,他们的书评很好。


3

书籍:最主要的是阅读有关您选择的语言的(好)书籍。知道选择的语言后,您将获得“ 更有效的 X”或“ Y最佳实践”等。我发现食谱非常擅长弥合您可能遇到的空白。因此,我想至少需要获得三本书。一件事:做练习和编写kata编码,以提高您对语言的理解。当然,您需要一个良好的xUnit模式。

算法非常重要,您应该选择一本详细介绍算法的书-同样,请使用您选择的语言。无论使用哪种语言,都应该了解设计模式反模式

底线:这需要时间。不着急。


+1,但要始终注意,只有一个规则没有例外:所有规则都有例外。
Jan Hudec

@JanHudec:您在这里想到哪一个?
Sardathrion-恢复莫妮卡2011年

3

你很烂的编码。是。

但是-这并不意味着您不能交付软件,这会使人们感到高兴;)

要谦虚。“业务”逻辑,即所需要的。将库代码用于其他所有内容。不要尝试编写基本算法(例如数组排序),不要使用任何“花哨的技巧”,而要遵循一些严苛的代码惯例。

使用良好的IDE。这是必不可少的,因为它将帮助您格式化代码并跟踪输入错误/简单错误。

阅读诸如“ Code Complete ”和“ Pragmatic Programmer ”之类的书籍,尝试强迫自己并学习OOP(它简单易行,将帮助您使代码更易于维护)。

使用SVN,请经常提交,-这样您就可以还原所做的更改(当您破坏某些内容时)。

如果可能的话,一个真正的程序员,有学术背景。这样您就可以与他交谈,分享您的新手问题,并获得启发性的答案。

当然,最重要的是还要保持编码,编码,编码


ps:如果您能够编写有效的C ++代码,并且编写了神经网络(!)-那么您的大脑非常适合编程;)祝您好运!


2

这里有很好的答案。

您想知道的一个简单事实是对您有利的一个大笑话。

许多软件工程(当然,您应该对健康持怀疑态度)应该以如何以后不会后悔的方式来做。一个示例是使用源代码版本控制系统。另一个方法是将代码分成文件,这样可以更轻松地进行零碎工作。另一个是要坚持秩序性 -代码格式和命名约定。确切的约定与其保持一致无关紧要。

这样,当您在一年或一年以上的时间回到代码时,您将不会想到“是谁造成了这种混乱?”。您将能够找到东西并进行更改,而不会造成太大的损坏风险。**

入门的一个好方法是找到各种示例程序并通过它们进行工作。然后,您可以根据需要调整它们。

**我最头疼的问题之一就是尝试使用那些认为格式或命名不重要的人编写的代码。


1

尽管有很多关于如何做和不做事情的好资源,但是最重要的是,看到大量的代码并使用它们,并了解维护自己的难易程度。

学习的一种好方法是让某人有经验进行初始设计,而不是检查您的代码并向您展示有用的技术。因此,如果您设法说服您的老板聘请至少一位在领导(小型)软件项目和设计软件方面具有经验的软件工程师,那将是最好的选择。

如果您不能让任何人来找您,那么这些天就会有大量的开源活动。也许您在工作中使用了一些开源工具,所以请尝试修复其中的错误或添加您使用过的简单功能,并讨论如何与各自的社区一起做这些事情。学习如何应用您将在书中找到的有关实际实际问题的一般规则,是不切实际的动手学习练习。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.