Many people are getting into programming nowadays, for various reasons. Some fear that the machines will one day gain control and so they are preparing themselves. While others hear tales of 6 figure salaries and late night coding sessions in highrises. And there's also this brand new "cool" factor that the younger generation is being exposed to, thanks to many websites that aim to teach to code. All valid reasons. But just as painting is difficult for someone who has never painted a picture before, so too is programming difficult for someone who just hears of CSS and JavaScript. So today let's talk about programming and its hardships. Because yes, it is difficult, but also yes, you can become good at it, to some extent.
it's difficulty is dependent on your ideas
For the most part, programming is never really a difficult task. And that's mainly because you will usually find yourself working on something that's at your experience level. And this keeps things exciting..for a while. If you're new to programming, then you probably won't be in charge of scaling up a website with 100 million visitors. And that's because it's a somewhat boring task and it's difficult. Your for loop won't do in this case I'm afraid. And if you're a more advanced programmer, you probably won't be updating CSS on a WordPress website. So if we can think of programming as a series of successive steps that lead up to more powerful, scalable and complex applications, then it's not difficult at all. Assuming you're willing to dedicate 5-10 years in climbing that stairway.
If, however, you want to do something big, then yes, yes it is difficult and yes it will take time. Getting data from a database and referencing a JavaScript library aren't going to do it for you. Knowing each and every keyword in a programming language aren't going to do it for you either. So if you're new to programming, and you have ambitious ideas, then yes, it is difficult, and yes, it will probably fail several times.
the better you get, the worse you realize you are
Make it a point to look at your old code every few months. Take everything that you picked up in that time, and compare it to where you were. Then update that code. Do this, forever pretty much. I still do it, and yes, every line of code written in the past, is the worst line of code written.
Stop getting so excited about the code
Your first login page will be amazing. Your 30th login page will be the worst thing invented. That's a big part of programming. It's not the "code" that matters, it's what it does. So code and code often to get that out of your system. If you're an author, you're never excited about the words themselves. You're excited about what they imply and what they get across. You're excited when people start to read your words and they start to give life to it. The exact same is true for programming.
for(var i = 0; i < 10; i++)
{
console.log(i);
}
That's a function up there. It's not very exciting, and it doesn't do too much. But the first time I figured it out, it was amazing. One can't believe that traversing a block 'n' times is a possibility. Now that I know it is, it's still amazing, but my perception of it changes. It's now a tool, that one can use to build, and not the end result itself.
Programmers like jQuery because it serves a pretty good purpose. It essentially saves you the hassle of typing alot when trying to do a few simple JavaScript operations. Now go look at the minified code and see how exciting it is. The concept is great. The code, is code. If it was written by someone else, it would be 100% different. The code isn't what makes an idea come to life. It won't make it any faster or any more shinier. But naturally, anything new is always exciting. Your first skydive is surreal. But after your 100th one, it's like sticking your head out of a car window.
"Learning" to code
You can't really "learn" to program, at least not in a traditional sense. You can finish a few books and take a few online courses and learn some syntax rules, which is good. But a huge part of programming, is the opposite side of the syntax. It's the logic, the flow and the ability to see a solution before you're done hearing the problem. And that's not an ability that can be learned. It is one that can be strengthened however through years of bugs and crappy code. You need to be a terrible programmer for many years, before you become a decent programmer. And there's no way around that. And that's the hard part. Many folk getting into programming miss that entire part and try to jump ahead to app development and hackathons and such.
Any good chef, didn't start off in a 4 star Michellin Star restaurant. He started in some mom and pop hole in the wall place that made a decent sandwich. He learned the ins and outs. He learned about bad customers and bad food. He made slight tweaks to the menu and picked up on subtle nuances. Then one day he burned down half the kitchen. I bet he didn't do that again. But that story is what leads to something amazing.
Ideas are easy, execution is hard
Every idea is a simple process for the most part. This is the fun part. You can picture it in your mind, you draw it on paper, you get hyped. Until you start. Then everything changes. Then you get lost and your schema collapses. Then you have no idea how machine learning works and your project collapses before your eyes. Implementing API's becomes hours and hours of error messages and Googling. So if you want to learn to program fast, go implement an API. You'll either figure it out and learn a ton, or you'll quit and realize you don't like programming as much as you thought you did.
The good news
The good news is that you will either take the challenge of learning to program and the many years that it requires as a fun journey and stick with it, or you'll quickly realize that you hate it and so you'll go out into the world and do something that you do in fact enjoy. Both good things. Strive to be the best, with the belief that you're the worst. That's the best way to approach it. The moment you think you're amazing at programming, is the moment you stop learning.
Walter Guevara is a Computer Scientist, software engineer, startup founder and previous mentor for a coding bootcamp. He has been creating software for the past 20 years.