程序员究竟在做什么——职业程序员的工作内容(我们不是修电脑的),以及如何转型成为一名程序员?

作为一名在开发岗待了5年,现在在字节摸爬滚打的程序员,今天呢想跟大家一起聊一聊程序员每天究竟在做什么?

 

越来越多人在关注程序员这个职业,也有很多人在考虑成为一名程序员。但是我发现很多人对程序员这个职业还是有很多的误解和臆想。好多人认为程序员就是修电脑修手机的,还有大家电脑看多了觉得每个程序员都是黑客,可以入侵到别人的电脑里拿到机密文件这种,这些都是非常不准确的!

 

今天呢,我根据自己的多年的工作经历来好好跟大家解释一下一个职业的程序员每天都在做什么。

虽然程序员可以细分为很多不同的类型:前端、后端、全栈、Infra、DevOpts还有research engineers。然后不同类型的程序员的日常会有些许不同,但是大体来说大家工作做的事情可以基本上划分为以下5种类型:

1.开发软件新功能。

这是程序员绝大部分时间在做的事情,也是大家印象里程序员在写代码的这个部分。假设CSDN今天要在APP里添加一个新的功能,可以给文章打赏,那负责开发这个功能的程序员就要想办法给这个想法给实现出来。比如说他需要考虑在前端怎么加上打赏的按键?当用户点击了这个按键需要发生什么事?数据库里需要什么样的data?怎么存、怎么读取这些data?这些data会不会影响其他已有的data?然后后端需要做哪些运算?具体怎么把打赏的钱从一个用户的账户转到另一个用户的账户?可不可以运用到一些已有的infrastructure等等。

这些都是程序员在工作中开发一个新功能时需要去设计然后完成的事情。很多时候一个很小、很不起眼的功能背后牵扯到的东西很可能是很复杂的,所以这里绝对不是单单“写代码”、“写程序”三个字就可以概括的了的。

2.开发团队沟通。

软件开发是一件很复杂的事情,所以往往都是需要一个团队来做的。一个团队里一般会有程序员SWE、PM、Data scirntist、UX。大家一起合作来开发这个产品。而且就单拿程序员的部分来说,通产也是会有好几个程序员一起分工来开发一个功能或者产品。所以程序员的日常工作里需要及时和团队的其他成员们进行沟通。比如说大家一起开会或者写邮件讨论问题,我们还有daily standup、weekly sprint planning、一对一的对话,包括code review我觉得也算。

这些呢都是程序员工作中沟通方面需要做的事情,我觉得我的日常工作中差不多20%-30%的时间都是用在沟通上面的。像我的领导或者资历更高的程序员他们每天花在沟通方面的时间比重会更多一些。

3.Debug(调试除错)。

这里是指程序中发现错误时,为了排除故障进行各种各样的测试去除错。因为程序通常需要一直更新的,会有新的功能添加进来,会有旧的功能被deprecate,然后已有的功能也需要维护,在这个过程中程序会出现大大小小的bug,可能时逻辑上的小错误,可能是没有考虑到某一个特殊情况,也可能是resource方面处理不当,程序刚开始跑的时候没事儿,但是跑了一段时间之后就出错了。总之bug可以是各种类型的,就算是写的再好的程序,在某些特殊情况下也会出现bug。

通常一个开发团队会把自家程序出现的bug都放进一个列表里,然后把每个bug分配给相关的程序员,拿到bug的程序员就要开始debug了,有的bug比较直接明了,可能重新去读读代码,多写点log,去log里查查就能想明白哪错了,有的bug就比较麻烦了,需要程序员想办法模拟本地环境,尝试去重现bug,有时候模拟了环境也没办法重现bug,这种时候就特别棘手了。所以debug这件事情会花掉很多时间和精力让人非常头疼的,但是这是每个程序员日常工作中必须做的事情。

4.处理production issue。

它其实算是bug的一种类型,但是它属于最难搞破坏力最大的bug了,所以处理production issue跟常规的bug还不太一样。就拿CSDN  APP做个比方吧,一个常规的bug可能就是某个人用CSDN的时候出现的闪退的情况,那就应该是有bug了,然后这个用户的一系列操作触发了这个bug所以闪退了,可能重启一下这个APP就没事儿了。

production issue就是指所有人用CSDN APP都出现了闪退的问题,一打开APP就闪退了,然后重启了依旧闪退,这种情况就比前面那种情况严重太多太多了!所以处理production issue都是非常紧急的,需要程序员放下手中其他所有的活全心全意去处理。像前两天我同事半夜12点的时候被page了,他负责的这个程序出现了production issue,所以他当时就得立刻上线去debug,最后弄到凌晨两点多终于修好了才可以睡觉。我自己也有过类似的经历,就是半夜被叫起来,我觉得这是程序员日常工作中最紧张刺激,压力最大的时候。

5.学习新技术。

程序员工作过程中,其实是要不断学习,不断更新自己的这个硬能力。而且很多时候这都不是程序员主观要学习新技术,而是因为工作需要,比如说我之前在的一个组,我们开发的一个网站,最早是用python+GWT做的,所以全组所有的程序员全部是写python的,但是因为这个网站整体的感觉太陈旧了,所以公司决定要写个新的,用JavaScript和angular来开发,所以我们全组程序员当场就要去学JavaScript和angular,后来我有到了一个新的组,组里的程序都是用C++写的,当时我是完全没有写过C++的,所以也是当场现学。

有很长一段时间呢我都是在一边学一边工作的这种状态下度过的,除了技术方面的话,程序员通常还要在工作中花时间学一些领域知识。比如在金融公司里做开发的程序员,多多少少有一些金融方面的知识储备,这样才能知道一个金融领域的程序应该要怎做,怎么开发才算对。那这些金融相关的领域知识,一般程序员是不会在学校里去学的,都是在职场的工作中一点点学习积累出来的,除了金融之外,像广告,互联网,生物医疗,游戏,电商,社交媒体等行业,这些行业都有自己相应的领域知识。现在每个行业也都需要程序员来做开发。所以作为一个职业程序员,你的日常工作会有很主要的一部分时间是拿来学习这些领域知识的

那以上这5类事情呢就是职业程序员工作中需要做的事情。

希望大家看完这篇文章对程序员这个职业有一个更准确更全面的认识,以后遇到程序员就不要再问能不能修电脑修手机这样的问题了,我们不是Geek Squad,也不是hackers。

 那么对于想要转行做程序员的朋友,话不多说,直接拿资料!

学习路线

 

 学习资料 

 

 视频资料

 

 

结束语 
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码【免费获取】。

 

Guess you like

Origin blog.csdn.net/yuki127204/article/details/122240599