当前位置:首页 > 后端开发 > 什么是程序员

什么是程序员

7个月前 (05-20)49

    对于前几天的一篇博文《好的程序员应该熟悉的几门编程语言》,有网友质疑我对程序员的定义,很可能是感觉我对程序员的定义超出了其想象,但事实上程序员的定义应该远远超乎其想象。这里说明一下我对程序员的理解,也没有绝对的对错,不同意见的朋友可以讨论,疏漏部分期待补充,欢迎交流沟通。

    在软件工程上“软件=程序+文档”,有些把数据也列为软件的一个要素,但我喜欢把数据当成程序的一部分,因为数据是用于记录计算机指令执行状态的。而且我认为,文档不仅仅是指软件的使用说明书、需求、设计等文档文件,还应该包括与软件相关的所有文字,包括代码注释,甚至源代码以及软件界面中显示的所有文字。而进行程序开发的人员都是程序员。

    记得有一篇文章将程序员分为十几个等级,分得比较细,每级之间可能就差一两年的差距,甚至更接近,但有些阶段或许需要一辈子去追求。我个人比较讨厌记数字,数字对于我来讲多了与没有是一样的,所以我不喜欢分那么多级别,我认为程序员只需要分为三个级别:编码人员、设计人员、架构人员。

    其中,编码人员负责对已有设计的编码实现。这个级别的程序员很可能就是很多人眼中的程序员,但其实这类的程序员准确地讲应该叫Coder,与“程序员(Programmer)”的概念是一个部分与全部的关系“,是一个具有包含关系的概念,而不是相等。该级别的程序员关注的是局部的实现以及代码的优化,不对系统的整体负责,这一级别的程序员超越该级别的一个条件就是达到编程实现时的语言的无关性——无论用什么语言,只要有了设计都可以对其进行实现,语言只是编码实施的工具而已。除了编码实现时需要使用的主要编程语言,可能还需要其它语言进行辅助开发,比如开发工具的自动化脚本、测试的自动化脚本、构建的自动化脚本、数据库查询语言等,所以才写了《好的程序员言熟悉的几门编程语言》。每一类语言都有它与其它类别的语言不同的编码方法、编码风格、实现思路、优化方法等,每一类语言都熟悉一种,一旦用到某一类语言就可以很快上手进行编码实现。这也是十几年来的心得,记忆比较深刻的最早一次就是在上大学时的一次微机原理实验课上,老师让编程来控制一个硬件电路板实现一个数字时钟,因为课下在另外一个实现室学习过Keil的C语言编程,所以用了没多长时间就使用C语言实现完了,然后交给老师看,结果老师说必须使用汇编,然后又用剩下的时间用汇编重写了一遍交了作业。虽然是一次实验课,但在工作中也经常会遇到类似的情况,从开始用MCS-51的汇编、C语言编程,后来用到CPLD、FPGA开始用VHDL编程,又感觉VHDL语言不够简洁,又改用Verilog HDL,后来学C++、VB,脚本学了shell跟python,工作中遇到旧代码是用perl写的,然后就拿本perl的书查着语法把旧代码给改了,做界面又用C#,在开发Oracle的应用程序时由于C++的库收费,然后就又选择Java实现,做WEB时用到Flash,又开始用Action Script做拓扑图,后来公司要开发iPhone应用,又学习Objective C等等。通过一种种新语言的学习,一路过来并没有感觉学习一门新的语言要花太多时间,一旦把一门语言掌握得比较熟,理解比较深,特别是C++,再学习其它语言非常快,而语法只需要把书翻一下就可以了,无非就是一些变量定义、流程控制、函数定义、对象定义、API,每种语言大同小异。通过多种语言的学习,最终达到一定的境界——语言无关。

    当然编程语言只是超越这个级别需要提升的其中一个方面,只是工具而己,并不是会了语言就是一个好的程序员了,这只是一个必要条件,还必须对微机原理、操作系统、数据结构、算法设计等有一定的理解,保证在根据设计进行实现时没有障碍。

    然后,更高一级别就是设计人员,这一级别的程序员要能够完成一个小型的软件或系统的一个组件的设计,因为之前的修炼已经了解了常用的设计语言以及底层的基本技术,再加上对设计模式、面向对象等设计方法的学习与理解,能够完成一个完整的设计,并完成概要设计和详细设计,因为文档也是软件开发一个很重要的部分。 这一级别的程序员,不仅要对自己的产品理解较深,对常用的设计技术熟练掌握,还要对一些开源的组件、程序库有一定的了解,能够不再“造轮子”,把精力集中在业务上,迅速完成小型的设计方案。

   最后,也是最高一级别就是架构人员,这一级别的程序员要能够完成对整个系统的架构,不仅要对各种开发工具、方法、语言有足够的理解,还要能够对技术选型做出正确的决策,对三方组件、相关开源工程的了解有足够的广度和使用经验,能够深入理解整个系统的上下文环境,并根据环境及业务需求做出正确的决策,完成技术的选型、架构、接口定义,然后对系统进行解耦、切分,以将不同的模块、组件交给更低级别的设计人员设计,从而完成整个系统的设计。这一级别的程序员不仅要在技术上能够做出正确决策,还要有足够的经验从各上方面对系统进行评估,平衡各方面因素,包括技术的与人文的,而且要能够充分评估风险,保证设计切实可行。

    总之,程序员不仅仅只是编码员,好的程序员也不只是会使用一种语言写出好程序就可以了;而且,好的程序也不单单中代码运行效率高、稳定性好、性能好,因为在软件的整个生命周期中开发阶段仅占其不到一半的工作量,程序好不好应用软件的整个生命周期进行评价,这又引出另外一个话题,不再展开,有机会再讨论。

