程序员的自我修养

网友投稿 604 2022-10-14

程序员的自我修养

How to be a Programmer: Community Version

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 and Japanese

BeginnerPersonal Skills Learn to DebugHow to Debug by Splitting the Problem SpaceHow to Remove an ErrorHow to Debug Using a LogHow to Understand Performance ProblemsHow to Fix Performance ProblemsHow to Optimize LoopsHow to Deal with I/O ExpenseHow to Manage MemoryHow to Deal with Intermittent BugsHow to Learn Design SkillsHow to Conduct Experiments Team Skills Why Estimation is ImportantHow to Estimate Programming TimeHow to Find Out InformationHow to Utilize People as Information SourcesHow to Document WiselyHow to Work with Poor CodeHow to Use Source Code ControlHow to Unit TestTake Breaks when StumpedHow to Recognize When to Go HomeHow to Deal with Difficult People IntermediatePersonal Skills How to Stay MotivatedHow to be Widely TrustedHow to Tradeoff Time vs. SpaceHow to Stress TestHow to Balance Brevity and AbstractionHow to Learn New SkillsLearn to TypeHow to Do Integration TestingCommunication LanguagesHeavy ToolsHow to analyze data Team Skills How to Manage Development TimeHow to Manage Third-Party Software RisksHow to Manage ConsultantsHow to Communicate the Right AmountHow to Disagree Honestly and Get Away with It Judgment How to Tradeoff Quality Against Development TimeHow to Manage Software System DependenceHow to Decide if Software is Too ImmatureHow to Make a Buy vs. Build DecisionHow to Grow ProfessionallyHow to Evaluate IntervieweesHow to Know When to Apply Fancy Computer ScienceHow to Talk to Non-Engineers AdvancedTechnological Judgment How to Tell the Hard From the ImpossibleHow to Utilize Embedded LanguagesChoosing Languages Compromising Wisely How to Fight Schedule PressureHow to Understand the UserHow to Get a Promotion Serving Your Team How to Develop TalentHow to Choose What to Work OnHow to Get the Most From Your Team-matesHow to Divide Problems UpHow to Handle Boring TasksHow to Gather Support for a ProjectHow to Grow a SystemHow to Communicate WellHow to Tell People Things They Don't Want to HearHow to Deal with Managerial MythsHow to Deal with Organizational Chaos GlossaryAppendix A - Bibliography/WebsiteographyAppendix B - History (As of January 2016)Appendix C - Contributions (As of January 2016)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:apps-for-android- Android示例程序
下一篇:还在为520礼物发愁吗?教你用python撩女朋友
相关文章

 发表评论

暂时没有评论,来抢沙发吧~