My experience and the lessons I have learned as a programmer
Tags: beginners, career, advice, devtips
Published: 2017-09-27 20:12:51

---
title: "My experience and the lessons I have learned as a programmer"
published: true
description: What I have observed and learnt so far as a programmer
tags: #beginners #career #advice #devtips 
---


When I found out about programming I loved it, it was like art. There were so many ways to do one thing, also the fact that I could think of something and put it down was thrilling. What I am about to share is what I have learnt so far in my journey as a programmer. 



###Encourage, motivate, and listen to people
<img src="https://thepracticaldev.s3.amazonaws.com/i/sv6xgi6o2zie3nazlqkv.jpg" alt="Mountain View" width="70%" height="70%">
The issue though was that I did not have a lot of people to guide me at the beginning. I had to really search for those that were good to show me the way, and I held on to their garments until they answered me ðŸ˜„. For those few who guided me, I keep on thanking them. You see, one thing you should never get into is not having time to encourage upcoming programmers. To you, it might not seem like a big deal, but it means the world to a beginner. You don't have to be an expert before you can help someone if you have been programming for one month you can help someone who just started today.

I say all these because I also have had the experience where I messaged someone who was really good at what I wanted to learn and they gave me really good tips... and I was like 'he replied!' ðŸ˜€ðŸ˜€ðŸ˜€. 

When I was learning 3D design with Blender, I sent a message to like 3 people I admire, they were **really** good 3D artists. I was like "hey", "I love your stuff", "how did you get this good?". I was kinda shocked when they responded, not with a one-line sentence, but a detailed message about their journey. That meant a lot to me and taught me how to encourage people. Sometimes people have an answer to their questions, but you just telling them motivates them and it sticks better.


###Programming languages are not football clubs
<img src="https://thepracticaldev.s3.amazonaws.com/i/mydy6ywl4ahw5nvoqxno.jpg" alt="Mountain View" width="70%" height="70%">

It's easy to look at programming languages as clubs rather than as tools.You should understand what I am saying if you have an idea of how people treat their clubs. For some people, whether their team is losing or winning, they still stick with the team. A programming language should be a tool, for example, let's say there is a C++ programmer who loves C++, so much that anything he wants to do he must use C++. He is then told to build a website, but because he loves C++ so much he decides to use C++ to do the website... isn't that cute ðŸ˜„... wouldn't it be more stressful than just using the easier modern web development languages?
Check your toolbox and use the best tool for the task. That is why it is not a bad thing to learn a new language, that does not mean you abandon your primary language.

See programming languages as tools that you use when you need to perform a particular task, though I know there are some programming languages that are so awesome they are more like a **Swiss army knife** ðŸ¤—. 



###You don't really start again  
<img src="https://thepracticaldev.s3.amazonaws.com/i/pqobduvcnue716v1tuo0.jpg" alt="Mountain View" width="70%" height="70%">

One thing I have noticed is that once you get a good understanding of a particular language, be it C++, Java, JavaScript or any other language, you get to understand programming concepts and how things work. Learning a new programming language is not really like starting again...it is actually ðŸ˜„, but it also is not if you have been programming for a while. 
I know it can be tasking if after learning a language 'A' and suddenly a language 'B' comes out and everyone starts using 'B' and it looks like your 6 years of learning 'A' has been a waste. Well, look again.


###You can look at programming like driving
<img src="https://thepracticaldev.s3.amazonaws.com/i/evz81aobflg9k6gtd8rp.jpg" alt="Mountain View" width="70%" height="70%">

If you learn how to drive one particular car, it kinda helps you understand how cars work in general. So you could hop on any other car and drive. Yes, there will be differences but the basics are the same. Even if you have never driven a monster truck or a war tank at least you will have an idea. 
A motorbike has gears, it has brakes, it has a clutch so as a car driver you know all those concepts already. Same with programming, though the truth is, there are some programming languages that are like fighter jets ðŸ˜¨, ***so you might just have to learn new ways of coding in some cases***, but that does not mean you are really starting afresh.


###Grit
<img src="https://thepracticaldev.s3.amazonaws.com/i/b4dabgbcdugmo8r7nxzv.jpg" alt="Mountain View" width="70%" height="70%">

This is one thing that every programmer needs, one language that taught me grit was PHP ðŸ˜„. I mean I had errors that occurred when my code looked quite fine. I actually like seeing error logs, at least it tells me what is going wrong unlike when your code looks beautiful but something is wrong, at that point do you give up? You need to keep pushing and not quit!...I am talking about **effort**, not version control ðŸ˜.

What should be done if this code returned false?:

```Java
if(2==2)
return true
```

It might be exciting to solve it the first hour, but what if after a week you could not get it to give the right answer ðŸ¤”. At that point, you need to keep pushing on. There could be times when you will be coding and get stuck, you could even go to our dear StackOverflow, ask a question, but no answerðŸ˜¨. You need to keep pushing, sometimes you just need to break your code down into individual parts to see what portion is actually giving the error.


###Growth

<img src="https://thepracticaldev.s3.amazonaws.com/i/rtgrcl70hfw8yixypotc.jpg" alt="Mountain View" width="70%" height="70%">

Finally, know that getting to be a very good programmer is a gradual process. The key thing is to have **commitment** and **consistency**. We could learn and observe trees, some large trees came to be from very small seeds, but did they get to that size in one day? Of course not! One thing is sure, which is the fact that there was consistent growth, gradual...slowly but surely. We like fast stuff, ***get good quick formula***... ***learn JavaScript in 24 hours***... ***learn C++ in 8 hours***. Yes, you might have an idea after reading it for 24 hours, but does that make you a professional? You need to be **patient** but also committed to your goal. If you would ask any expert in web technology or mobile expert "hey! how did you get so good" do you think he would say "mehn, I don't know, I was just here learning some stuff and Google employed me and I suddenly found my self being a project manager ðŸ™„". There is a story behind every expert, and from my what I have observed, they are very diligent and committed people.
Watch videos, **read the docs**, look at source code and if possible learn something new every day about the language you want to get good at.

Albert Einstein once said ***"It's not that I'm so smart, it's just that I stay with problems longer."***