这是我后来才认识到的事,其实应该很早就去做。如果你是跟我类似的情况,你应该尽早开通一个博客——尽管还不知道该写什么。注册一个域名,买一个空 间。你会惊奇的发现有很多可写的东西。你可以记录下你成为一名程序员的过程,或写一下你感兴趣的技术方面的东西。我一直以为没什么好写的,可当真正思考这 些问题时,却发现有很多值得写的。最重要的事情是开始去做。
开发什么并不重要。选一种编程语言,任何一种都行,开始干。你不必去花大量的时间来决定应该使用什么语言。直接开始学一种语言,事实上最重要的是学 习编程语言的基础知识,而不是劳神费力的去选择一种“最好的编程语言”。我选择的是PHP。因为它是一种被广泛使用的语言,在网上有大量的学习范例,我已 经通过搭建一个WordPress网站而熟练的掌握了它。没有丝毫的遗憾。它使我学到了很多基础知识。我还学习了其它语言吗?当然,我后来涉猎了很多脚本 语言,我要在下一个项目上试试Ruby。编程语言不断的在变化,不要只盯着一个不放。
我已经在Bitbucket上有了一个代码库。我最初选择注册Bitbucket是因为它能提供5个免费的私有库。后来我决定在GitHub上注册。事实上,我丝毫没有拖延,看看我的成果吧。
我早该如此做了。我起初低估了做这种事情的重要性,说老实话,我现在仍需要进一步重视。向开源项目捐赠代码,这是一种很好的学习别人如何编程的方法,并且能把自己的代码公开。我今晚的就要去列一个准备去参与的开源项目的清单。
这也是我需要改进的方面。我应该到stackoverflow网站上去回答更多的问题,在一些博客,科技网站上分享自己的东西。去那些网站,让大家看到你。不在网上露面,就相当于待在屋里不出门却想找一份做巴黎导游的工作。
很明显,每一个有志向的程序员都应该每天阅读Hacker News和其它开发/科技/编程类的博客文章。我打听到了不少的技术讨论会。这周末我准备去参加一个。我会把那里的情况写出来。
我在这里并没有提读书。我喜欢阅读,但我们没有买任何的关于web开发的书籍。这是我个人的做法。我相信很多人都会建议首先买一本书看看。找一些能和你讨论你的web开发/技术/编程想法的人和群体。如果我做了更多的第5项,我可能找到了更多的这样的人。
好了,这就是我要说的。这些就是在过去的一年里我成为一个程序员的成长之路上做到事情。如果有人觉得在这个清单里我还应该加入什么,请给我留言。我永远都希望听到新的观点。
1. 永远不要停止学习和阅读
阅读 书籍,而不只是网站
阅读 只为自我提升,而不是为了下一个项目
阅读 提升你的基础,而不只是最新技术
2. 跟比你聪明的人一起工作
跟比你更聪明的人或者是更有经验的人一起工作,可以让你快速提升
3. 变成一个全才
不要过于钻牛角尖,这可能会让你停滞不前和伤害你的就业前景。
4. 阅读并记录别人的代码
其实写代码比阅读并理解别人的代码要容易的多。
5. 在实际的项目中获取编程经验
只有在真实的项目中,各种压力下、真实善变的客户、不断变化的需求下,才能不断提升你的技能。
6. 教授别人编程技巧
这个可以强迫自己去理解不同水平的人的情况,而且你必须耐心的帮他们解释清楚,这对你本身而言也是一种提高。
7. 每年学习一种新的编程语言
用一年时间来学习一种新的编程语言,已经足够让你对它的基础了解透彻,同时你可以理解不同语言之间的风格。
8. 每年完成一个有意思的项目
每年做一个有意思的项目,不一定有什么用途,但一定是很有意思,让你非常有兴趣把它做得很棒。
9. 学习汇编语言
学习像汇编这样的低级语言可以让你了解计算机是如何工作的。
10. 与你的应用的客户交流获取信息
与最终用户交流可以知道他们的想法,他们是如何使用软件的,最终用户多数不是开发者,他们看到的是软件是一件神奇的工作,而你看到的软件是一套合乎逻辑的步骤。
11. 锻炼身体
身体是革命的本钱,只有好身体才能有好的工作、学习状态。
12. 练习快速打字
快速的键盘输入可以让编程工作更加高效。
via internetsecuritydb
第三篇:程序员如何保持优秀
1. 小范围的选择一些有用技术,透彻的学习它们,拥抱它们。然后不断的扩展这个范围。
2. 理解各种数据结构的优点和缺点,包括它们在内存中和在硬盘上的各自表现。
3. 理解各种算法的优点和缺点。
4. 了解你的工作领域。关上电脑,去做你的用户们在做的事。
5. 有准备,有愿望,有能力在任何时候投入到多种技术层面中。你必须知道表象下的技术原理。在“各个技术层面的掌握程度”和“编程能力”上有着密切的联系。
6. 发挥你的想象力。永远都要问,“有更好的方法吗?”跳出常规思维约束。最好的解决方案也许还没有被发现。
7. 优秀程序员:我优化代码。更优秀程序员:我设计数据。最优秀程序员:他们的不同之处是什么?
8. 正确的构造你的数据。任何的缺陷都将造成你的代码里无尽的技术债务。
9. 正确的命名事物。使用“动词-形容词-名词”格式来命名程序和函数。变量名要足够长,尽量短,有意义。如果其他程序员不能够理解你的代码,说明你写的不够清楚。在大多数情况下,针对下一个程序员而编码要比针对环境而编码重要的多。
10. 把分析和编程分离开做。它们不是同类的事物,需要不同类型的劳力资源,需要在完全不同的时间和地点分开做。如果同时做它们,你一样都做不好。(我喜欢在一天的末尾做不涉及技术的分析,而在第二天早上进行编程。)
11. 永远不要图省事走近道。永远不要把相同的代码部署两次。永远不要把一个变量命名成另一个变量名的一部分。也许你不明白这些规则,也许你要辩解。但如果你是 遵守着这样做的,这些规则就会约束你正确的构造你的程序。图省事的做法是让那些低等级的程序员永远停留在低等级的原因。
12. 学习如何测评程序性能。你会惊奇的发现从中能学到很多之外的知识。
13. 学会区别对待问题细节和问题后果。问题细节不会导致太大的差别,而问题后果能导致世界灭亡。只关注后果。
14. 密切关注你的用户/客户/管理人员。帮助他们认清楚他们的“what”,这比帮助他们明白他们的“how”要重要的多。
15. 写一个框架,不论你是否打算用它。你将从中学到从其它途径中学不到的东西。
16. 把你知道的东西教给他人——通过口口交流或通过写作。最终这将成为教育自己的机会。
17. 永远要对你的客户/用户说“Yes”,即使在你不确定的情况下。90%的情况下,你会最终找到方法实现它。10%的机会,你将会去向他们道歉。这是重要的个人成长中付出的一点小代价。
18. 寻找别人的做出神奇的事情但却一滩糊涂的代码。重构它。然后丢掉它,并发誓自己永远不要犯他们犯下的相同错误。(这样的程序你会发现很多。)
19. 数据永远 > 理论或观点。通过开发东西来学习数据。
20. 有可能的话,开创自己的业务(服务或产品)。你将从中学到很多你做雇员永远学不到的关于编程的知识。
[本文英文原文链接:How to be an Excellent Programmer for Many Years ]