This post was first published on Steemit. You can take a look at it here.
One does not simply become a programmer.
The journey is long and hard. It's not for everyone. There are many prerequisites you would need in turn to become a proficient software developer. Most important of all is to have grit. No amount of talent can replace hard-headedness and raw willpower of getting to the goal you set for yourself. In the end, nothing else matters. Achieving your personal goals is what we all strive for.
However, you need to want it, you need to want to learn. Programming is a constant state of learning new technologies, practices, style guides and languages. Damn, I've been working as a software developer for two years, and every step of the way was a path of learning new things in order to finish my work! Hell, I'm currently in the process of learning MongoDB as it's a work requirement. Now you're wondering why I'm even telling you all this. It's simple. If you want to become a programmer, you need to be a nerd. Don't get me wrong here. What I view as a nerd does not match the stereotypical view of nerds in Hollywood. A nerd for me is a constant learner, someone who never stands still, always looking for new ways to improve upon himself/herself. Be a nerd! There is nothing wrong or embarrassing with being a nerd. I'm a nerd, and I'm freaking proud.
Now, when I've grabbed your attention...
I want to help you. I want to take you on a journey. Join me on the path to becoming a programmer. Of course, only if you have the grit needed to follow along. You need to want it.
I'll take that you are interested if you've read this far down the article. I'm glad you did.
Let's jump right into the belly of the beast. Here's a roadmap of what you need to reach your goal.
Intro to Programming
When you have understood the core concepts of programming and your language of choice it's time to put it to use. This part of your learning has less to do with the syntax of programming you will learn in the section above, and much, much more about logical thinking and problem-solving. A programming language is only a tool, it's still your brain that needs to be trained to solve problems. The brain is a muscle as any other, if you do not give it proper exercise, you will never prevail.
Start building stuff!
Start building immediately, it does not matter how little experience you have. Nothing compares to the actual creation of something productive. The experience one gains from building a concrete application with a set purpose is exponentially greater than only hacking away on some predefined examples and tutorials.
Learn about general software engineering
The language you write code in is only a small part of being a software developer. The big picture is, in all it's magnificent glory, massive. Too massive to even try to explain in one sitting. I even tried to explain this to a friend, long story short, after 2 hours of me talking like crazy, he couldn't wait to go home.
However, it's not that hard to partition into bite sized chunks.
- What are servers?
- What are clients?
- What's a database?
- What does the concept front end mean?
- What does the concept back end mean?
- How does one link the front-end to the back-end?
Well not really. It's a rough estimate of what one would need to start down the path towards enlightenment, on the journey of learning how to write code.
That's more than enough for today.
Hope you liked my rough roadmap of what it takes to be a programmer. All of what I write are my own experiences, many of which are rough as I have had to fight my way through this journey. Being a self-taught developer has shown me the beauty of open-source and the spirit of helping others. Hence, why I teach people how to code.
Hope you guys and girls had as much fun reading this article as I had writing it!
Drop a comment if you liked it, share if you believe it will be of help to someone.
Follow if you want to read more. It means a lot to me.
Support my writing by following and liking my content on Steemit.
Feel free to suggest interesting topics you would want to read about in the comments below.
Top comments (11)
That's where the beauty lies. Core programming concepts are the same, no matter the language. Algorithms will always be algorithms. Have in mind I wrote the article highly opinionated. It's perfectly fine if you do not agree with me.
JavaScipt has been chosen by universities to be the programming language for their 101 courses. People much smarter than me have made that choice. Closures and lambdas are present in every higher level language but only used if you really need them. Beginners don't even have to know they exist until they start facing difficult enough problems to urge them to explore.
To be honest, I'm quite sad not to be more proficient with Python or C++. Both are awesome languages. If you ever write something about them, I'll be sure to read it.
Cheers man, hope you liked the article. :)
I liked your article, we need to help beginners get into the field and learn how to make good software :) What you explain is accurate and well presented. My previous comment on the language was unimportant because I believe the choice of a language is a matter of taste.
I think beyond the actual form and function of code, understanding the software engineering process and how code gets submitted/reviewed/modified/etc. is important and something that will be easier the earlier your internalize it
Agreed. Learning to use Git plays a major role in the process. Of course, along with code reviews, if you're one of the lucky beginners who manage to land an internship.
It's incredibly useful, yes! That's something I do on a regular basis. Also, using CLI tools can be very useful to get an understanding of how to structure your application. I'll have to add this to my next article. Thank you, hope you enjoyed the read.
I am also a self-taught programmer
It's not strongly typed, it always looks like spaghetti code and is harder to read, more so for the beginner developer.
To make it look somewhat nice you have to use typescript, but this adds one more abstraction layer, unnecessary for the beginner developer.
If you want to learn programming you start with a nice strongly typed OOP language like C#, Java or even C++ for the brave soul. These are good languages to grasp the OOP concepts.
I know it looks easy and fast to copy-paste from stackoverflow but popular does not equal quality.
I started out with C#, and I love the language. It's amazing. But, after one semester of having it in college, I had no idea about anything, at all. OOP was Chinese to me. It wasn't until using it for a year and also finishing a Microsoft MTA course I was ready to use it properly.
Anyway, I hope you liked the article. Cheers! :)