21 ms·
Developer inequality and the technical debt crisis
- shunya 12y agoLove this post. Brings up the question of are we solving problems are merely difficult puzzles? "Modern programmer culture fetishizes complexity as a status marker or tribal initiation ritual"
- nmrm 12y agoI wonder if some of this is the bored engineer phenomenon? I find that when I'm writing actually difficult code, it almost always comes out clean, simple and easy to read. It's when I'm churning out ridiculous amounts of front-end kluge that I start over-engineering or introducing complexity and indirection where it's totally unnecessary. This seems like a particularly cogent hypothesis for the web, where a majority of the programming is not very intellectually stimulating* but is simultaneously time-consuming and mentally taxing. * IMO and in my experience, mileage may vary. And this isn't to say you don't need to be intelligent. But requiring mental energy != intellectually stimulating.
- spacemanmatt 12y agoSome problems fit more cleanly into code than others. These get more attention when it's clear that a cleaner solution is yet unimplemented.
- ohashi 12y agoI often watch other developers look to make their lives more complex by trying to solve problems which aren't there. Why? Because the obvious solution is simple and boring. In any other culture that would be crazy. In programming culture, it seems to be the norm.
- spacemanmatt 12y agoSome reasons from experience that developers over-do complexity: a) Someone at some point in the past told them to plan ahead b) They aren't sure about a feature (or perhaps about the future of a feature) and hedge against inaction c) Management does not manicure their task focus and/or priorities
- lostcolony 12y agoThis is a constant battle for any developer. It's not merely that the obvious solution is boring, but that oftentimes the programmer is juggling so many problems that an obvious solution to one doesn't seem sufficient because it doesn't address the others. That is, yes, devoid of all context the simple solution solves the small problem, but it doesn't address the larger. It's funny that we get back to that after describing the art of programming as being able to break a large problem down into small, solvable ones, but there you are. I frequently find myself having to rescope my tasks, say "I don't know the answer to that, but I don't -need- to yet" or "That could go either way; let me just create a common exposed interface and cut off this effort at that point" etc, rather than create a bloated mass of abstractions to handle all the possibilities. It's the problem agile was/is supposed to solve in terms of method, and what functional programming is supposed to solve in implementation.
- deleted 12y ago[deleted]
- incision 12y agoPersonally, I perceive the 'complexity as a status marker' less a technological or programmer culture problem and more as one of business and job culture. You won't find someone building needless complexity into something if the fundamental goal pushes the limits of their abilities. Basically, starving men don't build Rube Goldberg Machines to crack their eggs. In technology in general, the majority of jobs seem to be been-done implementation while the education and training continues to stress design and engineering. Complexity is an outlet for every boilerplate operator who would rather be engineering and a differentiator to remind him/herself and signal to others a greater capability.
- coolsunglasses 12y agoOne particular point of developer inequality and technical debt that I see get ignored is people with the social credit or track that lets them only create new things as opposed to those that have to do maintenance. I find the latter often appreciate the place and purpose of types more clearly than the former, even if the former would benefit as well from having concise encodings of intent in the design and creation phase. This bias is prevalent in dyn-lang/consulting-oriented communities, often because they are churning out projects and dumping them on their clients/employers.
- biscarch 12y agoTo bolster this argument. I made my consulting money off coming in to fix projects that had been churned out like this. The issue is real enough to warrant good money to fix.
- michaelochurch 12y agoTo be fair, businessmen are short-tempered and flightly. They're like 15-year-olds who love one band one week and hate it the next. You have to make impressions-- flashy ones-- quickly because they have no ability to judge code quality, and can only tell who seems to be working fast. In this light, isn't the "get it out quickly" strategy (maintenance be damned) exactly what they've asked for? In an industry where programmers are business subordinates, not true professionals, should anything else be done? I am playing devil's advocate insofar as I agree with you. (I also think creators worth their salt want to see their work through, which means they're already doing "maintenance" work by the time they're finished.) However, I don't see how anything else can become the norm, given that The Business sees us as a cost center and a commodity.
- jrochkind1 12y agoI think the reason there's so much technical debt is largely because the amount it would cost to actually build quality software... is too high. We could not afford it. Like, as a society. Our society is built on crappy software. I think it's just a utopian fantasy to think that if only the right hypercard-like tool could be created, then the cost of building quality software would go down. Or at any rate, actually: Let's agree that the web is built on an enormous stack of kludges upon kludges. (These kludges are both in code frameworks that people use to build things on the web, and in the fundamental protocols of the web itself). The reason it is this way is, again, because by the time it is recognized what a problem this is, it would simply be too expensive to rebuild the web from scratch. We can't afford it. To build this utopian hypercard-like stack which allow just anyone to build web things, and be so high-quality that it just worked without having to understand the things it's abstracted on top of, and to maintain it as web technology and desires continue to evolve, etc.... would be such an expensive undertaking, with such a high risk of failure, that it has no way to succeed in that fantasy of making the web all around cheaper. We see posts like this come up here from time to time, written by non-programmers who have some kind of belief that programmers _like_ complexity, that programmers are _opposed_ to making things easy and simple. I totally don't see "modern programmer culture fetish[izing] complexity" -- rather, on HN, I think it's pretty clear that modern programmer culture fetishizes simplicity. It's just that simplicity is _hard_. (And people chasing simplicity often end up over-abstracting, and just winding up with an even worse form of complexity). Succesful software that is powerful and reliable and simple takes skill and it takes time. And skill and time cost money. We've built an economy and a society that is entirely based on crappy software, because the economy could not bear the cost of as much quality software as we have crappy software, and the crappy software provides short-term efficiencies that make people money. (and i'm not talking about programmers,I'm talking about the 'domain' businesses which could not afford to run without software 'automation' anymore, even though it's all crappy)
- JoeAltmaier 12y agoPretty negative. Not everything that is intractable is 'crappy'. Sometimes it just hasn't anticipated how we're going to want to change it, or was built to order and not for expansion. Like a building or a roadthat you no longer want to use - nothing wrong with it, just no longer useful.
- cafard 12y ago"Our goal was to allow regular people without extensive training to easily and quickly build useful software. This was the spirit of languages like COBOL, Visual Basic, and HyperCard." I think that this slightly overstates the matter. Having peered into the guts of some payroll code, I question whether it was easily built. Could we say "To allow application developers to concentrate on the complexities of the problem domain rather than on those of the computing environment."? [edit: rephrased my first sentence.]
- narag 12y agoNice phrasing. Programmers swarm to tools that cut to the chase, even if they're quirky. We want instant gratification :-) The right thing is simple and consistent.
- emilyxocantrell 12y agoThe research methods used in this Twin case include a cross-sectional research. They performed IQ test, life history, psychiatric, and sexual life interviews. The participants also took a questioner independently, under constant supervision. The data that was collected showed us that 70% or 2/3 of the findings in IQ could be traced back to genetic variations. Adult monozygotic twins are equally similar in physiology and psychological traits. The findings were very surprising, being raised by the same parents or in different homes doesn’t have anything to do with making siblings grow up to be alike. Like as said with Nature vs Nurture individuals choose how they react in situations, as for their thoughts, emotions, and actions. Nature and Nurture both are very influential to what makes us who we are and we need both nature and nurture equally.
- angersock 12y agoI'll go ahead and say it: this is a strawman. A simple web page is as simple as it ever was: <html> <head> <title>Hi</title> </head> <body> <h1>Hello, world!</h1> </body> </html> The problem is that everybody wants something so flashy and pretty that they can't settle for the functional-but-ugly barebones interfaces app programmers used to make. The problem is that we've trained users that if a product isn't pretty it's useless, and in pursuit of that all these other things happen. You need to have a single-page app, because UX. Well, that in turn requires all these other things, in turn requiring still more things. You need to have a pretty web page that also looks good on mobile, in turn requiring more clever responsive CSS, and so on and so forth. That's the root of the issue.
- cratermoon 12y agoImagine if the web looked like CICS screens and required a 3270.
- angersock 12y agoWhy imagine? https://cisiweb.scc.virginia.gov/z_container.aspx https://cisiweb.scc.virginia.gov/z_container.aspx
- cratermoon 12y agoClose, but still too graphically rich.
- rsync 12y agoYes - thank you! ... and a 18 year old copy of cgi-lib.pl can be equally as simple and powerful ... and a great many things can be built on these simple, no-frills platforms. How many websites have non-standard HTML items, and entire frameworks embedded, just to give me a slightly fancier submit button or text-input box ? How many websites have you visited today that had a 2000 character URL ?
- shrig94 12y agoI think you've nailed it here. Really, people should work on solving these smaller problems, e.g. make building a responsive website easier, make building single-page web apps easier, rather than "fixing" the web. And people are already making significant progress toward these things! (meteor, react, bootstrap, angular, etc)
- abrahamepton 12y agoThis feels astonishingly wrongheaded to me. "Imagine an Internet HyperCard that allowed regular people to easily build web apps, as easily as using a spreadsheet." and then JUST TWO SENTENCES LATER, "There are many app-in-a-can tools that generate highly stereotypical apps but to be truly disruptive we need to match the broad generality of frameworks like Rails." In other words, we need to make it possible for people to build simple things without much coding. Oh wait, people already can build simple things, but....that's not what you mean? The Web is actually a phenomenally easy platform to learn how to write code for, compared to basically every platform I've ever seen that came before it. Yeah, it has a shitload of quirks and stupidities and kludges, but that's what happens when you're building a system that gets used by a very large percentage of the global human population. The author writes as though he's never actually considered that doing anything at scale - not programming, anything; running a train system, or setting up a government, or selling falafels to people at lunchtime - inevitably involves hacks, compromises, kludges and half-measures. "Technical debt" is just another term for "doing things that involve humans".
- webmaven 12y ago"In other words, we need to make it possible for people to build simple things without much coding. Oh wait, people already can build simple things, but....that's not what you mean?" I think that the problem the OP has with most current app-in-a-can tools is that they don't allow users to create arbitrary simple things, but only fairly specific types of simple things.
- abrahamepton 12y agoI think you're right. My problem with that problem is that it's some combination of naive, impractical and pie-in-the-sky. It'd be great for humanity if you didn't need any skills or training to make any kind of computing application you wanted. While we're at it, let's also have a replicator to make any kind of food we want, instantly and deliciously, without any culinary training whatsoever, beyond being able to press the "pasta carbonara" setting (oh but I don't want there to be eggs in the carbonara, and can it have tuna instead of ham, and can it use a different kind of noodle, but I still want it to taste like carbonara and be delicious...)
- evv 12y agoI've been working on a startup that addresses this. It is best described as "a front-end as a service": use our interface and API to build a cross-platform native mobile app, with a matching mobile-friendly web app. Targeting companies who need a cross-platform whitelabel app to reach their customers or employees, but whose core competency is not flashy front-end software. Although I haven't done in-depth market research on the topic, I figure that most companies want some sort of custom app, but not every company wants to try and manage a team of web and mobile developers to do that. Let me know if anyone wants to meet up around SF and chat about this; I've been casually looking for a co-founder while I prototype and look for first customers.
- AndyKelley 12y agoIf this article's entire content was replaced with "Rabble, rabble, rabble" it would have the same amount of substance.
- placeybordeaux 12y agoWhat is his actual suggestion? It sounds like he is just saying make programming easier. That would be awsome if he actually does it, but I see just the lone idea of making programming easier. How are you going to do that?
- mr_doobey22 12y agoNo one mentions the real reason, also because it is the large elephant in the corner of the room we ignore. The truth is - most developers write crappy code. Even right now, here, on this site, plenty of people like their code is fine, it is the code of others that hurts the eyes. We can say that programming is hard, the languages and tools maybe not perfect, but, that's not quite it. A lot of developers just want to ship it, get it compiled and out of the door. It passes some tests, so it must be done. If we built bridges like we built software, well, we know how that ends....
- gloverkcn 12y agoThe web won because it has the least barriers to entry for a new developer and solves a lot of difficult problems that the old-school application stack had. This is all from my history and point of view so I'm sure a lot of people will disagree. Cost: The days when big companies developed tooling and platforms cfor developers where great IF you worked at a company that could afford to pay for them. They were expensive. When I first started these suites were tens of thousands of dollars expensive, and later just thousands of dollars. Sure they did a lot of stuff, but man there was also A LOT of overhead in managing the suite. For young people and very small companies these things were unaffordable, and frankly unmaintainable. A lot of times you would here about companies who paid 10-20K for a suite only to not use it due to the training required for everyone, the installation cost, and the need to change your development process to fit the platform's model. So anyone starting out as a developer or starting up as company would find the cheapest/easiest options available. And since there are far more small development teams than big companies there was far more demand and community support for free/cheap systems that while not great could get the job done. Linux was free, mysql was free,Php was free, Perl was free, Javascript was free, and there were communities that would support a new developer through getting these up and running (no 2500 training class required). The reason the LAMP stack became so popular was because it was free, could be installed on cheap hardware, and every element had a community that would support it. Cross Platform Support and Application Distribution: With C++/C you had to compile for every target machine. What a nightmare, library flags, macros, ugh. Testing had to have special labs so they could find bugs that would popup in one OS, but not another. Then it had to be cloned on disks and shipped out. Java came around with write once run everywhere which was better (MS came out with CLI and .net). The problem with these was making sure your customers had the base platform installed (the JRE or .net). B2B companies was a little easier because they had standardized equipment and IT departments that knew what to do, but if you were targeting B2C or small business then getting them to install the base software (again JRE/.NEt) was a pain because they would more than likely mess it up or just not know what to do so it required manual intervention. As soon as this got easier you wound up with the conflict of people having TOO much installed on their computer and just not wanting to install anything else unless they HAD to. Fast forward to now and we've got a built in client that adhere's to common standards. If they want to use your app they bookmark it, and when they are sick of it they just delete the book mark. Sure there's cross browser issues, but they are far easier to deal with than both having the customer install some platform and dealing with cross OS issues (plus you dealing with them doesn't require the customer to do anything but hit the refresh button). Developer Inequality: I don't know how you can say there's a higher barrier to entry now than previous. In the 90's almost everyone you met who was a developer was a CS/EE major or started on computers at the age of 12. The arcane level of knowledge required for using platform to build an application in the 90's dwarfs what's required now. I still remember struggling with bugs where you'd go hunting for "the guy" who new everything, and then you'd spend a couple of days trying to figure where the issue was only to find some undocumented outcome to a flag passed to a lib. To the developer who was working for XXXX who wrote the library it this was a completely obvious and logical result. Compare that to now. StackExchange. Free Video tutorials, Websites dedicated to teaching you. I constantly meet graphic designers, marketers, accountants, etc. who decided to become developers. I know who guy who has built a decent business with no official development education at all. He learned rails and shoved up to heroku. He learned javascript to improve the client side, and now he makes a decent living. You can start from NOTHING and in a few weeks have a base product built and being used by an alpha customer. That never would have happened 20 years ago. I feel freer and more productive now as a developer than anytime in my career.
- phkahler 12y agoBecause it's there. The only reason people use all these web tools is because they are there, documented and ready. The classic example is the Apache web server - it was there and worked. It was written when the web was small and the number of users to a site was low. Competing web servers are here now with performance way higher, so people are switching. Nobody wanted to write a better web server so nobody did for a long time - and better in that case was easily measured. Programming paradigms? How do you evaluate them? I agree there are fads (FP anyone?) but what objective criteria do we have to evaluate them, or design something from scratch to meet those criteria?
- nmrm 12y agoAs a long-time Lisp/ML hacker, I find it absolutely hilarious that FP is a fad now. I'm not saying you're wrong; I just think it's incredibly funny.
- markbnj 12y agoAgreed on the "let's make programming more accessible" point, but meh on the "good old days" view. I've been writing software since 1976 so I have some perspective on the good old days. Programming was always arcane, and it always required specialized knowledge and the patience to work at a level of detail few people find enjoyable. Yes, there were things like hypercard that opened up programming at a certain level to a certain semi-skilled person. Excel falls into the same category. But in the end it is not the symbology, or the tools, or the environment that makes programming difficult: it's the mental process of building up complex behavior from little pieces, analogous sometimes to being handed a bag of atoms and instructed to build a toaster. Some of us find building up these intricate abstract models fun and rewarding, but believe me we're a tiny masochistic fraction of humanity.
- AnthonyMouse 12y ago> Attempting to simplify and democratize programming will attract only scorn and derision (as did COBOL and Visual Basic). The reason COBOL and Visual Basic attracted scorn and derision is that they were awful. The problem with them is quite simple: You can use them to create something improperly in 1000 hours that you could create properly using other tools in 2000 hours. That thing will then work until you have enough concurrent users to expose the race conditions, or the Access database backing it reaches the 2GB limit, or the wind blows too hard and the hamsters powering it become frightened. At which point you'll spend 10,000 hours of overtime trying to keep it from collapsing in production while the users all burn you in effigy. And the likes of Javascript don't suck because they aren't like COBOL and Visual Basic, they suck because they are.
- nmcfarl 12y agoThe things I've seen built on COBOL, and Visual Basic are awe inspiring. The world is built on them - and for a reason: if you don't need a coder there's a whole new definition of "fail fast" that comes into play. And maybe eventually some tiny percent of these these little things, succeeds beyond your wildest dreams, and is now critical your business, and you have to drop 10k hours slowly rebuilding it using professionals. That's what success looks like. It's also what not paying for 100 failed software projects looks like.
- testrun 12y agoMy guess is that you have not written a line of COBOL code. I have seen great systems written in COBOL. My guess is why COBOL never caught on in the PC world is that COBOL is very much suited for batch programming. There were a few tries with a visual form of COBOL, but the tool set was very expensive and the alternatives were cheaper and more suited to events (for instance Turbo Pascal, Turbo C, the Microsoft products).
- AnthonyMouse 12y ago> I have seen great systems written in COBOL. That's not really the point. The problem is not that you can't do something great. Every Turing-complete language has the capacity to do that. You can write a great program in Brainfuck. The problem is that they encourage you to do something terrible. I have seen COBOL programs that I did not wish to see. Good languages make it easier to do the right thing. They provide strong type checking even for user-defined types and well-tested abstractions (like templates/generics) so that you don't have twelve copies of the same function one for each expected input, each slowly diverging and multiplying under maintenance and developing their own subtly different bugs.
- hackyhacky 12y agoI think a lot of people are misinterpreting what the article is saying (and maybe it wasn't expressed that well). The author is not saying that we need a tool that lets literally anyone be a developer ("So easy even a manager can use it!"), but rather that the current technology stack is so hacky that it gets in the way of progress, and demands levels of specialized knowledge that are tangential to the task of building web applications: that is, a higher-level set of development tools. Just as (to pick a high-level, desktop-oriented language at semi-random) C# is easier to work with than x86 assembly language, because it hides the messy details, I think the author would like a world where building a web application is as easy as building a desktop application: a world where issues like data serialization, browser-specific JavaScript hacks (and the hacky frameworks meant to solve them), incompatible databases, constant vigilance against easily preventable attacks (cross-site scripting, SQL injection, etc), and the necessity of juggling at least 3 different languages (JavaScript, HTML/CSS, and whatever you have on the backend) do not occupy valuable developer brainspace. The issue is that the current web technology stack was never meant for building applications. HTML was designed for static documents. JavaScript's early development was mainly for making terrible mouseover-effects on links. XMLHttpRequest is a historical accident. So, yeah, it all works together, somehow, but it wasn't designed to be used as it is today, and it shows. And it's the developers who carry the burden of integrating these hacks. I, like the author of this article, wonder if it wouldn't be nice to design a system to provide the advantages of the web (distributed client-server applications with highly-customizable, visually attractive front-ends delivered on-demand) with a slightly more human development process. If we can't replace the web outright, maybe we can build better tools ontop of it. I agree that current web technology is a horrible pile of kludges. Let's try to build something better. Some attempts are already being made. Please check out the amazing Ur/Web language [1] that lets you write front-end code, back-end code (compiled to native), and database code in a single, type-safe language that statically guards against errors that are rife in dynamically-typed web scripting languages. It abstracts the database, without wrapping your data in an annoying object layer; it lets you write front-end and back-end code in one language that communicate transparently. It is far from a finished product but it is an amazing glimpse and what could be with intelligent develop tools. There are some great examples on-line that show how easy it could be. Easy for a developer, of course, not for a layperson. [1] http://www.impredicative.com/ur/ http://www.impredicative.com/ur/
- michaelvkpdx 12y agoThe proliferation of shitty Javascript is crushing the web. J Javascript is designed from the ground up to enable bad developers to write shitty code. It's fine for alpha work, terrible for production. It is possible to write beautiful, elegant, maintainable Javascript- but I've never seen a "designer" or even a "JavaScript programmer" write code like that. I have a job as a code mechanic because so many companies are built on woeful Javascript.
- StephenFalken 12y agoThe civilized platforms controlled by large companies who invested in developer tools are all gone, strangled by the Darwinian jungle of the web. It is hard for programmers who have only known the web to realize how incredibly awful it is compared to past platforms. The web is just an enormous stack of kluges upon hacks upon misbegotten designs. This passage makes me remember that famous quote by Alan Kay: The Internet was done so well that most people think of it as a natural resource like the Pacific Ocean, rather than something that was man-made. When was the last time a technology with a scale like that was so error-free? The Web, in comparison, is a joke. The Web was done by amateurs.
- SoftwareMaven 12y agoOne thing this article completely ignores (as do many of the comments on the site) is that expectations have also drastically changed. Yes, Hypercard was dead simple to get something useful actually working, but nobody would accept a web app that looked and behaved like a Hypercard app. I think the author is right: there is a none-to-healthy culture of increasing complexity surrounding web development. But there is also a large amount of real complexity around it. Many of the complexities we deal with today are the result of attempting to put an abstraction layer over deeper, larger complexities. Unfortunately, few abstraction layers work without leaks, and those leaks add their own complexity. With powerful browsers, APIs-as-a-service and single-page apps, we are almost to a point where the web itself has been abstracted. But, even with that, expectations are still incredibly high. Nobody wants to look at blocky, course web sites; they want beautiful, smoothly animated sites. And that takes complexity.
- dangoor 12y agoWhile people like (or love) products that look beautiful and delight them, what people love even more are products that do what they want/need. A Hypercard stack or spreadsheet could solve a real problem for a dozen people in a way that a slick commercial product targeting a large audience might not. I do think there's value in enabling people to make applications that do something useful but aren't so pretty.
- Aqueous 12y ago"This Archaeology of Errors is no place for the application programmers of old: it takes a skilled programmer with years of experience just to build simple applications on today’s web. " I'm not sure HTML + JavaScript is any more or less easy than HyperCard + HyperTalk. I agree that nobody would design the web to be what it is right now if they had the chance to start over, but there's also something to be said for the force of Darwinism in selecting out decent technologies. And every major web technology right now is just that - decent. Not great - decent.
- greenyoda 12y ago"In the old days there was a respected profession of application programming. There was a minority of elite system programmers who built infrastructure and tools that empowered the majority of application programmers. Our goal was to allow regular people without extensive training to easily and quickly build useful software." There are lots of people writing software today (probably the vast majority) who are not "elite programmers". Here are just a few examples: 1. All over the academic world, you'll find grad students in physics, biochemistry, etc. hacking together research software in Python (using numpy/scipy), R, and many other languages. 2. All over the business world, you'll find non-programmers writing programs in VBA and other end-user oriented languages to slice and dice data from databases. 3. The average CRUD code that powers today's web startups usually doesn't require anywhere near an elite programmer to create. Think of all the articles on HN written by a "non-technical founder who learned to program in two months and created a site that makes thousands of dollars".
- jeffdavis 12y agoThe author is kind of all over the place, and it's hard to read it without thinking of counterexamples to a lot of his points. If his general point is to bring computing to more people, I think a modern, web-based version of MS Access would be a huge step. Everyone needs databases. Everyone needs forms to access them in a way that makes sense for their business. Right now you have to actually program to make that happen.
- cturner 12y ago> The author is kind of all over the place, Yes. His article's intent is to describe a problem. He then tries to give examples of solutions, and they're bad suggestions. Still, he's right about the problem. We are in a kind of dark age at the moment, and the technology web stack is an unnecessary horror. Regarding databases, I think what you're proposing is a step in the wrong direction. Databases is one of the major problems of our age, and cause of software being so difficult to get right. Many programmers will use a database to solve any problem. There's an endemic problem of developers exposing databases as APIs, and then getting immediately bogged in complexity. We need less of that.
- jeffdavis 12y ago"Databases is one of the major problems of our age, and cause of software being so difficult to get right." Strange. I think of databases as one of the bright spots in computing. They are very closely related to real business needs, and do a good job for the most part. MS Access was great because it also had a form builder and it could all work over a network[1]. That means you could get a small business organized around a database easily and incrementally. Now, we have to actually program to make that happen (e.g. rails, django, etc.) and design the forms with text rather than graphically. That's a big step backward for the technical non-programmers (e.g. accountants, HR professionals, etc.). Of course, I'm always willing to hear new ideas. If you think you have the answer, please share (and/or start a startup). Disclaimer: I have been heavily involved with databases from many perspectives (user, application developer, DBA, internals hacker). So, it's not a surprise that I think databases are great. [1] Yes, the networking was a disaster from a technical standpoint. But that's an implementation issue, not a fundamental problem.
- chansen77 12y agoI agree 99% with the point of the author. I would like to add my two cents how complexity and diversity of tools & ways costs software developpers : Yesterday I attended a conference by a young but experienced Phd Java engineer about his experience in a research project using NodeJS (server side web programming in javascript). Basically he explained he needed 6 months of project time to get up to speed with the language and the ways of the platform (asynchronous callbacks...) and that is with mentoring of a more experienced dev in JS. For me this learning curve and the mentoring time is a lot of $$$$ and opportunities for suboptimal work. The profile of this dev, and is ability to perform a fine talk makes me thing his capabilities are not subpar. Do we really expect doctors, architects others high profile professions to work during many months suboptimally, requiring special mentoring, just to use new tools ? It seems to me that their initial training is supposed to be all what they need for a decade or more. What would you think if your surgeon needed to work 6 months with a tutor because his hospital bought some new chirgurgical tool ? Basically were are shooting ourselves in both feets by using tools evolving too fast for us to master in any sensible way. Turing told us all languages can do the work. Yet we are still inventing new ones. Maybe we should focus our attention on something else to improve our output.