在春节即将到来之际,我谨代表公益编程操练社区bjdp.org恭祝各位匠友在马年里:读更好的经典书籍、做更多的编程操练、悟更高的开发之道!
土豪会把纸币放进红包挂到门外馈赠亲友,我这个老匠友会把我大学毕业21年来所积累的编程经验放进这条微信赠予有缘人。
我想赠予您的经验总结起来其实就一条:只要手艺好,就能吃一辈子编程饭。
有匠友可能会问:“吃一辈子编程饭不大可能吧?现在写代码的大部分都是20多岁刚毕业的。30多岁还继续写代码的可是不多了。”
我今年43岁,还在写代码。21年前的北工大计算机专业的64位同届同系同学,如今像我一样还在写代码的人也就剩下5人左右。
有人会说:“既然是这样,那您怎么就敢说吃一辈子编程饭呢?”
我认为要想吃一辈子编程饭,首先需要手艺好。大部分程序员做不到40岁,我认为就是手艺不够好。
就好比做菜刀,中国人做的菜刀,质量很好的可以卖到50元一把;而德国人做的双立人菜刀,质量很好的可以卖到500元一把。手艺越好,价值越高。如果40岁的程序员的手艺和20多岁的少年差不多,就会CRUD,那么市场自然会选择要价更低的少年们。
当然,我现在40多岁还在编程,并不是说我手艺有多好。只是我认为我找到了一些提高编程手艺的方法,并且很乐意不断实践和改进这些方法,并与广大匠友分享。
那么,这些提高编程手艺的方法有哪些呢?
这些方法按照先后次序可以总结为3点:先戒贪、后专注、再悟道。
1)先戒贪
为什么提高手艺首先需要戒贪呢?原因很简单,因为一旦戒了贪欲,您就能腾出大量的时间来做提高手艺的事情。钱可以挣、可以借,但时间只能靠腾,即把不重要的事情的时间腾给重要的事情(如提高手艺)来用。您肯定知道“一万小时定律”,即精通任何一门技艺,您需要花一万小时刻意地操练。如果每天花3个小时来操练这门技艺,要达到一万小时,就需要10年。人能有几个10年呢?时间真的不多,浪费不起。
那么浪费国内程序员们时间的贪欲都有那些呢?我简单列了一下:
* 钱财:挣更多的钱
* 房产:住更大的房
* 权力:有更多的权
* 美色:把更多的妹(哥)
* 虚荣:拍更多的砖(在微博、QQ群、网上论坛里)、玩更多网游
上面每一项都会花费大量的时间,让您腾不出时间来提高手艺。要想提高手艺,首先务必戒除这些贪欲,切记。
如果您真的戒不掉上面列出的那些贪欲,也不用着急,可以一面继续追逐这些欲望,一面参考一下佛家的“贪嗔痴、戒定慧、色即空”的智慧。随着自己岁数增大,您总会有明白的那一天。
2)后专注
只要您相信“只要手艺好,就能吃一辈子编程饭”这一点,并且戒除了贪欲,腾出了时间后,您就可以把所有的注意力,都集中在“提高编程手艺”之上。好比放大镜放到阳光下,汇聚的光线会把下面的白纸烧穿一样。
具体到编程,您需要专注于:
* 刻意学习英文,多听多说,多读多写。编程的真经大多都是在国外用英语写就,就好比1400多年前的佛家真经大多都是在印度用梵文写就一样。要想和玄奘法师精通佛法一样做个精通编程的高手,也得需要像玄奘法师精通梵文一样地精通英文。要想即省钱又有效地掌握英文,我建议您去非营利教育机构“国际演讲会”去操练英语的听说读写,参见其官方网站:www.toastmasters.org。
* 多读英文原版的优秀技术书籍和文章,因为那是原汁原味的真经。以后我会推荐一些我读过的好的英文技术书。
* 持续、专注、刻意地操练您的编程手艺,可用通过多做编程操练(code katas)来达到,详情不妨参考bjdp.org的网站:www.bjdp.org
3)再悟道
在专注地提高您的编程手艺一段时间后,您才有可能,不断地把您的经验加以总结,并和其他高手进行分享、交流和碰撞,以求悟出真正的道。因为老子说“道可道,非常道。”所有我们说出的那些经验,其实离真正的“道”还有差距,您需要在戒贪和专注的基础上,不断地悟道、不断地调整。
具体到编程,您可以边做下面的事情,边悟道,边总结,边调整:
* 用编程操练题目练习设计模式。详情不妨参考bjdp.org的网站:www.bjdp.org
* 拥抱各种编程语言,不要鄙视某些语言,因为所有编程语言后面都有相同的“道”,比如设计模式。
* 测试先行地开发。
* 在代码中用有意义的命名(当然是英文命名)来替代注释。
* 要掌握重构的技术,因为一切整洁的代码都源自烂代码的不断重构。
* 使用静态代码扫描工具(如SonarQube)来检查代码质量,因为这样即快又好。
我们都很幸运,因为都处在互联网时代的发展期。在从今往后的100年里,人类的行为正在发生前所未有的大变革。而这些变革,都需要我们程序员来编写程序来完成。只要您手艺好,就能吃一辈子编程饭。要想提高手艺,您需要按顺序做到:先戒贪、后专注,再悟道。
上面我总结的大学毕业21年后的编程经验,适用于当前国内的程序员。如果您想参考一位国外程序员20年间所总结的编程经验(英文原版),顺带练练英文阅读,不妨点击这里:http://www.dcs-media.com/Archive/20-20-top-20-programming-lessons-ive-learned-in-20-years-FH#rd?sukey=5db858eea247330940805eb49c19b454dda340f99224bece458794e650a74fc523244e63642422cfdf92f3cc72b6d053