(My Personal Experience as a Self-Taught Programmer)
I remember the first time I wanted to code, after reading how awesome and entertaining programming is, and how it changes people’s lives.
So as all people would normally do, I searched on the internet and googled “How to write a code”, and BOOOOM… I got millions of results. Every time I clicked on a page, I was getting different tutorials with a different way of explanation, and different programming languages like Java, JavaScript, C#, PHP, Python, Ruby… and the list goes on endlessly.
So I changed my keyword search, and looked up for “The most popular programming language to learn”, and guess what I found!!! Again, I found Java, JS, C#, C++…etc. Why? Because every post written by a programmer was referring to his preferences, the language of his choice.
To be honest with you, I was lost for a whole year, trying to understand what it needs to be a good programmer, not even great. Why? Because I was looking for the options without having someone to guide me, someone who would really understand where I am now, and where I want to be in the next couple of years. I have gone with a long list and spent a lot of money on online tutorials, face-to-face (physical) classes on programming, meet professional programmers, and guess what, NOTHING WENT WELL FOR ME. I was really depressed and hopeless that I wouldn’t be even a good programmer (forgetting to be great), and I was convinced that to be a programmer, you need to attend a college and have a degree in computer science or invest in one of the programming boot camps which is really costly and I had no budget for such path, so I left it for a while and forgot about it.
After some time, I felt something is pulling me back to read more about programming, I guess, after all, we all (in some period of time) miss our old pals.
So I started all over again and I was looking why learning to code is so hard, and after some research and a lot of readings, I figured out why I was lost and I was going nowhere with my endeavor to be a successful programmer.
And here we reach to the main topic of this blog; WHY I WAS FACING DIFFICULTIES IN LEARNING TO CODE, which led me to think that LEARNING TO CODE IS SO HARD, As anybody else outside this field would think the same, and here are my wrong thoughts about programming…
1. My Career Path Was Not Clear
or better yet to say “I was not defining the field in programming in which I want to specialize in”. As everyone outside the programming knowledge area, I thought when you are going to be a programmer, you can develop an application, make a website, build a game, make an enterprise-scale system, create awesome e-commerce websites, build mobile apps, fix a computer machine, understand why the escalator stopped functioning, why the dinosaurs died!!! OK, I am kidding here, not to this extent, put some fellows in programming know what I am talking about here. People tend to think like that, if you are a programmer, so you can fix even their own broken screens of their mobile phones!!! I am not kidding here, as someone asked me to do that a while ago, and when I said I am not a technician, he said “Aren’t you a computer guy!!!” (These replies are going to kill me one day)
Anyhow, so back to our topic, the perception of being a programmer means you can do everything is wrong. You need to define “What Do You Want To Be?”
Is it a Software Engineer, who builds desktop applications that communicate with some hardware? or Mobile App Developer who builds mobile apps in whether (and you have to choose one in the beginning of your programming studies) iOS, Android, or Windows phone. Or a Web Developer who builds awesome apps on the web. Each path has its own concepts, languages, and implementation technologies in programming. So Understanding your path will make it much easier to understand which programming language you can choose and which you have to.
2. To learn to code, you need to remember all the programming language syntax (codes), line-by-line, letter-by-letter
This is the second wrong idea about learning to code that most people think. The truth is learning programming languages are based on “Understanding the Programming Concept rather than memorizing it”. Although each programming language has its own way of code implementation, many basic concepts are common in all the programming languages like [variables and data structures, functions, operators, conditions, loops, scopes…etc]. Understanding these basic concepts will make you a better programmer, and once you master these concepts, it will be easier for you to pick another programming language and learn it within a couple of weeks. Memorizing how the code is written is wrong practice (in my opinion) because it will require a lot of time and efforts. That’s why there is “Documentation” and supportive community in every language. I consider documentation is the best friend to the programmer. It gives you what you need, so whenever you are stuck in code, Documentation is the first place to consider, after that you may consider the supporting communities of the chosen programming language. My advice is to “Understand the programming concepts and codes, rather than memorizing them”.
3. Watching the whole tutorial is ENOUGH
Many online tutorials (especially the visual ones on videos like Udemy, Lynda, and Coursera) provide great learning materials. Purchasing their courses to learn programming and thinking that you can learn by watching only (even if you think you have understood the concepts) is absolutely wasting your time and money, because the moment you complete the whole series, and get ready to code, you will get stuck and feel like your brain is frozen. You will reach to the point that you have forgotten how to do this and that. Even worse, you completely forgot how to start!!! Why will this happen to you? / or already happened to you? Simply, you haven’t put these concepts into practice. You need to practice while watching step-by-step to master the concepts. Practice is a must in programming. In fact, I believe practicing the concepts and codes is 80% of your way to master the language. While practicing, you will feel your fingers are typing the codes by itself, because part of your brain will get used to it.
4. I Should know how to build complete application after my courses
This also one of the wrong perceptions that many of the beginners would think can be done. First of all, learners need to understand that the big application is made of small functions. Let’s take Youtube (Web Application) as an example, we can see that Youtube has a lot of small functions, which are:
- Searching the desired videos to watch
- Clicking on the video to watch
- Loading the video that you have clicked
- Setting your preferences on your profile.
And the list goes on…
These small functions are what make Youtube what it is.
For you to build a big complete application, you need to learn how to build the small portion (function) of the application, and gradually you will learn how to plan and structure of your desired big application.
5. I can be a great self-taught programmer
While it is true that you can be a great programmer by teaching yourself how to code, this may take a very long time of hard working and dedication, especially if you don’t know from where to start. If you want to be a great programmer in a shorter time, you need to have a mentor who leads your programming venture, teaches you and evaluates your progression while learning to code under his supervision. Not to mention the “best practices in coding” you will learn from his feedback, which is an essential part of your learnings.
The concept of having a mentor in programming has increased lately, and you can find them online in popular websites like Thinkful.com, CodeMentor.io, and so on. You can google it and you will find a long list of them. I wish I had a mentor when I first started learning to program, it would have really saved a lot of time & money wasted in my learning to code.
Conclusion
To sum up, if you want to be a great programmer in a very short of time, here my pieces of advice to you;
- You need to define your goal, and what is the career path you want to embrace, is it a mobile app developer, web developer, or a software engineer?
- Don’t try to remember all the codes, just understand them, you still have your best friend in programming, the Documentation.
- Once you learn a new concept, put it into a lot of practices immediately.
- When you want to build a complete application, slice it down into small functions.
- Finally, and the most important advice is if you can afford to have a mentor, go for it, your goal will be achieved in less time and you will acquire the best practices knowledge in coding.
I have shared my personal experience while learning to code, and my simple pieces of advice that will shortcut your time if you are going to learn to code.
What about you? Have you gone to such experience when you learned to code? Or wanted to do so? Share your experience with me, and let me know if you have any further advice that would help the readers.