Ben Northrop

Decisions and software development

Let's not be Slaves to Fashion

January 6th 2015

For as long as I've been in the industry, it's always been this way. You talk to a fellow programmer, and inevitably the conversation veers toward the same, perfunctory exchange:

"So...what are you using?" which point you respond with the newest, flashiest piece from your current stack:

"'s just basic Java/Spring on the back-end, but on the UI it's Angular (!)"

The purpose of the exchange is of course not to objectively describe a set of technologies used to solve a problem. Instead, we highlight the "cool" language/tool/framework in order to reveal something about our ourselves, our identity. We're not just average programmers. We use Angular (or whatever). We're in the "in crowd". In a sense, the technologies we use are like the clothes we wear - they speak to who we are, what we stand for, our worth. It's technology as fashion.

Now of course the analogy is far from perfect, but consider some parallels from this description of the fashion cycle by sociologist Herbert Blumer:

The elite class seeks to set itself apart by observable marks or insignia, such as distinctive forms of dress. However, members of the immediately subjacent classes adopt these insignia as a means of satisfying their striving to identify with a superior status.

They, in turn, are copied by members of classes beneath them. In this way, the distinguishing insignia of the elite class filter down through the class pyramid. In this process, however, the elite class loses these marks of separate identity. It is led, accordingly, to devise new distinguishing insignia which, again, are copied by the classes below, thus repeating the cycle.

In a nutshell, fashion, whether in clothing, music, or programming, is about class differentiation. The elites innovate. The masses catch up so they can be associated with the elites. As soon as they do, however, the elites are no longer "elite", and so they must break away and innovate again. The masses eventually follow, and the cycle continues, ad inifinitum.

Obviously, there's more to it in the case programming - our choice in technologies can't be as whimsical as our choice in hair style. Our decisions must be grounded in a strong base of pragmatism - i.e. what we use should actually work. Still though, I think we understand that there's always been a degree of fashion in our industry. Whether it's Angular today, or GWT, Rails, or JSPs of yesteryear, there's always been that "next best thing" and we've always scrambled to keep up.

Now, sure, we often jump the bandwagon out of earnest hope that we've finally found the silver bullet, or some close approximation. I think just as often, however, we jump on the bandwagon so that we can sit alongside the "cool kids" and not be "left behind". Ok, we could have used a technology we know and are proficient with, but that technology is old and lame now. We use what's new. We're up on things. We're "current".

To be clear, it's not the innovation itself that is dangerous, but rather the vacuous emulation of it. When we use a tool, a framework, or a language only because it's new or "hot", we are taking on non-trivial amounts of risk to our projects and our clients. We make our systems less maintainable and unnecessarily complex. Even when the new technology is by all standards "better", we should be sure that it is better for our project and organization and solves the particular problems that we need to solve.

Unfortunately though, I feel like this empty, reckless adoption of new technologies is more prevalent than ever. For example, I hear this kind of exchange alarmingly often lately - a programmer unabashedly suggesting technologies to another without even understanding the context:

"You know, you really should have used MongoDB"

Really? We only had 1MB of data and the rest of the organization was using MySQL. More importantly, we finished the project in scope, on time, and on budget!

Again, I'm not at all bemoaning the process or cycle of innovation itself. Innovation is our business. We create. We make things better. This is great. I do think, however, that the ever increasing pace of innovation, on all fronts (e.g.NoSQL databases, Javascript frameworks, Mobile toolkits, etc.), is playing into our hard-wired psychlogical desire to "keep up", and to ill effect. I know myself that I'm often so overwhelmed by how much new "stuff" there is out there, and moreover by the paucity of free time I have to reasonably evaluate it, that I often catch myself reverting to fashion-based decisions. That guy at the conference told me that Go was the next big programming language - I better start using it!

So as I get off my soap box, let me make one last plea. If you're in the elite, keep the innovation coming (obviously). Those in the masses, however, let's not be afraid to let a bandwagon or two pass us by. Let's be judicious about adopting innovation. The right tool for the right problem. In other words, let's not be slaves to fashion.

As always, let me know what you think!

I believe that software development is fundamentally about making decisions, and so this is what I write about (mostly). I'm a Distinguished Technical Consultant for Summa and have two degrees from Carnegie Mellon University, most recently one in philosophy (thesis here). I live in Pittsburgh, PA with my wife, 3 energetic boys, and dog. Subscribe here or write me at ben at summa-tech dot com.

Got a Comment?

Sign up to hear about the next post!

If you liked this article and want to hear about the next one, enter your email below. I don't spam - you'll only receive an email when there's a new post (which is about once a month, tops). It's all low-key, straight from me.

Comments (9)

January 06, 2015
Yes, I agrre. In my opinion you do something better and improved because you have failed 1000 times, not because it is in fashion. The only person who knows how it should be at that point of time is YOURSELF. That in my opinion means, that you are ready at certain level and you are not maybe even as 5% fashionable. And not to worry. Because in 2 years you will be ready and things will come faster, you will understand more.
I really do not care about fashion, and 90% i hear, this is cool that is cool. Exactly identity but to society not to yourself inside deep in your manifestation. Just to show off. Let us do really one thing what we love and stick to it. Your experience is never going to be my experience, it will adapt to our readiness and certain path in life we have chosen.
Other side of the coin, when people are arrogant, lazy and just do not care. But even that is just periferia. Everyone has a reason to behave at the moment like he/she it does. I am sometimes too tired from the social buzzing, what is the point of all that, fashion thing, really?
Yes the right tool for the right problem at the right time in your path in life
Davy McBongo
January 06, 2015
Generally, yes, don't chase after every shiny new thing. A technology should be chosen for reasons other than newness.

