My Most Important Software Development Insights
I would love to tell you that my journey as a software developer has been one of constant fun, excitement and success. But that would be a lie. Don't get me wrong, your life as a software developer can certainly be like that. For some people however, software development is a light, constantly shining at the things which have to be overcome to grow as a person.
I see challenges like a pathfinder: they point me in the direction of growth. For this reason, quitting software development has never been an option for me. Before you think that I hate programming, let me tell you, I do not. I have been fascinated by it since I was 12 years old. Here are my 7 most important software development insights which I have gained over the years.
1. The only constant thing in code is change.
We humans don't seem to like change very much. We are afraid of feeling vulnerable. So we try to control things, because hey, who wants to be surprised by something unpleasant. Good luck trying to control things in the software development world, a world of constant change and advancement. For a long time, I have tried to come up with the ultimate workflow to gain some control. Guess what happened? I had to change everything every few weeks. These days, I know that every line of code I write will eventually change or be deleted. In fact, this is a fundamental truth of life, not just of software development. Why spend all this energy trying to control something which can't be controlled?
2. Creating software without bugs is like trying to smash every single bug in a forest.
I have yet to write code which has no bugs. Not one single time have I launched something without having to sit down to fix a problem soon after. Are we bad developers because of that? No, we are human. If you don't believe me, go check out the change log for a software project you like. Look at all those bug fixes. Don't resist it: your code will break.
3. Nothing is impossible except anticipating every future problem your code should solve.
Before you try to implement every possible feature under the sky, do consider that some of the features might not even be useful for your users. A lot of times, users will surprise you with feature requests you have never thought about. So instead of trying to think of every possible feature, why not get your code out there so that you can get surprised by what users actually want? Keep in mind, less features usually means less complexity, which is always a good thing.
4. The best solutions for your coding problems come when you are not looking for them.
Have you noticed how some of your best ideas come while you are showering, or walking, or staring out of the window? There is a common misconception that great solutions require a lot of thinking. True creativity does not come from thoughts but from the space between the thoughts. Next time you are stuck, let go. Chances are, you will get a simple and effective solution when you are not actively focusing on the problem. It's like magic. If you would like some support with creativity, and a few other things which could come in handy while coding, check out FlowTape.
5. Hype: a pebble disguised as a barrel of gold.
Do yourself a favor and don't embrace every new tool and library, you might actually not need them. In fact, you might spend a whole week setting something up that will bring you no real value. Next time you come across something new, ask yourself whether it is a pebble disguising as gold. Don't give into peer pressure. Just because everybody else is using something, doesn't mean you have to as well. Your time is more important than what other people think of you.
6. Best practices are beacons of light on a dark path. Just remember that you have a flashlight as well.
Don't we all just love those best practices, those neat checklists we can go through to make sure our code is great? Except, when a point on the checklist costs us 2 weeks to implement because it just is not possible with the current code base. Best practices were designed to make life easier, not to dictate how things should be done. Learn from them but also disregard them, change them, tweak them or create your own best practices.
7. Making somebody else's day better is more important than knowledge.
We sometimes put ourselves on a pedestal thinking how great we are because our brains are stuffed full of knowledge. We think that knowledge will make us successful. Then we take a look around and see people changing the world that know a fraction of what we know. You are not a great developer just because you know every single algorithm in existence.
There is a difference between knowing the path and walking the path.
— Morpheus, The Matrix
I create utility belts for freedom. If you want to learn more, check out my website. Live long and prosper!