Wednesday, March 19, 2014

Hosted software

Quite a number of times I have heard someone opine that they wished a particular piece of software was not free, so that they could have some expectation of it sticking around for a while. I think if taken with the right nuance, this is actually a valid idea. However, I have heard this idea offered as a panacea, with no nuance in sight.
Let’s get one thing out of the way at the start. Companies that offer software for free make lots of money. Gobs and gobs of money. I mean some of them do. And the ones that don’t have a not-utterly-inconceivable ambition of joining the club. Yes, the number of companies that ultimately receive that billion-dollar acquisition without ever charging their darling users a dime is quite small. But the number of humans who resonate with the saying “go big or go home” is not small.
Now, neither am I defending the software-paid-for-by-advertising model of the Facebooks, the Twitters, the Googles. What I am saying is that it makes economical sense. It works. It employes a large number of programmers. But I don’t like the affect it is having on the industry. If there’s another way forward besides code-plus-ads, I hope we find can it. Because it’s the worst.
I’m not here to pull a rabbit out of my hat. If we aren’t going to give software away for free, we are going to have to charge for it. The point I want to make is that for an individual product that is offered for free, we don’t have any reason to believe that the company could stick around longer if they charged money for it.
The fact is that there are products that are technically feasible, and useful to someone, yet economically infeasible. I mean we have discovered a ton of such products. Startups fail every day, and while I’m sure all of them made mistakes of execution, I think it’s reasonable to point to them as examples of unsupportable products. To be precise, I mean that there are potential products where someone wants the product, but there aren’t enough people willing to pay enough for the product for the software to be maintained.
I suppose there is also the situation where a product is viable, and people love it, but the company changes it in some way that makes it more profitable, but some of the users love it less. But the additional profit is more than what those disgruntled users would have been willing to pay to prevent the change. They simply cannot afford the thing that they want.
I realize that I am basically focusing on the hobbyists here. People like myself, who are trying to assemble a robust computer workflow for their lives. The average user may complain about a Facebook redesign, but they would not begin to think about why they cannot pay for the Facebook they want.
All of this is a long way around saying that I’ve come to the realization that when web applications shift power away from users toward the vendor, the users really do lose something. I remarked recently that on the scale of software freedom, hosted software is far worse than commercial desktop software. You don’t have the ability to keep using an old version. You don’t have the ability to keep using the software at all if the company’s business model turns out to be unsustainable. And, fundamentally, paying for hosted software does not alter this situation.
I’m not saying that it doesn’t make any difference. Certainly it feels better to be a patron rather than just a pair of eyeballs to be sold at auction. I hate ads. But it doesn’t change the fact that you are basically surrendering all control. The fact that you paid them money does not mean that they will evolve the program in a direction that you like, or that they will even stick around for another year. You’ll hopefully get a refund if they decide to truncate your subscription.
The massive advantage of hosted software in terms of user convenience is uncontested. But if your highest value is convenience, it’s hard to argue with free. Certainly having functionality taken away from you without warning is inconvenient, if one takes a longer view. The much-remarked advantages of hosted software are weighted toward the short term.
I am well aware that this kind of thinking leads down the road to Gnu and Free Software (not just open source). But deep, deep down I have the heart of a moderate. I think people like RMS have a point, but I don’t think entrenched absolutism is very helpful.
One question that comes to my mind is why don’t more SaaS companies open up their codebases when they fail? Of course there may be legal implications, but it seems like if you planned for this eventuality in the beginning, it would be possible. Even if they did, I suspect it would not be very easy to make use of the code. The more code in the open the better, in some ways, but you couldn’t expect people to just start hosting the product for themselves.
The code would be designed around the specific infrastructure the company was using, which in turn would be designed to meet specific usage patterns. So out of the box you’d need documentation of the whole cluster. Certainly if enough people cared you could rally around the codebase and update it to be a bit more portable.
But I would also expect the quality of the code to be pretty bad. It wouldn’t have been built for people to look at. The late-binding nature of web development is lauded as a boon for developers, and indeed it is. But by making it easier to fix to bugs, it has also made it less important to prevent bugs going into production. Both by being deployed in a controlled environment, and by being fundamentally temporary—easily updated and not expected to outlive the company—hosted software is inherently of lower quality than desktop software. This doesn’t matter very much while the company is alive (and is maintaining the app in a way that you approve), but it would certainly matter if you tried to continue to use the software without the company.
Well, now I’ve gotten a bit afield of what I wanted to say. There is certainly a way of building a business that aims for sustainability, and a different way that aims to go big or go home. When people say they wish a company would charge for its service, I guess they mean they wish they would aim for sustainability. I totally agree. But I am skeptical that building for sustainability is as simple as slapping on a price tag.
One bit of complexity here is whether we are talking about the sustainability of the program itself, or the company behind it. In a lot of ways these are synonymous, but not in every way. If I buy a desktop application and the company goes bankrupt, I can continue using the application. I won’t get support or further updates, and if I continue to upgrade my OS and my hardware it will eventually stop working. But I could continue using it for much longer than a web application in the same circumstances, and I can use that interim time to plan my transition to a different tool. However, it may be that if the same company had built a web application rather than a desktop application it would have been more marketable, or less expensive to maintain, or whatever, and the company itself could have survived.
In the current environment, with web applications being shut down all the time, it is easy for me to assume that desktop software is inherently more sustainable, but I don’t think this is absolutely the case. A similar dynamic exists with free vs. commercial software. In general I would expect free software to last longer in a usable form than commercial software that serves a similarly small niche. However, I would reverse this expectation if I were thinking of business-critical software rather than personal use.

