Web Development is an Uphill Battle
Published 2013-2-12The great and terrible thing about web development is, well, it's web development - no other development is easier, or more difficult!
Project Zero-Day
How can you be effective without being an expert?
Finding the answer to this question is one of the most pressing of my current goals.
I'm trying to put together succint materials that teach people the least of what they need to know to get stuff down.
Web Development is AWESOME!!!
The web is a winner, that's for sure. It's both hot and cool.
JavaScript has got to be one of the best languages to learn because it has so many great features that were just way ahead of its time. In addition to that every person on planet Earth who has a computer can begin developing with it (considering that more computers, smartphones, and tablets were sold than people were born in 2012, that's maybe 1 out of 4) from their web browser (okay, so you can subtract the people that only use IE from that figure, but those are mostly people with no friends or who work at banks where security is of no concern - in either case, not likely to be developers)
More and more of the difficult technology is being standardized and written directly into the browser APIs so that they get abstracted away into simple business logic rather than complex algorithms.
There are so many libraries are already-solved problems for just about everything.
And now, with NodeJS, you don't have to learn Ruby or Python to get a great RESTful JSON API up - you can still use JavaScript to run your backend.
Although they're not always the first hit on Google, there are a number of great tutorials - you just have to know where to find them (and a number have found place on html5rocks).
And with tools like jshint, jade, and less you can get more work done with less frustration than any time in web history!
Web Development is FREAKING AMAZING!
Except that Web Development SUCKS!!!
Web Development is like an exclusive club that you have to be in the know to get in the know - otherwise you end up using this crap.
And everything about web development sucks SO BAD from the ground up.
It's not enough that HTML is broken. CSS is broken. And JavaScript is the worst, most inconsistent, most poorly implemented, programming language ever created. I think I failed to mention that it also has the most cognitive dissonance between the code you write and the parsed, restructed version of your code that actually executes. It's terrible.
(the worst language of all is often confused as being a programming language, but it's actually just a template language that couldn't do what it was nearly good at and fell into doing solving other problems that were already being solved better by programming languages)
And there are so many technologies in the mix created by standards bodies who never sat down in the same room or even spoke to each other about anything before they finalized the standard and shipped it out the door.
In css classe are defined by .foo
. In html they're defined by class="foo"
.
In javascript they're defined by document.getElementById('thing').className
,
which is supposed to be a list... WHAT!?
Even in the lastest standards they still do ridiculous things with conventions
ranging from conflicting uses of syntax such as -
, _
, and camelCase to
mixing in incompatible Object types such as NodeList
which isn't an Array
.
It's nuts!
And worst of all: In an attempt to make the process less painful and require less discipline, you get no error messages most of the time you do something wrong - even if the syntax is unparsable (CSS / HTML), which ultimately means more manual error checking, more steps in the build process, more discipline required!
It's impossible to get started as a web developer!
Back to Day 0
I think web development is really like learning to play Piano. It can be incredibly satisfying and incredibly frustrating. You can find the rare teacher who can get you playing in weeks, or one who wants you to have years of practice fingering and never tells you the simple, motivating secrets with which you could be enjoying your experience after just a few weeks or even days!
So how do we take a guy (or gal) who's getting into web development and expose them to enough of the good to feel successful and motivated without leading them right into the bad that's going to cause frustration, failure, and demotivation?
A line that's rining in my ears from Influencer: The Power to Change Anything (kindle) is something to the effect of
make the invisible visible
I remember another principle is to ask
Is it worth it?
And then
Can I do it?