6 ms·
Well, let’s add that most of the projects are boring CRUD apps. They have a few pain points and over a long time will need novel extensions, but their base is b
by kaba0 4y ago
Well, let’s add that most of the projects are boring CRUD apps. They have a few pain points and over a long time will need novel extensions, but their base is basically LEGOd together, hardly comparable to the Manhattan project of CS which would be something like a high-performance JIT compiler, database, etc.
- ido 4y agoEven though most commercial programming work is trivial (in the sense Math professors use the term) it doesn't mean you don't need excellent programmers (or that at least some of your programmers are excellent). All of us who worked as developers for a few years have seen the seemingly trivial program be incredibly difficult to support/extend/fix/debug (especially after being in production for a few years). At the beginning of my career I thought this was circumstantial but having been doing this for a living for 20 years now this is common and I keep seeing this pattern over and over again - not so great programmers will easily manage to make your "trivial" program very much not trivial to continue developing.
- kaba0 4y agoSure, I agree (to the point where I sometimes question the need for cheap, not so great programmers at all). But even those great senior developers can on average only dream about being the next Von Neumann :D
- ido 4y agoIt's really not that easy a problem to solve and sometimes the suboptimal solution seems better than the alternative (which would be to hire nobody until we find a good senior developer). Despite the fears of over-abundance of programmers driving down wages being around at least since I've started working, there is a shortage of good senior programmers. A lot of companies (many non-tech) need programmers these days, most programmers are not that great, most work is not that exciting but it still needs to get done. So it's also often not even about the cost of programmers but about their availability (for the price you can pay). Let's say you're running the internal software department at ACME Insurance and Customer Care Services in your average big-but-not-major Western European or North American city. You need programmers to develop and maintain your creaky Java Enterprise Edition + Oracle DB internal system that has been appropriately handling your insurance and customer care services needs for the last 18 years. At this point centuries of developer-years have been spent on this system and it's crucial for €/$ millions or revenue yearly that your company depends on. You can't offer the kind of compensation, prestige or interesting projects that the local FAANG development offices can offer to easily recruit great senior developers. What do you do?
- ticviking 4y agoAsk why your senior leadership team cannot find a significant fraction of that ARR to spend on really high quality engineers?
- ido 4y agoHow do you know it’s not significant? What if the company is making $5M in yearly revenue with 20% profit margin (so net income of $1M, remember most industries don’t have profit margins as high as software)? I remind you in this case their main business is not even software, but insurance and customer care services (with the software there to support that). They can’t/shouldn’t spend 40% of their profit margin ($400k/year) in matching facebook’s compensation for a top notch senior developer.
- taneq 4y ago“Everything not impossible is trivial.” - Mathematics. That said, yeah, it’s frustrating the percentage of code which simply doesn’t matter as long as it works at all. Although the point about mediocre engineers making things way harder than they need to be gets exponentially worse as the decisions get earlier in the process. So many times you look at implementing something and ask yourself why we’re even doing this at all.
- Retric 4y agoLet’s not forget half the programmers working today are below average. So CRUD programs are fine when created and maintained for years to decades by people in the middle of the bell curve. But everyone’s going to touch code created by terrible programmers, if nothing else when they are getting started. The only real option for most projects to improve quality is simply keeping the same team members for a several years as they improve. This does get increasingly expensive over time, so few companies try that hard to maintain people yet the world stumbles along.
- Fire-Dragon-DoL 4y agoThe thing I notice the most is with juniors out of school: some of them have masters degree, but they are really disoriented when put on the job. Program might be trivial, but the ability to work is not taught in school, so there is all of that to learn
- ioblomov 4y agoI’d up the ante on the “Manhattan Project of CS”. It’d have to be something that was theoretically possible, but never done before. Like a quantum computer that actually works, say, not the toy implementations they’ve built to date.
- kaba0 4y agoI wouldn’t put quantum computers at the forefront of CS, at most it is an intersection between several fields. CS is much more theoretical than engineering.
- saalweachter 4y agoThe Manhattan project wasn't exactly pure theory.
- ioblomov 4y agoFair: CS is a poor analogy. But yeah, Manhattan involved more disciplines than just applied nuclear physics. There was applied chemistry, for example, to purify the isotopes. And von Neumann, Feynman, et. al. had to engineer purpose-built computers for brute-forcing all the differential calculus. And obviously, geology and metallurgy, to find and forge the U and Pu, had to be involved too.
- cjfd 4y ago"most of the projects are boring CRUD apps". This is often repeated but to me it indicates that something is wrong. As soon as it is boring, it no longer is programming. If they are so boring why isn't it just done by a configuration file that anyone could type?
- kaba0 4y agoWell, to a degree it is done by a configuration file, it’s just written in the DSL of a big framework like spring. Like, most of the code is just declaratively specifying what should happen, not really the how. Add a few filter/mapping and you are ready.
- sokoloff 4y agoThat configuration file would be, in the best reasonable case, isomorphic to the boring parts of programming and, in the more likely case, worse than programming with a general purpose language and the associated tooling ecosystem.
- ryanbrunner 4y agoThe trick is that usually what you require is boilerplate until you don't need boilerplate, where the "not boilerplate" parts are hard to predict ahead of time, and configuration files are pretty bad at this as it's usually difficult to "break out" of the configuration. Very high level frameworks like Rails are probably a better fit for this where you can write simple operations extremely easily, but it's still all just code that can be customized when you need to make small tweaks.
- pyrale 4y agoConfiguration files are code files. It's just that the code is at a much higher level of abstraction, and, usually, domain-specific. Now, what would be the cost of maintaining a domain-specific compiler and its tooling on top of the configuration files? That's true for most abstractions, btw. When you abstract something, you now need to maintain both the abstraction and the code using the abstraction.
- ticviking 4y agoMost of it is actually less boring than the saying seems to imply if you choose to actually look at the problem in a complete full stack manner. The issue is that much of it needs a craftsman not a scientist or engineer. Virtually all of the value I have added to software in my career has involved doing the equivalent of a "This old house" renovation and bringing things up to code. I go in and untangle years of small hacks so that the data path is clear and special cases happen in the same place. I get things onto boring technology rather than bleeding edge or high availability stuff. Most mid-size companies, even serving the enterprise don't need "scalability" in the sense that Google does or a startup hopes for.
- ryanbrunner 4y agoThe challenges with most modern software are more long-term maintenance, extensibility and quality vs. actual hard engineering problems, but that doesn't mean that those problems are boring or trivial, as evidenced by the unmaintainable mess that many codebases are.
- sirsinsalot 4y agoyep. I get paid very well to manage teams who essentially assemble IKEA furniture ... but with code. If I want interesting problems, I have a computer at home.
- ticviking 4y agoOne of my best buddies is a machinist, he sets up the exact same dozen or so CAM jobs every day. He and I both do 3d-printing for fun at home specifically to challenge ourselves!