一个老程序员的建议
当然,所有的这些话都是没有意义的。如果通过这本书,你喜欢上了编程,你应该尽你最大的努力,通过它来改善你的生活。去探索这神奇的精彩的智力活动,也只有近50年来的人有机会从事这种职业。如果你喜欢它,就尽情的热爱它吧。
最 后我要说的是,学习开发软件会改变你,让你与众不同。不论是好的不同还是坏的,反正是不同。你会发现,因为你会开发软件,人们会对你很冷淡,会用 “书呆子”这样的词形容你。你会发现,由于你善于剖析逻辑,人们痛恨跟你辩论。你甚至会发现,只是简单的懂一些计算机原理都会给你带来很多烦恼,让你跟他 们比起来怪怪的。
对于这些问题,我只有一点小建议:让他们去死吧。这世界需要更多的能知道事情如何工作、喜欢去探索的人。当他们这样对待你时,你要记住,这是你的生活,不是他们的。与众不同不是罪恶,人们这样对你只是出于嫉妒,嫉妒你拥有一项他们在梦中都无法拥有的技能。
计算机爱好者vs. 程序员
他们不是程序员,但他们是计算机爱好者。这个身份最终让他们受益匪浅!
很 多创业者认为自己跟那些会编码的人比起来处于一种劣势。他们认为自己不是计算机爱好者,因为不会编程。而事实却是,他们具有一种创造力上的优势, 因为他们不会急着一头扎进编码工作里。相反,他们会被迫去“修剪”他们的想法,用上层的工具和平台测试它们,会被限制不去关心细节。这将迫使他们关注于解决用户问题,而不是解决实现问题。
做软件不只是编码的技术。它是一种在事情不同的阶段关注每阶段最重要的事情、而不是过早的陷入细节的思维习惯。
两小时与四周时间在编程上的差别
结果有点让人吃惊。很多人更愿意参加短竞赛。但不管游戏是在2个小时里开发出来的,还是在4周内开发出来的,它们中优秀的部分的在水平上一样的。为什么?
-
4周的开发期并不意味着开发的时间是672或224小时。在一些极端的情况在,4周的竞赛跟2个小时的竞赛一样,也就是这4周的最后2个小时在起作用。
-
很多的游戏体现出来的实际是一个创意。事实上:你4周内想出来的创意未必就比10分钟内想出的好。
-
2小时竞赛的开发过程压力强度非常的大。大部分的时间都是用来改进核心功能(因为也没有其它的)。
-
另一方面,在长周期竞赛项目里,人们最初只是关注一些无关紧要的功能。一旦你开始琢磨着添加一个界面组件,把它做成一个内置的MP3播放器,或把界面弄的色彩斑斓,你的项目就开始失败了。
这也许是我们得到的最重要的教训。如果你需要很快的完成某项事情,代码可能会写的很差,但也会很短小、简练和灵活。如果没有时间的约束,程序的复杂度,功能项和缺陷率会上一个等级。给日后维护带来的工作量并不体现在现在。
一种境界
2.工作之余也经常编程
我抱怨过把开源作为招贤的一项要求,但那仅仅因为许多充满激情的程序员把时间花在别的地方。除了对开源有所贡献,你还可以做兼职顾问,兼职创业,开发自己的产品或者创办自己的微型软件公司。当然,你也可以尝试从外部接些兼职项目。
3.经历完整的软件开发过程,从概念设计到产品实现,再到产品维护
有的程序员希望不用自己动手就可以得到详细的设计说明,然后把缺陷代码交给测试/维护小组,这是平庸程序员的一个缩影。任何称职的程序员都会跟客户密切合作,去制定需求分析,然后编码实现,当然也要维护。如果你在编码实现阶段偷懒了,那你在维护阶段不得不付出代价。
4.不断创新
创新就是做一些你身边的人没有做过的事情,用来改善你的过程或产品。你不一定非得是世界上第一个做这件事的人,只要发现一个问题,找到解决方法然后实现它就行。
5.编写的软件能解决实际问题
有 一副虚构的场景:一名黑客,仅仅是出于对技术以及自己所做事情的爱,一天到晚都在编写代码。但这几乎无助于成就一名优秀的开发者。事实上,我曾见 过有些开发人员和客户争论,来采用更好但不太有助客户的技术。这会适得其反。你可以利用自己的时间来完善。但涉及工作时,你最好还是编写能实际改进并解决 问题的代码,而不是使用那些不同寻常的算法或接口。