达到中间编程状态


32

我是一名软件工程师,曾在VBA中担任过职位编程(尽管我不敢考虑那种“真实的”经验,因为那是反复试验!),带有CGI,Perl的CGI,C#和ASP.NET。后两个是本科生,我进入了“现实世界”。我大学毕业了2年,并且在我提到的所有语言上有5年(总计)的经验。但是,谈到我的简历,我只能将C#放下两年,而将ASP.NET放下不到一年。

我觉得我知道 C#,但是我仍然必须花时间去研究“此方法的作用是什么?”,而一些更高级的工程师可以立即说:“哦,方法X可以做到这一点,而无需考虑它方法之前。” 因此,我凭经验知道那里有一个鸿沟,但我不确定如何弥合它。我已经开始在Euler项目中进行编程,并且读了一本关于设计模式的书,但是我仍然觉得我每天都在花很多时间而不是继续前进。

这并不是说我没有进步的感觉,这只是意味着,就我每天来而言,我仍然可以看到远处的山顶。

我的问题是:您如何克服这个高原?你花了多长时间?您可以建议采用什么方法来协助我?

我已经阅读了《 Code Complete》,《The Manthical Man Month》和《CLR》第二版的CLR,我的问题是:我现在该怎么办?


编辑:我刚刚中级程序员的项目中发现了这个问题。我认为这增加了讨论的范围(尽管并不能取代我的问题)。因此,我将其添加到问题中作为“更多信息”。


2
我最近一直在和欧拉计画一起玩,它只涵盖了相当有限的技术范围。通过备注或动态编程对功能进行优化都很好,但是它不能帮助您编写GUI或Web应用程序。困难的问题被设计为困难的数学,而不是困难的编码。

有趣的是,所有这些:我没有反对的意思,它的目的不是帮助您学习基本数据类型,结构和某些优化技术以外的语言,如果像我一样,您更喜欢将解决方案放在下面尽可能0.1s。

@Gortok,我同意您可以执行许多特定的操作来增强技能,但这当然取决于您执行哪种编程。例如,Windows开发人员需要与嵌入式设备程序员不同的技能。我认为所提出的问题实际上太广泛了,无法得到一个好的答案。
内森·费尔曼

1
我从2岁起就开始编程。我未能成为世界顶级程序员,但现在我讨厌自己的生活。我希望我的目标是成为世界顶级色情明星。

您不觉得自己在前进,因为直觉告诉您学术实践和商业(现实世界)实践之间存在差距。而且您的直觉是正确的。学术实践都是关于小型独立问题和练习的。企业正在修复错误或将功能/网页等添加到庞然大物(通常)。学术实践是递归。业务就是可读性和可维护性。学术实践是数学和计算机科学知识。业务是人的技能,与编码一样,也是需求分析。本来可以作为答案,但Q已关闭。
布拉德·托马斯

Answers:


41

恭喜你!

根据您的描述,您中级开发人员。

此阶段将持续大约3-8年,具体取决于您是否愿意在当前问题之外学习。

为了加快该过程,请阅读,浏览,博客,参加用户组会议,寻找导师,进行独立研究,编写附带项目代码,并使自己沉迷于新技术中。这样可以节省一两年的时间。

否则,您可能会失去编程的生活;-)

认真地,保持最新和自省,但不时关闭#%$ @事物

附录:出门时,记得穿裤子。


17
并提防引用托尔金,那是一个很难打破的霍比特人
史蒂文·A·洛

1
劳(Lowe)先生,表现很好。
kemiller2002

1
认真地说,在编程之外生活。一:生活比代码更重要。第二:可以从其他学科中学到很多东西。
kemiller2002

1
+1-做得很好。没有什么能代替练习(或良好的幽默感)。

15

上山的最好方法之一是为自己写点东西,因为你愿意。最好的程序员对“您在业余时间编写的最有趣的程序”这个问题有很好的答案。如果您没有在业余时间编写任何代码,那么您就不会足够地热爱自己的技巧以使其变得更好。


8
我不喜欢这种理论,人们有全职工作,然后还有其他责任。假设那些没有附带项目的人不喜欢编程或不是优秀的程序员是没有责任的。作为公认的答案,在编程之外生活。

10
我不同意-最好的程序员就像最好的作家:从字面上看,他们不能阻止自己去做自己最擅长的事情。
诺曼·拉姆齐

2
他们也许无法阻止自己,但生活可以并且出于某些意愿。
香农遣散费

@ShannonSeverance,对于许多人而言,不仅如此
Pacerier,2015年

9

您必须经历幼体阶段。

尽管我现在在Windows上的VB.NET中进行编程,但是我还是以汇编语言为主要语言在Linux x86上经历了幼虫阶段。

一时间,您必须专注于手工艺品,直到您掌握了手工艺品。所谓的高级程序员的本能是真正的学习行为。这是一种共同的文化。程序员必须像机器一样彼此思考。

绵羊变得像Shepards,而Shepards像绵羊,但是世界上都没有那么长。有了[trees]和[Ents],它变得更快,更近,并且它们一起走了很久。-托尔金

知道和了解。最大的技能不是与特定语言绑定的技能,而是几乎可以应用于任何一种语言。了解概念,在问题和语言中寻找它们,并在必要时准备发明新事物。

这就是通往伟大的道路。


