本文为良少原创文章,遵循 CC 4.0 BY-SA 版权协议
原文链接:https://blog.csdn.net/shendl/article/details/43835421
编程技能,指的程序员设计和编写程序的能力,这是程序员的根本。接下来我们将按段位讨论一下各段位程序员的特征。同学,对号入座一下,你现在在哪个段位啊?
0段--非程序员
初学编程者,遇到问题,完全是懵懵懂懂,不知道该怎么编程解决问题。也就是说,还是门外汉,还不能称之为“程序员”。计算机在他面前还是一个神秘的黑匣子。
1段--基础程序员。
学习过一段时间编程后,接到任务,可以编写程序完成任务。
编写出来的代码,正常情况下是能够工作的,但在实际运行中,碰到一些特殊条件就会出现各类BUG。也就是说,具备了开发Demo软件的能力,但开发的软件真正交付给客户使用,恐怕会被客户骂死
程序员程序是写好了,但到底为什么它有时能正常工作,有时又不行,程序员自己也不知道。
运行中遇到了bug,或者需求改变,需要修改代码或者添加代码,很快程序就变得结构混乱,代码膨胀,bug丛生。很快,就连最初的开发者自己也不愿意接手维护这个程序了。
2段--数据结构
经过一段时间的编程实践后,程序员会认识到“数据结构+算法=程序”这一古训的含义。他们会使用算法来解决问题。进而,他们会认识到,算法本质上是依附于数据结构的,好的数据结构一旦设计出来,那么好的算法也会应运而生。
设计错误的数据结构,不可能生长出好的算法。
3段--面向对象
再之后,程序员就会领略面向对象程序设计的强大威力。大多数现代编程语言都是支持面向对象的。
但并不是说,你使用面向对象编程语言编程,你用上了类,甚至继承了类,你就是在写面向对象的代码了。
我曾经见过很多用Java,Python,Ruby写的面向过程的代码。
只有你掌握了接口,掌握了多态,掌握了类和类,对象和对象之间的关系,你才真正掌握了面向对象编程技术。
就算你用的是传统的不支持面向对象的编程语言,只要你心中有“对象”,你依然可以开发出面向对象的程序。
4段--设计模式
曾经在网上看到这样一句话:“没有十万行代码量,就不要跟我谈什么设计模式”,深以为然。
记得第一次看Gof的设计模式那本书的时候,发现虽然以前并不知道设计模式,但在实际编程过程中,其实还是自觉使用了一些设计模式。
设计模式是编程的客观规律,不是谁发明的,而是一些早期的资深程序员首先发现的。
不用设计模式,你也可以写出满足需求的程序来。但是,一旦后续需求变化,那么你的程序没有足够的柔韧性,将难以为继。而真实的程序,交付客户后,一定会有进一步的需求反馈。而后续版本的开发,也一定会增加需求。这是程序员无法回避的现实。
5段--语言专家
经过一段时间的编程实践,程序员对某一种常用的编程语言已经相当精通了。有些人还成了“语言律师”,擅长向其他程序员讲解语言的用法和各种坑。
这一阶段的程序员,常常是自己所用语言的忠实信徒,常在社区和论坛上和其他语言的使用者争论哪一种语言是最好的编程语言。
他们认为自己所用的语言是世界上最好的编程语言,没有之一。
他们认为,自己所用的编程语言适用于所有场景。他们眼中,只有锤子,因此会把所有任务都当成是钉子。
6段--多语言专家
这一个阶段的程序员,因为工作关系,或者纯粹是因为对技术的兴趣,已经学习和掌握了好几种编程语言。已经领略了不同编程语言不同的设计思路,对每种语言的长处和短处有了更多的了解。
他们现在认为,编程语言并不是最重要的,编程语言不过是基本功而已。他们现在会根据不同的任务需求,或者不同的资源来选择不同的编程语言来解决问题,不再会因为没有使用某一种喜爱的编程语言开发而埋怨。
7段--架构设计
最后,还需要掌握架构设计的能力,才能设计出优秀的软件。
架构是一个博大精深的领域,也是很多程序员努力成长的方向,到达这一步已经不为具体环境所限,出于编程而超脱编程,从更宏观的角度看待程序。
同学,看你那么能打,你现在编程技能几段呢?欢迎留言讨论~
敬请期待下一篇文章《程序员练级指标-同学你领域知识几段啊?》
欢迎关注我的微信公众号:沉思的猿某人 ID:xiaomageshuo,及时获取最新分享