过年回家串亲戚,少不了被七大姑八大姨的各种嘘寒问暖。问题包括“你找对象了吗?”“我女儿前两年就办婚礼了,你打算何时结婚啊”bla bla bla 远方亲戚稍微陌生点的可能不会问你对象的问题,但客套话总少不了问你的职业,在哪工作之类。

作为一名程序员,当亲戚问起职业的时候其实自己都不知道该如何描述,如果你说你是做Java开发或者web前端开发这一类说辞,家里人不仅听得云里雾里可能还会觉得这工作没那么好。正确的做法是回答在某某公司做工程师,这样亲戚反而一脸羡慕还觉得高大上。说白了,都说自己是程序员、工程师但是你还是不知道自己做的到底是个怎样什么职业,因为程序员的岗位实在有太多了,以下岗位来自拉勾网互联网技术招聘岗位,应该能几乎囊括程序员的老本行了。
后端开发
Java Python PHP .NET C# C++ C VBDelphi Perl Ruby Hadoop Node.js 数据挖掘自然语言处理 搜索算法 精准推荐 全栈工程师 GoASP Shell 后端开发其它
移动开发
HTML5 Android iOS WP 移动开发其它
前端开发
web前端 Flash html5 JavaScript U3DCOCOS2D-X 前端开发其它
测试
测试工程师 自动化测试 功能测试 性能测试 测试开发游戏测试 白盒测试 灰盒测试 黑盒测试 手机测试硬件测试 测试经理 测试其它
运维
运维工程师 运维开发工程师 网络工程师 系统工程师IT支持 IDC CDN F5 系统管理员 病毒分析WEB安全 网络安全 系统安全 运维经理 运维其它
DBA
MySQL SQLServer Oracle DB2 MongoDB ETLHive 数据仓库 DBA其它
高端职位
技术经理 技术总监 架构师 CTO 运维总监技术合伙人 项目总监 测试总监 安全专家高端技术职位其它
项目管理
项目经理 项目助理
硬件开发
硬件 嵌入式 自动化 单片机 电路设计 驱动开发系统集成 FPGA开发 DSP开发 ARM开发 PCB工艺模具设计 热传导 材料工程师 精益工程师 射频工程师硬件开发其它
企业软件
实施工程师 售前工程师 售后工程师 BI工程师企业软件其它
其实程序员能干得岗位太多了,这张图还只是程序员的本行如果程序员会点设计还能跳槽去当个产品经理之类,所以说程序员可不仅仅等同于工程师那么简单。那么:

百度百科有云,程序员(英文Programmer)是从事程序开发、维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。软件从业人员分为初级程序员、高级程序员、系统分析员,系统架构师,测试工程师五大类。
让我们来看看程序员的一些基本职责
岗位职责
1、对项目经理负责,负责软件项目的详细设计、编码和内部测试的组织实施,对
小型软件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。
2、协助项目经理和相关人员同客户进行沟通,保持良好的客户关系。
3、参与需求调研、项目可行性分析、技术可行性分析和需求分析。
4、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。
5、负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。
6、参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。
7、负责相关技术文档的拟订。
8、负责对业务领域内的技术发展动态进行分析研究。
接着的是程序员日常要做的事
日常工作
确认通过审查方案的目标,输入数据,分析师,监事,和客户的输出要求的项目要求。
安排项目要求在编程序列分析要求;准备工作流程图和使用计算机知识的能力,题材,编程语言和逻辑图。
编码工作流程的信息转换成计算机语言的项目要求。
通过输入编码信息的计算机程序。
确认程序操作进行测试,修改程序序列和/或代码。
准备写操作指令供用户参考。
保持历史记录,通过记录方案的制定和修订。
维护客户的信心和保护保密的业务。
技能/资格:一般的编程技巧,分析信息,解决问题,软件算法设计,软件性能优化,注重细节,软件设计,软件调试,软件开发基础,软件文档,软件测试。程序员其实分为很多种,大家开发的语言可能不尽相同,但是都是有他们的共同点。

对绝大部分程序员来讲,他们不需要成为科学家,而需要成为工程师,成为从科学家手里接过火
种,去燎原大地的人。比起创造力,工程能力对这个职位更为重要。
以下内容转载自新浪微博 @Easy
作者 Easy,职鹿JobDeer.com创始人。
今天看到鸟哥的微博,说了些我一直想说的话,正好猴年来了,就展开聊聊我理解的程序猿这个职业吧。

为什么有人在技术造神
大家应该已经感受到,技术圈这两年已经和娱乐圈创业圈差不多的氛围了,这其实是有原因的。
最主要的原因是,创业公司和创业媒体越来越多,他们需要大量的程序员投身到创业这个高风险的行业中,而造神,正是让程序员们自动跳进火坑的绝佳办法。不是说程序员不能创业,我是说,创业媒体们故意模糊了创造和创业的界限,把程序员们的创造冲动偷换概念,鼓吹了太多不适合的人去创业。
另一个原因是,招聘成本高涨,CTO 们为了能提升影响力,不得不频频出席各种大会刷脸。文笔好的再做做自媒体和技术社群,既能强化个人品牌提高身价,又能在融资的时候提升成功率。
总之,这个行业出现了各种技术大神。
这些大神在普通人类和初级程序员眼里是无所不能的,是他们向往的目标;在中级程序员和高级程序员眼里,这些大神就是他自己,只不过他还没红起来而已…
于是攀比心理也开始泛滥,全国第三的架构师比比皆是,整个圈子渐渐就浮躁起来。
然而绝大部分程序员,依然是雇员
媒体们在包装时,最喜欢按独立开发者的路线来整。「从小就对技术有天分」、「大学时曾在某编程大赛一鸣惊人」、「写了个APP玩结果一个月有了千万用户」、「从公司离职自立门户三年上市」。
OK,这的确是程序员的一条职业路线图。但是媒体们不愿意告诉你的是,一:只有极少数程序员是通过这个路线成功的;二:这条线其实需要太多非程序员职位的技能,比如产品设计能力和销售能力。

