programming journey
2019 opened with a lot of chatter to the state of web design and development.
I’m a front-end developer. This is the label I’ve allowed myself to be since the mid-2010s but it was a struggle to get that far. I previously referred to myself as a front-end coder, front-end designer, web designer, and webmaster. I still consider myself a web designer in the sense that I design code that produces websites. But this label doesn’t apply to me in 2019.
I’ve always struggled with wanting to be a good web designer, essentially a graphic designer for the web. I never solely followed that path, with countless attempts producing designs that were amateurish. It’s always been easier for me to iterate off other people’s work rather than come up with my own ideas, even as a musician or audio engineer. Remixing and updating someone else’s code, music, or recording feels more natural for me because it’s the creative realm with immediate feedback. But my beginnings into a web career started more technically.
In my freshman year of college, I enrolled in and quickly dropped Computer Science 101. It was not interesting to me. I struggled to enjoy it, found the homework to be tedious, and couldn’t care less to give it much effort. Computer science was too technical and not visual enough. The internet’s maturity, however, has brought me back full circle to the necessity for the basics of computer science via Javascript.
Web development has gone through a paradigm shift. In the 2010s, Node.js introduced Javascript to the server and it replaced aged languages like Perl, Java, and PHP. Javascript is now more than just basic interaction of DOM manipulation or API calls.
What is front-end developement today?
- 2019 Front-end web development >= 2000s back-end development.
- The web is as much of an operating system in 2019 as Classic Mac OS or Windows was in the 1990s.
- Computer science is equally as important for the web as it is for the desktop.
As long as JS continues being a fundamental role for web development, I believe an understanding of Computer Science basics is mandatory. Staying stuck in the middle between the creative and the technical limits me in job prospects, so much so that I don’t qualify for many available, and many of which are senior level, front-end developer jobs. And all of this has left me drifting professionally, in between a noticeable distance from my creative desire to my technical knowledge.
Code is a commodity
jQuery is the most important library to boost Javascript’s role in the history of the internet. Using jQuery, I cheated; it was a way for me to ignore the inevitable reality of a web development career focused around JS. The abundance of jQuery everywhere let me ignore thinking about JS outside of basic DOM manipulation. Most of the time, I outsourced coding problems to jQuery plugins, tutorials and tips I browsed to find.
Just as jQuery plugins delayed my need to level up, WordPress plugins furthered my procrastination. WordPress’ theme architecture, at a basic level, mirrors static HTML, sprinkled with PHP in minimal template files. The real work in a WordPress theme is scaffolding a layout with HTML and styling it using CSS, using pre-built WordPress plugins (mostly mixed with jQuery) for most interactivity. Along with a mature WordPress community came a rich ecosystem of turnkey themes and opinionated plugins; I only had to moderately create or modify the front-end or PHP.
For too many businesses, CSS is Bootstrap. Bootstrap, like jQuery, takes work out of truly learning basics of CSS. I’ve worked for many companies that quickly needed to iterate and develop what’s known as an minimal viable product (MVP) and they forced these types of frameworks into the product or cycle. To a degree, Bootstrap, and to a larger degree an increasing amount of other front-end libraries and frameworks can be considered to have immutable CSS, where most CSS is abstracted into individual classes for iterations of most rules and values. Among other things, this relieves the developer from having to think about a global namespace issue that CSS provides by default. CSS becomes like most other languages where you treat given CSS classes as methods to extend the markup without much thought into the cascade. I think this is a mistake.
At the same time at the growth of WordPress, jQuery, and Bootstrap (among many others like them), Node Package Manager (NPM), a package manager for Node.js, also grew exponentially. In 2013, NPM was used by over a million developers. In 2019, NPM was used by over 11 million users. Why is this significant? NPM gives developers a way to efficiently import JS libraries and frameworks into projects more easily than going to a bunch of project sites to download each package individually. This process makes efficient the ability to add plugins and packages to projects and it’s all circled around a project’s ability to use Javascript.
My front-end knowledge for putting together puzzles out of HTML, CSS and JS pieces was commoditized to these various systems, libraries and frameworks. This was problematic for me at a slow but increasing pace. That said, my affection for web design on a creative level trumped the need to become more proficient with learning programming fundamentals. But this shifting paradigm quickly moved me out of contention for more jobs as time went on.
The moving paradigm
The early 2010s showed glimpses into a JS-everything future. Job ads needed significant jQuery programming from scratch, even moderate Javascript skills. Along with that saw the rise of the frameworks like Backbone.js and Angular.js. For most of 2013, I was on a temp job for a large enterprise company that chose a Javascript framework called Angular.js, which at the time seemed intriguing. But I also had no idea how this framework abandoned the tradition of a light client-side scripting on top of server-side scripting as well as progressive enhancement.
It really started hitting me in 2014 when job ads increasingly wanted devs familiar with principles from the MVC world for more rich web apps. It was baffling and stressful to watch the “I’m qualified” pool of jobs decrease. Despite that, I was still determined not to learn back-end programming. My mind circles around HTML and CSS plus some JS, visual layouts and User Interfaces, small animations and transitions that are now the role of CSS. Reliance on JS for everything was growing out of control.
The next few years, I accepted roles allowing some static templating or moderate scripting, each new role requiring more JS than the previous but still within my capability. And that leads me to today.
JS is the future
2019 web development starts with a framework or a library, primarily React.js. The modern web ecosystem is Javascript built on top of Javascript, or in other words, full-stack Javascript. We’re surrounded by opinionated frameworks and libraries that promise the world. This ecosystem requires knowledge of both Object Oriented Programming and Functional Programming, two philosophies to which I’ve only had minimal exposure. For me, this goes beyond learning just the language and syntax of JS.
Back-end development of the 2000s is now front-end development within the modern JS stacks. Yesterday’s back-end developer using Perl, PHP and Java are today’s front-end developer using JS across the full-stack. Today’s younger front-end developer increasingly comes from a JS bootcamp or transitioning from a back-end heavy education into the front-end. Staying in the web industry also means moving into new spaces like Machine Learning, AI, and big data. For those of us comfortable primarily with HTML and CSS, these jobs, if these jobs aren’t outsourced by CSS frameworks they are going to agencies or designer roles. Front-end jobs are often centered around back-end Javascript on the front-end.
Perl and Java slowly phased out starting over a decade ago. WordPress’ PHP back-end likely faces a similar fate. WordPress is slowly replacing chunks of its system with modern JS like React. WordPress is a slow moving ship but there will be noticeable pain in the forced transition continuing this year into the next decade considering that WordPress drives about one third of all websites. I wouldn’t be surprised to see other similar software environments like Drupal have to pivot to more JS everywhere.
And I’m playing catch up to get into this reality, struggling to learn what I avoided for so long. I move further from creativity and more into technical everything. This is where the front-end developer jobs are, this is how to stay employed as a developer. If I want to re-enter a freelance career where I can build and support my own product, I have to embrace a full-stack skill set based around JS. Or partner up with someone who already has this. This is a slow moving process that I’m not sure where I’ll end up.
The rest of this year will be spent with services like scrimba.com, FreeCodeCamp, Wes Bos courses, and other resources to consume and practice.