17 years ago, I wrote my first Hello World program in the C language. I was 15. It didn’t make too much sense back then. Why would someone want to print a string into the screen with a complicated syntax that made no sense? It made me curious rather than hostile as I frequently acted toward stuff I hated or failed to define.

I started investigating the various languages’ capabilities and I fell for programming with C#. Things went smooth for me and I turned programming into a hobby I pursued on a daily basis. That almost screwed my high school studies back in the day. It was worth it, programming was way more important for me than history classes.

There are basic rules that if the programmer doesn’t follow, the solution to any problem won’t happen. Let’s discuss 5 of them so I can make you a professional.

1. No band-aid solutions, Ask questions:
My manager at General Motors believed in my capabilities and skills so he gave me the opportunity to lead a project and mentor a new employee. I learned a lot of stuff from mentoring that was transparent in the back of my head. Well, that’s the way you develop an epic arsenal.

While we were debugging a problem, we noticed a null exception. While I was thinking about what was happening, My peer broke the silence of my thoughts and suggested that we put an if condition to avoid that exception and proceed with the debugging. What he was suggesting was barely a band-aid. Such a band-aid will hide the problem or even complicate it. I immediately disagreed and declared that the problem lay there. Why null? Always why your concerns.

Band-aid solutions complicate and hide available problems, they don’t solve them.

2. Improve your complexity detecting capabilities:
When you solve a bug or build a system, you may find yourself struggling with the code and the logic. The complexity detector should turn on with its immense red lights. Complexity is a sign from god – The software god, that your direction won’t reach the desired solution. In this case, rethink your actions or solution and retreat immediately.

What usually happens in such moments is making a decision or building a solution according to insufficient data. What will happen in reality is that the system will become more complicated and a hell to maintain.

3. Plan and design before you start:
When I started my programming journey, I had big dreams, they were so loud to the point I wasn’t able to hear the war alarms during the Lebanon war of summer 2006. Whenever I had a new idea, I immediately visited the keyboard to create a new project and start implementing it right away while it was hot in my head. Fast forward, the code very often ended up hard to maintain or to scale.

Today, each time I want to work on a project or an idea, I start with a readme or the whiteboard to plan ahead and to understand the customers and the requirements to resolve any doubt and to validate that my work won’t get flushed down the toilet. I believe it is my formula to success.

4. Testing:
Some talk about test-driven development. I don’t believe in such extreme ways. However, testing is important. After I finish working on a design and start implementing it, I create tests for every scenario I implement. During the development, these tests are revisited often until the system is stable. They are my secret formula to seal my work from bugs or future changes that may break it.

5. Take notes:
 It is a tip for juniors who started fresh. If you take notes and organize them, you will not forget them. One of the most frustrating things for me is to repeat myself.
Notes are helpful when you need them or someone asks you about something you wrote down. Notes are a time saver. embrace them.