回顾我的职业生涯,从事编程工作将近5年。刚开始感觉很充实很快乐,因为总是有做不完的项目,总是接触新的技术,操作数据库,了解业务,一直想着可以做项目经理。当我做了项目经理之后,我反思我的职业,我的工作,我到底是做技术还是业务呢?如果是做技术,到底是数据库,还是写程序的Java开发人员,还是写页面的前端人员,但是我还需要为客户讲解系统,完成客户的个性化需求。
我觉得我可能什么都会,但是什么都不精通,让我很没有安全感,也没有成就感,所以我就下决心辞职,做个小转行,我选择了客户端开发(iOS)。自己在家自学带玩几个月,开始带着我做的小demo找工作。我的自我推销能力不是很强,没有认真分析自己的优势劣势,完全没有让前2年的工作经验作为我的助力,相反成了我的阻力。最后在一家创业公司以很低的工资留下,正事开始我的iOS职业生涯,在这家公司做了好几个项目,业余时间也看看书,了解下设计模式,以及有关Objective-C编程的关键点,工作上总有做不完的事情,但是一直好好工作,努力工作就能成为优秀的程序猿吗?我开始反问自己如何成为优秀的程序员,除了勤奋,可能更多的是需要方法和技巧,这都是我以前所忽略的,感觉自己总是一直往前冲,很少去总结,复习,这是我的致命问题。所以我开始去寻找,我把对我很有启发的观点摘抄记录下来:
1. 学会看代码
大多数程序员都只愿意用自己写的代码,但高手一般可以轻易调用别人写的代码。表面看上去是工作习惯不同, 但实际上是能力上的差别。看代码要比写代码难很多倍。
我建议上班时多给队友们作code review,下班后试着阅读github上的开源代码。
2. 复习
程序员一般都很忙, 手上有永远也做不完的活儿。但在某些公司里, 你只是在反复做同样的事。偶尔放下手上的活儿,留下一部分时间来分析自己的弱点,更改坏习惯,看新书, 或学习新语言。
3. 做个人项目
工作中的编程一般只能让你熟悉一部分技术, 导致漏洞的形成。这就好像你长期一个人在自己后院练习投篮, 但第一次打比赛才(在惨败中)发些原来还需要传球, 防守, 强篮板这些概念。
Facebook喜欢雇佣所谓的 “full stack programmer”,就是一个人从设计,到交互,到html, css,javascript, server,sql, 架构,和数据统计都能做。成为full stack programmer最好的方式就是不断做个人项目。
4. 问问题和回答问题都是很好的学习方式。
有的时候写出一个好问题, 比写出解答次问题所需要的代码还难。写问题可以帮你整理自己的思维逻辑。你可以试着每周在[http://stackoverflow.com**](https://link.zhihu.com/?target=http%3A//stackoverflow.com)上问一个好问题或写一个好答案。
5. 加入一个好团队
最好的进步方式就是跟比自己强的人一起做事。高手都愿意聚在一起,所以很多会选择去优秀的早期创业公司。