Tell me, why the majority of people who decide to join the gym in January can’t continue till March?
Because they go too hard the very first day.
Similarly, when learning programming for first time, if you expose yourself to lots of new theoretical concepts before you even write your first code, then you automatically lose your interest within few days.
There are two key factors to learning any new skill:
- Low barrier to entry
- Instant feedback
But I don’t know HTML and CSS
You will have to code the GUI (Graphical User Interface) in HTML and CSS.
However, doing GUI in other languages is much more complex than doing it in HTML and CSS. For example, let’s create a square box with HTML:
<div style="width: 100px; height: 100px; background-color: red; border: 1px solid gray;"> </div>
This creates a 100x100 px box, with red background, and 1px solid gray colored border. And “div” stands for division. Anything you don’t get there?
It’s easy, right?
To make this same box in any other language, you would have to import some GUI library first, then create a window, then handle that window, and then you get to code the box on that window.
Those first three extra steps can easily discourage you and destroy your interest in coding.
When learning a new skill or cultivating a new habit, a low barrier to entry is vital for maintaining the consistency.
I hate it when I have to explain 13 complex concepts to students before teaching them to print “Hi!” in GUI.
But why am I putting a lot of weight on GUI? Because the GUI results feel more tangible.
Creating a calculator to add numbers in a black and white console is really a boring shit for beginners. Moving boxes on screen when we click on it feels awesome. It encourages the beginners to learn more, instead of giving up early.
Okay, back to our question:
And that’s not a disadvantage, it’s actually an advantage.
It’s a good idea to make the GUI in HTML and CSS, that way you learn two more technologies, that can be applied to web and mobile.
In fact, HTML and CSS are so good and easy for creating GUI, that many other languages are starting to adopt it as their way of creating GUI.
So, learning HTML and CSS is not only easy compared to learning GUI in other languages, it is more useful too.
If you have never coded any HTML and CSS, then this tutorial will get you started: Batman’s Love Letter in HTML — your first HTML code
I want to repeat one specific thing — no jQuery.
I believe before learning a language, you must know why it exists at first place, and where it is going.
When the earliest Web browsers were released, people soon realized that they needed a scripting language to make the websites more interactive. Web developers badly wanted these functionalities:
- Logic handling: HTML and CSS only define the look of a website, they don’t handle any logic. Example use: To show an error message if the user forgets to fill a mandatory field in a form. Here we need to handle the logic that checks if a field is mandatory and is left empty.
- HTML & CSS manipulation: Web developers badly needed some way to programmatically access and manipulate HTML elements and their CSS styles. Example use: To give the empty form field a red boundary, showing that the user must enter the required data in the field. Here we need to give a red boundary to an element from script.
- Event Handling: Any scripting language will not be of much use if it can’t capture and handle user and browser events. Example use: Add an item to cart when “Add to cart” button is clicked. Here we need to handle the “click” event on the “Add to Cart” button.
Yes, I can already hear a lot of people who’ve read a couple of wiki articles shouting the above sentence.
The thing is, does it matter?
With the wide varieties of applications that you can make, plus the enormous amount of career opportunities it opens, there is no reason for categorizing it as a scripting language or a programming language.
The important thing is — it gets shit done bro!
It’s no surprise that majority of success stories posted on Reddit and other forums are about how a self-taught programmer got a Frontend Development job in a big IT firm or a local Startup.
Because Frontend development (HTML + CSS + JS) is the easiest and fastest path to get a career in programming.
- Frontend Developer: Avg Salary: $76,200
- Node Developer: Avg Salary: $91,668
- Full Stack Developer: Avg Salary: $110,597
- Remote job opportunities: work from any corner of the world
- Easy to get freelance work compared to other languages
- Easy to build portfolio compared to other languages
Problem with most online Tutorials and Courses
I believe the fastest way to teach someone a new skill is to start with the fun stuff, and teach the boring things later down the road.
Unfortunately, most of the online tutorials and courses do the opposite. They teach the boring concepts first, and the student lose their interest and willpower before the fun stuff begin.
I am on my journey to change this. I am writing tutorials that teach you to build things first, and learn the theory later. This way you don’t lose your interest and keep learning.