[ZZ]39条更好的软件开发方法
1.重构是程序员的主力技能。
2.工作日志能提升脑容量。
3.先用profiler调查,才有脸谈优化。
4.注释贵精不贵多。杜绝大姨妈般的“例注”。漫山遍野的碎碎念注释,实际就是背景噪音。
5.普通程序员+google=超级程序员。
6.单元测试总是合算的。
7.不要先写框架再写实现。最好反过来,从原型中提炼框架。
8.代码结构清晰,其它问题都不算事儿。
9.好的项目作风硬派,一键测试,一键发布,一键部署; 烂的项目生性猥琐,口口相传,不立文字,神神秘秘。
10.编码不要畏惧变化,要拥抱变化。
11.常充电。程序员只有一种死法:土死的。
12. 编程之事,隔离是方向,起名是关键,测试是主角,调试是补充,版本控制是后悔药。
13. 一行代码一个兵。形成建制才能有战斗力。单位规模不宜过大,千人班,万人排易成万人坑。
14. 重构/优化/修复Bug,同时只能作一件。
15. 简单模块注意封装,复杂模块注意分层。
16. 人脑性能有限,整洁胜于杂乱。读不懂的代码,尝试整理下格式; 不好用的接口,尝试重新封装下。
17. 迭代速度决定工作强度。想多快好省,就从简化开发流程,加快迭代速度开始。
18. 忘掉优化写代码。过早优化等同恶意破坏;忘掉代码作优化。优化要基于性能测试,而不是纠结于字里行间。
19. 最好的工具是纸笔;其次好的是markdown。
20. leader问任务时间,若答不上来,可能是任务拆分还不够细。
21. 宁可多算一周,不可少估一天。过于“乐观”容易让boss受惊吓。
22. 最有用的语言是English。其次的可能是Python。
23. 百闻不如一见。画出结果,一目了然。调试耗时将大大缩短。
24. 资源、代码应一道受版本管理。资源匹配错误远比代码匹配错误更难排查。
25. 不要基于想象开发, 要基于原型开发。原型的价值是快速验证想法,帮大家节省时间。
26. 序列化首选明文文本 。诸如二进制、混淆、加密、压缩等等有需要时再加。
27. 编译器永远比你懂微观优化。只能向它不擅长的方向努力。
28. 不要定过大、过远、过细的计划。即使定了也没有用。
29. 至少半数时间将花在集成上。时间,时间,时间总是不够。
30. 与主流意见/方法/风格/习惯相悖时,先检讨自己最可靠。
31. 出现bug主动查,不管是不是你的。这能让你业务能力猛涨、个人形象飙升; 如果你的bug被别人揪出来.....呵呵,那你会很被动~≧﹏≦
32. 不知怎么选技术书时就挑薄的。起码不会太贵,且你能看完。
33. git是最棒的。简单,可靠,免费。
34. 仅对“可预测的非理性”抛断言。
35. Log要写时间与分类。并且要能重定向输出。
36. 注释是稍差的文档。更好的是清晰的命名。让代码讲自己的故事。
37. 造轮子是很好的锻炼方法。前提是你见过别的轮子。
38. code review最好以小组/结对的形式。对业务有一定了解,建议会更有价值(但不绝对)。而且不会成为负担。管理员个人review则很容易成team的瓶颈。
39. 提问前先做调研。问不到点上既被鄙视,又浪费自己的时间。
[ZZ]39条更好的软件开发方法的更多相关文章
- Atitit.研发管理--提升效率--软件开发方法DSM总结o99
Atitit.研发管理--提升效率--软件开发方法DSM总结o99 1. 什么是DSM? 1 2. DSM使用的语言DSL 2 3. 模型的优点 2 4. DSM 跟与MDA区别 2 5. MDA的实 ...
- Code Complete 笔记—— 第二章 用隐喻来更充分理解软件开发
在这章里面,提到的隐喻,类同于比喻(建模)的方法的去理解软件开发. 隐喻的优点在于其可预期的效果能被所有人所理解.不必要的沟通和误解也因此大为减低,学习与教授更为快速,实际上,隐喻是对概念进行内在化和 ...
- atitit.提高开发效率---mda 革命性的软件开发方法
atitit.提高开发效率---mda 革命性的软件开发方法 1. 软件开发方式的革命开发工具的抽象层次将再次提升 1 2. 应用框架和事实上现相分离 2 3. 眼下的问题模型和代码不同步 2 4. ...
- [转] Agile Software Development 敏捷软件开发
原文作者:kkun 原文地址:http://www.cnblogs.com/kkun/archive/2011/07/06/agile_software_development.html 敏捷是什么 ...
- 敏捷软件开发 Agile software Development(转)
原文链接: http://www.cnblogs.com/kkun/archive/2011/07/06/2099253.html 敏捷软件开发 Agile software Development ...
- 【软件工程】week5-个人作业-敏捷开发方法初窥
敏捷开发方法初窥 引言:本周的软件工程个人博客作业是阅读关于敏捷开发方法的文章(http://martinfowler.com/agile.html),并撰写自己的读后感.文章内容非常丰富,对敏捷开发 ...
- 敏捷软件开发VS传统软件工程
敏捷软件开发:又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新兴软件开发方法,是一种应对快速变化的需求的一种软件开发能力. 与传统软件工程相比,它们的具体名称.理念.过程.术语都不尽相同 ...
- 敏捷软件开发 VS. 传统软件工程
敏捷软件开发 VS. 传统软件工程 软件工程这一术语1968年被提出,之后美国软件工程专家巴利·玻姆对十多年间研究软件工程的专家学者们提出的一些准则与信条,于1983年对提出软件工程的七条基本定理,将 ...
- 软件开发顶尖高手的杀手锏SQL语句
软件开发顶尖高手的杀手锏SQL语句 ...
随机推荐
- php基础-1
php规范 php文件以<?php开头,以?>结尾. php可以和html代码混写,若当前文件为纯php代码 ,则不用写php结尾 php的一行代码以";"(分号)结尾 ...
- json(传输格式)、异步加载、时间线
xml:过去传输的数据格式 json:现在的传输数据格式,属性名加双引号来区别,其实也是对象,传输的是个字符串,其实就是json 前端JSON.stringfy(obj) 然后传给后台 后台传回来的j ...
- 使用python requests模块搭建http load压测环境
网上开源的压力测试工具超级的多,但是总有一些功能不是很符合自己预期的,于是自己动手搭建了一个简单的http load的压测环境 1.首先从最简单的http环境着手,当你在浏览器上输入了http://w ...
- LA5009 Error Curves
题意 PDF 分析 因为这些函数都可以看成下凸的,所以总函数也是下凸的(可用反证法证明). 三分答案即可,时间复杂度\(O(100)\) 代码 #include<bits/stdc++.h> ...
- 使用C语言简单模拟Linux的cat程序
先给出源码 //fileio.c #include<stdio.h> #include<stdlib.h> #include<fcntl.h> void print ...
- pushpin openresty 集成试用
pushpin 是一个很不错的将restapi 转换为reailtime api 的proxy,openresty 具有很强的nginx 控制能力 可以方便的用来进行api 的开发,默认其他语言pus ...
- sqler sql 转rest api 源码解析(三) rest协议
rest 服务说明 rest 协议主要是将配置文件中的宏暴露为rest 接口,使用了labstack/echo web 框架,同时基于context 模型 进行宏管理对象的共享,同时进行了一些中间件的 ...
- Python中列表(list)、字典(dict)排序的程序
Python3 中的排序,在 Sorting HOW TO 中已经讲得很清楚了.来个实际的例子,对下面的这个 list 依据创建时间排序: pages = [{'title': '十年学会程序设计', ...
- C# 中数据类型以及结构
值类型:int.double.char.bool...,结构. 引用类型:类(string).接口.数组 Class1.cs using System; using System.Collection ...
- 亚马逊aws 一个实例双网卡-两个弹性ip设置
一个实例默认只有1个网络接口: 步骤一.创建一个新的网络接口,附加到实例. 步骤二.手动添加路由 增加两个路由表,为后续的双网关做点小准备: vim /etc/iproute2/rt_tables 添 ...