Web Programming is Hard
It’s probably safe to say that most people that get into (or try to get into) Web Development don’t have a background in Computer Science. The typical story is that people discover HTML and CSS, they make a website, and from that moment on they’re hooked. That was certainly my story. It’s a bit more complicated than that in my case, because I’ve been circling around tech stuff for almost 20 years, but the basic gist of how I got interested in Web Development was playing around with HTML and CSS.
The barrier to entry to start learning Web Development is zero. Anybody can learn to code. You hear about people who are self-taught, start businesses, or find jobs as Software Engineers earning 6 figures. I’m sure that it’s happened to many people, probably still happens, but I think this is rarer than people think. The people that get there are ultra self-determined folks who truly worked hard and these people are not the norm. They did their home work and they understood that what they where learning and trying to do was Computer Programming.
This brings me to the main idea I want to explore and why I think people that attempt to do Web Development reach a barrier in their learning journey. Some get over it, some drop out, but the main idea is that this barrier is particularly difficult for a non computer science person.
Websites vs Applications
One thing you’ve might’ve heard or read is that ‘HTML and CSS’ are not programming languages. Rightly, you took this as coders just being snobby douches. The truth is, besides HTML forms, and other ‘programmatic’ behaviors embedded in markup, there’s very little ‘programming’ when writing HTML. CSS gets closer to programming, specially now a days, but in the end, it’s still just markup describing what your document(your HTML document) should look like. Now JavaScript is a programming language, specially today, but for a long time it was merely just considered a scripting language. For someone just making a website, you would pickup JavaScript to do DOM manipulation(manipulate HTML elements) to make a button reveal something, or make an image slider. And that was it. You got yourself a website. An HTML document with hypertext, some styles and some JS to make the buttons do stuff.
This might sound silly, but I think a lot of people that get into Web Development either never understand the difference between a website and an application, or they take longer to make that distinction. They might now there’s a distinction, but only to a superficial level. It certainly took me a while. Because there was a time where you could be just either a Web Designer, or a Front-End / Client side Web Developer that just made websites. Twenty years ago, to make a Web Application, you had to learn about Servers and you had to learn programming languages made for server side development like PHP and Ruby, and you had to learn about Databases. But now, we have things like React, which help you make an application on the client side.
This is confusing. Jumping from making websites to making web apps is not as straightforward as, again, someone who’s learning Python, or C++ for their Computer Science degree. They know they have to give their computer detailed instructions to make stuff happen. They have to write ultra detailed instructions.
I’m not saying that having a computer science degree will make learning Web Development automatically easier than someone who doesn’t. There are plenty of people with computer science degrees who can’t program squat. But those who did get exposed to it and actually learned something, could probably learn something like React quicker and have the Math background to not cry when attempting Data Structures and Algorithm tests.
Jumping Over the Barrier or Pivoting
While I was doing my degree in Interactive Design, I thought I was good at Designing. I was particularly interested in Web Design and I was obsessed with CSS for a while. Like, I cared about the aesthetics and the user experience. I still care about that, but I love coding more than I love making wireframes and website mockups. And once I started venturing a little further than just markup and basic DOM manipulation with JavaScript, reading about frameworks, Node, NPM and all this other stuff, I was hooked. This was the moment when I decided to focus on Web Development.
Hoping this helps and gives some comfort for those going through a similar journey. This stuff isn’t easy. I takes longer to get a least decent at it. It takes longer than people assume. It’s also perfectly ok to realize that some aspects of web programming are not for you. You can always transfer some of the skills you gained into something that you actually enjoy. Maybe some people are at the opposite spectrum of where I’m at were they do enjoy more the design aspects of web development. Though I’m not sure about the status of Web Designer as thing today, it is possible to just make websites and specialize on making them look and work great. Look into peeps like Brad Frost