不是只有编程写代码才能增强编程能力; 有多种途径都可以间接或直接地增强编程能力。
多运动, 坚持锻炼
每天早晚各半小时坚持运动锻炼, 增强身体机能, 保证充沛的精力, 能够很好地促进大脑思维的活跃度, 间接有助于编程能力的提升; 孱弱的身体是无法担当大责任的。
建议: 每天下班之后就不要再写程序攻读技术书籍了, 活动活动, 聊聊天, 读读人文社科的书籍或视频, 增强语言与交流技能。
培养整体性设计思维
设计是对需求/目标的整体性理解和统一处理框架。 缺乏有效的设计, 开发就面临着耗时返工、延迟项目进度的重大风险。 阅读设计性书籍, 绘制设计图纸, 培养设计技能; 实际开发中跳出“功能开发”的局部思维, 注重从整体和服务接口角度来思考根本性的或通用的解决方案, 形成大局视野。
阅读优秀项目的源代码
阅读开源项目的源代码, 增强软件系统的分析和解构能力, 汲取优秀设计思路和做法, 同样有助于编程能力的提高。 学习一门语言或技术时, 该语言或技术的基础库是非常有必要研究的; 其次, 是一些小巧而灵活、易于学习、分析和掌握的应用框架。 如何阅读源代码, 请参考博文: 《源代码阅读总结(一) —— 基本方法》
做有难度的编程训练
从抽象一点的视角来看, 编程即是运用常见编程元素(比如列表、映射、树、对象、函数等)以及组合结构来表达现实系统的静态构造和动态运行。 可以针对这些常用结构和算法做一些编程练习(就像《编程珠玑》 那样), 更娴熟地掌握基本编程元素的操控能力。 可以实现一个比较实用的算法, 比如 RETE 算法; 可以选择一个子主题, 比如资源分配调度, 做一个小专题研究; 可以做一些较有难度的编程小项目, 比如, 一个简易的Web 服务器, 一个 Shell 解释器 ; 可以针对一些需求开发一些可重用组件, 简易测试框架等。
一些博文推荐做一些小项目; 如果项目本身没有太多价值, 不如去攻克一些有趣的难题并进行分享。可以聚焦最关键的部分, 而不为那些次要的东西所分散精力。 要写, 就写有含量有难度的程序, 不要重复工作中已经做到的事情。
推荐书籍: 《SICP》, 《编程珠玑》, 《算法导论》, programming-challenges