Watched my first episode of Silicon Valley the other day and was completely horrified. Not by its lack of technoliteracy or its presentation of nerds as socially inept children (which still seems pretty common on television). Instead because of how realistic its tropes and themes were when dealing with technology companies. Everything from the posturing of programmers to the heartlessness of venture capitalists who think they know best. It was painful to watch with my housemates and sadly admit at the end of it, "yeah, that's pretty accurate..."
Silicon Valley TV Show
Along those lines, I have been having a dickens of a time reconciling my nostalgic for past work accomplishments with the aggravating state of development today. Without a doubt, this has been a major contributing factor in my inability to accept any of the jobs offered to me in the past few months. My tolerance for marketing buzzwords, agile development religions, and productivity apps is incredibly low. And, if I have to hear the terms "technical debt" or "pair programming" one more time, I might just lose it.
Not everything is bad. Test Driven Development for frameworks and APIs seems incredibly smart. Abstracting code with interfaces and using templating languages like Twig have definitely been a significant step in the right direction. These things genuinely have improved my life and made code more reliable and stable. I wish I could magically transport them back 12 years to when I first started coding.
However. There are plenty of things that I have reached the point where I give Zero Fuchs if you are using it or if you think it is the best thing to hit development since IDEs–which incidentally I am not overly fond of either.
Single page applications and front-end frameworks are both high on my list lately. They claim they make teams more productive. However, at this point they are getting so complex and so heavy that they require a team to do anything significant with them. Do they abstract common functionality and allow the creation of components? Yes. But do they also add the subsequent overhead and complexity of a framework and its dependencies to the frontend? Most definitely. After building two different SaaS applications, one using Backbone/Marionette and another with Vue.js, I have decided that my current project will use neither. No more messing with routing, components, and little tricks to get everything loading perfectly. And now the page loads are so light and speedy in comparison. I am still using AJAX and have API on the backend, but I am no longer front loading so much of the display logic since I actually have a backend that can do 90% of it effectively.
Flux Application Architecture
I have also completely abandoned every productivity tool that I have tried in the past three years. Websites like Trello and Pivotal Tracker only seem to complicate the process of structuring development. Both seem to require that you have a team member tracking tasks full time. If you start letting things slide or if one person does not buy in, it completely falls apart. Few small teams can afford that kind of overhead.
Example Trello Board
My current development process is the exact same one I was using 10 years ago with ExpressionEngine. A list of features for the next two major versions and then a detailed document (usually a spreadsheet) with the current version being worked on with detailed notes for each feature being added. Before GitHub issues (love 'em), EllisLab had a bug tracker that did essentially the same thing. Worked extremely well. We got work done. A pretty impressive amount of work, honestly. Now, it seems development moves at a slower pace with oodles of more "process" in the way.
Maybe it is just me. Maybe if I worked with teams larger than 2-5 individuals these things would matter more. I just look at front-end frameworks, productivity apps, and many other development tools/apps and I cannot honestly say my life as a developer has gotten faster, better, or easier because of them. Yet, I see them mentioned everywhere in job postings and on company websites. Almost as a badge of honor: "Look! We have process! We have apps measuring our productivity!"
A bit maddening when they also claim they're innovative, data-driven web professionals and yet their site or application has no SSL certificate, is not ADA accessible, breaks in mobile, has images that are not optimized for retina displays, has page sizes that are 10MB+, includes literally dozens of JS files, etc., etc.
“A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away.” –Antoine de Saint-Exupéry
I, for one, will continue to try and keep my tools and techniques for development as simple as possible while still striving to build well-designed and user friendly websites and applications. For what is development, except a process that we, as developers, design to build products?