Re:Career planning: Where do old devs go to?
by InclinedPlane on Monday October 20, 2014 @12:48PM
(#8483108)
Engineering is about applying heuristics and rules to solve problems. You build a bridge in one way one time, then you build a similar bridge elsewhere in a very similar manner. The same thing happens in software, but only in the boring areas. Software is far more varied, and far more interesting. But most of the interesting parts are under the hood or otherwise invisible (such as the mechanics of actually making the software, which generally not a standardized process).
Imagine if software was physically manifested and somehow translated into familiar aspects of life. Going to buy a car you wouldn't see a lineup of several incrementally different models from different companies, instead you'd see: a bicycle; a tank; a bamboo framed solar powered moped held together by duct tape; a rocketship; a jet pack; a houseboat on top of an enormous tracked crawler; and a pair of rollerskates (both for the left foot). Also, half of them are free, a quarter of them can be bought for cash, and the remaining quarter cost tens of thousands of dollars per unit and can only be purchased through very elaborate contract negotiations (and there's no rhyme nor reason which is which, because the rocketship is actually free, and the rollerskates is one of the crazy expensive ones).
That's software, and that's just a tiny pocket of it. The entire software industry is basically fractally weird in the same fashion, but on a much larger scale. It's commonplace for some metrics to differ between direct competitors by not just percentage points but by orders of magnitude. It's also commonplace for competing products to offer entirely different paradigms of use. Imagine considering buying one of two different hammers, one of which is an ordinary hammer, while the other somehow submerges and infuses your surroundings in a bubble of liquid glue 1 light year in radius, then rapidly cures just the portion of glue you want to cause two things to stick together, then instantly vacuums up the uncured glue remaining in the bubble. That's the scale and weirdness of differences between SQL and NoSQL, or between systems built on node.js and java, for example. But we accept that as if it's normal, and the end user never really sees it. HN is a perfect example. As a user you can't really tell what HN was written in, and you can't discern a difference between its underlying structure and, say, how facebook works (except at a functional and UX level). But underneath HN is written in Arc by a tiny team and facebook is written by an army of devs on PHP and makes use of custom PHP compilers.
Imagine if software was physically manifested and somehow translated into familiar aspects of life. Going to buy a car you wouldn't see a lineup of several incrementally different models from different companies, instead you'd see: a bicycle; a tank; a bamboo framed solar powered moped held together by duct tape; a rocketship; a jet pack; a houseboat on top of an enormous tracked crawler; and a pair of rollerskates (both for the left foot). Also, half of them are free, a quarter of them can be bought for cash, and the remaining quarter cost tens of thousands of dollars per unit and can only be purchased through very elaborate contract negotiations (and there's no rhyme nor reason which is which, because the rocketship is actually free, and the rollerskates is one of the crazy expensive ones).
That's software, and that's just a tiny pocket of it. The entire software industry is basically fractally weird in the same fashion, but on a much larger scale. It's commonplace for some metrics to differ between direct competitors by not just percentage points but by orders of magnitude. It's also commonplace for competing products to offer entirely different paradigms of use. Imagine considering buying one of two different hammers, one of which is an ordinary hammer, while the other somehow submerges and infuses your surroundings in a bubble of liquid glue 1 light year in radius, then rapidly cures just the portion of glue you want to cause two things to stick together, then instantly vacuums up the uncured glue remaining in the bubble. That's the scale and weirdness of differences between SQL and NoSQL, or between systems built on node.js and java, for example. But we accept that as if it's normal, and the end user never really sees it. HN is a perfect example. As a user you can't really tell what HN was written in, and you can't discern a difference between its underlying structure and, say, how facebook works (except at a functional and UX level). But underneath HN is written in Arc by a tiny team and facebook is written by an army of devs on PHP and makes use of custom PHP compilers.