Tuesday, March 18, 2014

Why you should consider going to college

I didn't go to college. I know a lot of people in the homeschool community who are down on college, or at least want to tear down the idea that everyone should go to college. I run across articles that argue along these lines. And in general these articles make me angry. Not everything they say is wrong, but a lot of it is.
I want to address one line of thinking that I hear a lot. This actually seems to be a pretty widely held misconception. It often shows up in secular discussions of the economics of education as well. It's the idea that college is supposed to prepare you for a well-paying job.
In some ways, this is not a bad way to think about college. It can be worthwhile to analyze education in terms of return on investment, which could be one factor in determining whether you can afford to go to college (or to a particular school). However, it is commonplace to find people making the leap that ROI is the only way to value education.
Which is completely insane.
(The next place this conversation usually goes is how they remember doing things in school that they “never used” after school. Something like factoring polynomials. This demonstrates a complete misunderstanding of what education is.)
Here's the thing, the value of education is to be educated. That's it. Can it help you get a better job? Yes. Is that the only way it can help you? No. A thousand times no. It enriches your life in innumerable ways. It enriches your daily experiences by increasing your understanding of the world around you. It enriches your leisure by making deeper, more subtle works of art and literature accessible to you. It enriches your personal relationships by lifting your powers of personal expression and empathy. It prepares you to understand and engage in public discourse. If you are a Christian, it opens up opportunities to pursue scholarly understanding of the Bible, which has real spiritual value.
The value of obtaining an academic education is to become an educated person, with all that that entails. Any other way of valuing education is reductionistic.
Of course, this lofty ideal of education isn't especially practical. Do you need to be educated? I don't know. There are many roads in life, and they all have their trade offs. Certainly you can go through this life without pursuing education. You can even have a happy life. But what you cannot do is say that education therefore has no value.
If we were to go back several hundred years, in western culture, higher education would be primarily pursued by the upper class. The fact that in our lifetime a college degree is accessible to the majority of the middle class is a singular privilege. Do we have to take advantage of that privilege? No, we do not. But there is an air of ingratitude to act offended when someone assumes you value this opportunity.
Back to the issue of whether we use our education. I've heard countless people talk about how they've never used the algebra they learned in high school. I find this absolutely incredible. Of course you don't sit at work factoring polynomials. The point is that you (hopefully) absorbed the concepts of how math works. No more does your average adult write book reports or apply their middle school history lessons. But these subjects have value. They have value in informing us about the world around us, and they have value in preparing us for more advanced studies in their respective fields. Even if you did not retain the particular details, exposure to the material should significantly alter the way you understand the world.
I've know comp-sci grads to say they never use any computer science when programming. At this point I simply throw up my hands. Do I calculate big-O costs for functions that I write? No. Does understanding big-O affect the way I approach programming problems, evaluate libraries, and diagnose performance problems? Yes, every day. Knowing the theory can have profound implications in practice.
So now I want to say a word about vocational education. It exists. My apprenticeship was a vocational education in programming. I later supplemented it with theory as best I could through self-study. But there are lots of vocational learning opportunities, and they are not just in blue collar fields. (They aren't available in every field for obvious reasons.)
Should you choose a vocational or an academic education? This is a highly personal question. There are benefits and downsides to both. A vocational education will lead you directly into a particular job market, meaning it will be more straightforward to find a job. Of course, if you don't know what job you want, a vocational school isn't really an option.
Does having a college degree result in higher pay? It totally depends. If you get a liberal arts degree (which is basically the enriching part of a college education without any particular vocational focus) then probably not. Does a programmer with a bachelor degree get paid more than one of similar self-taught skills? Not that I can tell. Does a programmer with a masters degree have more, higher paying opportunities? My guess is that they do.
In fact it probably has more to do with what calibre of work you want to be doing than how much you want to get paid. Get your masters and go into AI research or cryptanalysis. My own options are limited here. However, find yourself the right niche as a consultant and you could probably make 3x what the AI guy makes doing something far less interesting but without any credentials whatsoever. How does this work in other industries? I have no idea.
An academic education is designed to expose you to new things and enrich you as a person in addition to preparing you for your career path. A vocational education only does the latter. That's just restating what I've been saying the whole time, but my point here is that this is the core trade-off. On the one hand, you get all this extra education. On the other hand, you don't have to be bothered by getting educated. I can totally see both sides.
As far as cost, yes, the vocational path is almost certainly cheaper. I believe there are high end vocational schools in the arts (design, acting, etc) that are even more expensive than college. In general though, vocational training will be both cheaper up front and start paying for itself more quickly.
If you desire to work at the cutting edge of your chosen industry, the path to doing that most likely lies through an academic education.
These are not the only factors to consider in making this decision. There are benefits (and, I'm sure, downsides) to the college social environment. The larger pool of peers. The well trod path to personal independence. A simple, easy answer to the perennial question “where did you go to school?”
On the other hand, there are plenty of reasons for you to consider the vocational route, and I have total respect for those of you who (like me) make that choice. But please, do not tell yourself (or others) that the alternative is worthless.