伊始--浅谈C++程序员进阶历程(一)

来源:互联网 发布:java double类型比较 编辑:程序博客网 时间:2024/06/11 16:00

最近看了一篇《回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议》,心中有一些感触。


在看这篇文章前几周,还挺迷茫的。不知不觉也工作了很久,虽然在上班期间,每天或多或少地都在写代码,但是很多都是仅仅增加熟练度,或者说是将别人现有的算法套进来,造轮子,只不过把轮子改造成自己的风格罢了,本质上代码差别并不大,并不会有多少出彩的地方。

一个有经验的程序员在实现基本功能后,就需要进行性能的改善,最后是对软件的优化,这是逐层递进的。在这些逐步完成的过程中,对程序进行重构,有时就显得极其必要,关于重构的好处,是不言而喻的,在重构后的代码至少看起来不会比重构前恶心,之所以用恶心这个词,是觉得当一个程序越写越大,也就越写越乱的时候,自己看起来都很难进行调整和改动,尤其是很长时间才回顾的时候,很可能自己都忘记当初为什么这么写,而对代码的重构,则可以相对避免这个问题。

程序员的发展路线,目前我的理解是:
初级程序员–中级程序员–高级程序员–系统分析师–架构设计师–专家

1. 初级程序员

这种层次的是最普遍的,基本上懂得计算机的基本操作,了解计算机专业的一些基础知识,掌握一门基本的编程语言如C/C++,Java,php等等,会编写一些简单的程序。一般来说,就达到这一层次的水平了。

大部分计算机专业出来的或者培训学校出来,以及一些自学的基本就可以达到这个水平。作为程序员初入职场,都是新人,这种层次的程序员一般进企业后,都会学习并熟悉公司常用的开发技术,设计的工具和框架,熟悉公司的开发流程规范,并且慢慢形成自己的代码风格。

2. 中级程序员

初级程序员进阶到中级程序员比较简单,主要在独立性方面,初级程序员面对一个稍微大型一点,复杂一点的程序就会不知所措,不知如何下手,而中级程序员一般能够独立承担开发工作,实现基本功能方面,不是很大的问题。

以C/C++程序员为例,中级程序员一般可以做到以下方面:熟练掌握C/C++编程语言,掌握C标准库,熟悉常用的数据结构算法,掌握STL的基本实现和使用方法,掌握多线程编程方法,熟悉socket网络编程,会一些简单的测试方法。

3. 高级程序员

高级程序员相对来说,就需要有一定的工作经验,已经能独立负责某个小项目或者大项目里的子系统或者某一个模块,在实现功能的基础上,更注重性能和优化工作。在程序的维护性和拓展性是中级程序员不可比拟的。

这一层次的程序员非常熟悉软件工程的流程,熟练使用面向对象的设计知识,熟悉设计模式并可以比较自如地使用合适的设计模式,并且对软件有质量控制的意识,对于操作系统都有个比较清晰的认识。

以C++程序员为例,高级程序员需要了解C++编译器的原理和实现机制,了解操作系统中的内部机制如内存管理、进程和线程的管理机制,了解处理器的基础知识和代码优化的方法,此外还需要更深入地学习更多的数据结构与算法,掌握更深入的测试和调试知识以及质量管理和控制方法,对各种设计方法有更好的理解等。

4. 系统分析师

步入这一层,需要理解分析的就比较多了,已经不满足于能实现系统功能,试图在分析系统上进行对系统的改进。

系统分析师需要了解软件架构设计、交互设计、面向方面的设计、面向使用的设计、面向数据结构算法的设计、情感化设计等,并且需要去学习各种经验和技巧,会在各大专业论坛里求经,学习一些知名的开源项目的源代码实现。

5. 架构设计师

架构设计师不管在广度和深度,都在特定领域具备了相当的积累。除了自身专业知识、技能和实践经验的积累,还能够从中总结沉淀出有效的方法论,引导和组织团队成员一起进行推广应用。积极主动的输出自身经验,为跨团队项目提供技术支持。

6. 专家

能混到专家的就不用多说了,一个字,牛。简单来说,就是在计算机方面,在其涉及的领域内,你完成不了, 他可以完成,你可以完成的,他完成得比你好,他接手的任务或许都可以成为业界标杆。

简单来说,层次不同,境界不同,在沉淀中一步步成长进步,是可以一点点进阶的。共勉!

1 0