如何成为程序员?

How to be a Programmer: A Short, Comprehensive, and Personal Summary 中文翻译

Robert L Read

Copyright © 2002, 2003 Robert L. Read
Copyright

Copyright © 2002, 2003
by Robert L. Read. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with one Invariant Section being ‘History (As of February, 2003)’, no Front-Cover Texts, and one Back-Cover Text: ‘The original version of this document was written by Robert L. Read without renumeration and dedicated to the programmers of Hire.com.’ A copy of the license is included in the section entitled ‘GNU Free Documentation License’.

2002

目录

Table of Contents

1. Introduction

2. Beginner

    Personal Skills

        Learn to Debug
        How to Debug by Splitting the Problem Space
        How to Remove an Error
        How to Debug Using a Log
        How to Understand Performance Problems
        How to Fix Performance Problems
        How to Optimize Loops
        How to Deal with I/O Expense
        How to Manage Memory
        How to Deal with Intermittent Bugs
        How to Learn Design Skills
        How to Conduct Experiments

    Team Skills

        Why Estimation is Important
        How to Estimate Programming Time
        How to Find Out Information
        How to Utilize People as Information Sources
        How to Document Wisely
        How to Work with Poor Code
        How to Use Source Code Control
        How to Unit Test
        Take Breaks when Stumped
        How to Recognize When to Go Home
        How to Deal with Difficult People

3. Intermediate

    Personal Skills

        How to Stay Motivated
        How to be Widely Trusted
        How to Tradeoff Time vs. Space
        How to Stress Test
        How to Balance Brevity and Abstraction
        How to Learn New Skills
        Learn to Type
        How to Do Integration Testing
        Communication Languages
        Heavy Tools
        How to analyze data

    Team Skills

        How to Manage Development Time
        How to Manage Third-Party Software Risks
        How to Manage Consultants
        How to Communicate the Right Amount
        How to Disagree Honestly and Get Away with It

    Judgement

        How to Tradeoff Quality Against Development Time
        How to Manage Software System Dependence
        How to Decide if Software is Too Immature
        How to Make a Buy vs. Build Decision
        How to Grow Professionally
        How to Evaluate Interviewees
        How to Know When to Apply Fancy Computer Science
        How to Talk to Non-Engineers

4. Advanced

    Technological Judgment

        How to Tell the Hard From the Impossible
        How to Utilize Embedded Languages
        Choosing Languages

    Compromising Wisely

        How to Fight Schedule Pressure
        How to Understand the User
        How to Get a Promotion

    Serving Your Team

        How to Develop Talent
        How to Choose What to Work On
        How to Get the Most From Your Teammates
        How to Divide Problems Up
        How to Handle Boring Tasks
        How to Gather Support for a Project
        How to Grow a System
        How to Communicate Well
        How to Tell People Things They Don't Want to Hear
        How to Deal with Managerial Myths
        How to Deal with Organizational Chaos

Glossary
A.
B. History (As Of February, 2003)
C. GNU Free Documentation License

    PREAMBLE
    APPLICABILITY AND DEFINITIONS
    VERBATIM COPYING
    COPYING IN QUANTITY
    MODIFICATIONS
    COMBINING DOCUMENTS
    COLLECTIONS OF DOCUMENTS
    AGGREGATION WITH INDEPENDENT WORKS
    TRANSLATION
    TERMINATION
    FUTURE REVISIONS OF THIS LICENSE
    ADDENDUM: How to use this License for your documents


反馈

HowToBeAProgrammer (last edited 2009-12-25 07:14:02 by localhost)