The Problem with Full Stack
heydonworks.com
heydonworks.com
And with that, an interesting article, putting forth an already controversial proposition, lost any hope of rising above a comment flame war.
> I think I disagree with half that statement. I agree that HTML is undervalued, but I've never seen that as gender bias along that line. [...] I think it's an issue of, "declarative languages simply can't be hard"
Another misconception is that full-stack dev has to be a wizard in everything to be helpful - no, you just need to be good enough to get the job done and be a useful member of the team, just like everybody else. If you're a wizard great, but I'd trade a wizard for two responsible and capable average seniors anytime.
What an absurd statement. In my entire professional career and in my entire time reading tons of great discussions about CSS on HN, I've never seen anyone say anything like this.
Please try to find anything remotely resembling this attitude in this recent post, for example: https://news.ycombinator.com/item?id=18753358
But we really shouldn't look a gift horse in the mouth. If you look at the stratification of specialization other fields have you wouldn't wish it on yourselves. 500 mid-sized arenas compete for the attention of 5 highly-skilled sound engineering specialists and the 50 other guys knocking at the door can't get jobs. If one of those guys makes a career-ending mistake, his career is well and truly over, no arena is hiring him again.
Great for the 1%, horrible for the 99%. The fungibility of software talents works as much in our favor as it does for businesses. I personally don't mind working across the entire web stack, but ask me to switch frameworks and you'll be looking for someone else soon.
Though I also think the author fails to appreciate business trade-offs that are involved in some of what's complained about, particularly in environments that need to use full-stack developers. Perhaps it's not ideal, but doing perfect "beautiful" CSS/html is often not the thing with the greatest marginal benefit, particularly with time considerations involved. And the places that need this kind of developer don't feel that they need the quality of output that would come with larger, more specialized teams, or can't afford it.
(Though I also don't believe that anywhere with more than a half dozen or so developers is avoiding appropriate specializations.)
Hyper-specialization, while probably useful at Google, NASA, and Honda, is just not something I think most business software needs.
But I have no competitive advantage doing them. Any time I spend driving the car (O($10)/hour job) is time I'm not spending developing software (O($100)/hour job).
The counter argument to that could be that if I don't enjoy some Dev/Ops task, I'm more likely to automate it away, so maybe it is good to have devs doing tasks they don't care for.
Btw, how would the author go about building a nodejs SSR React application? 1 backend, 1 frontend and 1 HTML/CSS guru? I've actually never seen that, even in large companies.
I see there is some frustration about CSS in JS while writing in object notation is not any more difficult than CSS or SCSS, my 12 year old daughter would learn that in a snap. I can imagine it is frustrating for people that are good in HTML and CSS that there is not much work if you cannot actually code, but that doesn't mean there is a problem with full stack.
I've worked with more women who were doing systems, back-end, or app work than front-end, and I'm a front-end web developer.
I'm wary of people who make everything political without looking at root causes, which this article is a fruit of said tree.
a decade or so ago, we had designers who did html and css, and back-end developers who nudged the html into templates and did all the rest.
i used to be a classic back-end developer.
nowadays i am happy to code front-end, because my work hasn't really changed, it's just that many things that i used to do in the back-end are now done in the browser. i am still working with designers who do html and css, and i am still nudging the html into templates.
the one reason i don't like working with css is because most decisions to be made around it are design decisions, which, not having any experience in design are decisions i feel unqualified to make so i dread making them.
Fast forward to today and you can complicate that stack beyond belief. Meanwhile the business side says, "I could hire a full stack developer to build a web app twenty years ago. Why can't I do it now?" It's an entirely reasonable assumption on their part that somehow saying that's not reasonable anymore is prevarication and trying to hide the fact that we screwed up.
It's interesting trying to make the case that we haven't. Off the top of my head:
- We added accessibility, which makes it possible to comply with the Americans with Disabilities Act or comparable legislation elsewhere. - We know that faster interaction improves conversion rates, so we can make a case for at least some of the JavaScript to speed up a user's interaction. - Video and images can have better conversion rates than just text, but that can adversely interact with the last point, so we have to work around that.
So the web accessibility guidelines and semantic content, form validation on the fly and any other interactions that can be done within page that would otherwise require a page load (imagine if commenting on Facebook required a submit button and a page reload), and image sets and HTML 5 video.
What else can we justify this way?
"I spent 1995 learning HTML and putting together simple websites. I was thinking this is something I’d like to do professionally. In 1996 my father and I went to a demo in New York City, where Adobe was introducing PageMill, their Web page creation software. My father was impressed. My dad wasn’t in the tech industry, but he was pretty smart about technology trends. He said, “Anyone who knows HTML just lost their job. This will replace the need to know any of the underlying technologies.” But that turned out to be wrong. Even now, in 2017, most companies building Web software still rely on individuals to hand-write their frontend code. Indeed, from the point of view of business productivity, everything has been going in the wrong direction. This category of software, creating Web pages, was eventually taken over Dreamweaver. The software came from Macromedia which was later bought by Adobe. In many ways, Dreamweaver is a great piece of software. It makes it easy for beginners to get started, and it let’s them do some sophisticated things. But it ran into some limits. Many of the limits have to do with HTML, and the fact that HTML is extremely fragile in regards to the how elements are placed on a page. "
http://www.smashcompany.com/technology/the-problem-with-html
I agree there is an element of gender bias here. People working with Dreamweaver were graphic designers who were more likely to be women than the current situation with React developers.
The right path forward, for the tech industry, is to have a technology that is actually meant to improve productivity for graphic designers, empowering them with more of the production process. And for us to get there, it is important that we get rid of HTML. As I said in the previous essay:
"The problem isn’t with Dreamweaver, the problem is with HTML. It was originally meant to be a markup language for describing the structure of a document, but it later became the language people used to build graphical interfaces for most apps going over TCP/IP. Markup languages are a terrible choice for graphical interfaces. As much as possible, when creating a graphical interface, you want to use a declarative system. Ideally, a declarative configuration file can specify your entire graphical interface. The entire tech industry is largely in agreement on this. Consider that Quark Express and Adobe InDesign do not use markup languages, internally, to specify the graphical layout of the documents that they create. Also consider that before Oracle bought Sun and killed JavaFX, JavaFX was going in a very exciting direction, with a highly declarative system for specifying graphical interfaces. Also consider that every web framework ever invented has systems for specifying a graphical interface in a declarative format. If you have used Ruby On Rails or Symfony (PHP) or Grails (Groovy) or nearly any other Web framework, you are aware that you can build a lot of the graphical interface by specifying configuration data in a YAML file. But you are probably also aware that all of these systems fail at some point, and they fail because of the limits of HTML."
What does “kinds of people” refer to? What “kind of person” does it take to code in CSS? The correct frame is to think of all these as skills that anyone can grow. If a project requires all these technologies, I don’t see why it absolutely must be done by more than one person.
I’ll agree that someone coding in various technologies will be stronger in some than others. The question is, how much of a problem is that for what’s being built? Or to put it another way, does the success of your project truly rely on the CSS and SQL being top-notch?
BTW, HTML is not a metalanguage.