最近公司在忙多活的项目,我们的监控系统是基础组件。我的建议下针对多活项目和未来各种各样的需求,用Angular 2开发一套新的UI界面。经过一个多月(当然还有过程中各种其他的事情),现在初步上线了。
最近的状态是各种各样的事情需要操心(主要原因是事事亲力亲为,不懂得把事情交出去),因此进行了下反思,总结下我期望的工作原则。
Rule 1: Don’t do repeated work!
程序员的黄金法则–DRY(Don’t repeat yourself),在工作安排和职业规划上同样适用。
前段时间电面一位工作十年经验的Java程序员,问道“你了解JVM参数调优吗?或者你做过profiling吗?”,回答是“有基本的了解。没做过profiling”。这个回答是令我极其吃惊的,我无法想象这么多年的工作中他做了多少重复性的工作。
离开上家公司时,我最得意自豪的成果就是把曾经需要近十人团队的一个大项目“优化”成两个人就能Handle,还能持续的开发新功能的状态。其中不外乎就是增加监控,提供自动化程度以及简化代码。目前现在的工作中,也是碰到了类似的问题:项目复杂、依赖众多,缺少必要的监控,发布排查需要人工参与等等。给我一个月的时间(不受外部打扰的),我肯定可以把项目“整理得”井井有条。但是我不会这样做,至少不会直接参与进去。因为:DRY。
做重复的工作就是浪费生命。既然不愿意做重复劳动,那么就总有人来做这个事情。最佳的人选就是没做过类似工作的人:对他来说,也是新的领域;即使他做的不够好,对他也是一种锻炼。所以想要DRY,第一点是你有可能将你的工作交付给其他人来做。
交付工作内容不是一个轻松的事情。至少,你和对方先需要达成一定程度的共同认识。其次,就是第二点:你需要指导或教导对方如何取做。每个人对于事物的理解都不一样,考虑的侧重点不同,新人第一次肯定会踩坑或犯错。所以你作为过来人,你的指责就是利用你的经验指导对方,纠正方向或避免明显的错误。而教导则是你直接告诉他该怎么做。各位可以考虑下两者之间的区别,具体该如何可视对方性情和领悟力。
好,现在我们的工作交付给他人执行了,剩下的才是最重要的:把控交付与质量。任务是给你的,或者是你分出去的,你的上级只会找到你。所以交付质量是与你息息相关的。简单而言,就需要考虑或设计几个关键的质量点,例如:架构/解决方案的设计,功能性验证,进度控制等。
所以,程序员永远不可能都在coding,到了一定级别肯定要花一部分精力来做项目/工程管理。而DRY原则能帮助你有效精炼你的职业生涯。
Rule 2: Be hungry, be foolish, be owner.
“Be hungry, be foolish”经典的教导不多说:永远对新技术新知识保持好奇心,时刻都在学习与输出。”Be owner”则是要求你把自己视为你当前工作项目的owner。即使你只负责一个很小的模块,你也要对你的代码负责。因为很多年之后,虽然你早已离开那家公司,’git blame’还是会把你的”工作态度“翻出来。
Rule 3: Always think what are you doing and how to do before you start.
人的一生都必须不停的反思,扣问自己:自己到底要的是什么,想做什么。面对各种选择,只有不忘初心,才能顺着一条路走下去。
做之前先想一想。想你要做什么,为什么而做,做了有什么成果。
Rule 4: Try not to distube others, so don’t let them distube you!
我的习惯一直是尽量不打扰别人,也因此弄的自己很累。使用Rule1,适当的授权与交付,就可以减轻自我的负担。
而第二点,尽可能少人其他人打扰你,就需要至少做到:1.提供重复的信息,减少只有你知道的信息;2. 让别人养成问之前先想想的习惯,至少有问必答是某种程度的纵容了。
简单的总结了下我心中的工作原则。尽管实际情况总是事与愿违,面对纷繁的外部打扰,我会把握初心,利用工具管理好每日的日程,争取创造最大的价值。