I’ve been interested in programming since I was 16, I studied computer science and was lucky to start a career as a software engineer. This, however, doesn’t mean that everyone necessarily has to take the same path as I did. I know many people who started programming without any previous experience or education and still succeeded. Although programming might be very challenging at first, it will most likely be fun. You will be able to create amazing stuff on your device and work wherever you are.
Many people ask me whether it’s possible to learn it, how hard it is, and where to start. I always try to give them as many positive answers as possible and encourage them to try it. On the other hand, I struggle to give them a simple explanation, so I decided to share a few tips with you.
Can anyone learn how to program? I think if you can read, write and count, then you will pretty much be able to learn at least basics of programming. There is no secret magic behind it, we’re not special magic species or wizards like Harry Potter, there is no secret Hogwarts college behind platform 9 and 3/4 for programmers. Don’t be afraid and just do it! That’s the most important first step.
Can anyone make a living on it? Maybe not. In my opinion, it depends on you and how much effort you want to put in it and there is no doubt that you need a lot of passion to become a good software developer. Not everyone has it, as not everyone necessarily likes music (no offense, I like it). Is it a problem if you are not good at math? No, I’m a good example it’s not :).
Now as you are motivated, let’s look at the difficult part, programming itself. Before I tell you where to start, let me explain what programming actually is.
Programming means describing instructions of what we want our computer to do. We need a programming language, as computers don’t understand any human language, only machine code consisted of zeros and ones like this 1101010101.
Such instructions are usually in a textual form called “source code” written in a given programming language. It’s just a bunch of keywords and symbols (syntax) with given meaning (semantics), kind of similar to English, with more structure.
The best idea is to start with Welcome to learn.freeCodeCamp!, specifically, with these two courses:
- Responsive Web Design Certification (I would go for this one if you are interested in making websites or web apps. Anyway, I think you will always find a way to use the basics of HTML and CSS. The benefit is that it’s more visual and you can apply this knowledge with your learning of JS later on.)
- Khan Academy - Unit: Intro to JS: Drawing & Animation
- Khan Academy - Unit: Programming
I’ve recently discovered the Programming 101 with “Uncle Bob” video. I would say the content is mainly language agnostic, but there is a Java demo at the end. It nicely introduces you to programming logic. Look at the first 35 minutes, the rest is optional.
If you’ve really decided that Java will be your first language, look at Course | Programming Methodology - YouTube. It’s a course from Stanford University, not strictly about Java, but more about general programming principles demonstrated with Java programming language and taught by the most passionate teacher I’ve ever seen. I guess it’s not for total beginners, take it as a part of education, not only a resource for your learning.
After you make your first steps into programming, you should already know what exactly you are interested in. Mobile apps? Web apps? Games? Your interests can also influence your decision about choosing a programming language. I just want you to know that this is not the end, but the beginning. If you are thinking about taking programming seriously, as your job, Green Fox Academy - Junior Developer Course provides a good overview and a roadmap of the programmer’s knowledge base.
- Read, watch, listen.
- Do tutorials, don't bother with re-writing it, that's ok.
- Write your own stuff. Inspire yourself with a tutorial, then change requirements a little. If you did a tutorial on the to-do list, change the to-do list to a list of finance records. In this way, you’ll be enforced to think more about what you’re learning, not only re-writing code from tutorials.
- Practice, practice, practice. Have you heard about 10 000 hours rule? You learn programming only by writing code.
- Focus. You will see a lot of different resources, opinions, job opportunities for a lot of different technologies. Although a software development career is a never-ending learning story, it’s good to master your already gained skills first, don’t jump from one language to another.
- Patience. I said it is possible, but I didn’t say it would be easy. It takes a lot of effort. It takes a lot of time. Don’t give up with first struggles. Don’t be too harsh to yourself. You don’t have to get everything for the first time, even for the second or third time.
- Nobody knows what they're doing. Don’t forget, software engineering is a young field and Nobody knows what the fuck they’re doing – Max Stoiber – Medium
I hope you’re now motivated and couldn’t wait to start. Good luck and enjoy the road!
To my lovely girlfriend.