作者:noock
来源链接:https://blog.csdn.net/Nocky/article/details/8079177

标签: 程序员

“什么是程序员” 的相关文章

程序员避坑指南36条

Hey guys 各位小伙伴们大家好!我是 cxuan,一个恰当的摸鱼时间,写下了 36 条建议分享给大家,这些建议很多是我亲身实践,也有一部分是我...

中国到底有多少个程序员?都在哪个城市写代码?

中国到底有多少个程序员?都在哪个城市写代码?

原文链接 中国到底多少个程序员?每年计算机专业毕业的有多少?而这些人中真正从事it行业的比例是多少呢?中国的程序员中的地域分布状况又如何呢?以及程序员使用的编...

Chrome OS,对程序员和Windows意味着什么?

Chrome OS 和 Chrome Web Store 终于算是正式发布了,好象这个发布,不象微软的Windows7,Phone7这样动静大。但是Google刻意的低调下面,蕴藏着一场...

我想成为一个真的程序员

我想成为一个真的程序员

最近看了 左耳朵耗子 写的一段话: 所以,我和一些人开玩笑说,我们可能都是在写一样的 for(int i=0; i 程...

程序员到底要学什么?

程序员到底要学什么? 程序员到底要学什么?或者说,程序员到底要学多少东西呢?这个问题问到你了吗?今天就来简单聊一聊程序员的学习之路。程序员的种...

程序员太多了,现在入行IT还有出路吗?

答案是肯定的,毋庸置疑。 首先我要实话告诉大家,在大学学计算机出来没有找到工作的确实有! 但那仅限于大学打了四年游戏的;人家在敲代码,你...

我的四年程序员生涯,我对程序员职业素质的想法…..

大学时梦想着自己要成为一名职业IT女白领,毕业的时候我也如愿以偿的成为以男性为主导的程序员职业中的稀有动物----女程序员。在不知不觉中工作了四年,其间经历在此忽略几万个字,在此只是把最...

程序员要不要考公务员

程序员要不要考公务员

程序员要不要考公务员呢? 这个问题不能一概而论,每个人的情况不一样,因人而异。我们先比较一下这两个职业的优缺点。 先说程序员的 优势: 1,起步快,...

从士兵到程序员再到SOHO程序员

2013年9月13日,我从就职了一年半的S公司正式离职,并开始了我梦寐以求的“SOHO程序员”之路。 这对于我来说,是一次人生道路上的重要选择,在这里,我想分享一下我是如何选择了这...

程序员职业规划

据我目前了解的情况来看,大致可以分为四类: 1.技术+技术(深入阶段)  这算是一条纯技术路线,具...