2
它以某种方式涉及奇才吗?我脑海中的照片涉及奇异鸟。

2
大声笑“这不容易因为俗气!”
gnovice

幼虫期还是幼虫期?;)
布拉德·托马斯

9

我从8岁起就开始编程……圣诞节前夕我将33岁。我仍然看到远处的那座山。不管您走多远,总会有更多的东西要学习。

掌握范式,弄清楚当前正在使用的语言是如何实现这些范式的。编程是一生的经验,总是需要学习更多。这就是乐趣,无论您多么精通,总会有更多。

我发现学习平常不会学到的新东西的一种方法是,在这里和人们问问题的其他编程论坛(如Bytes和Experts Exchange)上花费时间。如果您可以回答问题,请继续进行,如果不能,请尝试找出如何自己完成任务的方法,OP不仅会感谢您的努力和帮助,还会学到新的知识。

我发现通过帮助其他人找到我还不知道的事情的答案,我比仅仅通过编程每天做的事情来学习更多。


9

中级编程状态意味着您已经摆脱了代码猴子“更快键入”的思维方式,而进入了想要构建真正的系统作为职业的领域。这是一项重大的专业变革,坦率地说,这与技术技能无关。在中级(也称为“开发人员”)级别上工作需要非常先进的人员技能。

您可能会想到以下症状:

  1. 您会在线上参与编辑大战吗?如果是这样,则可能表明您比其他人想了解对方的观点更愿意争论舒适区域内的细节。
  2. 您认为语言是完全不同的东西吗?C#和Java都将自己的平台和资源带到了桌面,但它们都是可计算性的有效模型。您能否以足够快的速度学习新的语言和平台,以赚取工作报酬?
  3. 您是否仍将软件任务视为打字?如果您在工作中得到任务,为什么呢?此代码将用于什么?它属于什么系统?这些信息可以极大地改变您建议的解决方案。
  4. 你有没有离开知道它,所有你的生活背后的阶段?您是在听团队的其他成员,还是只是想考虑下一个要说的事情?
  5. 您是否已经意识到“拉一个通宵达人”来产生一个有问题的最后一刻解决方案已经不再令人印象深刻了?在开始的八个小时之后,您可以轻松地想象其余时间仅用于键入错误。

我能想到的最好的总结是,中级程序员(或“开发人员”)已经学会了在八个工作小时内提高工作效率,这样他们就可以下地狱,在工作之外度过一生。

如果您设法找到配偶并繁殖,则可获得奖励积分。


8

您现在正在做的事情很棒,但是如果您想以不可思议的速度加快进度,可以做另外两件事:

1)“教”-一种简单的方法是创建博客,并尝试定期(也许每周)贡献一些有用的东西。着眼于您最近学到的东西,或者您还不知道的东西。这意味着您将迫使自己去研究,理解和重新解释。

顺便说一句,您可以非常容易地注册一个SingingEels帐户,您可以在该帐户上获得有关现有开发社区的免费博客。

2)写很多小程序-每周大约1个。您可以将其与以上内容结合使用...或只是为了好玩。作为一个年轻的开发人员,我只是在.NET框架中随机选择(我不是在开玩笑)命名空间。在那儿,选择一个您从未见过/从未使用过的类,并制作一个使用它的小程序。


8

尝试

阅读更多书籍 从亚马逊上挑选那些大标题并阅读。例如,Code Complete的作者写了一本很棒的软件工程书-Rapid Software Development,买一本并阅读。

学习其他编程语言 值得学习的脚本语言如python / ruby​​。或也许是一种功能编程语言:)这可能会改变您的编程思想。您可能知道,某些GOF模式对于此类语言不是必需的。

加入社区 人们可以通过倾听他人的声音并发表演讲来交流思想。


4

寻找聪明的程序员并向他们学习。模仿他们。注意他们所做的事情与您所做的事情不同。

贵公司是否进行代码审查?那是最好的学习方法之一。您可能会对更高级的程序员提出的建议以及他们在编码时的想法感到惊讶。


3

如何参与其他正在进行的开源项目,以便至少您的工作对某人有价值,并且您可以学习并与其他从事实际工作的高级开发人员互动。

这样至少您就不会受限于要学习的知识或想要从事的项目类型。而且它已经是您正在使用的免费工具,您可以为自己的实际改进感到自豪,这让您感到自豪。

您的简历也很好地显示了它。:)

因此,如果那仍然给您带来一些闲暇时间,为什么不保留一个博客记录您的学习,经验和其他内容。谁知道,您可能会成为软件或编码恐怖方面的下一个角色:p


-1

要成为一名C#开发人员,请阅读以下两项。请注意,这些书的重点更多地放在语言(C#)而不是框架(.NET)上。

  1. Essential C#:链接适用于最新版本。我实际上阅读了前一篇(C#4.0),但我认为更新越好。本书也有一些基本的内容,但请耐心阅读该书的封面。
  2. 深度的C#:链接仍然是最新版本,它将在10-15天内发布。我只是略读了本书,但是读过它的同事对此非常重视。

你已经看过了 通过C# CLR,否则这可能是任何人对C#开发人员的第三条建议。

这些也应该使您成为更好的开发人员:框架设计指南有效使用旧版代码


关心解释为什么要投票?
阿西姆·哈法尔
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.