How to be a Programmer 中文版
原文
https://github.com/braydie/HowToBeAProgrammer
译文
https://github.com/ahangchen/How-to-Be-A-Programmer-CN
现在已经生成了gitbook,适合阅读,并且可以方便地导出PDF。
如果你想要一起来改进这份翻译,可以给我提PR,不过希望翻译时尽量保持作者的原意。
文章中出现的一些词汇往往有特殊的含义,可以在4-词汇表找到注释。
引言
做一个好的程序员,困难而高尚。将一个软件工程集体愿景变为现实,最困难的地方在于与你的同事和顾客相处。编程很重要,这需要强大的智力和技能。 但在好的程序员看来,相比构建一个让客户和各种各样的同事都满意的软件系统,(纯粹的)编程真的只是小孩子的玩意。在这篇文章里,我尝试尽可能简洁地总结那些当我21岁时,希望别人告诉我的事。
这可能很主观的,所以,这篇文章注定不适用于所有人,并且有的内容有点武断。我尽量写一些程序员在ta的工作中,非常可能会遇到的事情。大部分这些问题以及它们的解决方案在人们的环境中如此普遍,以至于我(说的)可能有点唠叨。尽管如此,我还是希望这篇文章是有用的。
我们在课堂上学习编程。 那些著作: The Pragmatic Programmer [Prag99], Code Complete [CodeC93], Rapid Development [RDev96], 以及 Extreme Programming Explained [XP99] 都传授编程(知识),并阐述做一个好的程序员这个大话题。 在读这篇文章之前,或者就是现在,你当然也应该读一读Paul Graham [PGSite] 和 Eric Raymond [Hacker] 的文章。 但与那些著作不同,这篇文章强调社交问题并且总结了整套我所知的必须的技能。
在这篇文章里,boss这个词指的是任何一个交给你工程去做的人。 除了一些语境外,我会同义地使用交易,公司,集体这些词,比如,交易意味着赚钱,公司意味着现代的工作空间,集体一般是那些你一起工作的人。
欢迎来到这个群体。
目录
-
入门
-
为什么预估很重要
-
如何预估编程时间
-
如何搜索信息
-
如何把人们作为信息源
-
如何优雅地写文档
-
如何在垃圾代码上工作
-
如何使用源代码控制
-
如何进行单元测试
-
没有思路的时候,休息一下
-
如何决定下班时间
-
如何与不好相处的人相处
-
学会Debug
-
如何分离问题debug
-
如何移除错误
-
如何用Log来Debug
-
如何理解性能问题
-
如何解决性能问题
-
如何优化循环
-
如何处理I/O开销
-
如何管理内存
-
如何处理偶现的Bug
-
如何学习设计技能
-
如何进行实验
进阶
-
如何权衡开发质量与开发时间
-
如何管理软件系统依赖
-
如何评判一个软件是否太不成熟了
-
如何决定购买还是构建
-
如何专业地成长
-
如何评估面试
-
如何知道何时实施昂贵的计算机科学
-
如何与非工程师交谈
-
如何管理开发时间
-
如何管理第三方软件风险
-
如何管理咨询
-
如何适度交流
-
如何直言不赞同以及如何避免
-
如何保持充满动力
-
如何才能被广泛信任
-
在时间和空间之间该如何权衡
-
如何进行压力测试
-
如何权衡简洁与抽象
-
如何学习新技能
-
学会打字
-
如何进行集成测试
-
交流语言
-
重要的工具
-
如何分析数据
高级