程序员的四大职业象限
这件事造成了两个结果,一是冲动点的程序员跑去创业了,二是不那么冲动的程序员天天觉得自己能创业,能干大事,在现在公司屈才了。于是就有了这样的画面:雇员们天天抱怨雇主不能提供给他们高管或者独立开发者级别的待遇。
如果不是你自己开的公司,那么雇员同学,你的价值是由你对公司的贡献来决定的。

程序员的价值决定
绝大部分互联网公司的程序员职位,没有技术门槛
然而不幸的是,绝大部分互联网公司都不是技术驱动的公司。真的就是鸟哥说的那样,绝大部分技术岗位,其实技术门槛都不高(门槛在工程上,后文细讲)。技术不过是这些公司的护航舰,而不是破冰船。
先别打我,冷静下来想想,到底有多少你会的那些技术,是你的同行们不会的呢?不多,对吧?
几年前亿级别的搜索还是问题,现在已经到处是通用解决方案了;几年前千万到亿级别的网站和 APP 解决方案还在大公司手里,现在各个架构大会都讲烂啦,而且其实都差不多;就连 DeepLearning,带 API 接口的框架也开始涌现,只需要把图片用 REST 传进去就能取到结果了。
很多事情,已经没有难度,只需要持续投入。是的,对绝大部分程序员来讲,他们不需要成为科学家,而需要成为工程师,成为从科学家手里接过火种,去燎原大地的人。
怎样才是一个好工程师
1)工程的本质不是创造,而是去风险化。
工程是关于如何低成本、高效率、按时按量完成既定任务的。所以判断一个工程师是否优秀,并不是他多有创意多有名气,而是看他有多稳,看他能多GettingThingsDone,中文就是「靠谱」。
有时候一个好的解决方案,未必采用了最新的技术和框架,而是看上去朴实无华,功力都包涵在背后的细节里。就像顶尖高手打的斯洛克台球,每一杆都平淡无奇,只是因为上一杆的回球太到位。
有同学问,那我工程做的太好,岂不是没有机会遇到一些高难度挑战了么?放心,一般公司都雇佣了产品经理来帮你制造高危事件。
同样的,一个好的工程师,会选择最适合需求和团队的方案,考虑开发效率和系统效率的均衡,从而已达到最优效果;而不是整天和别人去争论什么语言最好、哪些框架过时了。
2)工程的另一个要求是进度控制和质量控制。
在项目立项之后动工之前,对要做的事项作出详尽的规划,对未来一到两周的工作给出细致的排期,这是进度控制的基础。
代码的及时入库与合并,自动化测试和每日构建,CodeReview 和文档编写,这些看似无关紧要的习惯则决定了项目质量。
不幸的是,很多程序员把这些工程上至关重要的东西当成垃圾,视为对他们「创造力」的压抑。
他们总是以创造力为借口去寻求自身的自在,比如上班不带胸牌不打卡,中午休息时间在公司看视频打游戏,最好可以远程上班,项目到期之前再来检查进度,公司不要用统一框架,只有*逼傻**才写文档。
对职业的理解偏差和工程能力上的荒芜,培养了大批能写代码但死活写不好代码的「码农」,反而让那些有着彪悍工程能力和良好习惯的程序员变得奇货可居。
最后,来说说程序员那无处安放的创造力
有了锤子想找钉子是很正常的原始冲动,但我们必须认识到,创造力对于程序员这个职业来讲,是锦上添花的东西。如果你没有强大的工程能力,那么创造力也不过是无本之木。所以扎扎实实的把工程基础打好,这是最根本的。
在此基础上,我比较推荐程序员采用内外两条线来培养自己。在公司内的项目上采取相对保守的策略,尽力把稳定性做到最好,培养出自己卓越的工程能力;然后在公司外的开源项目和自己的独立项目上,采用一些新的技术、实践一些新的想法、充分发挥自己的创造力,梦想还是要有的,对吧。
这样做最明显的好处是,你可以了解到新技术和激进方案的优缺点,从而在进行方案选型时,有更多的依据;还有一个职业发展上的好处:如果不是主负责人,公司的项目往往不能代表你的能力;但独立项目却可以作为一个非常好的能力证明出现在你的简历里边。
你可以是一个身怀绝技的手艺人,在自己家里你尝试各种手法各种风格的个人作品;但当你参与颐和园这种级别的工程时,好好的把自己负责的石头雕成总设计师要求的样子就好——毕竟这个时代一个人已经很难负责整个项目了。这就是我所理解的程序员的工匠精神。