As a budding software developer, I am afflicted by a condition I have dubbed “Beginner’s Arrogance.” I sometimes look at other software applications and say, “I could make something that works better than this.” Maybe there is a design flaw I think I can fix, or some functionality I believe I can make more efficient. Whatever the problem is with the program, I often tell myself I could do it better. And maybe that’s true occasionally. But usually, I forget two important things.
First of all, it is not my responsibility. I am not the developer of this code. There are people being paid to maintain the application. It is their job to fix any bugs or improve any functionality. What I should do is submit a bug report to the developer and hope they fix the problem in the next version or patch.
And second, this application was probably made by a team. I am but one man. Even if I were an expert programmer, many applications are in constant development by a team of advanced programmers and have arrived at their current version after months or years of work. This puts me at a severe time and workload disadvantage. I have courses to pass and a day job to not get fired from. I don’t have time to create the exact same application just so I can fix one thing.
In most cases, Beginner’s Arrogance is a benign condition. It is a good exercise to look at the work of others in a critical manner, so we can learn from their mistakes and make our software the best it can be. But in some cases, and in my case to a degree, Beginner’s Arrogance leads its victim down a darker path. When you give in to the temptation to fix someone else’s application, Beginner’s Arrogance has won.
I won’t lie to you. I have come away from an application which I thought was severely flawed and said to myself, “I can do it better.” Thinking this thought isn’t evil on its own, and it may even be healthy to plan out a design to see how it could be done better. But when you start actually re-coding an application that you don’t have the time or resources to effectively complete, you are wasting your time. I have fallen victim to Beginner’s Arrogance before, and I regret the time I spent trying to recreate someone else’s application. I had better uses for my time, like learning from the flaw and using that knowledge to improve the application I was being paid to create.
When you are hit with a case of Beginner’s Arrogance, don’t give in. Be a mature programmer and learn from the mistakes of others without trying to fix them. You will find this to be a more productive use of your time.
UPDATE: It was pointed out that I put all the blame for Beginner’s Arrogance on those who are new to programming, but this was not my intent. It is true that this is an issue encountered by even industry professionals, so when I call it Beginner’s Arrogance, I don’t mean that this is only something beginners do. I mean that it is an immature mindset that all programmers need to get over eventually.