Chasing the shiny and new
nemil.com
nemil.com
So what does a startup developers do? We have to chase after those shiny and new stack to keep up with the trend and be high in the market.
When we are looking for an another job, which job do we apply to? The one that is closer to your stack. You will be high in the market and get to say "I have experience". Because these are the things that recruiter/employer cares the most.
When I saw other "trend" focused developers taking longer to launch apps and products, if they ever launched at all, I realized it was my ability to actually get something out the door that mattered, not only to myself but to my clients.
Part of me still likes learning new things, and I do occasionally experiment with new frameworks and languages, but having strong core competency in a few old languages has served me really well.
They care that you have gold to sell.
Tinkering with hyperspatial hoversmelting 0.1.1-beta is a waste of time if you can just crush rocks, leach 'em and sell some flake.
Or ~every 7 months for scribd who mention in the article 5 frontends in 3 years!
> What worries me is that certain developers, especially
> developers early in their career, may get the idea that a
> startup engineer is not a problem solver or computer
> scientist, but... their task is [instead] to memorize a
> new... language, framework, or library - in many cases to
> get limited benefits.
While I agree that it's possible that an early stage startup (and I mean _early_, like building their first version) might flounder around rewriting their app using different tech stacks and never actually ship anything, I suspect that it's more common to see companies delay releasing their first version due to reworking things that are perfectly acceptable for a rough first version.(edit: Also, I think the idea of a "sacrificial architecture" is useful when starting out. If you're lucky enough to need to massively scale, you're going to have to replace everything eventually anyway, so don't get too hung up on trying to make things scalable from day one.)
My observation has been that this gets a project into what I call the "done-but" category. "It's done, but could you change this?". "It's done, but can we make it responsive?".
This is especially rough if the company uses pretty mockups to sell products--the cultural focus on design/UI/UX can drag out development, burn out developers, and generally just slow everything down.
Something that doesn't get talked about too much, that I worry about, is the massive amount of duplication of work effort that happens as a result of this hyperchurn in software architectures. For an industry that relies on terms and phrases like "NIH" and "premature optimization" and "great programmers reuse" to emphasize the importance of productivity, a huge amount of effort is spent every year building out libraries and frameworks and languages to replace previous libraries and frameworks and languages that largely did the same thing.
Probably the finest example of this is is CPAN. Perl still has one of the largest community-managed repository of libraries of any other language (probably C or C++ or similar has got it beat). Any software developer in 2015 that decides Perl is just too antiquated to use and wants to move a large Perl codebase to, say, Node.js, now has to either rewrite those libraries or find libraries that have already been rewritten by someone else.
If Node (for example) were the only major new language since Perl, I could see how maybe the initial investment in effort to duplicate all of Perl's functionality might pay off if Node offers a significant enough improvement in productivity in the long term. But, since Perl there's been PHP, Python, Ruby, Node, Go, to name a few, and each of those have had their own competing frameworks ... we simply aren't gaining enough in long-term productivity when each new language or framework is being replaced within a couple of years by another new language or framework.
I have a hunch that a lot of this is a result of a competitive software developer job market. Newer and younger developers, lacking the background and experience of older greybeards, migrate towards newer technologies as a way to differentiate themselves. They eventually get hired into management roles (in startups, this can happen very quickly), where they have the freedom to operate their own fiefdoms, and they quickly establish rules of software architecture that ensure they get to hire other young developers that are comfortable with the latest trend.
It can seem a little bit absurd, but fortunately I'm not seeing many signs that this is happening that much yet outside of the HN & startup microcosm.
However, I just wanted to say that, as a heavily opinionated developer, I do happen to actively avoid applying to positions that involve working with certain technologies.
I avoid these technologies not because of any lack of shininess, but simply because I find them frustrating to work with, knowing there are better approaches available for the problems they're intended to solve.
It is a little tough learning new programming languages and frameworks every year or two though. But sometimes that's fun. Is it really necessary to track the winds of development fashion? No. But mostly I think people should realize a lot of it is about whats trendy and not hard technical issues.
But reading how plain Nginx works was surprisingly refreshing..