最近,经历了一系列代码吐槽事件之后,结合公司大佬的观点之后,大体上对于程序员的编码 level 有一个更好的认识。所以,我决定写一篇文章,以此来划分不同的程序员。我知道为别人打标签是不对的,政治上是不正确的,但是我不会明着对你说的。每个人在自己心里都有的一杆秤。
注意:这篇文章所针对的并不是程序员相关的编程技能,而只是单纯指码代码本身。算法好的人,不一定写出好代码;架构好的人,不一定能写出可读的代码……。
我都是从新手程序员过来的,所以,倒也不是想说明什么。只是呢,如果还是精进的话,我们还可以一起多加练习。也借此,输出一份我所知道的程序员的分界线。它也不是一份“标准”,只是我所以为的以为。
倘若打击到你,也不必忧伤。除了成为专业 的程序员之外,你还有其它的诸多选择,成为一个技术管理者、项目经理等,成为一个多面手。又或者是去送送外卖、滴滴司机,过着普通的生活,也不错。生活为你打开一扇门时,也会为你关上一扇门。
况且,到了这某一把年纪,你也还不好写代码,也挺不容易的。也是时候重新做做职业规则了。
如果你还是想和我一样继续写代码,那么这篇文章的剩下部分,倒是颇为适合你的。
起先,我是打算写一个相关的维度,后来想了想,这样一来有些复杂,就算了。于是乎,我就写一个简单的 Level 表吧。
书单:《30 天入门 xxx》
任何一个傻瓜都可以写出计算机可以理解的代码,唯有写出人类容易理解的代码,才是优秀的程序员。 ——Martin Fowler 《重构》
性能好不好不重要,人能不能读不重要,可以赚钱就行了。
使用工具是智力的标志,会用工具是聪明的标志。
书单:《鸟哥的 Linux 私房菜》、《提问的智慧》
从物种进行的角度来说,会使用工具是一种智力标志。而选择和使用合适的工具,则是智慧的表现——前提是你有合适的工具。
但是,你不会使用高效的工具,也不会意味着,你就不会高效地写代码。
一个 60 分的程序员,应该能按时写出能符合需求的代码。
这里的按时的是指在合理估算的情况下,如果本身估算不合理的话,那怎么都不能按时。
书单:《七周七语言》(名字好而已)
也总有人不进行错误处理,不考虑正常的编程的异常条件——极端条件除外,毕竟大部分的开发人员都不是专业的测试。也只有经历过一些 bug 的风风雨雨,才会尽可能地、考虑尽可能多地极端条件。
可以代码,即能放心地把活交给一个人,在代码质量上又不会出现问题。
书单:《Head First设计模式》、《编写可读代码的艺术》、《代码整洁之道》、《重构: 改善既有代码的设计》
我觉得吧,大部分程序员都在 Level 1 和 level 2 间徘徊。主要是韭菜一批又一批的,代码写得好的就升官发财了,写得不好的还在继续写。能一心写好代码的人,真心不多。
关于设计模式,我并不是设计模式的偏执狂,只是呢,模式是一种通用语言,用来快速来与别人交流。毕竟,模式与原则是专门给智商不够的人类设计的。
作为一条新的分界线,这里的你应该是懂得什么是好的代码,还能在日常的工作中写出好的代码。与此同时,你具备把不算太烂的代码,重构到易于阅读的代码。
书单:《测试驱动开发》、《重构与模式》
在这个项目里,我们在定义什叫会写代码,为了不打击到大家。我还是把这个层级放低一点,所以当我们说会写代码的时候,说的是:能写好代码。
书单:《领域特定语言》、《Ruby 元编程》、《编程语言实现模式》、《编译原理》、《计算机程序的构造和解释》
嗯,大概就是这样。
我本来想说架构是其中的一部分,可是后来发现吧,有些事情,它能水到渠成。
可惜,我还不会。
对了,你还具备好的手速,才能实现好的代码。
围观我的Github Idea墙, 也许,你会遇到心仪的项目