I've been working in tech for a while now. When I look back, it seems unreal. Back in 2014 while I was still in college, if someone told me that I'd be employed, I'd be overjoyed — that's how screwed up I was at academics.
In college I found most of the computer science subjects dry. I mean sure, few of them seemed interesting. But none of them were interesting enough to keep me occupied for very long. C? A nightmare, learning about pointers, malloc and stuff. Relational databases? Boooring! Visual C? Yuck, all that code just to render some crappy looking house ? I can draw better! Java? Meh.
"Can I just go watch Friends on my laptop ? That's fun!"
For the first three years in engineering, that's pretty much how my feelings towards these subjects were. And as you may have guessed, my grades got screwed up, big time (However in my defense, I did enjoy subjects like Unix and Operating systems!).
But when you're surrounded by people who are (A) Great at academics, OR (B) Programming Geeks, OR (C) Both A and B — it makes you think. Makes you worry. It makes you fear that you may never land a job, that even if you do — you'll likely get one that sucks. I had no one else to blame but myself. As someone who was still figuring out on what to do, the world of programming not only intrigued, but also scared me.
Where do I even begin? What do I do? Programming seems tough. Would I even enjoy it? If people keep saying that it's easy, does that mean I'm just plain dumb ?
It was around this time when web development was taking over the world by storm; people had already begun to explore and see what it had to offer. We had Web Programming as a subject in the final year of engineering, so I began to read HTML5, JS and CSS3. After lots of Googling and studying few examples from programming tutorials, very soon I could write a small program that did this —
This was easy enough to do — define classes in CSS3 for the sphere with position attributes and define transitions for them. Then use onclick event handlers in JavaScript to change the class-name of the sphere when you click one of the
boxes, and voila- you got a nice sphere that moves where you tell it to!
And when I saw that little blue ball moving, this is how I felt —
- This is so cool! It wasn't nearly as complicated as I thought it would be!
- The whole program took less than 20 lines of code
- It certainly wasn't boring as writing on some black screen using vi and seeing the outputs again on a black screen that they called the terminal when I wrote C or Perl code
I got hooked, and started to learn more and more. Very soon, I evolved from that simple program that moves a blue sphere, to writing my resume using HTML5, CSS3 and JavaScript —
I knew back then that this was still pretty amateur stuff, but I didn't care. For the first time, I knew that programming was indeed my cup of tea, and this wouldn't have been possible if I didn't write that first program in JavaScript.
Now there are many people who started out with C++ or Java, loved it, and still are writing software using that. But not all of us are like that. One does not simply learn to code'. Many people give up without even testing the waters, and the ones that do — they quit later, because the water's too deep for them. They eventually think that programming isn't their cup of tea.
My first programming language was C. Which is allright, but it can take a while before you finally begin to develop applications. Web development, on the other hand, probably has the lowest barrier to entry.
JavaScript, the primary language of the web, invokes strong reactions from the programming community — people either love it or hate it. I kinda have a love-hate relationship with it as well, and I guess I'll be stuck with it for as long as I make web applications. I for one can't wait to see the web evolve to that point where we can have alternatives.
That being said, I still think you should pick it as your first language.
JavaScript is not judgmental. It does not force you learn a dozen concepts before you can display a static web site on the browser. You don't even have to declare data types. You can execute JavaScript code on a terminal, or if you hate the terminal, you can use the developer console in a web browser, or you can embed it in an HTML page and see the output in the browser. It allows you to do both functional programming and object oriented programming.
I finally got a job at a startup as a Front End Developer. As it turns out, it acted as a sort of ‘gateway' towards learning further programming concepts. Things that sounded boring before, sound very interesting to me now. Pretty soon
I moved on from front-end to full stack — I started to enjoy the process in architecting data models in MongoDB and PostgreSQL, writing RESTful APIs in NodeJS and Golang, using ReactJS for the client, to even starting open source projects.
I do not intend to 'promote' JavaScript in this post — I'm well aware of it's quirks. But we waste so much time — hours and days, or even months trying to figure out whether programming is meant for us, doing things that we don't want to. We'd rather just quit and choose not to do it, because learning things can be a pain in the ass. At such times, having a tool or a method that takes minimal effort to use and that's beginner-friendly can be very helpful. So before you begin to learn, keeping these points in mind will help you manage your expectations-
- Every language has it's pitfalls, so does this one. JS is very easy to pick up, but it is pretty hard to master; so don't take it for granted thinking you'll become some sort of 'ninja' or 'rockstar' within a week.
- Understand that what you write in the beginning will mostly be considered ‘crap' by other programmers. Don't give up. It's okay to write shitty code in the beginning when you learn. But if you discover that you like it, then it's very essential that you don't write shitty code.
- Indentation matters a lot. It helps you avoid bugs, it also makes sure that your code doesn't look like a sea of vomit when someone sees it.
- And finally - if you have alternatives to JavaScript, consider using them. The JS ecosystem is highly chaotic, new frameworks keep propping up like flies, and JavaScript fatigue is a real thing.
"All-right. Where do I begin?"
I highly recommend starting from here — From Zero to Front-End Hero (Part 1). It's very cool, I wish I had this tutorial when I began my journey.
This would be enough to help you get started. There are about a million things more to remember, but you wouldn't need to know all of them — not in the beginning at least. What's important to know is whether you would enjoy doing this for the foreseeable future — and the sooner you come to a realization, the better.
So, take a leap of faith. Who knows, maybe you might actually like it! And if you hone your craft and work diligently, you might just find yourself cast in the role of a lifetime.
Interested to learn something new? Check out my repositories:
- How to build Your Own Uber-for-X App
- Beginner-friendly projects built using JavaScript, Python and more!
Top comments (2)
That's a great post with some really great advice to beginners. I'll be passing this to some new devs I'm helping learn. Do you plan on entering the #DOhackathon here at dev.to? Just curious. I submitted my entry. It's all HTML,JS, (bootstrap)CSS. If you get a chance take a look and let me know what you think.
Thanks for reading! I do plan on entering the hackathon. Will definitely have a look at your submission!