Is the Software Renaissance Ending?
An anonymous reader writes Writer and former software engineer Matt Gemmell adds his voice to the recent rumblings about writing code as a profession. Gemmell worries that the latest "software Renaissance," which was precipitated by the explosion of mobile devices, is drawing to a close. "Small shops are closing. Three-person companies are dropping back to sole proprietorships all over the place. Products are being acquired every week, usually just for their development teams, and then discarded. The implacable, crushing wheels of industry, slow to move because of their size, have at last arrived on the frontier. Our frontier, or at least yours now. I've relinquished my claim." He also pointed out the cumulative and intractable harm being done by software patents, walled-garden app stores, an increasingly crowded market, and race-to-the-bottom pricing. He says that while the available tools make it a fantastic time to develop software, actually being an independent developer may be less sustainable than ever.
There is a slew of missing applications for industry verticals where there is no race to the bottom. I don't see any evidence that the mobile world is even close to saturated. It may be that general audience horizontal applications aren't the best place for small teams but that isn't the end of the world. How many general purpose task managers and tower defense games do we need?
Could someone explain to me how a "walled garden App Store" is crushing small developers? Exactly what about a walled garden does this?
What I got from the article is that the flood of people that call themselves Software Engineers when all they actually know how to do is configure 3rd party tools and at best write a few scripts to run stuff on the internet are finally being called out.
If so I think that's actually a good thing for restoring some value to the job description and to the currently low perceived value of skilled Engineers that actually can/do develop complex software from scratch.
What "software renaissance"? The writer means the appcrap boom - millions of small bad programs, with a few good ones. Many, maybe most, "apps" could just as well be web pages.
The appcrap boom seems to be winding down. Developers realize that writing a quickie app has roughly the success percentage of starting a garage band. That's a good thing.
It's a great time to code, if you have a problem to solve. The tools are cheap if not free, the online resources are substantial, and there's vast amounts of cheap computing power available on every platform from wrist to data center. If you don't have a problem to solve, coding is sort of pointless.
I read Matt's blog posting and I do have to say it sounds like his underlying issue is less of a quandary with a code renaissance being over and more of the drowning complexy and exhaustion involved with today's changing technology world from a code slingers perspective. Reading his blurb touching on a few profound things I find myself doing more and more as I get older in the tech industry: enjoying the simplicity of hacking shell or automative code in a text editor without launching an IDE, still having algorithmic thought processes and approaches, documenting less and thinking more. It sounds like his interests have just shifted and probably for the better. There's tons of shit that I look at on my shelves: projects started, topics heavily bookmarked in myriad of O'reilly books, half-finished circuit design on breadboards, code lying around here or there. It's just that: what was important now isn't and you're trying to just simplify the black hole of tech that was once an intriguing and mind-blowing ordeal.
The community/industry that these bloggers exist within (at least, the first of the 3, Finkler) isn't real software development anyways. When I read Finkler's blog post, the key phrases that stand out to me are these:
"I used to be really excited about JavaScript"
"I have 15 years of PHP under my belt"
"[...] Python. I don’t feel like I really grok the module system. I definitely don’t understand the class system."
"Have you ever tried setting up something on AWS? There are a billion buttons and settings and new, invented words I don’t understand. I have no clue how any of that stuff works."
"Did you know I used to be a 'designer?'" [of web apps and such]
What I read from the amalgamation of these statements is: This is one of those guys who jumped on the "I want to be a web designer" bandwagon many years ago when the field was hot and it was easy to churn out crap and make money at it. He learned (by cargo cult copypasta and/or Whatever for Dummies books?) to get by in PHP and Javascript over the years. But he never really understood what he was doing.
For one that actually studies (not in a school, I mean really in the real world) computer science and the art of programming, by the time you've learned a language or three the rest come very easily. Such a person can write useful production code in a new programming language on the first day byt the time they get to language number 4 or 5. That simple, core aspects of a sane language like Python baffle Finkler after 15 years of experience and serious use of at least two languages is very telling in this regard.
For one that works professionally in the computer/internet industry, understanding how systems and networks work is critical. Can you build a server from components (at least in theory? Done it a few times years ago with a home PC or something?)? Can you spec out a 100 (or 100,000) -system network of machines for a production cluster of some kind, and understand all the issues involved with everything from cabling to traffic loadbalancing to data migration and scaling issues and fault tolerance tradeoffs and blah blah blah? Could you, at least in theory, go build it all out yourself and be successful and having a fairly optimal and well-designed system at the end of it? Configure the routers and set up peering/transit agreements with the rest of the internet and get your traffic flowing smoothly to a global customer base?
People put *way* too much emphasis on the "Learn a Programming Language" part of being a developer. A real developer who's worth his salt must do much more than that. You must understand the whole stack you're operating on. Just to touch the highlights of that stack for a typical web app: The client's browser, the browser's OS, the machine that OS runs on, the ethernet interface on that machine, the DSL router at the user's home, the ISP network the traffic traverses and how it peers with everything else that peers with you, important side-issues in the network like low-level details of the DNS and how the ISP resolves and caches it, the routers, switches, cabling, and configuration of the network in your datacenter, that whole production cluster mentioned in the previous paragraph, Linux kernel issues on the appserver machines related to interrupt routing and TCP socket features, how your HTTP server works and how to debug deep issues in it, and how it connects to whatever engine or VM runs your application code, and how *that* is scaled locally to utilize the hardware efficiently, etc.
You want a guaranteed job as a desirable developer for decades, without being subject to industry whims and immigration politics? Learn to be someone for whom everything I've said above is trivial. Those are the badasses. If all you can say is "I can write some PHP code that seems to be functionally correct most of the time; the user inputs X and it outputs Y", you're not even 5% of the way there on actually understanding what you *need* to understand to do the job well.
On