• How to be a Programmer
  • Introduction
  • 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
  • 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
    • Judgment
      • 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
  • 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 Team-mates
      • 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
  • Appendix A * Bibliography/Websiteography
  • Appendix B * History (As of January 2016)
  • Appendix C * Contributions (As of January 2016)
Powered by GitBook

Intermediate

2. 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
  • Judgment
    • 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

results matching ""

    No results matching ""