2015年即将过去,最近在回顾和总结过去一年的工作经历,发现自己并不能算是一名合格的程序员。
Google某前员工Lucida在文章《白板编程访谈——Why,What,How》当中写道:
程序员可以被分为两种:
先确认前条件/不变式/终止条件/边界条件,然后写出正确的代码
先编写代码,然后通过各种用例/测试/调试对程序进行调整,最后得到似乎正确的代码
我个人保守估计前者开发效率至少是后者的10倍,因为前者不需要浪费大量时间在编码-调试-编码这个极其耗时的循环上。
很不幸的是,我觉得自己应该被归类到第二种程序员。
LeetCode上的题目大多看起来都比较简单,比起大学时候那些ACM大神刷的各大学校OJ都要容易得多。但是,如果要求在限定的时间内,写出一次AC(Accepted)答案就已经难度不小。在这种情况下,还能够做到代码尽量简洁优雅的人就更少了。
相比起国内各大著名高校的OJ,为什么我更推荐程序员们选择LeetCode OJ呢?原因有两点:
第一,大学OJ上的题目一般都是为ACM选手做准备的,难度大,属于竞技范畴;LeetCode的题相对简单,更为实用,更适合以后从事开发等岗位的程序员们。
第二,LeetCode非常流行,用户的量级几乎要比其他OJ高出将近三到五个级别。大量的活跃用户,将会为我们提供数不清的经验交流和可供参考的GitHub源代码。
刷LeetCode不是为了学会某些牛逼的算法,也不是为了突破某道难题而可能获得的智趣上的快感。学习和练习正确的思考方法,锻炼考虑各种条件的能力,在代码实现前就已经尽可能避免大多数常见错误带来的bug,养成简洁代码的审美习惯。
以上,才是每个LeetCoder所应该要追求的东西。
(转发随意,转载请注明作者与博客园原地址)
(我的个人微信公众号:scut_xiaoy,搜索ID或扫描下方二维码添加关注,关注程序员自身成长和互联网时代下的新变化)