工作快五年,总要留下点什么,所以,总结总结程序员这个职业的进阶之路,当然,完全的个人想法,但只要能对看的人产生丝毫的价值,那也是值得了。
在我看来,程序员的之路,有以下的阶段。
- 能完成任务的程序员
- 能解决问题的程序员
- 能优雅高效的程序员
- 广度/深度钻研的程序员
- ???
1,能完成任务的程序员
初入职场,成为项目的一员,无论自己心中有什么打算和期待,有一点是必须做到的,那就是完成自己的工作任务。在新人阶段,这个时候的任务大多是从熟悉项目,跟着完成一部分功能,最后独立完成功能的过程。这一步是基础的也是必须的,因为公司招人,至少是要你能做出成果的,不然,要你何用?
那么,如何快速的进入状态,完成工作呢?我认为有这几点很重要:
- 初见引导,把握流程
不管做什么事情,第一次是很重要的。所以一般来说,新上手一件事情,最好是让有经验的同事,带着走一遍流程。环境,规范,流程都走一遍。最终做到闭上眼睛,能把一项工作从头到尾,每个步骤都需要做什么都想象的处理的程度才好,可以参照一下的问题。
- 开发生产环境在哪里?
- 有哪些必备的工具需要安装,配置?
- 自己的工作谁负责,有问题了问谁?
- 开发的规范,模板等?
- 项目的编译,debug方法?
- 阶段完成后,向谁报告,有那些需要报告?
- 不懂就问,请求帮助
新人上手,对很多人来说都是非常艰难的阶段,但是在我看来,这其实是很舒服的时期,因为对新鲜的事物,大家往往都能保持一股干劲,还有就是,不管问的再多,都可以被理解呢~
而且啊,比起相互理解错误而造成的时间上的浪费,问问题要节约的多。只要多注意几个小点即可:
- 多积攒问题,挑选适当的时间。
——提问这种事情,总归是要麻烦别人的,所以要积攒,并挑选合适的时间,比如每天开始工作前等- 提问前先思考,确定自己无法解决。
——先自己想,自己调查,解决自己能解决的问题,减少麻烦他人的程度,也锻炼自己的能力- 描述清楚问题,至少说清楚现象
——对问题,你只说不会做,那别人也只能回答他也不会了。至少至少要把现象,比如报什么异常,什么地方没反应,某某情况和预计不一样等等,说清楚现象,提供更多的有效信息,方便别人回答
- 明确需求,反复确认
不知道各位有没有遇到过这种情况,接到任务,大体看一遍,OK,so easy,刷刷刷的做完,然后报告,领导一看,又啪啪啪的指出了一堆问题,然后回炉重做。其实这就是我们对需求理解还不够痛彻的原因。
沟通,实际上是很困难的事情。尤其是对我们这个工作来说。有个笑话,领导要程序员买包烟,于是程序员问了一大堆问,比如店关门了怎么办?烟钱涨价了怎么办?给的钱不够了怎么办?路上堵车了怎么办?——别笑,对我这个行业来说,还真是需要的。因为一旦有考虑不到的地方,程序就会给你蹦异常了。
那么怎么才难让人理解呢?可以考虑考虑一下的方法:
- 图画大于说明,善用草图,效果图
- 试做简易的demo,以此为基础进行修改
- 用明确的数据,输入XX,输出YY的方式确认
- 做之前先在脑子里过一遍
2,能解决问题的程序员
已经能安装流程,完成任务了?那恭喜你,至少在大多数的公司里,能安身了。但是新手保护期是短暂的,不可能永远抱大腿。求人不如求己,遇到问题,还是要学着自己克服。
这其中就包括,程序运行着莫名的跑出BUG;开发中有些新的实现方法没有用过,需要调查;甚至要有些任务要求现学新的知识,来完成作业。
- 网络调查的能力
百度大法好~善于利用搜索引擎是程序员的一项必备技能。甚至可以说,完全不会编码,只要善于使用网络,也是可以干活的。同时,网络不止是搜索解决问题方案的地方,也是进行学习,查找学习资料的地方。假如你想要击败进步,升职加薪,那么网络也是必须的。在此,稍微介绍下个人比较熟悉的地方。
- 搜索引擎
百度:https://www.baidu.com/ 不多说,你绝对用过,需要注意的是,至少翻2页,跳过那满屏的广告
必应:http://cn.bing.com/ google的替代品
Google:https://www.google.com/ 很想优先推荐,但是……总之尽量用这个,并适应英文吧- 博客
博客是个好东西,有别的观点,遇到问题的解决方式,完整的资料等等,搜索引擎搜到的问题解决,多半也是别人博客上的东西。现在使用github+hexo还可以免费搭自己的博客,希望有能力的同学都尽量尝试一下。
CSDN:https://www.csdn.net/ 元老级的地方
开源中国:http://www.oschina.net/
博客园:https://www.cnblogs.com/
github:https://github.com/ 不是博客,但是宝库,优先熟悉这个,能提高程序员的等级哟- 资讯网站:
掘金:https://juejin.im/ --比较喜欢的地方~
微信工作平台 --其实就是关注几个公众号,因为微信是推送的,基本上内容会随着时代的变化而变化
- debug,日志的调查能力
debug是程序正式上线前,日志是程序上线后的。说吧了就是一点,锁定程序问题点的能力,不要小看这个能力,就像老工人能一眼发现零件是否合格一样,有经验的程序员,也能通过异常,日志等,一眼看出程序的问题点,这就很厉害了。
- 再现问题
——有句话说的好,能稳定在线的问题,都不是问题。只有知道问题的发生方法,哪怕一点点排查,也总能找到问题的原因的,所以首先知道问题的再现方法,是解决问题及入口。- 储备知识
——报了异常,定位地方了,然后——如何解决?这就需要你的专业素养了,我知道问题的原因,并作出合理的解决方案,而不是简单的注掉- 使用工具
——使用ide进行debug,使用文本搜索搜索日志信息,甚至使用测试软件测试程序压力等等
3,做优雅高效的程序员
恩,能独立解决问题,不怕困难问题,那这个职位,至少是能合格了。但随着不断的工作,你也会发现很多东西在不断的重复,在浪费着你的时间,拖慢工作效率。于是,你需要让自己的工作,更加的高效。
- 善用工具
工具,是人类智慧的结晶,而脑力劳动者的程序员,更加的需要工具在提供自己的工作效率。那么,除了我们吃饭用的ide,以下的工具,不知道没有有眼熟的呢?
- 文本编译工具:emeditor/notepad++
用于编辑文本,window自带的文本编辑器实在太不方便,需要用一些具有扩展能力的编辑器才好- 远程管理工具:xshell/xftp/winscp
有用linux的话应该会用到的,控制远程的另一台机器- 比较工具:beyondCompare
必备工具,查看代码变更,文件差异的东西- 文件版本管理工具:git/svn
多人协作,或者保存文件历史的工具,至少要有一款哦- 数据库连接客户端:plsql/navicat
数据库查看用,根据不同数据库有不同- 截图工具:Snagit
非常强大的截图工具
- 为自己写工具
作为程序员,程序的创造者,不知道各位有没有想过,为自己去写一些程序或者工具呢?仅仅为了自己也好,作为自己创造的价值,产生资产,不是一件很有意义的事情吗?当然,平时工作就是代码,已经写得要吐了,已经完全不想动的心情也很理解,但也有一些很简单的恩那个创造小工具的方法呢。
- execl:
execl实际上是很强大的工具,甚至可以写脚本扩展其功能,或者简单点,使用execl的公式,设置好记得单元格位置,然后一拖~重复的sql,或者一段代码就出来了。在一些需要复用的地方,还是很实用的。
- 记录文档,规范格式
最开始的时候,让你去安装规范写,去写文档,你大概是不愿意的。麻烦,花时间,而且写代码的时候没怎么用的上。但是当过一段时间,改修,bug修正,或者别人要改的时候,就会反而抱怨当时的你,为什么不写的更加清晰明了了。文件、规范的作用就是在此,他不是为了当前,而是为了未来而写的。
4,广度/深度钻研的程序员
您好,优雅而高效的~优秀程序员。你已经很厉害啦。
想要更加的厉害?我这边有两个方向可以看一看。
- 深入,创造者
在某个技术或者业务上不断钻研深入,能解决相关的大多问题,然后,拿出一套产品或者框架,并得到他人的认可,成为某个软件/插件/算法/框架的开创造者。 - 广度,框架师
追寻新技术,了解潮流变化,知道开发一套项目的各个组件的优劣,并能有选择的使用。当有人需要提出需求的时候,作为框架师,能快速的为其量身定做一套框架选择。
5,???
还想继续提高?那么……我也不知道了。不过,这个行业是不断发展,永远需要思考的行业。只要保持一颗向上的心,一定能提高。
常烦常乐
2018 年 02月 10日
转载请注明出处