卓有成效地工作与生活
除了各种提高效率的技术手段,最卓有成效的方式无疑是提炼出并集中力量做好那 20% 最重要的事情。 1. 运动强身(早晚各一次, 每次 20-30min) 身体素质是一个人生活、工作、家庭、职业、事业乃至一切的基石。 若身体出了问题, 那么所奋斗和收获的一切都会迅速缩减为零。 没有第三句话。 2. 充足的休息和睡眠(23:00-6:30) 尽管许多成功人士都声称他们曾连续一段时间不超过5个小时休息地工作, 也时不时有人鼓吹通宵作战, 但是, 那一定是值得效仿的方式吗? 或者说适合我们自己的方式? 或者是否存在更优的方式? 充足的休息和睡眠时间会令人精力充沛,做事情时更有力量, 也更容易保持快乐心态。 有一类人或许更值得学习: 他们开始跑得并不快, 但是最终跑完了马拉松全程。
运动、休息和睡眠是确保可持续长久发展的重要防线, 一定要充分加固加强, 养成良好固定的习惯; 制订合理的运动和作息计划, 并严格执行。
3. 丰富的业余活动 丰富的业余活动让人感受到生活的美好气息, 反过来也会促使人更有热情地投入到编程创作活动, 达到一种美妙的平衡。 烹饪、文学、 绘画、 旅行、 种花养草, 有很多选择。 每个月可以制订一些业余活动的安排, 比如, 阅读一本欧亨利的短篇小说集, 学会做若干道菜肴, 到XXX地旅行和日记, 安排一次朋友聚会Party,等等。 4. 学习与挑战 生活不能太安逸。 找一件值得探索的事情, 或者定期地追求新的目标, 学习和挑战可以令人保持充沛的战斗力, 更好地工作, 获得丰厚的回报。 每个月挑战一个技术子目标, 比如 深入学习 JDK 并发库源代码 , 或者十个设计模式, 或者入门 Hadoop , 或者读懂经典的树算法, 或者自行实现一个有意义的工具; 目标要小而有一定难度。 同样, 也可以挑战非技术子目标, 比如, 向公司团队成员分享学习 JDK 并发库源代码的心得体会, 撰写技术专题文章, 制订项目开发计划, 与客户沟通分析需求等。
技术学习挑战与丰富的业余活动并行, 相互辉映, 才能让技术人生更加精彩。
5. 在工作中学习, 学习与工作融合 对自己残忍, 才能对爱人更温柔。 上班八个小时, 是否能够既把工作干得漂亮, 又从中收获颇多呢? 借助工作中的问题学习和成长, 深入钻研, 也不失为是一种非常棒的方式。 困难之处在于, 必须磨炼自己以非常快的速度学习、领会和实践新东西, 全力以赴去思考问题, 开发优秀的软件。 6. 合理分配精力, 适当停顿 精力最充沛, 精神最集中的时候, 自然最好去安静地开发新的功能; 精力消退时, 则可以处理一些琐碎事项, 或者修复 BUG。根据自己的实际情况, 合理地分配精力给不同类型的工作, 从而在同样时间内有更多产出。 此外, 适当地停顿休息, 也会有助于产生更高的效率和工作质量。
根据科学规律及自身情况来创建和定制个性化的开发活动, 形成适合自己的独特而高效的开发方法。有时间多阅读一些认知学、心理学的书籍或视频, 或许能收获比业界流行的各种“编程方法学”更为有益的启发。
对于每一项, 尽量制订具体的任务或活动, 具体化, 明确化, 这样, 才能真正贯彻执行, 逐步塑造出更为丰满的软件生活。
程序员的时间真的很宝贵。花费了大量时间沉浸在代码里写程序, 有时调试一个 BUG 要花上一两天甚至更多, 时光就这样不知不觉地流逝了, 而你完全可以拿来谈恋爱做更“美好”的事情! 真的不容易! 尽管有一些人声称能够一辈子写程序, 但是说心里话,—— 能够写程序是一回事, 充满探索热情和力量地写程序又是一回事, —— 最最能精力充沛、 充满创意地写程序的时段就是 17 - 35 岁之间。 在你最宝贵的时段内, 最好能够做一些有创新有前瞻性有影响力的事情, 哪怕有很大难度。
可以扪心自问一下: 你所负责的系统的用户有多少, 影响面有多大, 发布失败的风险有多大? 你所从事的开发领域是否具有前瞻性, 是否可以带来一定程度的变革? 你的工作内容是具有挑战性的, 还是任何一个普通的编程新手进来培训一个月就可以胜任? 遗憾的是, 可能大多数人给出的答案都不是令人鼓舞的。 因此, 最充分尊重程序员的方式, 是让他们做更少的事情, 做更有成就的事情, 尽可能减少不必要做的事情。 不要花费大好的时间和精力, 做重复的事情, 或者做了又改, 改了又丢, 或者做那些用户根本不怎么用的功能。 我入职后的这一年, 主要是将相同的功能用 flex 和 Extjs 分别做了一遍, 处理了很多琐碎的事项 。 当我一想到人生的黄金时段耗费在这些并没有创新意义的事情时, 而我还有多少时间, 心里是多么的痛心! 当然, 我能够努力独立承担起一个系统的开发和维护工作, 无论对于公司和团队, 还是锻炼自己的能力, 也是非常有价值的。 但这是两码事。
时间是经不起随意耗费的,投身于具有前瞻性的事业, 用最小代价做更多有价值的事情, 是有追求的程序员梦寐以求的事情。
所以, 现在的我会觉得, 不要急于地写代码, 首先定位和分析好需求, 转化为有效的目标和设计, 尽可能确保尽早地在做正确的事情, 减少思考不成熟导致的返工, 才能最有效率地完成任务。 思考得越充分, 才能做得更少; 要做好, 先想透。