Programming

Software Development

Programming is one of the most in-demand skills today, and it can become a real career. This is about how to get started, get good at it, and find realistic ways to earn from it.

The Programming Hub: Learning It and Earning From It

Many people think you need to be a genius or a math expert to learn programming, but that's not true. When I started programming 11 years ago, I was studying Mining Engineering and didn't even own a laptop. I relied on borrowing a friend's laptop and using university computers, but I discovered a passion for building websites and apps.

Learning programming wasn't easy, especially since most resources were in English, and my native language is Persian. I spent hours and hours practicing but often felt stuck and overwhelmed. I thought, "If I just work harder, if I memorize everything, then it'll work." But I wasn't making progress I wanted.

So, I decided to try and figure out how I could make programming easier, more enjoyable, and more effective.

And it worked.

The Science of Programming

After exploring the science of learning, I realized that spending more hours doesn't guarantee success in programming. What truly matters is working smarter, not harder, by using practical techniques and effective revision strategies.

Instead of staring at your laptop for hours, you can build a programming routine that's actually engaging and focused on real progress. It tends to make you better, and it makes the process less of a slog.

With the right methods, you can improve faster, build a solid career, and still have time for a life outside code.

Getting Better at Programming

On this page you'll find articles on making programming sustainable and effective. I share techniques that have held up over time, plus the practical habits that helped me stay productive and still have a life. Whether you're starting out or sharpening existing skills, hopefully some of it is useful.

Programming Articles

How to Structure a Codebase for Scale and Maintainability

How to Structure a Codebase for Scale and Maintainability

Most advice about structuring a codebase assumes you are starting from an empty repository. Real work rarely looks like that. This article argues that structure is a response to a diagnosed problem, not a decision you make up front, and shows how to build the understanding that makes the decision possible.

It covers a verification loop for learning an unfamiliar system, the case for isolating business logic per endpoint (including what that approach costs), how to live with a legacy component that works but resists change, and what undocumented infrastructure does to a migration.

What 10 Years of Maintaining an Open Source Package Actually Taught Me

What 10 Years of Maintaining an Open Source Package Actually Taught Me

I published a small Laravel package about ten years ago so a freelance client could stop copy-pasting blog content into three social networks. Since then it has been renamed twice, survived a long maintenance gap during an international move, led to a stranger thanking me on a street in Mashhad and a job offer from a US startup, and finally became the foundation of a product.

This is what actually happened in between: what renaming a package really costs, what users do when you go quiet, and the unpredictable places a public package can take you.

Programming Book Notes

The Manager's Path – Summary With Notes and Highlights

The Manager's Path – Summary With Notes and Highlights

Read More
Staff Engineering by Will Larson – Summary With Notes and Highlights

Staff Engineering by Will Larson – Summary With Notes and Highlights

Read More

Subscribe toChangelog

📚
One useful email, most weeks.

Weekly notes on software engineering and building income on the side, plus what I am learning as I ship my own products.

By submitting this form, you'll be signed up to my free newsletter. I may also send you other emails about my courses. You can opt-out at any time. For more information, see our privacy policy.