How can I realize my potential?
Marines believe that if you have physically able men and women, you can make extraordinary soldiers out of virtually all of them with the proper training. Programming is a skill just like playing the guitar, swimming or riding a bike. People are not born cyclists.
Whenever I look at my friends who work twice as much as I do and earn four times less, I always want to say,
"Wouldn't you like to be a programmer? You're really smart. Maybe you're just in the wrong job."
Before studying to become a programmer, it would be good to identify what advantages programming has as a career.
1. Easy and interesting work.
Programming is easy and interesting work. It gives you room for creativity. I like it a lot. At first, I couldn't believe people would pay me to do something I liked so much. Later I got used to it.
2. It pays well.
I like to see my friends buying new cars and houses after five years in this line of work.
3. Flexible hours.
Working in the office from 9 AM to 5 PM sucks. Anyone who has ever been stuck in traffic or penalized for being five minutes late will tell you that. How would you like to be able to come in at 11 AM and leave at 5 PM? Think that's just a dream? It's reality for most programmers. Just do your job, and nobody will mind. At many companies, you don't have to come to the office at all. Everything is negotiable.
4. Professional growth.
Effort is required to get a desirable position and salary at almost any firm. But a programmer only needs to be a programmer. You don't need to retrain to become a manager or fight for a senior position. All you have to do is grow as a professional. Programmers with 5-10 years' work experience are paid really well.
5. High international mobility.
The three highest paying jobs in the world are lawyer, doctor, and programmer. It's really hard for lawyers to find a job abroad: they'd have to study other laws, legal precedents, etc. of the country they're moving to. A doctor would have to learn the language, study medical protocols, and then pass an exam to get a local license. A programmer doesn't need to study anything. Same language, same standards, and often even the same clients.
The following three factors influenced my decision to retrain people as Java coders.
1. Java is one of the easiest programming languages
A high school graduate can learn it in 3-6 months, depending on their general knowledge and the number of hours per day they are prepared to dedicate to studying.
2. Skills in high demand.
You can find a job even without prior experience. Firms are happy to hire promising rookies and train them.
3. Highest salaries in the industry.
They are among the highest, which is especially important for beginners.
You can't become a programmer by reading a book. You need at least 500 hours of practice. It's like boxing. You don't become a pro by watching all the fights. You need to spend long hours practicing in the ring. (This is why CodeGym has so many exercises in it).
Any offer to teach you programming in ten hours is like an offer to teach you boxing in ten hours and then send you into the ring. Don't do that!
Sometimes, a novice posts on a forum and asks for advice on how to become a programmer, and people say, 'Come up with some exercises yourself and work on them.' This isn't how it works. A person cannot invent a task that lies outside the scope of his or her knowledge. Either you know something or you don't.
Only someone who is really proficient in a subject can invent a coherent set of tasks that teach you something new and don't require a week to complete. This is exactly what I have done.
Innovative approach to learning
The CodeGym course doesn't work the way a college course does. You'll quickly realize this. However, our way is more effective.
At college, you probably had to listen to long lectures, which were followed by labs. This approach is aimed at giving you extensive knowledge, but it leaves your real, practical skills with much to be desired. And if we are honest with ourselves, this approach gives you virtually no valuable skills.
I have a different approach. I believe that the theoretical part means knowledge, and knowing something means being able to answer our questions. That's why I start with questions – exercises that are hard to complete with your current knowledge – and only then do I give you answers (the theory that will make the tasks much easier).
I present new material in three stages:
1) Introduction (minimum theory or a few exercises)
2) Foundational knowledge (gives you complete understanding of the subject)
3) Details and nuances (fills in the gaps)
Thus, you'll deal with every subject at least three times. Besides, every topic is interrelated, and you can't fully explain one without at least superficially discussing others.
Some students get frustrated with tasks that involve material they haven't worked through yet. Such tasks give you a chance to think of ways to complete them with the knowledge you already possess. It may take an hour or two of effort, but then you will be rewarded with a novel or satisfying solution.
Besides, in real life, you get an assignment at work and only then do you start to look for the required information. This is real life for you. The earlier you get used to it, the better.
Get access to all levels and develop your skills. You can't become a programmer without writing code. And being a programmer is really cool.