有人问我,程序员是干什么的?
我说:就是敲代码的,工作很辛苦。
之前的很长一段时间我都是这么认为的,直到今天我听到一位老师关于数据分析的一些话(无意中听到的,而且是琐碎的一点一点积累的,不好组织语言,所以这里就不展开说了,之后会开一个数据分析相关的专题具体讨论),才回过头来重新审视程序员这个职业,发展自己过去的2B回答和认识是多么地可笑和愚蠢,可笑是因为我把大部分人对程序员的一些或是自嘲或是贬低的看法当成了常态,愚蠢在于自己都工作三四年了还是没有学会独立思考,停留在原地打转没有进步,真是愚蠢至极呀!
接下来,我从大体的业务流程和应该具备的个人能力两方面展开叙述。
一:业务流程,总结为五点
1.需求
也就是产品需求和UI
2.设计
项目框架的设计,包括设计模式的选择,功能模块的设计,界面布局的设计等。
目标是用最少的代码量写出最稳定的产品,设计出一套完整的相对最优的实现方案
3.编写
具体的代码实现,包括选择编程语言,选择编程工具。
目标是将上面的设计方案用代码实现。
4.测试
将写好的代码,运行正常,打包,交由测试人员测试(前提是自己要大体上运行正常,没有特别明显的bug,也是对他人负责)
5.优化
包括修改bug,将之前逻辑写的不够清晰,有更好的实现方案的地方进行调整。
具体工作中并不局限于以上这几种工作业务,不同的公司还有别的业务流程,比如:需求评审、代码评审等一些必不可少的工作。
二、个人能力,总结为四点
1.理解能力
要理解具体的项目需求,自己想的或许跟需求方要求的千差万别,必须要反复讨论直至明确。
2.沟通能力
程序员不仅仅是自己写代码,还需要跟产品、UI、测试等相关部门联系,这时候高效愉快地沟通是必不可少的。
3.快速学习能力
解决问题的过程中,会遇到各种各样的问题,这时候就需要查资料,向他人询问等,快速地自我学习能力是完成工作的保障。
4.反思提升能力
项目做完了,不是就完事儿了,还需要反思总结完成项目的过程中遇到的问题,通过斯沃特分析进行总结,以便更好地提升自己。
这样分析下来,程序员的工作还仅仅是敲代码嘛?
最后,我再加一点对程序员出路的一些简单思考:
一个有能力,能够不断学习进步的程序员,无论外界环境如何变化,总是能够找到自己的位置,并且他的收入只会越来越多,他的发展也会越来越好。
一个没能力,只会抱怨,止步不前的程序员,只能在外界环境好运气好的时候混碗饭吃,他的收入或许会因为运气而有着缓慢的增长,可以肯定的是将来的他一定会被淘汰。
以上这些观点都是自己现阶段总结出来的,肯定有不完善的地方,以后回过头再来看或许还会觉得自己的观点是肤浅愚蠢的,这次写下就当做是一次记录吧。