loading...

Choosing Your First Programming Language

ericadamski profile image Eric ・5 min read

And Why I Choose JavaScript, HTML/CSS

I am looking for honest feedback about my writing, please leave anonymous feedback here or comment below ❤️


Learning how to program is hard. It took me 3 years of coding every day, for hours, until I considered myself a true programmer. Since my coding journey began in university I had to use whatever programming language the school instructed us to. My very first program was written in Java. I do like Java, and it has come a long way from when I first learned it, but in my opinion it was a terrible place to start. Let me explain to you what I would have looked for and what language I would choose to start with now.

Having experienced many different languages, all in different contexts, here is my checklist for picking your first language (I ranked them from the perspective of someone wanting to get into the programming field as quick as possible, other goals might have a different order):

  1. Minimal time to feedback
  2. Low barrier to entry
  3. Available resources
  4. Market potential

1. Minimal Time to Feedback

How long until I know what I did worked, or not?

When I learn something, I just have to do it. Which means that doing it has to be simple. When I was in my 3rd year of uni I built a deck for a friend. I had never built a deck alone before, so I was going to learn - on the job. It took about 2 weeks to build and 2 weeks to figure out if this deck was going to work or not. That is too long of a feedback loop when you are learning something. Don't worry the deck will last, but I am no carpenter 😂.

When it comes to programming, or learning in general, you will want to see two kinds of feedback:

  • It worked! Hooray 🎉
  • It didn't work. 😭

Whichever kind you are experiencing, when you are learning you want to see it instantly. The faster you can try things, the more things you can try, the more you will learn. For me nothing matches the speed of the feedback delivered by JavaScript or HTML/CSS. One click of a button and you get instant visual feedback. This makes trying less of an effort, so you can try more and worry less about whether or not it is correct. I learned HTML and CSS like that, just by doing it.

2. Low Barrier to Entry

How easily can I try something?

Like I mentioned before, when I learn I just want to do. Which makes learning somethings quite difficult. For example, if I wanted to learn how to make native iOS apps. I would first need an Apple computer, which means I would need to be rich 😂. Even if I had that I would have to use their specific tool. Really there is a single way I could possibly learn to develop native apps for iOS. HTML/CSS or JavaScript you just need a computer, any computer. You can code a full web application, even without connection to the internet! Probably one of the simplest programs you could ever write, Hello World, using HTML:

<h1>Hello dev.to!</h1>

You don't need to install anything! You can just double click on that file and BOOM 💥 your first website! Similar for JavaScript! In that same file:

<h1>Hello dev.to!</h1>

<script>
  console.log('Hello dev.to!');
</script>

Without installing a single thing and just using a computer you have done the "Hello World" program for 2 languages in 2 minutes.

For more experienced web developers, we also need to try things. Our applications aren't as simple as opening a single file. Don't fret, JavaScript, HTML/CSS got you covered. There are so many places you can go, on the internet, that can allow you to program something complex with such little effort! Two of my favourites that I frequent:

These tools can also be a great place to learn new things, since a lot of other peoples runnable code is there for you! Let us get a little crazy now. NodeJS is JavaScript for the server, no web browser involved. Let me give you a scenario; You are on a plane, 30 000 ft above the earth, stuck in one seat for 10 hours, no internet. YOU CAN STILL PROGRAM! I have setup my android phone with an app called termux and a bluetooth keyboard and I can write and run some JavaScript directly on my phone 🤯.

That last example is a little outlandish, and they have internet on planes now I am just way too cheap to pay for it. BUT, the point still stands, it takes very little and it is so easy to program something in JavaScript or HTML/CSS. Nothing can stop you from learning.

3. Available Resources

How much information exists for me to learn?

Another extremely import part of learning - how hard is it to get the resources required to learn. When I was in uni, and learning what is now one of my favourite languages, C I was hard pressed to find any tutorials. That is most definitely not the case for JavaScript or HTML/CSS. There are so many resources out there it is possible for you to become a web developer on your own, without any professional guidance! That is an amazing place to be, starting with a language so many other people are knowledgable about. You can definitely teach yourself how to program in C, but it will take much longer and you won't have the confidence in your skills. You can learn JavaScript and HTML/CSS from some of the most talented people in the world, that should give you a lot of confidence.

4. Market Potential

Are my skills going to get me an interview?

There are a couple of reasons people want to learn to program, one of the reasons I have found to be most popular is to get a job. That means that understanding the demand for a particular programming language is important. We can rely on numbers for this one, which makes me super happy. JavaScript, HTML/CSS is on almost every single website that exists on this plant. There are about 1.94 billion websites. Your skills will be needed for a long time if you know JavaScript/HTML/CSS. If we look to the future, you should also feel pretty comfortable. Even if we get more specific and look at two of the more popular JavaScript libraries React and Vue, combined they power approximately 600, 000 sites. That alone will keep a lot of people busy for many years. Not really sure how many jobs are available for you if you choose to learn C.

Conclusion

If you are thinking of getting into programming you couldn't have picked a better time. The amount of opportunity and resources available to you through the internet is overwhelming. Whatever language you choose to learn, it is possible to do so on your own! If I had to choose which language, languages really, to learn JavaScript, HTML and CSS would top my list. They are the perfect place to start and you can get a full, exciting, and fulfilling career out of them.


I would love to do a follow up post about what is missing from the internet of learning resources and how the internet is empowering people to take education into their own hands. Let me know if you would be interested in that in the comments or tweet at me!

I am looking for honest feedback about my writing, please leave anonymous feedback here or comment below ❤️

Posted on by:

ericadamski profile

Eric

@ericadamski

Founder React Ottawa | Building flawk.to an team-img.now.sh | father | developer - Looking to help others achieve their goals

Discussion

pic
Editor guide
 

My first language was ruby, and i was wrong for choosing it, cause its so good and pleasant to write code with it and now i just cant force myself into learning languages like java etc even though that would let me make more moneys

 

I love ruby! It is also great that you were able to learn a language that you enjoyed so much you want to stay with it! There is still some good money in Ruby on Rails as far as I know

 

My first language was BASIC. But mind you, this was also in the 90s. But even today, I honestly believe that BASIC should come back as an introductory computer programming language.

BASIC is pure, BASIC is simple. BASIC is easy to understand as a human, as the entire focus is on the words, rather than symbols.

Also, in terms of sheer awesome power, QB64 exists and has full OpenGL support for gaming now. VBA exists in Microsoft Excel and can be used to do complex data manipulation (it has full ODBC/SQL support).

If all you want is a job for the time being, yeah, HTML/CSS/JS will fit this. But if you want to understand more of computer fundamentals and have transitional skills, I highly recommend people to learn other areas of deeper systems programming. Not everything is a web app! In fact, not much at all is. This is just the area with the hype. But who maintains the OSes? Drivers? Firmware? Kernels? Applications such as web browsers? Servers? User Interfaces? Networking infrastructure? There is a whole world of technology out there with hot and exciting jobs, but people entering the industry now who are pushing head first into web apps without any exploration outside of it fall into a false sense of ideals of how computers and technology actually work.

 

I don't disagree that a deeper understanding of different computer systems and interfaces would be extremely beneficial. I also understand that web development is not the only nor the largest area of development, but it is the most accessable and understandable. People can see and interact with the web which makes it simpler to comprehend than a kernel or other more complex computer subsystems. I recommend web as a place to start, not necessarily a place to stay. That being said, I think it is a brilliant place to be in development right now.