2015-01-27来源:本站原创点击量:3250
在英文中,软件工程师有两种表达方式,一种是coder,还有一种是programer,前者的工作职责是按照需求文档、设计文档,甚至是伪代码,来编写
出能够正确执行的代码,他们的工作简单而重复,可以说从事的是体力劳动,而后者的工作职责是针对需求与业务逻辑,设计出最合理的解决方案和软件架构,并将
其实现,从事的是脑力劳动,所以说程序员与码农最根本的区别,在于一个“design”的过程。
我认为要成为一个优秀的程序员,而不是一个优秀的码农,最主要的是学会不仅仅站在编程者的角度考虑问题,而是要站在用户的角度考虑业务逻辑和前端设计,站
在计算机的角度考虑算法与程序性能,站在管理者的角度考虑开发成本,综合这些考虑,才能设计出最适合的软件。
一个优秀的码农往往将着眼点放于对程序设计语言的掌握的层面上,能够熟练使用多种编程语言,或者精通一种编程语言,然而,对于一个优秀的程序员来说,这虽
然也很重要,但是绝不是唯一的成功条件,想要成为一名优秀的程序员,更要着眼于高级的设计模式,设计理念,要宏观的考虑问题。
前者重质,重需求重解决问题;后者重量,不考虑复用,不考虑优秀的编程思想。
好的程序员的基本要求(我认为):
1. 学好数学:高等数学,线性代数,离散数学,算法,图论(可选),数值方法(可选),优化方法(可选),计算理论(可选);
2. 打好基础:操作系统,编译原理,汇编语言,数据库原理,计算机网络,密码学,人工智能;
3. 多动手:至少用面向对象语言(C++/Java)写5万行;脚本语言(Perl,Ruby)写5千行;至少在工作中正确实践5种设计模式;维护过10万行代码的系统;参与过一次大项目的重构(或设计);
4. 多交流: 至少做过3个新人的mentor;参与需求分析和项目计划的制定;独立领导过项目的开发进度;能建立在团队里的威信(人品和技术两方面);
1和2是一个人在学生时代该干的,本科四年足够了;工作后干3和4,一般2年也能有所心得,最好能理论联系实际,做到融会贯通举一反三。而且要放下“唯代码独尊”的优越感,能正确定义开发的目标,并不断提醒自己这个目标。到此为止,优秀的程序员应该可以出炉了。