作为一名在开发岗待了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官方认证二维码【免费获取】。

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

  1. 地中海?修电脑的?格子衫?那些对程序员的高级黑!!!

    前两天在网上看了一个视频,一个程序员半夜下班回家自己的电动车出了问题,被快递小哥误以为是小偷,了解原因之后的话让我哭笑不得,快递小哥以为程序员是修电脑的,但是看着有不像最后闹了笑话,我不禁想说,现在的 ...

  2. Java实习生是做什么的?Java实习生工作内容

    部分公司项目紧张的话,可能会直接要求编写简单的功能模块; 通常入职之后都会有专门的技术人员进行指导,所以也没必要担心什么都不会,入职后主动进行学习相关技术即可.如果是实习期,主要的任务还是以学习为主, ...

  3. 在中国做量化交易一天的工作内容

     来源:https://xueqiu.com/5256769224/32471735 一般来说,所有quant trader的日常工作分2块,1是对现有策略的管理和维护,2是开发新策略. 而这个问 ...

  4. [转]在中国做量化交易一天的工作内容

    一般来说,所有quant trader的日常工作分2块,1是对现有策略的管理和维护,2是开发新策略. 而这个问题,又可以分为2个版本,一个是屌丝版,一个是高大上版. 屌丝版 首先,是屌丝小A对于现有策 ...

  5. 插画师是做什么的 插画师的工作内容

    插画师主要从事儿童及青少年读物插图.连环画等创作工作. 其实在很多领域都是存在着插画师的,比如设计.广告或者是动漫行业.在这个新媒体时代,我们看到一个普通的插画师也可以拥有很好的发展空间,比如在某宝. ...

  6. **修炼一名程序员的职业水准(林庆忠__署名原创)**

    业精于勤荒于嬉,行成于思毁于随.以此文章激励自己. 修炼一名程序员的职业水准(林庆忠__署名原创) 作者:林庆忠,1990年毕业于昆明工学院计算机软件专业,后又于1999年毕业在南京大学 完成软件工程 ...

  7. 程序员们,修电脑这道题你们都做!错!了!

    传闻程序员看到"修电脑"三个字就火冒三丈:"学计算机就应该会修电脑"什么鬼?程序员面试又不考修电脑!!厨子也不会生鸡蛋啊!!! 总之: 开车的一定要会修车吗? ...

  8. java程序员具体是做什么的?我来分享一天的工作内容

    现在我来讲一下今天的工作情况.今天的工作内容是,我们一个项目上线了.测试那边测试了一下,然后我这边负责改bug.但是在改的过程中,我遇到了一些让自己心里特别不爽的情况. 我们的产品那块逻辑没有写清楚. ...

  9. 程序员:我真的不是修电脑的啊!

    一直以来,很多吃瓜群众对程序员都有一种认知误区,那就是程序员天生带有一种会修电脑的技能.这不就在双 11 期间发生了这个闹剧. 快递员凌晨送件,将下班程序员误认成小偷 双 11 期间,杭州一位快递员深 ...

最新文章

  1. 办公电脑选购方案指南
  2. 一次违反常规的Java大厂面试经历,内含福利
  3. yolov3/tiny-yolov3训练和测试 python2/3
  4. 语句中如何结束本循环进入下一循环_Python3基础语法(八)--控制循环 while...
  5. HTML+CSS+Javascript教学视频【0409更新】
  6. 设计模式 - 模版方法
  7. 区块链 Gossip Protocol是什么
  8. php转换时间戳的函数,php时间戳的转换函数
  9. idea安装教程(傻瓜式操作、永久使用)
  10. 大学加权平均分计算器_澳大利亚移民宝藏专业----西澳大学幼教硕士解析
  11. clob informix java_informix如何插入clob
  12. mysql 出现撇号 _Navicat使用教程:如何在MySQL中定位和删除有重复意义的值
  13. Android系统SD卡各类文件夹名称
  14. Qt QList详解
  15. 静态方法 和静态变量——Java
  16. 云米、品钛、趣店等中概股领跌,多家公司股价创历史新低
  17. Cannot resolve reference to bean sqlSessionFactory while setting bean property sqlSessionFactory
  18. # 智慧社区管理系统-核心信息管理-02物业收费管理
  19. 雅虎统计迁移到量子恒道
  20. 五款免费pdf转换成word软件

热门文章

  1. 单点登录(十)-----遇到问题-----cas启用mongodb验证方式报错com.mongodb.CommandFailureException---Authentication failed
  2. 敢不敢尝试自己写个安全扫描器(java)
  3. 前端页面居中对齐总结
  4. 火车站台(赛码)C++ AC
  5. Linux操作系统介绍及用户管理
  6. git之新手入门使用
  7. 研究生自学python入门(一)
  8. 一文带你了解ViewModel
  9. VSCode官网下载不同版本user/system/.zip使用时语言有出现部分繁体的问题
  10. 第58章 SQL MID() 函数教程