Over 13 years ago when I got my first job as a software developer, I had a few misconceptions about the field that I still see junior developers having today. I hope to share some practical words of wisdom with you so you are better equipped for a career in software development. Things I wish I knew when I was first starting out in this field. Back then there were limited blog sites out there. There was no youtube, or stackoverflow.com for technical questions, or Quora for general career advice, and yahoo seemed like a decent search engine at the time. At work, every senior developer had some books that were a must have in the Java world. For example “Effective Java: Programming Language Guide” published way back in 2001. It was an excellent book for its time. (I recommend you read the 2nd edition released in 2008 from cover to cover). The famous gang of 4 design patterns was another common book on people’s desks. To me it seemed like I was surrounded by gurus who had read all of these books & had mastered the content. So I went ahead and purchased my copies. I read them and at first a lot of the stuff didn’t make much sense. So I read them again and again until I finally started to understand what was going on. I asked some of my senior colleagues for help in explaining the concepts but to my surprise even with the book on their desk some had not even opened it!
At the time due to my limited experience my misconception was that I was surrounded by pros that were gifted with some divine knowledge and that they could read someone else’s code and just immediately understand all of it as if it was some story book. That definitely was NOT true then, and it isn’t today either (no one is gifted a skill, you have to earn the skill by working hard at it).
After a few months at my first job I had completed some small projects and was given an opportunity to work on something slightly larger and started writing the code from scratch. At the time I thought my code was a masterpiece since I had spent so much time working on it and did the best I could to get it just right but when it was reviewed by some senior engineers, it was laughed upon. Although it worked, my code was indeed horrible – poor choice of variable names, bad class designs and I was using all kinds of design patterns that I had read about in the gang of 4 book incorrectly. The thing that my seniors at the time didn’t tell me is that they too had made poor software in their past. We all do when first learning anything new.
After 13 years of challenging experiences and growth opportunities, I can now say something with certainty. Getting good at programming requires fearlessness! The fear of getting something right the first-time is debilitating when you’re a junior in software development. Especially if you are a perfectionist. The biggest challenge for some people is writing that first line of code when trying to solve the problem. They get so caught up in trying to get the whole plan right that they throw in the towel. But let me say this: It’s not possible to get it exactly right the first time. Brainstorm a plan and write that first line of code. Write that second line of code and keep going. You’ll advance slowly in the direction of the final product. If the final product sucks, who cares. Keep going, if you want to use a particular design pattern that kinda fits but not exactly – that’s totally okay. Use it anyway. Don’t be afraid to make mistakes. You’ll be surprised how quickly you can get good at programming with a “damn care” mindset. Just keep churning along.
The best way to learn from mistakes is to make them, and in programming the risk is really low especially when you’re new to the profession. Having made many many mistakes and writing a lot of bad code over the years, I now feel totally confident about how NOT to write bad code. I know exactly how bad code smells. I can smell it from miles away. It’s about experience and fearlessness that will ultimately make you really good at something. I see the junior programmers of today not experimenting enough. Not making enough mistakes because of fear that they’d be some how looked upon as not smart. Get rid of this fear immediately and keep coding. Senior programmers that have been in the industry for many years are not going to look down upon you. They may laugh at your code, but who cares. Laugh with them and continue working at it. As a senior architect, I DON’T look at a junior programmer as incapable. I look at them as bundles of creativity and potential that has yet to be reached. Take risks in your projects. Don’t be afraid to experiment. With a fearless attitude, I promise you that you too will one day be a guru in the field.