为什么有的程序员觉得自己是个打杂的?

看到此文,是否觉得体内洪荒之力爆发,饥渴难耐想吐槽
本文为转载文章,若有侵权或违规行为,请联系我,会及时处理相关内容。

支付宝微  信

先说几句题外话。前几天在小密圈里介绍了几位嘉宾,大部分是我的同事,其中还有一位是我老板。有人发消息问我:“你把同事老板都拉到圈子里,不怕有的话不方便说么?”

其实我平时连发朋友圈都几乎不用分组。老板同事都在圈子里盯着,确实,我不能嘚瑟得太厉害,因为就算自己不会不好意思,他们也得替我不好意思。所以啊,这样反而于我有益处了。本来就是分享自己作为工程师的日常,以及一些所思所想。有他们在,我的分享反倒更真实和诚实,也让我时时刻刻警醒着做自己,不要上天。此外,就像最初开公众号的初衷,之所以我有那么多东西可以分享,很大程度因为我身边有很多这样给我启发和帮助的朋友、同事。我的故事,很多时候就是他们的故事。

言归正传。


好几次收到留言,问:觉得每天都没有进步,做的事情似乎都没有太大的意思,自己很难有提高,怎么办?

觉得每天都做着重复性的工作。

数学和计算机科学都有两个境界。一个是具体问题,一个是抽象问题。如果对于每一个具体问题,都是只是想着怎么去解决问题本身,那么很难有提高。而经历了几次重复性的思考或者劳动后,能够根据自己的理论知识,提取出一个以一敌百的解决方案,这就是抽象的艺术。

一个最具体的例子,就是写脚本。没有写过脚本的程序员不是个程序员,写不出好的脚本的程序员就不是个好程序员。而同样是写脚本,有些人写的,把很多条件和输入参数化,因此可以适用于更多场景;而有些人写的,稍微换一下条件,就不能用,必须重写了。Design Pattern 里比如 Generics、Factory 等的概念,也都有这个道理在里面。顺便推荐一下《Design Pattern》这本书,没看过的应该看一遍,看过的有时间的时候可以考虑再看一遍。

觉得很多时候都在和老系统的代码作斗争,修 bug,加补丁,等等。

其实对于工程师而言,一个很好的练习,就是试着重构一个有很多问题的老系统。老系统在很多时候,因为设计初期很多需求不一样,资源和约束也不一样,随着时间推移,才慢慢显得不足。而当你了解一个系统要做的东西,以及所有的缺陷和坑,试着去思考:如果是你来重新设计这个系统,你会怎么做?一定会有哪些选择?一定会避免哪些选择?

这样的练习,在脑海里一遍遍地过,即使你没有时间和精力去真的重构,也会对你能力的提高有很大的帮助。而有机会的时候,从一些小的地方着手,试图一点点地在力所能及的范围内改进系统。这比鄙视旧系统,然后不断写出更烂的代码、把系统变得更糟糕要好很多。

还有人说忙。

有读者问我:“为什么硅谷可以少加班又做的技术那么棒?” 硅谷虽然很自由,从来没有公司规定你的上班时间,但是就我周围的人而言,一天除去杂务,有效工作时间在十几小时的也比比皆是。辛苦,不过你没看到。你仔细算算你每天处理时间的方式,是不是真的忙到连思考的时间都没有了。而工作中多花点功夫思考,绝对比做很多不明就里的搬砖,然后抱怨自己是打杂的,要有意义得多。

最后一点,其实是我最近感触最深,受益最多的一条。而这一条,和项目管理,或者说团队合作有关。

如果你凑巧是团队里的技术负责人,你是怎么给你团队里的人分配工作的呢?

是直接扔一大块?那如果有的人得到一块太大,有的人得到一块太小怎么办?

分成很多比较细的任务,按照大家工作的效率和速度,保持个任务队列,随时随机分配这些比较细的任务?这样一来很难让工程师有很强的拥有感和责任感,而且他们对整个系统或者项目没有一个比较前瞻性的了解。二来很多时候因为没有 Ownership 或责任感,这些小块的设计和实现都更容易出问题,后期出 bug 的可能性也更大。也极容易产生 “打杂感”。

今天得老板指点,觉得他说的方法特别好。我们不妨称之为 “拆包、打包” 法。

什么意思呢?

拆包,就是我现在知道项目中有哪些大块。但是不要直接一块一块扔给别人。因为前面说了,很可能有工作量不均衡的问题。要做的第一步,就是把这些大块全部拆成小块,每个小块需要的工作量或者说时间大约是同等的。

打包,就是个知人善用的问题了。想一下组里有哪些人,每个人的能力和经验是怎样的,然后把很多相关的拆包后的小块根据一个主线索,重新给每个人打包。这样,每个人都能很明确地知道自己的责任范围,而你也知道包裹里有些什么,知道这是他努力后能完成的。这样,对项目的时间线也有比较好的估计。而每个人也能根据自己的情况,调整快慢,保证负责的东西能高质量地做完。

关于这一点,我也还在练习,算是现学现卖。不过我觉得能做到这一点,会很大程度让团队里的每个人都避免产生 “打杂” 的感觉。


原文链接:为什么有的程序员觉得自己是个打杂的


分类: 程序人生, 职业 | 标签: , | 1个评论 | Permalink

1 评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注