My Own Money(MOM) Principle

Praba
Praba
Feb 23, 2017 · 5 min read

We, as developers, are like kids in one aspect — we go after the new and shiny. Every week, there are posts that talk about the next generation framework, library or language. There is no shortage of phrases — newer is better, latest and greatest, version 0.1, MVP, bleeding edge…. The churn is relatively much more on the front end world than the backend world. We even have a word for the phenomenon — Javascript fatigue and people talked about JS fatigue so much that we now have Javascript fatigue fatigue.

How many of us try out a new technology on our own free time, in our own sufficiently large project with a big enough team to objectively analyse the pros and cons of each technology/framework/tool/library at scale? Contrast that with how many of us read a few blogs, watch a few videos/talks, try out the ToDo app and then suggest that technology/framework at work potentially involving other team members who might have different skills/aptitude? If you are in the former group, you got nothing more to read on. But in my experience, I have seen so many from the latter camp, every time I hear “did you check out X? X is awesomeee!!!!”, I instinctively roll my eyes.

If it’s your money, where would you spend it?

Trying a new thing at work isn’t bad at all. After all, you get paid on time, add another tool to your resume, write a few blog posts, some poor soul will be responsible for taking over the code /application — pretty sweet deal, right? Yup, as long as someone else is paying for it (Customers, VCs, Angel Investors..).

Let’s turn the table around — Assume that you are a normal Joe/Jane. You worked your ass off in college and at various employments and have a sizeable sum of $100 in savings. You have this really radical idea of the next generation messenger application. With this $100, you have to pay bills (1 Gbps fiber line might come after running water and electricity), pay your team, provide IT support, marketing and sales, post-live maintenance, licensing costs, potential lawsuits and compensation, and probably some time to manage all of these non-code stuff.

Would you choose a tool which is little over a year old because you think it’s cool and will click, on whose release cycle you have no control over, you have no idea whether it’ll survive the next 5 years and whether the community around this tech will continue to be enthused about it in future as they are now?

Would you have chosen to build the UI in Angular 1.4 now and spend money re-writing it in Angular 2 or React or Vue next year? Or spend time figuring out whether you need to use Gulp, Grunt, or a myriad other things?? If all that you are building is a CRUD application, how much money would you spend for the front end build system?

The usual arguments we hear are modularity, maintainability, extensibility, scalability and a whole lot of -itties. If you are running out of money at the end of 6 months, where would you put it? any of the -itties that might make sense in the future or a tangible working product now? What do you do when you read (just after rewriting the Angular 1.4 code in Angular 2)?

On the roadmap for 2017 is the release of Angular 4. Technically it will include breaking changes, but it will not be the same sort of drastic change as 1 to 2.

Unfortunately, this question is not hypothetical/rhetorical and definitely not far fetched. A lot of the so-called Enterprises face this question for every product — new and existing. Their product scope is defined by the budget they get in any given year. If all goes well, there might be a budget for the same team next year. [I’m using the term Enterprise to mean Banks/Telcos and other large organisations where technology is seen as an enabler and not as bread and butter, yet — a.k.a not Twitter/Uber/Google/Facebook. Though Banks are becoming technology companies, they are the exception so far.]

Technology as a tool to solve a problem

WhatsApp chose Erlang. Not NodeJS. Not Java/C#. They had a problem and chose a tech that addressed that problem. Not because Ericsson invented the language, nor because Github has a lot of ★s or it’s on top on Tiobe index. Would a Bank choose Elixir to build web application that lets a customer see her account balance? Most probably not, because it won’t have the same problems as Facebook or Google or Uber. Apart from the obvious customer needs, if I don’t have someone else’s money, any sizeable company will have to think long and hard about many things like:

Code maintenance and talent finding/upskilling — finding a good developer who is willing to barter his life for looking at the same codebase for years is hard. What we take for granted as a good developer, is a luxury for 95% of companies out there. That’s why it makes sense for them have a 10 member below average offshore team who do what they are told than 1 person on payroll who can do a better job.

Application maintenance over years if not decades — I have seen the rise and fall of languages, approaches, frameworks, libraries and processes. A company that started in the late 90s would have at least a handful of different tech stack as technology progressed. Those applications will need care takers while they die a slow and painful death. If I used Grunt in a few years ago, Gulp last year, Browserify/Webpack now, can anyone tell me what will happen to that code base in 2022?

Governance — Regulated companies (like Banks) are audited to hell and back and there is serious reputation damage if something goes awry. Reputation they built over time before technology as we know it existed.

Time — we spend time doing spikes, PoCs, talking to the guy who built that library from 2 years ago via his Github Issues thread — time that has to be paid for by someone.

It sure ain’t coming from my 100$.

If you’d not do it (or think twice/thrice) if it’s your own money, why would you not do that for someone else’s money?

P.S: If you think twice before spending someone else’s money, you have my respect. I’m talking about the other guy who says “I suggest to client things I like to learn/play with”.

P.P.S: How would technology progress if everyone does this? It will progress. Be an innovator or early adopter by all means, but not at somebody’s expense.

Praba

Written by

Praba

Developer / Consultant / Motorcyclist / LOTR fan / Opinions are my own and not views of my employer/clients.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade