From my perspective, there are two types of developers, those who are employed by companies and get a steady pay check, and those who are not, who are freelancers or contractors, who work on new web sites and applications as hired guns. There are basically two types of software engineering jobs. One is to maintain and add new features to legacy code, and the other is to develop a new code and web sites.
I've been on both sides, in my current job I maintain legacy code, fixing bugs, and adding small features. In my previous job I was a contractor writing a completely new sofware Intranet application. Just so you know up front, my preference is to develop something new. It's the difference of getting a brand new car, or riding in a used car, of course, the pays better with the legacy code.
When you work for a company on legacy code you don't have a lot of choices. The system exists and by George, that's the system you learn. For example, my current company uses Drupal, Zencart, Moodle and a home grown licensing system all interlinked together on one web site. Naturally, I will be working with Drupal, Zencart, and Moodle in my work.
On the other hand, when you freelance you could run into a multitude of different systems, and if you develop something new from scratch you get to select from a multitude of open source applications. That can be a thorny problem. It adds to the dilemma of a freelancer. Which package to use?
I know when I first started out I jumped around to many CMS systems trying to find the perfect one. I've developed sites using Drupal, TextPattern, Simple CMS, WordPress, and Joomla. I'm, at this stage, very flexible. What it did is train me in what to look for in a CMS system, and generally how they are put together. You pay attention to forums, and other developers opinions as you jump around. You do a lot of Internet research. When you run into snags using an application, if you can't solve a problem easily, or it takes too long to figure something out, or there's a lack of documentation, you tend to drop one application and move to another. I think this is a natural part of the learning curve in becoming a better developer.
You reach a point in time, when you grow tired of the research, the research of which is the best system to use, and start to like an application, you grow accustomed to its quirks and understand them. You start to gravitate toward using a certain CMS, for example, for a particular application. You use the same shopping cart, or the same CMS, or the same PHP framework. Why, because you don't have time for the research, you want to get paid, and its the fastest way to get the job done. You don't want to constantly be learning new systems.
One of the problems in the open source community is the multitude of choices you have to get a job done. Too many, in my mind, everyone wants to build a better mousetrap. It adds considerably to a developers learning curve.
What I have noticed in the last year or so is the start of a consolidation. Developers don't want that many choices. They would love to have a reduced selection to one or two in each application category, and I believe, the community is moving in that direction. It's getting tougher to come out with a new application category that is not out there, and entrenched. For example, if you developed a new CMS system it would be tough to get past the current top three CMS systems: Drupal, Joomla, and WordPress, unless you had some radically new idea or feature, and even then, in a short time, developers in one of the entrenched CMS systems would have a plug-in for the new feature. It is a sign that the PHP community is maturing. Why waste time on a new system, we'll just add to the defacto standard system, less time and trouble.
This maturing has its pluses and minuses. On the plus side, it lowers the cost of entry into becoming a developer, you don't have to experiment with a lot of systems, just learn one or two. The minus and the sad part is creativity suffers. PHP developers are not as well rounded. PHP development is less fun, and becomes more work, 9-5, and go home. No more late night, round the clock, marathons, which is an experience, that is worth experiencing at least once, especially if your working with a team of developers.
It becomes more difficult to do something new without using a standard application helper. I'm reminded of Hamburger Helper, its still code, but its different. Who wants to develop all that code when I can plug an application or snippet of code into the program, and work around it. If you need a new feature, let's see which open-source application we can include that does that feature.
Are we as programmers saying the age of the Internet is maturing, that everything that is worth doing on web sites has been done? It seems that way. Where is the next breakthrough? Ajax has come and been adopted.
It used to be faster and faster chips. Do we need more blazing speed from our computers, unless your doing a lot of intense calculations, probably not. Then it was disk space. Disk space is now cheap and the computers support the bigger disks. Do we need more disk space from our laptop drives, probably not. Then it was graphic cards to support virtual reality. Are graphic cards there now, probably. And so computers become a commodity. Where do the new things come from?
Well, someone took an idea that others had previously tried without success, and made it new and refreshing, the iPad, which is just another tablet computer repackaged. What made it was apps. Certainly, eReaders hit the market big, old technology repackaged. There will always be room for different types of products.
The latest craze is the smartphone with apps. It now behooves programmers to become app familiar, which means learning another language, Objective C, at least for Apple. Smartphones are the new toy, yes, they use the Internet, but more than that, they have changed the way we behave socially. How many of you have gone out to a restaurant and have not seen someone at another table, fiddling with their smartphone, very few. It's awful. What happen to talking with one another? I digress.
The days of Internet glory seems to me to be wrapping up. We're on the right side of the bell curve. The computer has moved from its beginning where it was housed in huge cabinets, in a huge air conditioned and filtered rooms, to the Digital mini-computers for small work groups, to the personal computer, to laptops, to tablets, to the Smartphone, quite a journey.
Software too has progressed from assembly code to operating systems, to multiple programming languages, to application utilities, to object oriented, to design patterns, to apps. It's kept pace with the computer's history, after all, they are linked.
What does the future have to offer? As the world becomes over populated, and an Indian programmer can do the same work as a Chinese programmer, or an American programmer.
Not counting the wars that will result from a country not being able to feed its growing population, or provide oil to its people. We will become more aware of our planet, as the planet starts to consolidate. Perhaps one world government, an interesting concept. Does everyone in the world get one vote. They could with universal communications. We now have universal Internet.
What's left in a united world? Oh, there's still some technology improvements needed here on earth like better use of wind and solar energy, and the development of ocean technologies to recover what will be our only source of non-depleted resources. Remember the fish are supposed to be gone by 2050, fish farming could be big. In the end, individually, we end up paying attention to more and more minute details in our work, there will be individual creativity in small corners and niches, and the entertainment industry will always thrive to occupy our time, otherwise we become Orwell's "1984," a sad thought. Some would say we're already there.
Consolidation into one world government, with the world's technologies becoming commodities, can only lead to one thing, exploration of outer space, the last great, endless frontier. And to end on this thought, what a glorious pursuit of the unknown it will be. If space travel can be made safe, and technology can gradually invent warp speed, what a fun time it would be to be alive. Beam me up, Scotty.