I've spent a lot of time the last few months thinking about the future. Which technology should I invest my time in? Which framework will pay off the most? Where will I be in ten years?
Obviously, these are unanswerable questions. Everyone in the IT industry is asking these questions right now. With the second internet wave now fully upon us we are seeing a return of the technical uncertainty that IT outsiders didn't see in the first internet wave.
The fragmentation of the market is only natural and it is only natural to assume that the bigger players in the tool space will likely survive. But, which one will thrive? Who is getting the critical mind-share to prosper?
I think the next year or so will tell us which framework is really going to win. This time we know all the relevant business models for selling software. We know that free software is a vital on-ramp to small companies whether they are for profit or not. We know that the amateur programmer plays a vital role in the software ecosystem building the rough 1.0 for companies that don't have the backing to hire professionals.
Yet companies that stake their new businesses on amateurs only pay a huge technical debt later when they have to deal with success. I personally have seen two businesses fail due to huge technical debts that launched the company rapidly, but later swamped the same company when the software they had developed so cheaply could not scale to handle unbridled success. Their success bankrupted them as they could not handle the increased demand and earned bad reputations that caused their business to plummet.
In both cases I witnessed competitors saw that the new business idea prospered but failed due to technical debt. In both cases a branch company was formed and grew more slowly on a much more solid financial, process oriented, and technical base. The result was the second company does much better and destroys the original.
There needs to be a balance point in the software ecosystem. Businesses need to launch cheaply and quickly and still be able to refactor themselves for great successes. I think groovy has a good chance at meeting this need. It will be rapid to learn and should scale well... and when things get really tight you are ready to fall back to Java and the Enterprise stack.
Is there another programming language that offers an easy on-ramp from neophyte to journeyman out there? Is a tool like Ruby really going to make in roads into banks and cell phones? Is there another path?
I don't know for certain what will happen. But, I've made my choice.