Skip to content

axelerant/Reading-The-Pragmatic-Programmer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The Pragmatic Programmer

Cover

Foreword

  • The second edition came after 20 years after the first one, which was a classic.
  • It's a technical book but without the jargon or convoluted examples.
  • It's for "programmers who just want to be better."
  • The new edition removes some of the older references and replaces them with modern content. The lessons are still there but the examples are now relatable to the current trends.
  • They got feedback on the content from the first edition and formulated new ideas, new concepts.
  • Importance of agency: developers have arguably more agency than most other professionals.
  • The book starts with the message: "it's your life".
  • What makes it truly stand out is that it understands what it means to be a programmer.

Preface

  • The book started as notes the authors jotted down for their clients. It seemed to strike a chord and got popular.
  • 20 years is a lifetime in terms of software. The book's (first edition) references were quaint and confusing.
  • But 20 years has no impact on common sense. Technology changes but people don't. What aspects were a good idea then remained a good idea now.
  • For second edition, authors updated the technologies they referenced and reexamined the assumptions behind the practices.
  • One-third of the book is brand new and the majority of the rest was rewritten.
  • The authors dropped things that didn't make a lot of sense anymore and focused on new challenges and paradigms such as concurrency.

Preface to the first edition

  • This book will help you become a better programmer.
  • It's not theoretical. This is a book about doing.
  • Programming is a craft. Simply, it is about getting the computer to do what you want it to do.
  • As a programmer, you are part listener, part advisor, part interpreter, and part dictator.
  • "You try to capture elusive requirements and find a way of expressing them so that a mere machine can do them justice. You try to document your work so that others can understand it, and you try to engineer your work so that others can build on it. What’s more, you try to do all this against the relentless ticking of the project clock. You work small miracles every day."
  • There are a lot of options out there, all of which claim to solve your problems. But there are no easy answers. There is no best something. There is only an appropriate solution to a problem.
  • This is about being pragmatic. Favour broad technological understanding over focusing only on one thing. Have wide experience base that helps you choose good solutions. Build understanding of basic principles of computer science and a wide range of practical projects.
  • You adjust your approach and judge the relative importance of all the factors affecting a project. And do this continuously. You get the job done, and do it well.

What makes a pragmatic programmer?

Each individual is different. Over time, they will craft their own environment. But there are some characteristics you would share.

  • Early adopter: You have an instinct and love for trying things out. You can grasp them quickly and integrate it with your knowledge.
  • Inquisitive: You ask questions. You are curious and collect little facts about everything around you and this might be useful in a decision days later or years later.
  • Critical thinker: You don't take things as a given. You question and collect the facts. You try to understand the nature of the problem. You are realistic about challenges of a problem.
  • Jack of all trades: You try to be familiar with various technologies and work to keep updated. Even if you need to be a specialist on the job, you will always be able to pick up something new.

Tip 1: Care about your craft

If you don't care about doing any job well, there is no point to it. The world has enough opportunities for you to be able to do what you want.

Tip 2: Think! About your work

Think about what you're doing while you're doing it. Don't get on the auto-pilot mode. Constantly think why you are doing what you are doing. Critique your work. Question your decisions. And do it all the time.

This is hard work. This is going to take time. But it is worth it. Spend time here ensures you learn and grow rather than repeat your work again because you didn't think about it.

Individual pragmatists, large teams

  • There should be engineering in software construction but that doesn't mean there is no individual craftsmanship.
  • Within the overall structure, there is always room for individuality. This is particularly true for software engineering.

It's a continuous process

  • Great lawns need small amounts of daily care and so do great programmers.
  • Kaizen: continuously making many small improvements.
  • Work on refining your skills every day.

Continuous Improvement From James Clear

Chapter 1 ->

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published