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
You need to pick one programming language to build your core understanding about programming in general. The core concepts of programming are pretty much universal for all programming languages. If you will be following my tutorials, I'll be using JavaScript, as I believe it's the most beginner friendly language out there. Additionally, JavaScript is the future, as many believe, all web applications that haven't been written in JavaScript will one day be written in JavaScript.
Algorithm Scripting
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?
That's it!
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 (9)
I don't believe that JavaScript is a good language to start with. It has many concepts that aren't universal and constraints that a beginner should not have to bother about. It can have a complex workflow because of closures and lambdas. Why not start with Python or Ruby or even Pascal ?
The questions you present about "general software engineering" have IMHO not much to do with general programming, instead they are very specific to web programming. They are important to understand if you want to code in JavaScript which is why I don't think it is an easy language for a beginner.
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 guess I have a vision of JavaScript that might be flawed, I wasn't aware universities used it to teach students. I personally learned with PHP (which was fine to learn, but I wouldn't advise it) then was teached Pascal. C is fine too, but I would not consider C++ as a language for beginners though.
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
I think javascript is the worse language to start programming with. Javascript was a workaround scripting language originally designed to enhance html pages. It has evolved a little since but never managed to wash out the "shit language" label.
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.
In contrast Javascript is horrible for that purpose. Javascript is not a class-based object-oriented language , but rather a prototypal one. Wait, whaaat? Just try to make some inheritance/polymorphism with vanilla js.
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.
That's the point I want to make. OOP should not be step 1. JavaScript can be written just fine with almost no OOP at all. Just the basic concepts of constructors and "sharing code" between objects with prototypes are more than fine for the beginner. Because those things are the great majority of things we use.
My views on this are biased as I use JavaScript daily and teach courses on it. But, I seem to not be alone in this, as Stanford has replaced Java with JavaScript for their introduction to Computer Science course.
Anyway, I hope you liked the article. Cheers! :)