Rocky just posted a really thought provoking peice about the future of our industry. In short, he is reiterating what all of us see - Platforms are getting too darned complex for any human to know them all. But he takes it a step beyond and compares it with the medical industry, which is full of specialists who may or may not talk to each other.
Let me tell ya, I have zero disagreements with Rocky on this, but I want to add a few more things of where I see things headed, and what will it take to come out on the top.
Earlier last year, Smoky Rocky posted another thoughtful post, in which he basically said that some guy gave up a job, because it involved a platform change. Rocky insisted that, that guy was a damn fool. Being the trouble causer that I am, I immediately posted a retort in complete disagreement with Rocky, insisting that if I was given a java job, I would leave - even if that makes me a bludy damn fool. Atleast I'd be a damn fool who is good at the MS Platform. In fact, at a recent conference in Bulgaria, I insisted -
Pick one platform, and be damn good at it.
Almost everyone on that Panel - Ted Neward, Stephen Forte, Carl Franklin, Richard Campbell tacitly disagreed with me. They insisted that every platform has so much to teach you, that you must alternate between platforms. I think this conversation was on a dotnetrocks show even.
Okay, I never disagreed that any platform will teach you a lot. And in an ideal world of frictionless surfaces, loving spouses, world peace, peaceful nuclear power, electric cars, no pollution, and honest politicians - that is exactly what I'd do - "Learn everything under the sun". BUT, I cannot!
I have my limitations as a human being, so I was first forced to restrict myself to Microsoft platform (I used to be a closet unix-o-sexual in school), then I was forced to not be the DBA and focus on everything except what a DBA did (because frankly, the DBA did it better than I did), then I was forced to give up Java and focus on platforms that were wholly out of MSFT, then I was forced to give up Win32 in favor of Borland C++/OWL API which I gave up for MFC, which I had to then give up for handwritten COM, which I then gave up for ATL, and then came around .NET (but there was plenty of legacy code around already, and frankly still is).
Well, then .NET got big, and bigger and HUGE. And now some of us are becoming TFS experts, some are becoming SharePoint experts, and some are becoming WCF or WPF experts. In other words, neither of us know the full picture, and neither of us are experts at everything.
It is just not possible anymore !!
But hey hey hey, it was NEVER possible. Take a step backwards, and think - I picked computers, so I couldn't be a good doctor anymore. Yet I write computer systems for the medical industry. I don't know Hebrew because I choose to learn 4 other languages, and I know very little about xyz industry because I know a bit about def industry and the abc industry. Yet software is pervasive in all of those industries.
So in short, what I'd like to add to Rocky's post is the following 3 points:
a) Don't worry. We have always had to make choices, and yes I agree that the platforms will keep getting more complex, and we will keep getting more specialized. IT investments will get very expensive, and we will in 10 years see a world where custom development of systems will be done only by multi-billion$ firms. In fact, you as a programmer wouldn't want to work on those custom development gigs, because then your skills wouldn't be portable anymore. Firms won't want to do custom development, because it would increase their reliance on these specialists talking to each other - you will want standards of interoperability, and I mean more than just "I have a web service". There will have to be industry standard formats for standard business entities. There is just no other way. Trust me, Biztalk is an awesome product, just a bit before it's time.
b) The kind of people that will survive this mess, are the ones that truly love technology. People that have been doing this for the last 20 years, are somewhat specialized but have a touchy feely of what they are not specialized in. Most of all, they know a lot, but they aren't dicks about what they know. So they can work with other individuals like themselves, communicate effectively and respectfully and get the final solution up and running. These supermen, will be very very few and they will be in a very very high demand. They will have both technical skills, and people skills.
c) IT Managers, who insist that IT Managers need to know nothing about the technology that they manage on a daily basis, will increasingly find it harder and harder to remain employed. The tech. industry is headed exactly where Rocky has hypothesized - towards the medical industry (except, there will be no insurance to subsidize). Individuals who understand technology will take on the role of a surgeon, and there will be a team of nurses and a manager to help them implement their vision. Managers who maintain a project based on line items and dependencies, without considering input from the techies, will continue to fail projects. Managers who have the right people skills, that they will be able to interact with a solutions architect, make his job easier by keeping an eye on the dials of the ship, will continue to succeed. These managers will greatly benefit, if they had some idea of the technology they manage, without being hands-on themselves. These managers will not feel intimidated or feel a loss of control in inviting a solutions architect to a meeting with the client. Unfortunately, in this era of transition, I still see some old time thinking managers who know nothing about technology, and have a "I'm da boss!!" mindset, and continue to make wrong decisions about the technology they manage. But I see an increasing number of very successful companies that have adopted this mindset, where project managers are somewhat technical, and they have a very impressive track record of success. Remember, it is always the pair (PM + Solutions Architect) that will make a project successful. You need both wheels to get this scooter running.
So the next time your boss insists that you know C#, therefore you can program in Java, I suggest you go update your resume because that is terrible for your career in the long run. But on the side, keep reading slashdot so you know of the innovations being done on the other side :-).