Everyone I know has their own story of how they learned to code. Some people learn to code in school and others pick it up on their own. If you're like my dad, then you probably picked up how to program in a 101 Crash Course amidst the early 2000s tech boom.
You see, all of these stories have different motives behind them, and everyone has their own reason for learning how to code. Some do it for the money, others do it for the challenge, or if you're like me, you find coding a tool to do larger things. Nevertheless, it doesn't really matter why you code, as long as it keeps driving you forward.
I'm writing this article to help the rookie programmer develop himself to become invested in what he codes. I've never believed in a bad coder, and I still refuse to believe in it, because I know that coding is a skill, and you can get good at it!
Practice makes perfect, but if you don't understand why you're practicing, it doesn't do any good.
To begin, I wanted to first debunk some common myths about programming:
1.) I can be rich if I learn how to code
Yes, you can, but it doesn't matter if you don't know what you're doing. Learning a language is one step, but using it is a completely different story. I like to think of it as the process of getting a driver's license — it's not enough to just to have a license. There are plenty of bad licensed drivers on the road. Unless you know and understand what you're doing, I assure you that you will not succeed. Develop yourself as a coder, and that's how you're going to see the big bucks.
2.) Knowing more programming languages is better!
I don't think this is really true. The truth is that the core behind all of the languages is pretty similar. It's really about understanding how a language pieces together a much larger abstract concept. You have an idea, and the language you learn is just a way to make that idea happen. Think of it like getting a driver's license: if you know how to drive a car, it doesn't matter what make/model you drive as long as you know how to drive.
3.) I hear it's a great skill to have
It is! However, I find this thrown out over and over again, but it isn't always true. Remember how I started out saying that we all have a reason for learning how to program and that reason matters? Well, learning programming for the sake of learning how to program will end up like an infinite loop without purpose (and your analogies will be all CS related). Without motivation, I don't think it really matters whether you learn to code or not. Make sure you know why you're learning how to code, or else it will end up being in vain.
The Classroom Bubble
Many people begin by learning how to program in class or online crashcourses. I agree that these are great ways to get started, but to really grow and enjoy what you do, you have to step outside the bubble. Almost anything we tend to learn in a classroom only extends so much; hence the bubble.
You work on an assignment, answer some questions, and then you move on to another assignment. Every student in your 120 student classroom has created the same vending machine project. Indeed, you haven't actually set yourself apart. You've learned something, but you don't really understand what to do with what you've learned.
The sad truth is that school/crash-courses doesn't expose us to enough production and real-world code that will let us understand how the world outside functions. If you're on the hunt for jobs, you need to do more than what you learn in the classroom.
What should I do to go beyond the classroom?
This is a great way to work on projects outside of school. You'll be exposed to different levels of people. It's kind of like forced evolution. You meet people, think of an idea, and all of a sudden you've just jumped into something that you probably would have never done before. My biggest tip is: don't limit yourself to what you know. Get out there and use it as a time to explore what you don't know yet. Push yourself!
I used have a little thing called "Weekend Projects," basically, mini projects that I would work on over a weekend. Whether it's a personal website or a mobile app, I kind of just worked at it because I knew what I wanted see from it.
Interactive , Customer focused Apps
I would have wound up as a Mechanical Engineer if I hadn't found out that the code I wrote could actually be used by people. Yeah, that's really what I thought. You see, the problem with school is that we never tend to learn how to make programs that people can actually use, so I always thought everything I learned was useless for the longest period of time. No one uses a console anymore, right !!?? It's cool and all, but I could never show my work to all my friends because it's boxed in.
That's when I was exposed to mobile apps. Windows Phone Apps to be precise. The GUI was drag and drop, and all of a sudden, the code I learned to write for terminal apps became relevant. The programming basics stayed the same. The best part was publishing to the store and telling people to download my app.
So, if you haven't learned already. Take it a step further and learn to make a website, an app or some cool new voice skill and publish it. It's rewarding to share your work and stand behind it proudly.
Basic Knowledge and Things Every Aspiring Programmers should have
An interviewer once asked to me answer, why do you have a personal website, and if not why. Great question! It's important to have a personal website because that's your domain (no pun intended). You own it! Your branding everywhere. A one-stop place to find all the information about you - resume, github, projects.
Github and Git Skills
The idea of committing and deploying changes is new to most everyone. Think of it like Google Drive for code. I had no idea of branches or code management, but those being just a place to store code and show projects off was enough for me to use it. All of a sudden, I found myself using GitHub as a norm for all of my coding projects. So make it a standard for all of your projects to use something like versioning control. Watch a quick video and get started.
REST APIs always went over my head. I read so many tutorials on them, but they didn't seem to make any sense. GET, POST, and weird URLs — how does all of this work? I might write a blog post on this later. But in general, I think working with REST APIs is important to learn.
Take a look at the Twitter API. Once you realize that you can make these web calls from your Java or whatever code, you realize that your applications can become smarter.
Pretty much our entire Internet runs on REST calls. It's a way to transfer data over the internet and learning how to use a REST API is a standard. Along the way, you'll pick up JSON, a format for data exchange. I believe mastering and integrating REST APIs is key to a modern developer.
A Curious Mind
I began with Windows Phone Apps. Coming from a Java background, I had no clue what C# was. However, I took a look at C# and I was astonished by how similar it was to Java. You see, the biggest thing about these projects is that you have to be open-minded. Just be open to playing with things. So I started messing with things, dragging things on the designer, and changing some variables here and there. Whoa! Now I wanted it to do more, so I read, and then I read some more, and I made it happen. And that's how I discovered the "learn as you go" method. Don't be afraid to push buttons. It's a just a computer, it won't explode or eat you. Ctrl+Z is your friend.
An app, a library, or anything that you publish is work that can be seen and shown. At this point, you're an artist in a museum, a scientist presenting at a conference or Steve Jobs in the Moscone Center; your work is out there. People depend on what you make. People learn from what you wrote. I learned and continue to learn so much from the apps I've published, but I also learn so much from other people's code and expertise. I would highly advise to create work that can be published and given to people. Share your thoughts in a blog or a feed website and listen to the comments.
There are so many ways to go about improving your coding skills and the quality of work you do, but keep in mind why you code. That's what's going to drive you to do more, and in order to reach your goal, you're going have to become a better coder. I have faith in you.