This is exactly what I was thinking today. I've spent the last couple of weeks implementing TLS (This is the second time I've had to do this now, it's endless fun) and this time I'm sort of "cheating", because the platform I'm writing for already has high quality ASN.1, crypto and X.509 libraries and enough of PKCS#1 that I scarely have to lift a finger.
Web programming is horrifically dull scut work to my mind, I'd far sooner be writing the heavy lifting in the back end.
Web programming is only boring because companies have been focussing on using the newer frameworks and tools to reduce the amount of time it takes to develop typical projects instead of setting loftier goals to use them to develop bigger, better, things. We should be building cathedrals, but instead a lot of people/companies are focussing on churning out the same old brick building; only faster and cheaper with a better paint job.
That's an interesting idea - what are examples of things you would consider a cathedral? I get the sense that what you're getting at might not just be a failure of ambition but a failure of imagination.
One idea in general, is jumping out of the browser, and not in the Silverlight/Apollo way. It's important that we begin thinking of the Internet in more abstract ways instead of the current primarily visual experience. We've reached a point where a lot of objects we deal with on a daily basis are augmented by computers (e.g., our cars). We're on the cusp of these devices and many more being augmented by the Internet. What does it mean for my fridge, book shelf, or weight-lifting equipment to have Internet access? Questions like this have been left in the domain of so-called futurists or academics. But I think it's time for industry to start taking these seriously. The technology is here.
The problem with that is that while there are millions of computers that can connect to the internet, hardly any cars/fridges/whatever can do that right now. The technology is there, but not widespread. So as a young startup trying to get attention, the millions of potential users from traditional computers pulls much more strongly than a few thousand internet ready fridges.
Of the successful startups I can think of off the top of my head, few - if any - were first to market. Especially with new technologies being riskier and more expensive, it seems the wisest thing for a cash-strapped startup is to stick with whats popular. Though avoiding risk is probably not a common trait among tech entrepreneurs.
Interesting. When I listed the examples, I wanted to choose things that were probably in prototype somewhere but maybe not in widespread use. Can you tell me about that equipment? I'm genuinely interested and my Google queries didn't bring up much.
A fridge should: know its foodstuff contents, recommend recipes based on user profiles, order food JIT using Amazon Grocery et al. A car needs wifi, should connect automatically to open channels and service user profiles; if there are n passengers, the car should help triangulate which media to play; if n profiles indicate it's lunchtime, the car should pull from Google (or its cache) suggestions for restaurants and directions. I can navigate Leopard by voice so why not keep a subset of its tools in my car, connected to open wifi and myriad API? People often have questions when they're driving: why not establish a Mechanical Turk presence, to augment onroad decisions? Exciting times ahead.
I guess I can see where he's coming from but the point of all these frameworks is to get the tedious/boring stuff out of the way to focus on your core competency.
No longer can you just be a very good hacker to succeed, you also need to be able to raise money, market your product, and quickly adapt as the excrement hits the fan.
In any case, for good sites there is a lot of algorithm work going on in the back end that may not be visible at first sight (pun intended). This goes back to having good service - you shouldn't have to notice the good but you definitely notice the bad.
I agree that the frameworks are great for automating a lot of the junk we used to have to do manually. The "problem" is that people are cutting their teeth on things that don't require much knowledge, so they may miss out on a lot of fundamentals.
After the low-hanging fruit, there are some real problems that require some serious knowledge to solve.
> No longer can you just be a very good hacker to succeed, you also need to be able to raise money, market your product
Some people are just coding, not doing startups :)
"[..] still algorithms, data structures, and low level programming are marginal and it's hard to become a good developer without being exposed to this concepts."
The people who would have become good developers in the "old days" will find their way to this information and become good developers anyway.
This bears repeating. People think increased difficulty identifying the good developers (lower signal:noise ratio) means there are fewer good developers. It's a heuristic bias, as far as I can tell.
"take reddit or even a much more complex application like ebay, if you take away scalability I bet it is very hard to discover some very cool algorithm inside."
I didn't know that assessing what people would like enough to read or buy was a solved problem. ;-)
Maybe, but I think his main point was that the environment
has changed, and now that the gritty fundamentals of just making a web app are polished, there's nothing left to do.
Except there probably is. In previous years, you'd have to do all sorts of backbending to get your software in a cardboard box and on someone's shelf. Or schlepping to the Fortune 500. Now, people can access underlying magic, if there is any, much more directly. I can't think of a better example than Google.
There's a certain magic to reddit, too. In it's heyday, the frontpage was really, genuinely good. An algorithm doesn't have to be complex to work well.
And consider eBay. Let's just let people post stuff, right? But it would be a mess without a search system, without a way to detect fraud, and without a way to award users. None of these things are solved problems, really, and the existing solutions took enough thought that many would be online auctioneers said they thought it would never work.
I think that's all true -- there are core algorithmic issues in both reddit and eBay that are interesting and for which there is a lot of room for improvement. But at least to me, the problem with most of the work being done on webapps is that very little of the time is spent on these kinds of problems -- the vast majority focuses on moving data back and forth from the database, adjusting the UI, working around browser bugs, and similar grunt work. IMHO, anyway.
Scalability is not a problem to be waved off. I think there are bigger chunks of problem space to be fixed in scaling applications than there are remaining in systems programming.
We're going to have a new generation of engineers that understands how shitty the scalability situation is today, and has experience with its pain points, and figures out exciting new solutions to those pain points.
(which is not to say that there aren't big problems remaining in systems programming! Just that I think there's more to the scaling thing than this guy does.)
"Not everything is bad of course, lately a lot of developers switched to Ruby, Python and other elegant and much more abstract programming languages so at least developers of today are exposed to things like functional programming"
Well - maybe on the python side, I don't know, but most rails/developers and apps are blissfully unaware of anything remotely functional from what I have seen (of course DHH and rails framework people have a field day).
I can see where this guy is coming from. I've always viewed web programming as sort of "low brow" but in the end it is what is in demand so it is what you do regardless.
I think for many seemingly simple web apps there's a huge payoff to spending lots of time adding serious behind-the-scenes brains. It's an especially great competitive advantage because it's invisible. Competitors won't even know how important that part of your system is to winning, so they'll hopefully never even try to implement something similar.
Max Levchin fighting fraud better than his competitors using sophisticated analysis/number crunching is a good example.
I disagree. "Web" part is usually just the UI, exactly how the author views it himself. 10 years ago people did that in Visual Basic (yes, it existed for those who don't know and was even more popular), but "heavy lifting in the back end" has always been there, just as it is today, along with every imaginable data structure from CS available in some library or another.
This is why I don't see what's different. I had a boring VB-Forms job in 97 immediately upon graduation, just like I can have a boring Rails job today.
Speaking of optimization: We have plenty of hardware startups here in Austin, where cool guys code in C running under real-time OS and have 4-32MB of total RAM (without paging) with very limited libraries, I bet there are more jobs like this today that there were total programming jobs "back in the day", since number of devices you can code for is growing exponentially. And oh yes, they do have to optimize.
So, what we lost is that people no longer have to spend years developing in lower level languages like C before being able to become competent programmers? Maybe I could understand his point of view better if the author explained explicitly why he was pessimistic about the future of web programming instead of just vaguely mentioning that skills have been lost and he has "no reasons to be optimistic".
I guess it's just a pet peeve of mine when people present an argument without actually taking the time to bring forward any specific reason for the stance they are taking. It's like they are expecting the commentators to do all the work supporting or refuting their assertions.
29 comments
[ 143 ms ] story [ 212 ms ] threadWeb programming is horrifically dull scut work to my mind, I'd far sooner be writing the heavy lifting in the back end.
No longer can you just be a very good hacker to succeed, you also need to be able to raise money, market your product, and quickly adapt as the excrement hits the fan.
In any case, for good sites there is a lot of algorithm work going on in the back end that may not be visible at first sight (pun intended). This goes back to having good service - you shouldn't have to notice the good but you definitely notice the bad.
After the low-hanging fruit, there are some real problems that require some serious knowledge to solve.
> No longer can you just be a very good hacker to succeed, you also need to be able to raise money, market your product
Some people are just coding, not doing startups :)
heresy.
The people who would have become good developers in the "old days" will find their way to this information and become good developers anyway.
http://en.wikipedia.org/wiki/Availability_heuristic
I didn't know that assessing what people would like enough to read or buy was a solved problem. ;-)
Except there probably is. In previous years, you'd have to do all sorts of backbending to get your software in a cardboard box and on someone's shelf. Or schlepping to the Fortune 500. Now, people can access underlying magic, if there is any, much more directly. I can't think of a better example than Google.
There's a certain magic to reddit, too. In it's heyday, the frontpage was really, genuinely good. An algorithm doesn't have to be complex to work well.
And consider eBay. Let's just let people post stuff, right? But it would be a mess without a search system, without a way to detect fraud, and without a way to award users. None of these things are solved problems, really, and the existing solutions took enough thought that many would be online auctioneers said they thought it would never work.
We're going to have a new generation of engineers that understands how shitty the scalability situation is today, and has experience with its pain points, and figures out exciting new solutions to those pain points.
(which is not to say that there aren't big problems remaining in systems programming! Just that I think there's more to the scaling thing than this guy does.)
Well - maybe on the python side, I don't know, but most rails/developers and apps are blissfully unaware of anything remotely functional from what I have seen (of course DHH and rails framework people have a field day).
Max Levchin fighting fraud better than his competitors using sophisticated analysis/number crunching is a good example.
This is why I don't see what's different. I had a boring VB-Forms job in 97 immediately upon graduation, just like I can have a boring Rails job today.
Speaking of optimization: We have plenty of hardware startups here in Austin, where cool guys code in C running under real-time OS and have 4-32MB of total RAM (without paging) with very limited libraries, I bet there are more jobs like this today that there were total programming jobs "back in the day", since number of devices you can code for is growing exponentially. And oh yes, they do have to optimize.
I guess it's just a pet peeve of mine when people present an argument without actually taking the time to bring forward any specific reason for the stance they are taking. It's like they are expecting the commentators to do all the work supporting or refuting their assertions.