程序员的日常工作解密
调研1、后端工程师典型的日常1:国企
受访人
22岁
平时每天的上班时间和下班时间分别是?
早上 9 点上班, 晚上 6 点下班
最近一周有加班么?加班的天数是?一般加到多晚?
最近一周加班三天,工作日加班到晚上8点30左右,周末一天加班一整天,晚上不加。
描述一下你的「典型的一天」
- 住公司提供的宿舍,早上8:40起床,
- 9点到公司食堂吃早饭,
- 9:30左右开始正式上班,
- 到11:30会稍微休息一会,然后浏览一些技术博客、运动相关的东西。
- 12点在公司的食堂吃午饭,
- 12:30到13:30回宿舍休息,
- 14点左右再回到工位上开始上班。刚开始到位置上,如果任务赶的话直接开始敲代码,如果任务不赶,会拿30分钟到1一个小时看一下公司的前端框架。
- 期间会在公司的休闲室休息一会,然后到18.00下班。
- 18:00 去健身房锻炼一个小时
- 19:30 训练结束回到宿舍,洗澡,准备晚饭。
- 20:00 吃完饭,这时候追两集动漫,看看视频,刷刷微博
- 到22:00 因为自我感觉基础非常薄弱,这个时候通常会学一点东西。
在上边描述的日常中,你最想吐槽的是什么?
毕业之后一直在负责维护一个公司比较旧版本的项目,所以经常出现一些非常奇怪的需求。还有一些非常老旧的代码,找不到之前的author,也不知道如何调试。
在上边描述的日常中,你最满意的是什么?
很自由,我可以在正常的上班时间之内自己支配。
在现在这个职位上,你遇到的最大的技术挑战是什么?怎么解决的?
在熟悉公司新开发的一套框架上。因为文档不齐全,而且前端相对薄弱,所以一直不知道如何去下手。 后面为了能够快速熟悉起来,我就找带我的小哥要了一个很简单的任务,直接进行下手,然后直接在开发中对遇到的问题 进行跟踪调试,开发完这个模块花了一个礼拜,虽然进度很慢..但是现在对这个框架已经有点熟悉了。
你是怎么度过从新人到熟手的阶段的?公司有安排培训么?如果有,你觉得其中对你最有用的内容是什么?
其实现在还是一个新人。公司曾在我们实习的时候安排了一个月的培训,主要是对公司在使用中的框架(Spring MyBatis)等进行培训。我觉得最有用的还是给我们上课的大牛给我们的一些学习方法,以及工作方法。
你对即将入职这个岗位的新人,有什么建议?(做什么、不要做什么)
要做:我是一个非985/211大学的学生,等我有职业规划的想法的时候已经是大三下学期了,所以我感觉自己起步非常非常慢,技术也很差。所以我想说的是,如果想走技术这条路,那一定不要呆在懒惰区,而且对基础的东西要更重视,同时也要关注新的技术。
不要做:对自己的规划模棱俩可.不知道自己为什么要做技术相关的工作。
调研2、后端工程师典型的日常2:知名创业公司
受访人
23 岁,后端产品研发工程师。
平时每天的上班时间和下班时间分别是?
前公司一般是 11 点上班,现在是 10 点,下班时间我一般工作外也会待在公司做些别的,大概平均也得 9、10 点吧。
最近一周有加班么?加班的天数是?一般加到多晚?
属于比较忙的组,之前一直封闭开发,差不多 11、10、6 吧(也就持续一两周)。
描述一下你的「典型的一天」
- 9:00 起床
- 10:00 打车到公司
- 上午主要是整理性质,会开站会,整理下今天要做的事(不光工作,翻翻邮件、订阅的博客、Github 之类的)
- 12:00 在食堂吃饭,然后出去散散步,没有午睡的习惯
- 下午基本都在工作
- 19:00 在食堂吃晚饭
- 之后如果工作还比较忙就接着弄工作,否则会按照优先级选一些个人的事去做(Side Project、知识积累、阅读)
- 21:00~22:00 下班回家。到家基本上就只是放松了,看看日剧、追番
- 偶尔有很感兴趣的事驱动的时候(比如 Side Project 灵感很多的时候),会熬夜做,大概到 3:00 为底线
在上边描述的日常中,你最想吐槽的是什么?
目前在新公司还有两个比较严重的问题:
- 对任务的估时准确度不高,很多时候要么过忙,要么被严重 Block。
- 对任务的优先级分配有问题,我希望能静下心做一些重要且不紧急的事情,但是实际上大部分时间都在帮别人解决一些小问题。
在上边描述的日常中,你最满意的是什么?
上家公司是技术很好的小团队( 好到什么程度呢?后端 + 平台 15 人左右,能维护一套微服务,并且自研容器编排 ),但是很遗憾的是业务本身没有太大量级,对后端来说历练还太小。
来新公司主要是为了技术挑战,业务上的压力肯定是有的,就看自己能不能抓住机会了。
在现在这个职位上,你遇到的最大的技术挑战是什么?怎么解决的?
技术挑战可能不会太多,我认为很多业务场景都是有取巧的解决方案的(取巧可能形容有误,非贬义,类似于分库分表即使不需要太多技术也可以 Hard Coding 实现,并且能有效解决问题)。而中小型公司的平台方案一般又都是追随开源的,所以我也选择尽量追随开源社区。
在现在这个职位上,你遇到的最大的非技术挑战是什么?怎么解决的?
我比较不擅长编程以外的任何事,最不擅长的就是与人相处。讨厌漫长的会议,讨厌一些混日子的同事。
你是怎么度过从新人到熟手的阶段的?公司有安排培训么?如果有,你觉得其中对你最有用的内容是什么?
呆的都是中小型公司,没参与过什么培训,个人感觉比较幸运的主要还是多逛开源社区
吧,很多时候公司交给我去做的事都是因为我之前有过了解(哪怕只是简单了解,也比大部分人强很多),这样慢慢的就能成为良性循环。
你对即将入职这个岗位的新人,有什么建议?(做什么、不要做什么)
不要盲目崇拜自己公司的技术,很多时候技术会因为架构师的喜好、成本、甚至一些和技术无关的因素而决定。即使去用了,也要明白这些技术有哪些优点、哪些缺点、如何改进。这样你至少迈出了第一步:不会因为最开始运气不好去了一家不好的公司或是部门而陷入技术上的恶性循环。
其次就是无论前端也好、后端也好,多去了解了解新技术,即使作为一个后端我也会偶尔和 Android 同事聊聊 Kotlin,和前端同事聊聊 React、Vue,你会发现只需花费非常低的成本就能学到一门可以弥补你短板的新技术,让你之前很多看似做不到的想法都可以轻松实现。
调研3、前端工程师典型的日常3:知名互联网公司
受访人
21岁,在北京某D轮知名移动互联网公司担任前端。
平时每天的上班时间和下班时间分别是?
早9点,晚6:30。
最近一周有加班么?加班的天数是?一般加到多晚?
最近有加班因为双11,基本天天加班,加班到7:30,平时较少加班。
你的「典型的一天」?
- 每天 8:30 起床,
- 接近 9 点出门,
- 到公司 9 点多一点,
- 中午 11:30 骑摩拜去公司另一个食堂吃饭,
- 回来 12:30 开始午休,
- 1:30 缓一会儿看看邮件消息,
- 2点开始干活,
- 6:30去楼下食堂吃饭然后回家
在上边描述的日常中,你最想吐槽的是什么?
最想吐槽日常低效率的沟通,每天花费在看邮件和消息的时间比较多,很多内容和自己没有太大的关系,比较影响工作效率,还有就是需求变更比较频繁。
在上边描述的日常中,你最满意的是什么?
日常比较满意的是宽松的工作氛围,和谐的上下级关系,以及团队有技术上的大牛,当然还有很多妹纸~
在现在这个职位上,你遇到的最大的技术挑战是什么?怎么解决的?
其实目前来说还没有遇到真正意义上的技术挑战,因为轮子已经有前人造好了,挑战可能更多的是需要自己去了解这些实现细节。如果确实遇到困难,我会先去看看之前项目里面的代码别人是怎么实现的,然后自己也会了。
在现在这个职位上,你遇到的最大的非技术挑战是什么?怎么解决的?
非技术挑战可能是需要协调好在开发过程中与PM,设计,运营以及其他工程师之间的teamwork,避免因为交流不够彻底而导致做一些无意义或者重复的事情。
解决这个问题其实是比较困难的,我们可能有时问同一项目里面不同两个人对相同的问题给出不同的答案,这个时候我一般会明确的这个问题真正的需求是什么,同时会和同一团队的成员都确认一下。
你是怎么度过从新人到熟手的阶段的?公司有安排培训么?如果有,你觉得其中对你最有用的内容是什么?
从新人到现在的转变就是不明确的或者不会的地方,就去看前人是怎么实现,再不会就问leader(一般很少发生这种情况)。
公司有安排培训,培训的价值其实在输出的内容上并没有对我有多大的提升,反倒是让我对认识问题的态度有很大的转变,我们喜欢用事实标准去讲一个问题,而不是通过别人的经验或者某些技术博客的介绍就认为问题就是这样。
技术人看待问题就应该是非常严谨,就像写代码一样,我们要做到bug free,虽然这是不可能的。
你对即将入职这个岗位的新人,有什么建议?(做什么、不要做什么)
我想说,与其把大把的时间花在学习几个瞬息万变的新框架API使用中,不如多花点时间在基础知识学习。我认为这才是真正决定一个技术人能走多远的基石,虽然这句话可能你已经听烦了。
新的东西解决了很多问题,但是很多人甚至都不知道为什么会存在这些问题更别谈解决方案和实现的原理,还有就是不要盲目的相信技术网红的一些观点,他们不一定是正确或者恰当的。
前端最不缺网红,工作后我才认识到大部分真正牛逼的人都是比较低调的(但并不是高调的人就不牛);在有一些基础后可以多看一些原理性质或者质量高的博客,多读一些业界认可度高的书籍,看看一些开源项目从简单的入手,自己去实践并验证你学习到的知识,同时多关注开源社区
你在这些年的工作中,有没有遇到特别好的工具、资料、书籍之类,想要推荐给大家?一两样也行哦。
推荐一本书《JavaScript高级程序设计》,相当于 Web API Wiki 的 MDN ,以及 Google 开发者文档中的 Web 部分,更细节可以看看 W3C 标准、ECMAScript 标准、WHATWG 标准。在准备读一本书的时候可以先去豆瓣上看看评价,如果只有6、7分你就要慎重了,因为他可能不仅仅是在浪费你的时间还可能误导你。
调研4、创业公司技术负责人的日常4
受访人
27岁 ,5月份离开微博到深圳已经半年,目前与几个朋友创业中,负责技术部分。
平时每天的上班时间和下班时间分别是?
创建阶段也没有固定吧,其实也与大家都差不多。
最近一周有加班么?加班的天数是?一般加到多晚?
创业阶段就没有加班一说了,因为也没有固定的下班时间,有事情就多忙一会儿,晚点回家,没事就早点回去。
你的「典型的一天」?
- 一般是 8 点左右起床,
- 然后 9 点从坪洲站出发,
- 9 点 50 左右到水湾站,出站就是公司所在地:深圳自贸中心。
- 整体感觉还是很方便的。
- 中午楼下吃饭,
- 然后工作到 7-8 点左右回家。
在上边描述的日常中,你最想吐槽的是什么?
其实相对于北京,深圳给我的印象没有太多槽点,大家都很有秩序的排队是印象最深刻的,地铁也不挤(也许是我9点才出发的原因吧), 因为我住坪洲,办公室在深圳自贸中心稍微离我稍微远一点,40-50 分钟左右的地铁也许是最差的一点了吧,不过都还能接受了。
在上边描述的日常中,你最满意的是什么?
最满意的就是团队了,几个合伙人的执行力是我见过最棒的,然后很满意的就是公司环境很好,大家有空可以来参观一下。
在现在这个职位上,你遇到的最大的技术挑战是什么?怎么解决的?
由于我们是创业项目,线上线下联动,并非纯互联网项目,我们没有太多的难点需要解决,所以大部分是在接入一些服务时感觉比较麻烦一些吧,目前来讲没有遇到什么技术难题,因为不管从项目复杂度上还是用户量级上都还没有到有挑战的程度。
在现在这个职位上,你遇到的最大的非技术挑战是什么?怎么解决的?
作为技术负责人,除了搞定技术问题外,更多的时间都是与大家在讨论产品,用户体验,以及一些未来规划可能需要做的准备工作。另外就是需要扩大技术广度来避免团队扩大时的管理难题。目前来讲就是在时间管理上还需要一些调整,不是太能控制好个人时间。
你是怎么度过从新人到熟手的阶段的?公司有安排培训么?如果有,你觉得其中对你最有用的内容是什么?
其实很多的实践经验基本都来自公司项目或者自己业余项目,工作之外的时间主要就是做一些基础知识的积累。还是得感谢这几年经历的几家公司,对我的成长提升都很大,在微博的两年,领导的大力支持给了我很多帮助。然后折腾开源项目的时间也是我个人成长过程中收益最大的投入。 公司培训的话,有过,不过比较少,更多的是团队内的知识分享,这方面手机微博做得还是很棒的。其实分享不在于能让你在这么短时间内学会什么,我觉得它最大的益处就是增加知识面:你会的东西,在分享过程中可能会看到新的玩法,或者更有效的玩法,你不会的东西,增加知识广度,新东西能增加个人的学习气氛(折腾新东西的时候持续的兴奋感特别棒)。另外主动分享也能锻炼表达能力。
你对即将入职这个岗位的新人,有什么建议?(做什么、不要做什么)
新人最大的难点可能在选择上,这个选择包括很多方面吧,比如用什么语言(这个争吵太多了)、用什么编辑器到用什么框架、写不写注释等等,我个人的建议是:把握一个方向,找比较能入手的(像 PHP 就很容易入手),大家都在用的(或者说用得人多的)深入学习,精通它,在项目中去实践,然后扩大知识面,了解一下其它周边的东西,比如你写后端,你起码也得懂 CSS,js 之类的基础使用比较好。少看社区八卦,他们爱吵不吵,不要受影响,相信自己的选择。因为到后面你会发现,真正的牛人,不是在于哪个语言他用得 6 不 6,而是在项目上的架构能力,解决问题的能力才是最厉害的。
你在这些年的工作中,有没有遇到特别好的工具、资料、书籍之类,想要推荐给大家?一两样也行哦。
太多了,不过不常用的我就不提了,自己常用的东西有:
工具方面(全部已购买正版授权):
写代码:Sublime Text 3 + PHPStorm(开源授权) 做设计:Sketch 数据库:Sequel pro 记笔记:Bear TODO:Things 3 办公:企业微信 项目管理:Teambition 其它工具:1password、Charles、Item2 等
书籍方面其实我不太有发言权,因为比较懒,不过还是有本认为很棒的推荐给大家:《C和指针》系列。
调研5、CTO的日常
受访人
39岁,北京某云计算公司 CTO ,原知名上市公司研发总监。
平时每天的上班时间和下班时间分别是?
早10:30到晚8:30。
最近一周有加班么?加班的天数是?一般加到多晚?
有加班,2天,一般加班到9点30。
能否按小时描述一下你的「典型的一天」?
- 8点起床,
- 9点出门,
- 10点半到公司,处理邮件,处理和工作相关的微信,和同事讨论工作进展情况,
- 12点吃饭,
- 12点半看业内资讯、技术文章,
- 1点半休息半小时,
- 2点会议或者面试,
- 3点会议或者面试,
- 4点和同事或者客户沟通工作,
- 5点看工作相关的运营数据、邮件、文档、了解各项工作的进展,
- 6点吃饭,有时候约了饭局出发,不出去的话,
- 6点半和同事沟通工作,
- 8点半下班。
在上边描述的日常中,你最想吐槽的是什么?
上班太远,路上总堵车。
在上边描述的日常中,你最满意的是什么?
发展空间大。
在现在这个职位上,你遇到的最大的技术挑战是什么?怎么解决的?
产品和服务的质量,体现在服务的响应速度快、稳定性好故障率底,主要通过不断改进系统的缺陷,完善技术开发和变更的流程机制。
在现在这个职位上,你遇到的最大的非技术挑战是什么?怎么解决的?
非技术挑战就是拓展业务,跟更多的潜在客户沟通,介绍公司的产品,争取测试的机会。
你是怎么度过从新人到熟手的阶段的?公司有安排培训么?如果有,你觉得其中对你最有用的内容是什么?
自己和公司的人多沟通,了解公司的人、流程、部门。
你在这些年的工作中,有没有遇到特别好的工具、资料、书籍之类,想要推荐给大家?一两样也行哦。
事物管理工具用 JIRA ,文档管理用 Confluence ,代码管理用 BitBucket 。
案例来自于掘金小册《程序员职业小白书 —— 如何规划和经营你的职业》欢迎大家订阅。如侵删。