But, fashion in clothing is typically JUST a signifier for class, wealth, or cultural identification.

Technology is different -- it's rapidly evolving, and the problems asked of it are evolving too. (The "pants problem" of keeping legs warm has not changed significantly over 100,000 years.)

One of the great things about software development is we're often asked to solve problems that haven't really been solved before. It's not unreasonable to cast about for new solutions. If you've got modern problems, modern tools may be a good fit. (Or maybe PHP + MySQL are just the thing!)

I don't disagree with the thrust of your post, but I think the nature of tech work should bias us towards trying new things.

January 06, 2015
I think of (current) software development as a craft in its early days. We solve lots of problems, some relevant and some just for fun. We invent stuff, re-think it and re-invent everything again after learning lots of new stuff from others. I think boasting with the fanciest bleeding-edge stuff is like running after fashion trends, yes, but it's an inevitable effect of a craft that is still in its early days.

That is why I'm very keen to see how people write software in 10, 20 or 50 years. Will there be some kind of "master language" everybody has at least some knowledge in? Like everyone knows how to cook at least some basic stuff, or is able to sew or knows how to repair common problems of an automobile? I hope so.
January 06, 2015
Honestly I don't really get the fashion thing. Do professional programmers worth their salt really think in terms of fashion and not technical merit? Cool ideas and flashy marketing get my attention, but it takes a hell of a lot more for me to dedicate time into it and much more for me to consider investing in it for production use. Nothing about AngularJS nor MongoDB or these technologies seem technically appealing over their competitors (e.g. ReactJS or basic PostgreSQL), I don't care a single piece of careage about whether people think they're important or not. Do you, Ben, or anyone seriously pay attention to "X is the next big thing, better learn it"?
Willis Q Rastas
January 06, 2015
I totally agree with you. I mean whatever happened to good old assembly? Luckily you won't hear about 20 something's writing a website in good old MIPS.

-disgruntled grandpa
January 07, 2015
@Renars - thanks for the thoughts.

@Davy McBongo - excellent points. I completely agree. In clothing, say, there are functional problems to be solved (e.g. keep the legs warm), but you're right, they haven't changed much (except for maybe for little pads on our fore-fingers in gloves to touch our smart phones, or whatever). Because of this, there's probably more leeway for fashion in our decisions, in that domain at least. In programming, the problems are constantly changing - e.g. as smart devices were introduced, we needed new responsive ways of rendering web interfaces, etc. As you said, "if you have modern problems, modern tools may be a good fit." Great point. I see however that sometimes we have pretty traditional problems, and we want to solve them with modern tools...for the sake only of their newness. There's probably more to this than just fashion (i.e. wanting to be associated with the "elite" class) - e.g. wanting to learn something new for the challenge of it, etc. - but in some cases, it seems like fashion is the dominant reason...and that's what I just felt like calling attention to. Anyway, great point - thanks!

@Stefan - Very interesting. If fashion dominates, then I think in 10-20 years we'll be using all new languages to solve the same problems, because we'll want people to know we're "hip" and not old or lame using "out-dated" stuff. If pragmatism wins, then yes, I think we should find the optimal solutions/patterns for standard problems, and apply those dogmatically (as done in other more mature fields - e.g. civil engineering, etc.)

@Chris Done - Thanks. Totally agree...many programmers are reasonable/pragmatic/rational and try earnestly to understand the nature of the problem, and find the right tool to solve that problem. I absolutely do think there is a degree of "fanboyism" out there in our industry, and I'm definitely confronted by it rather often - of the kind, "we should use MongoDB" even though a traditional RDBMS would be more suitable. I do think that it's a component in some people's decision making - "if I use this new thing, then I'll be perceived as 'good' or 'cool'" or whatever. I definitely see this at conferences. It's probably not as prevalent as I might make it out to be in my post...but it's more interesting (IMHO) to read a post that takes a strong stand. :)

@Willis Q Rastas - Haha. Yeah...I'm definitely setting myself up as the "get off my lawn" guy...but I'm hoping the point I was trying to make got through. I'm not saying innovation is bad...or that we should be not be progressing or using new tools/languages/etc. to solve new problems...just that we should be aware that there is some degree of "fashion" in our industry...and we should only use new approaches when they suit the problems that we're solving. Choosing "new" for it's own sake is just fashion. Choosing "new" because it solves the problems you have is 100% defensible (obviously!).

January 07, 2015
IMHO it's important to know what the new big things are and what is different about them. What makes better than their counterpart? What problem are they meant to solve?
Those are the questions I ask myself when I hear about a new piece of tech. Often times a product is just a new flavour of something that already exists. Other times it's a tool that is similar to an existing one, but works better for a specific domain.

As you say, it's about understand the tech first, then deciding on whether its use is right for the job.

And let's not forget recruiters who use these names like buzzwords to try and get candidates *shudder*.
May 17, 2015
I took a break from learning Docker to read this lolz :D
October 11, 2016
I am an early middle-aged, "obsolete", "unemployable" American programmer. My career life cycle mirrors the author's to some degree, although I got my education and had my original career in mechanical/aerospace engineering ("rocket scientist", LOL).

I eagerly learned the few tools that I needed to be productive and well-paid (i.e., pre-.NET VC++, and then .NET C Winforms), but then when I hit the big 4-0, I really lost the desire to learn something so ephemeral as new k3wl frameworks, even though I realized that my career depended on it. I suppose that my life situation is different than the author's as I am a very cheapskate bachelor and had saved up a nice little nest egg (and did well with investing it), so I could chose to simply retire very early, as the lowered ability to buy "stuff" was outweighed by the pain of having to learn something that I was not intrinsically motivated to learn.