Outsourcing and Limiting to Core Competencies are Essential
medium.com
medium.com
Lets be honest, this sort of thing goes on at large companies too for two reasons: resume stuffing, and job security code. My favorite is when someone builds some really "cool" tech that only they understand, uses it to get a new job, and then quits. If a manager lets this happen, they ought to be fired too, in my opinion.
There's nothing wrong with this mentality when developing fresh new code for small projects but once you work in an established company you need to stop and think. Is this a new language, technology? What kind of support is available, how hard will it be to hire someone that knows this or train them up? Do we already have something pre-existing that objectively is just as good?
Without such conservatism, you end up with undocumented frameworks that are no longer officially supported, no one knows it and there are hundreds of these things that just replicate each other, just because it was something "cool" at the time.
This applies to frameworks, languages, libraries so on. Someone has to support these things 2, 5, 10 years even down the track.
Yeah. Come back in two or three years when your application's code has degenerated into an unmaintainable mess, and adding new business logic is taking four times as long as it needs to because no one sat down are rearchitected the software to meet new needs.
I've experienced two jobs where this, in effect, was exactly what happened. In both firms, previous management used short term contractors to get a "lean" proof-of-concept out the door. In both cases customers loved the product and started asking for more features. And, finally, in both cases by the time I was hired (at +3 years in one company and at +5 years at another) the product had grown so bloated and so unwieldy, management had brought development in-house and was embarking on a multi-year project to clean up and rearchitect the code so that it would accommodate new feature requests from customers. If these two companies had paid more attention to the architecture of their code, then a lot of pain could have been avoided farther down the line.
This strategy is great if you're building a pump-and-dump startup (like Instagram, or Tumblr). But for an ongoing sustainable business? It's a recipe for disaster.
Programmers need to grow, so it's important for there to be opportunities to try new technology. Obviously this can't frequently get in the way of the main thing, but it matters; you don't want to fall behind.
But I would argue that "as long as business features are being implemented regularly" is too vague to be useful. You could be regularly implementing business features and still have half of development time building some framework that is unnecessary.
For example, I think it makes more sense for the NSA to use existing databases than writing their own...
btw, is it possible somehow to reduce the amount of nonsense^W links from medium.com? We have enough narcissism here from patio11 and likes.)
There's something deep and interesting to be unpicked here. On the one hand, the desire to dive into with new technology and make your own things is rather positive and joyful. On the other, doing that rather than pursuing goals with real value is sad.
Many would object that the former enables the latter, but this is nonsense. We're not talking about prudently investigating potentially useful new technologies or inventing transformatively useful new tools. We're talking about using the latest hot NoSQL database without worrying about its appropriateness, or writing your own web framework just because.
Choosing the former over the latter seems, more than anything, childish. It's choosing eternal inconsequential play over taking effective control of the world.
I note that there are other elements of modern programmer culture which can be seen as childlike. The lust for table football tables in the office, the excitement about workplaces that have free food. Garann Means's 'Bacon is bad for you' talk advances a theory that's vaguely related; it really struck a chord with me.
I find this angle of programmer culture to be deeply frustrating, because it means the discourse is dominated by the shiny and superficial, rather than the genuinely difficult and important.
But then, Bucky Fuller wrote that "children are born true scientists", and the dramatist Keith Johnstone said "Most people lose their talent at puberty. I lost mine in my early twenties. I began to think of children not as immature adults, but of adults as atrophied children.". Maybe i'm overlooking the positive aspects of hacker neoteny.
Recognizing and avoiding crap and a fraud is up to end-user. Otherwise one will end up running Java under Windows under VMware on Amazon AWS, as the best industry standard practice.) Or NodeJS as a "VM" with MongoDB as a "database".