Giter Site home page Giter Site logo

how-to-be-a-programmer-cn's Introduction

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这个词指的是任何一个交给你工程去做的人。 除了一些语境外,我会同义地使用交易,公司,集体这些词,比如,交易意味着赚钱,公司意味着现代的工作空间,集体一般是那些你一起工作的人。

  欢迎来到这个群体。

目录

  1. 入门
    • 个人技能
      • [学会Debug](1-Beginner/Personal-Skills/01-Learn To Debug.md)
      • [如何分离问题debug](1-Beginner/Personal-Skills/02-How to Debug by Splitting the Problem Space.md)
      • [如何移除错误](1-Beginner/Personal-Skills/03-How to Remove an Error.md)
      • [如何用Log来Debug](1-Beginner/Personal-Skills/04-How to Debug Using a Log.md)
      • [如何理解性能问题](1-Beginner/Personal-Skills/05-How to Understand Performance Problems.md)
      • [如何解决性能问题](1-Beginner/Personal-Skills/06-How to Fix Performance Problems.md)
      • [如何优化循环](1-Beginner/Personal-Skills/07-How to Optimize Loops.md)
      • [如何处理I/O开销](1-Beginner/Personal-Skills/08-How to Deal with IO Expense.md)
      • [如何管理内存](1-Beginner/Personal-Skills/09-How to Manage Memory.md)
      • [如何处理偶现的Bug](1-Beginner/Personal-Skills/10-How to Deal with Intermittent Bugs.md)
      • [如何学习设计技能](1-Beginner/Personal-Skills/11-How to Learn Design Skills.md)
      • [如何进行实验](1-Beginner/Personal-Skills/12-How to Conduct Experiments.md)
    • 团队技能
      • [为什么预估很重要](1-Beginner/Team-Skills/01-Why Estimation is Important.md)
      • [如何预估编程时间](1-Beginner/Team-Skills/02-How to Estimate Programming Time.md)
      • [如何搜索信息](1-Beginner/Team-Skills/03-How to Find Out Information.md)
      • [如何把人们作为信息源](1-Beginner/Team-Skills/04-How to Utilize People as Information Sources.md)
      • [如何优雅地写文档](1-Beginner/Team-Skills/05-How to Document Wisely.md)
      • [如何在垃圾代码上工作](1-Beginner/Team-Skills/06-How to Work with Poor Code.md)
      • [如何使用源代码控制](1-Beginner/Team-Skills/07-How to Use Source Code Control.md)
      • [如何进行单元测试](1-Beginner/Team-Skills/08-How to Unit Test.md)
      • [没有思路的时候,休息一下](1-Beginner/Team-Skills/09-Take Breaks when Stumped.md)
      • [如何决定下班时间](1-Beginner/Team-Skills/10-How to Recognize When to Go Home.md)
      • [如何与不好相处的人相处](1-Beginner/Team-Skills/11-How to Deal with Difficult People.md)
  2. 进阶
    • 个人技能
      • [如何保持充满动力](2-Intermediate/Personal-Skills/01-How to Stay Motivated.md)
      • [如何才能被广泛信任](2-Intermediate/Personal-Skills/02-How to be Widely Trusted.md)
      • [在时间和空间之间该如何权衡](2-Intermediate/Personal-Skills/03-How to Tradeoff Time vs Space.md)
      • [如何进行压力测试](2-Intermediate/Personal-Skills/04-How to Stress Test.md)
      • [如何权衡简洁与抽象](2-Intermediate/Personal-Skills/05-How to Balance Brevity and Abstraction.md)
      • [如何学习新技能](2-Intermediate/Personal-Skills/06-How to Learn New Skills.md)
      • [学会打字](2-Intermediate/Personal-Skills/07-Learn to Type.md)
      • [如何进行集成测试](2-Intermediate/Personal-Skills/08-How to Do Integration Testing.md)
      • [交流语言](2-Intermediate/Personal-Skills/09-Communication Languages.md)
      • [重要的工具](2-Intermediate/Personal-Skills/10-Heavy Tools.md)
      • [如何分析数据](2-Intermediate/Personal-Skills/11-How to analyze data.md)
    • 团队技能
      • [如何管理开发时间](2-Intermediate/Team-Skills/01-How to Manage Development Time.md)
      • [如何管理第三方软件风险](2-Intermediate/Team-Skills/02-How to Manage Third-Party Software Risks.md)
      • [如何管理咨询](2-Intermediate/Team-Skills/03-How to Manage Consultants.md)
      • [如何适度交流](2-Intermediate/Team-Skills/04-How to Communicate the Right Amount.md)
      • [如何直言不赞同以及如何避免](2-Intermediate/Team-Skills/05-How to Disagree Honestly and Get Away with It.md)
    • 评判
      • [如何权衡开发质量与开发时间](2-Intermediate/Judgment/01-How to Tradeoff Quality Against Development Time.md)
      • [如何管理软件系统依赖](2-Intermediate/Judgment/02-How to Manage Software System Dependence.md)
      • [如何评判一个软件是否太不成熟了](2-Intermediate/Judgment/03-How to Decide if Software is Too Immature.md)
      • [如何决定购买还是构建](2-Intermediate/Judgment/04-How to Make a Buy vs Build Decision.md)
      • [如何专业地成长](2-Intermediate/Judgment/05-How to Grow Professionally.md)
      • [如何评估面试](2-Intermediate/Judgment/06-How to Evaluate Interviewees.md)
      • [如何知道何时实施昂贵的计算机科学](2-Intermediate/Judgment/07-How to Know When to Apply Fancy Computer Science.md)
      • [如何与非工程师交谈](2-Intermediate/Judgment/08-How to Talk to Non-Engineers.md)
  3. 高级
    • 技术评判
      • [如何从不可能的事情中找到困难的地方](3-Advanced/Technical-Judgment/01-How to Tell the Hard From the Impossible.md)
      • [如何使用嵌入型语言](3-Advanced/Technical-Judgment/02-How to Utilize Embedded Languages.md)
      • [选择语言](3-Advanced/Technical-Judgment/03-Choosing Languages.md)
    • 机智地妥协
      • [如何与时间压力作斗争](3-Advanced/Compromising-Wisely/01-How to Fight Schedule Pressure.md)
      • [如何理解用户](3-Advanced/Compromising-Wisely/02-How to Understand the User.md)
      • [如何获得晋升](3-Advanced/Compromising-Wisely/03-How to Get a Promotion.md)
    • 服务你的团队
      • [如何发展才能](3-Advanced/Serving-Your-Team/01-How to Develop Talent.md)
      • [如何选择工作内容](3-Advanced/Serving-Your-Team/02-How to Choose What to Work On.md)
      • [如何从你的同伴身上获得最大收益](3-Advanced/Serving-Your-Team/03-How to Get the Most From Your Teammates.md)
      • [如何分割问题](3-Advanced/Serving-Your-Team/04-How to Divide Problems Up.md)
      • [如何处理无趣的问题](3-Advanced/Serving-Your-Team/05-How to Handle Boring Tasks.md)
      • [如何为一个工程获取支持](3-Advanced/Serving-Your-Team/06-How to Gather Support for a Project.md)
      • [如何发展一个系统](3-Advanced/Serving-Your-Team/07-How to Grow a System.md)
      • [如何高效交流](3-Advanced/Serving-Your-Team/08-How to Communicate Well.md)
      • [如何把别人不想听的话说给他们听](3-Advanced/Serving-Your-Team/09-How to Tell People Things They Don't Want to Hear.md)
      • [如何处理管理神话](3-Advanced/Serving-Your-Team/10-How to Deal with Managerial Myths.md)
      • [如何处理混乱的组织](3-Advanced/Serving-Your-Team/11-How to Deal with Organizational Chaos.md)
  4. 词汇表
  5. 附录 A - 书籍/网站
  6. 附录 B - 历史 (至2016年1月)
  7. 附录 C - 贡献 (至January 2016)

Creative Commons License
How To Be A Programmer: Community Version by Robert L. Read with Community is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

how-to-be-a-programmer-cn's People

Contributors

ahangchen avatar wangywy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

how-to-be-a-programmer-cn's Issues

你好,关于这本书,能否放到我们的平台。

我们是wiki.jikexueyuan.com
我们帮助提供一些翻译者,做在线协作,这个前提是根据兴趣的。
然后我们平台是免费开源的,展示效果很好,还可以实时更新,做连载。
最重要的是,这本书很好,而且您的翻译我看着很舒服。
不知道您有没有兴趣,我们没有任何强制性要求,而且会严格遵守Licensed under Creative Commons Attribution-ShareAlike 4.0 International License.。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.