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


    写工作日志。

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

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

    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多线程操作的SynchronousQueue(FIFO)
    毕业设计 stm32单片机的家庭成员监控监护系统 - 物联网 嵌入式
    用Abp实现两步验证(Two-Factor Authentication,2FA)登录(三):免登录验证
    20231023 比赛总结
    39 本书助力精益成长
    Decorator 装饰者模式简介与 C# 示例【结构型4】【设计模式来了_9】
    【Postman】无法在脚本中获取本地文件
    Metalama简介4.使用Fabric操作项目或命名空间
    springBoot 入门一 :创建springBoot项目
    基于 FPGA 的机器博弈五子棋游戏
  • 原文地址:https://blog.csdn.net/qq_41854911/article/details/127947732