• x0_500958
  • 309.7KB
  • zip
  • 0
  • VIP专享
  • 0
  • 2022-04-14 02:01
A guide on how to be a Programmer - originally published by Robert L Read
# How to be a Programmer: Community Version [//]: # (Version:1.1.0) Robert L. Read with Community Copyright 2002, 2003, 2016 Robert L. Read Licensed under [Creative Commons Attribution-ShareAlike 4.0 International License]( [Available on gitbook to read online or download for offline reading (as PDF, ePub or Mobi)]( [Available to buy as a hardcover book (cost covers production & shipping only)]( - Edition 1, published 04/01/16 ## Introduction To be a good programmer is difficult and noble. The hardest part of making real a collective vision of a software project is dealing with one's coworkers and customers. Writing computer programs is important and takes great intelligence and skill. But it is really child's play compared to everything else that a good programmer must do to make a software system that succeeds for both the customer and myriad colleagues for whom he or she is partially responsible. In this essay I attempt to summarize as concisely as possible those things that I wish someone had explained to me when I was twenty-one. This is very subjective and, therefore, this essay is doomed to be personal and somewhat opinionated. I confine myself to problems that a programmer is very likely to have to face in her work. Many of these problems and their solutions are so general to the human condition that I will probably seem preachy. I hope in spite of this that this essay will be useful. Computer programming is taught in courses. The excellent books: The Pragmatic Programmer [Prag99], Code Complete [CodeC93], Rapid Development [RDev96], and Extreme Programming Explained [XP99] all teach computer programming and the larger issues of being a good programmer. The essays of Paul Graham [PGSite] and Eric Raymond [Hacker] should certainly be read before or along with this article. This essay differs from those excellent works by emphasizing social problems and comprehensively summarizing the entire set of necessary skills as I see them. In this essay the term boss is used to refer to whomever gives you projects to do. I use the words business, company, and tribe, synonymously except that business connotes moneymaking, company connotes the modern workplace and tribe is generally the people you share loyalty with. Welcome to the tribe. ## Contents **Also available in [Chinese](zh/ and [Japanese](jp/** 1. [Beginner](en/1-Beginner) - Personal Skills - [Learn to Debug](en/1-Beginner/Personal-Skills/ - [How to Debug by Splitting the Problem Space](en/1-Beginner/Personal-Skills/ - [How to Remove an Error](en/1-Beginner/Personal-Skills/ - [How to Debug Using a Log](en/1-Beginner/Personal-Skills/ - [How to Understand Performance Problems](en/1-Beginner/Personal-Skills/ - [How to Fix Performance Problems](en/1-Beginner/Personal-Skills/ - [How to Optimize Loops](en/1-Beginner/Personal-Skills/ - [How to Deal with I/O Expense](en/1-Beginner/Personal-Skills/ - [How to Manage Memory](en/1-Beginner/Personal-Skills/ - [How to Deal with Intermittent Bugs](en/1-Beginner/Personal-Skills/ - [How to Learn Design Skills](en/1-Beginner/Personal-Skills/ - [How to Conduct Experiments](en/1-Beginner/Personal-Skills/ - Team Skills - [Why Estimation is Important](en/1-Beginner/Team-Skills/ - [How to Estimate Programming Time](en/1-Beginner/Team-Skills/ - [How to Find Out Information](en/1-Beginner/Team-Skills/ - [How to Utilize People as Information Sources](en/1-Beginner/Team-Skills/ - [How to Document Wisely](en/1-Beginner/Team-Skills/ - [How to Work with Poor Code](en/1-Beginner/Team-Skills/ - [How to Use Source Code Control](en/1-Beginner/Team-Skills/ - [How to Unit Test](en/1-Beginner/Team-Skills/ - [Take Breaks when Stumped](en/1-Beginner/Team-Skills/ - [How to Recognize When to Go Home](en/1-Beginner/Team-Skills/ - [How to Deal with Difficult People](en/1-Beginner/Team-Skills/ 2. [Intermediate](en/2-Intermediate) - Personal Skills - [How to Stay Motivated](en/2-Intermediate/Personal-Skills/ - [How to be Widely Trusted](en/2-Intermediate/Personal-Skills/ - [How to Tradeoff Time vs. Space](en/2-Intermediate/Personal-Skills/ - [How to Stress Test](en/2-Intermediate/Personal-Skills/ - [How to Balance Brevity and Abstraction](en/2-Intermediate/Personal-Skills/ - [How to Learn New Skills](en/2-Intermediate/Personal-Skills/ - [Learn to Type](en/2-Intermediate/Personal-Skills/ - [How to Do Integration Testing](en/2-Intermediate/Personal-Skills/ - [Communication Languages](en/2-Intermediate/Personal-Skills/ - [Heavy Tools](en/2-Intermediate/Personal-Skills/ - [How to analyze data](en/2-Intermediate/Personal-Skills/ - Team Skills - [How to Manage Development Time](en/2-Intermediate/Team-Skills/ - [How to Manage Third-Party Software Risks](en/2-Intermediate/Team-Skills/ - [How to Manage Consultants](en/2-Intermediate/Team-Skills/ - [How to Communicate the Right Amount](en/2-Intermediate/Team-Skills/ - [How to Disagree Honestly and Get Away with It](en/2-Intermediate/Team-Skills/ - Judgment - [How to Tradeoff Quality Against Development Time](en/2-Intermediate/Judgment/ - [How to Manage Software System Dependence](en/2-Intermediate/Judgment/ - [How to Decide if Software is Too Immature](en/2-Intermediate/Judgment/ - [How to Make a Buy vs. Build Decision](en/2-Intermediate/Judgment/ - [How to Grow Professionally](en/2-Intermediate/Judgment/ - [How to Evaluate Interviewees](en/2-Intermediate/Judgment/ - [How to Know When to Apply Fancy Computer Science](en/2-Intermediate/Judgment/ - [How to Talk to Non-Engineers](en/2-Intermediate/Judgment/ 3. [Advanced](en/3-Advanced) - Technological Judgment - [How to Tell the Hard From the Impossible](en/3-Advanced/Technical-Judgment/ - [How to Utilize Embedded Languages](en/3-Advanced/Technical-Judgment/ - [Choosing Languages](en/3-Advanced/Technical-Judgment/ - Compromising Wisely - [How to Fight Schedule Pressure](en/3-Advanced/Compromising-Wisely/01-How-to-Fight-Schedule-Pressur
    • Elements of Modern Algebra, 8th Edition
      Elements of Modern Algebra By 作者: Linda Gilbert ISBN-10 书号: 1285463234 ISBN-13 书号: 9781285463230 Edition 版本: 8 出版日期: 2014-01-01 pages 页数: (518) ELEMENTS OF MODERN ALGEBRA, Eighth ...
    • yasp:yasp是一个基于Web的全功能汇编程序开发环境,包括一个真正的汇编程序,仿真器和调试器
      yasp是一个基于Web的功能齐全的汇编器开发环境,其中包括实际的汇编器,仿真器和调试器。... 有关更多信息,请查看IDE菜单中的About部分。 在线演示 yasp的托管版本可以在上找到。 执照 yasp已获得GPLv3-License的许可
    • Clean Architecture 2017 , Uncle Bob
      Clean Architecture 2017 , Uncle Bob 作者: [美] Robert C·Martin 出版社: Prentice Hall 副标题: A Craftsman's Guide to Software Structure and Design 出版年: 2017-9-20 页数: 432
    • H.264_And_MPEG-4_Video_Compression
      H.264 and MPEG-4 Video Compression Video Coding for Next-generation Multimedia Iain E. G. Richardson The Robert Gordon University, Aberdeen, UK
    • Introduction to Mathematica with Applications
      Starting with an introduction to the numerous features of Mathematica®, this book continues with more complex material. It provides the reader with lots of examples and illustrations of how the ...
    • [Magento] Magento 初学者指南 第2版 (英文版)
      ☆ 资源说明:☆ [Packt Publishing] Magento 初学者指南 第2版 (英文版) [Packt Publishing] Magento Beginner's Guide 2nd Edition (E-Book) ☆ 出版信息:☆ [作者信息] Robbert Ravensbergen , Sander ...
    • CS2102-AY2021S2:CS2102 AY2021第二学期项目
      CS2102-AY2021S2 CS2102 AY20 / 21学期2项目 57队 Amelia Regina Sutikna(功能1-10) Fidella Widjojo(功能16-25) Hubertus Adhy Pratama Setiawan(创建表格,函数26-30) Jusuf Nathanael(创建表,函数11-...
    • A Most Elegant Equation: Euler’s Formula and the Beauty of Mathe
      A Most Elegant Equation: Euler’s Formula and the Beauty of Mathematics By 作者: David Stipp ISBN-10 书号: 0465093779 ISBN-13 书号: 9780465093779 出版日期: 2017-11-07 pages 页数: (203) ...
    • sissa-mhpc-theory-and-practice-of-fem:博士和MHPC课程
      1.有限元方法的理论与实践 这是数学分析,建模的SISSA博士轨道之间当然共享和应用程序(和高性能计算的硕士( )。...如何使用现代的C ++ IDE来构建和调试代码 如何使用大型FEM库解决复杂
      We have shown that the standard BERT recipe (including model architecture and training objective) is effective on a wide range of model sizes, beyond BERT-Base and BERT-Large. The smaller BERT models ...