你在编程过程中养成了哪些好习惯?

写工作日志。

我一直有大量写笔记的习惯。编程的时候,也经常遇到一些麻烦的问题,思路转瞬即逝,于是把所有这些思路记录下来,会在以后的搜索中成为重要的灵感来源。

我的工作日志里通常以项目为单位,包含四个重要的章节:

  1. 简介
  2. 设计
  3. 项目
  4. 日志

简介

记录一个项目的概要性信息,举几个例子:

  1. 项目的负责人是谁?关联方都有哪些人?以便我遇到问题时可以迅速找到对应的人,尤其是大厂经常有跨部门合作,不认识的关联方很多,不记录一下是很难的
  2. 服务器连接信息,比如测试服务器的地址,访问URL,数据库,MQ,各种常见的调试用入口都是值得记录一下的
  3. 技术文档入口,比如公司的wiki里跟项目相关的wiki的URL

设计

用来记录各种设计思路。包括把项目的各个部分进行拆解后的大模块,模块之间的接口,架构设计等等。

多个小节里记录各个部分的设计思路。尤其是经常有多种设计,可以再分一级目录来记录。每种设计都会有自己的特点,还可以开个表格做对比。比如某个方案的实现速度快,另一个方案可以利用成熟的设施,还一个方案的风险很小,一个方案很炫酷适合以后做分享等等。

这些设计的细节,使得以后寻求代码以外的思路时可以迅速的找到当初的思路。毕竟,很多技术细节,并不是仅仅依靠代码就能看懂的。

项目

项目进度管理用的,我会做个树形图,把每个工作都分拆的足够细致。并用颜色记录每个工作的完成程度。白色标识未开始,黄色是进行中,绿色完成,红色失败。有些带有一定技术风险的项目,同一个功能模块可能有几个技术方案备选,其中一些方案失败也是常态。

尤其是我用SVG图来整理整个树形图,每个节点都是可点击,通过HTML铆点到页面内工作项的具体卡片,来看这个工作项的具体描述。比如更详细的设计思路,实现过程,调研结论等等。

用树形图的方法,也就是项目管理领域常见的WBS方法。

经常是一个项目部署后还会有各个阶段的开发目标。比如功能修改。那么就可以每次子项目开一个小节,记录一下此次的需求方,需求内容等等。这样到年底要整理一年做过的事情时,就会非常有条理。

日志

记录每一天的工作内容。每天一个小节,以日期为标题。

有时候做实验较多,就会在一天中开多个卡片,每个卡片对应一次实验的过程。前面是控制变量,中间是实验结果,后面是对实验结果的简单分析,以便下次实验改进。

格式与搜索

熟悉我的朋友知道,我的笔记格式是reStructuredText,编译工具是一个只有2MB的docutils。生成HTML页面,而源码通过git管理。这样整个笔记库都可以通过grep来进行高效率的搜索。这可比那些源文件是专有格式的方便太多了。

一个例子

以一个基于WiFi的室内定位项目为例子。

目录结构就是如上所说的:

img

设计一章也包含了对WiFi定位原理的记录。

img

项目管理部分是树形图,记录项目分解和进度。

img

具体工作项卡片:

img

工作日志则是可以随意记录,不求规整,但求以后提供一点低价值线索:

img

软件工程

进入软件工程师的工作后,这些不是编程,却对编程有着重要意义的技能也是很多的。如上的工作日志技巧大半是我慢慢摸索出来的,少数是学PMP时学到的。

学习的过程就是把前人的经验为自己所用,而非自己再趟一遍所有的坑,所以我的学习过程中也会按一定计划来学习这些知识。《编程卓越之道3:软件工程化》这本书里就讨论了很多软件工程方面的技术,使得驾驭更大的项目时,也有更多成熟工具可供选择。有兴趣的朋友去看看。

img编程卓越之道(卷3):软件工程化京东¥127.80去购买

尤其,这本书里还有我写的推荐语 😃

img

编程中的那些技巧

编程中也有很多技巧,与语言无关,但对提升整个项目的水平有着巨大的帮助。代码质量的重要性不言而喻,随时随地可用的软件才是好的软件。

而要做到随时随地可用,就要处理很多异常情况,比如用精巧的逻辑来防御。关于这些技巧,非常推荐一本书《代码大全2纪念版》。我也在读这本书,后续会分享一些阅读体验。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小熊coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值