A thought provoking post by Rocky Lhotka

Posted on 3/11/2007 @ 1:17 PM in #Non Techie by | Feedback | 17798 views

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 :-).

Sound off but keep it civil:

Older comments..


On 3/11/2007 7:51:58 PM Eric Wise said ..
I disagree about your IT manager bit. While a technical background is useful (and desired) I see the IT manager/director role a bit differently.

You only need enough tech skills to do due diligence and sniff out the blatant bullshit. You kind of defeated yourself with the hospital scenario as a hospital administrator isn't a surgeon, and likely never was, but he does know enough about the domain to be effective in his role. The true jobs of the IT manager (in no particular order) are as follows:

1) Assemble a team of complementary skills and personality. Keep your finger on the pulse and ensure they are working as a cohesive unit.

2) Ensure that the team is given the reasonable time and funds to be successful.

3) Act as a shield for your team from political crap. Go out in the company, fight the good fight, and ensure that the team is servicing the customer/end user and that the customer/end user isn't playing destructive games with the team.

Of the three, the first one is the most critical part of being a good manager. If you can identify and retain complementary talent, you will build a highly effective team that will take much of the day to day worry away from you since they can be empowered and be successful. I think a great manager is defined more by the fires they don't have to put out than by the ones they do.


On 3/11/2007 8:36:45 PM Arnaud Weil said ..
That's a darn good post. I doo agree with you, and keep enjoying my specialization's choices...


On 3/11/2007 8:55:47 PM Sahil Malik said ..
Eric,

I don't think we disagree, we have merely different ways of describing the same thing.

Here are the points you mentioned, alongwith copy pastes from my text -

1) Assemble a team of complementary skills and personality. Keep your finger on the pulse and ensure they are working as a cohesive unit.

"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"

2) Ensure that the team is given the reasonable time and funds to be successful.

"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"

3) Act as a shield for your team from political crap. Go out in the company, fight the good fight, and ensure that the team is servicing the customer/end user and that the customer/end user isn't playing destructive games with the team.

Okay this we have some disagreement on. While I agree that the PM must do the majority of the fighting, but the PM cannot make decisions without considering inputs from the solutions architect. Simply because the PM will make a politically important promise, that is unimplementable in technology. Unless the decision has nothing to do with technology (which it rarely is), you just cannot make these false promises.

The classical solution to this "problem" has been, kick the developers harder to make things happen. I just don't think that the kick situation is necessary in a project.


On 3/12/2007 11:07:17 PM Hal said ..
I agree with all your points, with the caveated exception of the IT manager. IT managers that know nothing of the technology will continue to be selected by upper management.

Many IT managers are selected by upper management because they "percieve" that the individual knows enough to get the job done, whether that is true or not. Of course, the problem is often that upper management is not knowledgeable enough to even know what their IT managers should know.

Now with regards to successful project completion, you are absolutely right that the IT managers need to know something about the technology they are managing.

However, time and again, I have seen senior management, CEOs, owners, etc., who are either oblivious, technologically illiterate, or just plain stupid, put managers in charge of development projects that they are completely ill-equipped to handle. The results are typically "death march" projects for the poor architects, developers, QA staff, etc. that have to deal with such situations.

In the medical field you cannot just graduate with an MD and then one day decide you want to be a brain surgeon. There is a process you go through to work in a specialized field. Most developers work along this path (i.e. Microsoft certifications like MCP, MCAD, MCSD, etc.). But not IT managers. When that changes, then we will be closing in to the kind of specialization that goes on in the medical field.

One final thought on this...a lot of the specialization occurs because of the depth of knowledge required, but also it could be driven by the liability involved. How would our industry change if we were subject to the kinds of liabilities that the medical field is subject to?


On 3/13/2007 12:18:08 AM Sahil Malik said ..
Hal -

All good points above.

I agree that today IT Managers are selected by upper management who do not consider their technical skills. In fact, larger the organization, thicker is this non-tech mgmt filling between the CIO & the IT worker. But as technology continues to become more and more involved, and interspersed with our daily jobs, people will be forced to internalize technology in their daily habits. And when that happens, there will be a constant compressing pressure reducing the thickness of the non-tech middle management layer. Again, it sorely depends on the organization, I feel Microsoft will adopt this model way sooner than say GE :).

Regarding liabilities - Sure, people may not die due to bad software, well at times they may (when you are writing code for an airplane, power plant, or a medical system), but usually it all boils down to green dollars. A billing system down for an hour may cost more than the death of a single person. :). As crass as it may sound, but really that is the liability and it will continue to rise as more and more processes are automated. It is arguable that today, a doctor's mistake costs more than a software guy's mistake - but maybe enough things aren't automated yet.

SM


On 3/13/2007 6:46:03 PM Dylan said ..
While I agree with most of what you said, I heard a saying once (I think it was being said in the context of PhD's):

If Specialization means learning more and more about a smaller and smaller subject area. Eventually you'll know everything about nothing.


On 3/13/2007 6:54:38 PM Sahil Malik said ..
LOL I like that :), everything about nothing. Priceless!