Q: How do you get to be a great Software Architect without having been a developer?

A: You don’t.

My feelings on the outsourcing issue are still pretty unsettled. I’m not quite sure what I feel…I hadn’t planned on posting about this issue, but a link to an outsourcing thread on Scobleizer has gotten me thinking. Prepare for a long, meandering rant without a solid point!

When I first started working as a professional coder we were treated like rock stars. People were always amazed by the software we created, and treated us with the respect that is reserved for only those employees who directly influence the bottom line. It didn’t matter who you were or what you dressed like, as long as you were able to contribute. The salaries kept on rising as every company in the world decided to become partly a software company. It seemed like every kid in America was switching to a Computer Science major.

Then the dotcom thing fell apart, the job pipeline started to slow down, the layoffs began, and the revenge of the nerds came to an end. Finally, some executives realized that it might not make sense for a Spork factory to have it’s own development team. I have to say that these changes were probably for the best. Lots of companies, and lots of developers were working contrary to their core competencies. Everyone isn’t meant to create great software, and many of the people paid to do so couldn’t have cared less about the quality of what they produced. At the same time, lots of great talent had unbelievable opportunities to shine.

Now, the big boogeyman for anyone who makes a living writing code is outsourcing. The wave that has previously hit manufacturing (try buying electronics or clothes made in America), finally made it’s way into the IT world. Like a lot of other hypocrites, I changed my tone from “that’s the way of the global economy” to “that’s not right!” mid-sentence. It finally occured to me that I wasn’t guaranteed a well paying emotionally rewarding job just because I am slightly skilled at what I do and work hard.

Outsourcing is a reality that I don’t expect to go away. It’s just way to attractive for a company to pay $100 a month for an employee in Bangalore, rather than $1000 or more a month for someone in Brooklyn. I’ve worked with several Indian nationals and I found them to be ambitious, competent, hardworking and eager to please. Their resource pool will only continue to improve in quality as they gain experience, the local economy and infrastructure improve, and they begin to get highler level jobs as Project Managers and Architects for the offshore projects they are working on.

Right now, opponents of outsourcing talk about lower quality results and communication problems. Those will go away in time, worn away by the steady pressure of short term cost reductions.

Outsourcing proponents say, “don’t worry, the sky isn’t falling! Just become a Program Manager or an Outsourcing expert and your job will be safe!” I don’t believe that in a second. If a low level coder can be replaced, why not the senior developer? The architect? The project manager? In fact, it almost makes more sense to outsource those roles so that they can be located in the place where the actual work is being done. I’ve spoken to an Indian consulting company exec and tells me that they are more than willing to send a resource to work onsite with customers for months at a time.

The reality is that Americans aren’t entitled by birth to good paying jobs and a good standard of living anymore than someone else born in another country. Eventually, the standard of living advantage that we have now will go away, and hopefully the result may be a more egalitarian and peaceful world.

I’m still not happy about it. I realize that might be considered selfish and myopic, but it’s how I feel. I started in this business as a low level grunt doing HTML coding and making ad banners. I lied exaggerated my way through that first interview, and used my intelligence and determination to learn the basic skills I needed. When other developers left the company, I volunteered to learn SQL and Visual Basic to replace them. Through on the job experience, study, and exposure to a great community of developers I’ve made myself into a decent programmer and an up and coming architect. I hope to one day become a manager, and then eventually an executive. Even when the day comes that I’m no longer writing code myself, the experience of having been in the trenches will always be one of my most valuable assets.

What would have happened if I were applying for that first job now? The opportunity probably wouldn’t have existed. I would have never gained the experience I have now, because I would never have had a chance to get in the door. I’m glad for the guy in India who now has a chance at a better life, but I’m a lot less happy that it’s coming at the expense of someone who lives in this country. People say that this isn’t a zero sum game…it is in a lot of cases. I’ve witnessed customers going throught the processs of deciding whether or not to outsource work, before deciding to dip their toes in the offshore waters. If they hadn’t decided to go offshore, they would have hired (at least temporarily) people living here.

So how does someone get to be a great Project Manager, Program Manager, Architect, or even a Senior Developer without first having been a grunt? I don’t believe it’s possible. I’ve had lots of experience with superiors who didn’t come from a programming background, and it’s been frustrating to say the least. Writing great software isn’t like doing desktop deployments, or selling software or anything else. It really takes having gone through the pain, the stress, the frustration to really understand what it takes to get things done.

So what happens if (in arguendo) all of the low level grunt work is sent offshore, but not the higher level roles? Will we hire Senior Developers and Architects right out of college? How can young people hope to compete for an Architect position with someone from China who may have started with a junior position and worked himself into being a top notch developer?

Ugh, I’m so confused. I just hope I don’t have to go back to work at the t-shirt factory.