A Journey to be A Pragmatic Programmer
Tags: programming, books, softwareengineering, productivity
Published: 2024-02-06 14:55:48

Last weekend, I finished reading my first software engineering book of the year. I found great value in it, so I wanted to share my thoughts to inspire others to read it as well. This book is especially suitable for software engineers who are early in their careers, like myself. I believe they would find it beneficial. Disclaimer: Please pardon any errors in my English grammar, as I am not very proficient in writing.

## My current state

Recently, I've been working as a Full Stack Engineer, still early in my career with 2 years of experience. Towards the end of last year, a myriad of thoughts began to occupy my mind. I started feeling worried about the future, particularly concerning my career path. In response to this uncertainty, I became more active in seeking perspectives on LinkedIn, discussing with my colleagues, and searching the internet.

Fortunately, at the beginning of the year, someone invited me to join their community focused on the growth of software engineers. Without hesitation, I accepted the invitation and became a member of this community. Inside, they regularly share articles or book recommendations, host classes, discuss career opportunities, and more.

## Need to improve personal values

The activities in the community are sparking my drive for personal improvement. Since the average member of the community has more seniority than me, it's both intimidating and motivating. However, I've come to believe that being in a position where you're at the bottom rung is the ideal place to grow.

## Follow up actions

To follow up on my newfound spirit, I began actively participating in the community instead of remaining a silent member. This allowed me to connect with many people and expand my network, with the goal of reaching the level of the average member.

After building these new connections, I delved deeper into software engineering by seeking information from them. Someone recommended that I read "The Pragmatic Programmer" book, suggesting it might be essential reading for a software engineer. Intrigued, I searched for the book and decided to purchase the e-book version from Google Play Books.

## The value from the book

After almost three weeks, I finally finished the book. In my opinion, there are so many insights that I received that I couldn't possibly write them all down in this article. However, I'll share some of them so you can consider reading the book yourself. Here are some of the key takeaways I've gained:

1. **KEEP IT SIMPLE**. Before doing things on your code, first think to make it simple. The more complex your code, the more pain you'll have to maintain it.

2. **BROKEN WINDOWS**. If you start seeing your code cracked, don't hesitate to fix it before the crack spread massively and no one would touch it. Remember that one broken window will let people think that your building already old and broken.

3. **DON'T REPEAT YOURSELF**. It's quite clear and often being discussed. The duplication is an evil, it could bother your convenient on the future.

4. **EASY MAINTENANCE OVER EASY DEVELOPMENT**. Easy development was great, but easy maintenance better. You are more freely to has errors before the productions. So, optimize the development time.

5. **MAKE LEARNING A HABIT**. As technologies grow so fast, so you do. Don't waste your time stuck on the current level.

6. **COMMUNICATE EFFECTIVELY**. It's about what you say and the way you say it. Idea will be just a dream if you can't communicate it.

7. **DON'T ASSUME IT**. Prove your assumption with real data and real environment.

8. **NO PERFECT SOFTWARE**. You can't write a perfect software, so make sure you protect your software and users from unpredictable issues.

9. **DESIGN WITH CONTRACTS**. Use contracts to document and verify that code does no more and no less than it claims to do.

10. **FINISH WHAT YOU START**. Make sure to deallocate every resource that you allocate. It could makes your allocation creep.

11. **SEPARATE VIEWS FROM MODELS**. Makes your code decoupling so it could be more flexible to be expanded.

12. **DON'T PROGRAM BY COINCIDENCE**. Make sure you understand what you are you writing, why using that methods, how the program works.

There are still many points to include, but I believe these are enough to give you an idea of what to expect from the full book. Ultimately, I hope to encourage you to adopt the same spirit of growth and be one of the pragmatic programmer. I hope this brief article resonates with you, and I appreciate your reading it until the end.

- Muhammad Azis Husein