学习笔记之三十年软件开发之路 - Things I Learnt The Hard Way (in 30 Years of Software Development)
三十年软件开发之路
- https://mp.weixin.qq.com/s/EgN-9bIHonRid1DM0csQDw
- https://blog.juliobiason.net/thoughts/things-i-learnt-the-hard-way/
- 【CSDN编者按】“千帆过尽仍少年”,对于程序员来说,保留技术初心、不断提升实力是夯实自己的不二法则。而本文的作者,作为一名有着三十多年开发经验的“老”程序员,就在本文中详细总结了自己这些年踩过的坑和实践得出的真理,谈到了包括软件开发、团队工作、个人成长等方方面面。
- 软件开发
- 先明确问题,再开始写代码
- 将步骤写为注释
- Gherkin是帮助你了解期望(expectation)的好帮手
- 单元测试很好,集成测试更好
- 测试可以让API更好
- 做你知道如何在命令行上运行的测试
- 时刻准备好扔掉你的代码
- 好的语言生来带有综合测试
- 未来思路是垃圾思路
- 文档是写给未来自己的情书
- 功能文档是份合同
- 如果一个函数的描述包含“和”,这就是不对的
- 不要使用布尔型变量作为参数
- 注意界面的变化
- 好的语言自带集成的文档
- 一门语言绝不仅仅是一门语言而已
- 有时候,宁愿让应用程序崩溃也不要什么都不做
- 如果你知道如何处理该问题,那么就处理它
- 类型决定你的数据是个什么东西
- 如果你的数据具有模式(schema),请使用结构(structure)来保留它
- 理解并保持cargo cult的方式
- 不要管所谓的“合适的生产力工具”,你只需要尽力去push进程
- “正确的工具”比你想象的更明显
- 不要跟你项目之外的事情纠缠
- 数据流动比模式更重要
- 设计模式是用来描述解决方案的,但它不能找到解决方案
- 学习函数式编程的基础知识
- 认知成本是可读性的杀手
- Magical Number 7 ,正负二(7+-2的范围内)
- 走捷径挺nice的,但只是在短期内如此
- 抵制“轻松”的诱惑
- 总是在你的日期中使用时区
- 总是使用UTF-8
- 从笨办法开始
- 日志用于事件,而不是用户界面
- Debugger们被高估了
- 始终使用版本控制系统
- 每次提交一个更改
- 当你过度交换时,“git add -p”是你的朋友
- 按数据/类型组织项目,而不是功能
- 创建库
- 学会监控
- config文件是个好东西
- 命令行选项很奇怪,但很有帮助
- 不仅仅是功能组成,还有应用程序组成
- 即使是做APP,也要从原始的东西开始
- 优化是面向编译器的
- 通过懒惰(评估)
- 在团队/工作上
- code review并不是为了彰显风格
- 代码格式化工具还可以,但它们也不是无往不胜的
- 代码风格:遵循它就是了
- ...除非代码样式是Google Code样式
- C / C ++只有一种编码风格:K&R
- Python只有一种编码风格:PEP8
- 显式优于隐式
- 公司想要专才,但全才在公司待的时间更长
- 心中有用户
- 处理用户数据的最佳安全方法是压根不捕获它
- 记下来那些“让我花了一个多小时才解决的愚蠢失误”
- 如果它无法在你的计算机上运行,那么你就有麻烦了
- 个人生活
- 该停下来的时候,就停下来吧
- CoC保护的是你,而不是别人
- 学会说不
- 你负责你代码的使用
- 当还没完成时,不要说“已经完成了”
- 你将从痛苦中了解你自身
- 人们之所以会对代码/架构感到生气/烦恼,是出于关心
- 从你的烦恼中学习
- 注意人们对你的反应
- 学会识别那些人格有毒的人,并远离他们
- 谨防微观侵略
- 不,我不认为这样的人是“会改正的”
- 只有当你意识到自己是那类有毒的人/微侵略者时,才有可能自己改正
- 英雄项目:总有一天你必须做的事情
- 不要混淆“英雄项目”与“英雄综合症”
- 知道何时该果断辞职
- IT世界是一个非常小的“蛋”
- 纸质笔记实际上很有帮助
- Trello非常酷,但Post-it更好
- 在博客中记录你笨手笨脚的解决方案仍然比什么都不写要好
- ...但请关闭评论
- 把你的笨手笨脚的解决方案发布到网上
- 列出“我不知道的事情”
学习笔记之三十年软件开发之路 - Things I Learnt The Hard Way (in 30 Years of Software Development)的更多相关文章
- 【Java学习笔记之三十四】超详解Java多线程基础
前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 正文 线程与进程 1 线程:进程中负责程序执行的 ...
- 【Java学习笔记之三十】详解Java单例(Singleton)模式
概念: Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建 ...
- 【Java学习笔记之三十二】浅谈Java中throw与throws的用法及异常抛出处理机制剖析
异常处理机制 异常处理是对可能出现的异常进行处理,以防止程序遇到异常时被卡死,处于一直等待,或死循环. 异常有两个过程,一个是抛出异常:一个是捕捉异常. 抛出异常 抛出异常有三种形式,一是throw, ...
- VSTO 学习笔记(十)Office 2010 Ribbon开发
原文:VSTO 学习笔记(十)Office 2010 Ribbon开发 微软的Office系列办公套件从Office 2007开始首次引入了Ribbon导航菜单模式,其将一系列相关的功能集成在一个个R ...
- VSTO学习笔记(十五)Office 2013 初体验
原文:VSTO学习笔记(十五)Office 2013 初体验 Office 2013 近期发布了首个面向消费者的预览版本,我也于第一时间进行了更新试用.从此开始VSTO系列全面转向Office 201 ...
- VSTO 学习笔记(十二)自定义公式与Ribbon
原文:VSTO 学习笔记(十二)自定义公式与Ribbon 这几天工作中在开发一个Excel插件,包含自定义公式,根据条件从数据库中查询结果.这次我们来做一个简单的测试,达到类似的目的. 即在Excel ...
- Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...
- [转]Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
本文转自:https://www.cnblogs.com/zhongweiv/p/nodejs_koa2_webapp.html 目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装 ...
- Nodejs学习笔记(十五)—Node.js + Koa2 构建网站简单示例
前言 前面一有写到一篇Node.js+Express构建网站简单示例:http://www.cnblogs.com/zhongweiv/p/nodejs_express_webapp.html 这篇还 ...
随机推荐
- MyBatis(十):Mybatis 几种批量操作的对比
本章主要讲解几种批量处理的用法及对别,批量处理一般用法包含以下几种: 1)普通foreach处理(没循环一次执行一次与mysql服务器交互操作),实际上也是采用的ExecutorType.SIMPLE ...
- js正则表达式提取汉字和去掉汉字
//只提取汉字 function GetChinese(strValue) { if(strValue!= null && strValue!= "" ...
- AWS研究热点:BMXNet – 基于MXNet的开源二进神经网络实现
http://www.atyun.com/9625.html 最近提出的二进神经网络(BNN)可以通过应用逐位运算替代标准算术运算来大大减少存储器大小和存取率.通过显着提高运行时的效率并降低能耗,让最 ...
- Mac下iTerm2使用
之前一直使用 Mac OS 自带的终端,用起来虽然有些不太方便,但总体来说还是可以接受的,是有想换个终端的想法,然后今天偶然看到一个终端利器 iTerm2,发现真的很强大,也非常的好用,按照网上配置了 ...
- kotlin基础 字符串模板
${变量名} var tmp="字符串模板” print("今天学习${tmp}这个知识点")
- python bottle + jieba分词服务
2019-12-16 19:46:34 星期一 最近接触到结巴分词项目, 就试试 用python的bottle库来当服务器监听localhost:8080 把请求的数据转给jieba来分词, 并返回分 ...
- phpspreadsheet
2019-5-9 8:20:07 星期四 昨天在看PHPExcel的时候, github上作者说已经停止更新了, 推荐使用phpspreadsheet, 查看了一下官方文档, 功能还挺强大的, 可以读 ...
- phpspreadsheet 中文文档(四) 创建电子表格+档案格式
2019年10月11日14:01:48 该Spreadsheet班 该Spreadsheet班是PhpSpreadsheet的核心.它包含对所包含工作表,文档安全性设置和文档元数据的引用. 为了简化P ...
- Prometheus监控实战day2——监控主机和容器
Prometheus使用exporter工具来暴露主机和应用程序上的指标,目前有很多exporter可供利用.对于收集各种主机指标数据(包括CPU.内存和磁盘),我们使用Node Exporter即可 ...
- vim、vi 快捷键
普通模式 移动光标 nj.nk 上下移动n行 nb.nw 前后移动n个单词 nh.nl 左右移动n个字符 L 移到屏幕的最后一行 M 移到屏幕的中间一行 H 移到屏幕的第一行 nG 移到文件第n行 G ...