Developers: Innovate or get outsourced

“Nothing endures but change”

The phrase is accredited to the philosopher Heraclitus on of Plato’s influences. In our industry, the quote is o’ so true and there is a new change at the horizon we need to embrace.

You have probably heard that to be a successful solution developer you need to understand the business. This is true; to deliver a solution you need to understand more then just technology. However, in a very near future this will not be enough. In a very near future you will need innovate solutions not only develop them. In the same very near future you will need to understand how to innovate business using technology not only apply the technology to the business.

In that future, to stay relevant in your on-shore locations, you need to turn into a solution innovator and move away from being a solution developer. If you can’t take on this shift; you WILL be outsourced.

The outsourcing paradigm has really evolved the last couple of years. It is moving away from being “IT on tap” into strategic partnership. I only need to go as far as the company I work for, Avanade, to see how we build centers that are client specific. Centers that capture knowledge of our clients business and already today deliver the solutions and value they need with very little or no on-shore assistance.

While I am looking back at the last 12-13 years that I have been developing solutions for clients, I see a pattern. It used to be enough to be a skilled programmer, then that got moved into outsourcing factories. It used to be enough to be skilled at designing solutions, then that got moved into outsourcing factories. At the moment it might be enough to understand the business, but I am certain that will move into outsourcing factories as well. Following this path we need to take that next step to be significant.

Deploying that last bits of code into production and seeing your client silently nodding and agreeing that you delivered as promised; creates a rewarding feeling that I am sure we all have felt.

Deploying the last bits of code on a solution that delivers business innovation which you brought to the client; rewarding is not a big enough of a word to describe what you will be feeling.

Of course the difference in time zones and cultures as well as the distance between countries is making this transition a bit slower, but it will come. Services like Lync, Skype and other collaboration tools is closing the gaps and gives us unique insight in each others cultures.

After working a couple of years in a truly global company, I really feel I can understand and collaborate with people across the globe a lot easier then before and I have peers in other locations I feel as close to as the colleague sitting at the desk next to me.

The transition will come.

Understanding the business will very soon not be enough. You will need to start innovating, you will need to be proactive to your clients needs, being reactive won’t cut it. Personally I turned to “Innovation: The Five Disciplines for Creating What Customers wants” to start my transition and am really looking forward to reading “Where Good Ideas Come From: The Natural History of Innovation” and “Democratizing Innovation” during my summer vacation.

I suggest you do too, and fast before your job has moved to another shore.

Some useful links:
TED Talks: Charles Leadbeter on Innovation
Slide Share: Thinking about innovation

Duoblog: Everybody wants choices but nobody wants to make a choice

Johan Lindfors, Microsoft and I discussed the growing opinion that software development and .net framework is getting to complex on MSN the other day. He suggested that we write a duoblog about it, an initiative started by Chris Hedgate,  don’t miss Johan’s view on the same subject here: http://blogs.msdn.com/johanl/archive/2009/10/08/duoblog-everybody-wants-choices-but-nobody-wants-to-make-a-choice.aspx

The last year or so I’ve read in the Swedish magazine, Computer Sweden(in swedish), listened to developers on shows like DotNetRocks, and had discussions with several developers which all have had a similar concerns about the future: “Software development is to complex, .NET is to complex. There is just to much to learn, too many choices I have to make”. This makes me a bit sad, and frustrated at the same time. This is why.

Why are there all these choices in .NET?

Let’s turn the clock back a little bit, the year is 1999 and Visual Basic 6 and classic ASP has their prime time. While developers using this platform are building e-commerce sites and line of business applications with somewhat success; they are still missing key components  and Microsoft plans to fill that with a new platform, .NET.

2001 .NET becomes a tremendous success. Advanced applications can be built easier then before and developers are satisfied, for the moment. With better understanding of the .NET framework developers soon see even more opportunities where software can help businesses and soon they crave for more. This is only natural, with every technological advance we do, we look at the horizon for the next.

Microsoft continuous to put out new functionality and adds value to the .NET platform trying to meet all the demands that arise. They learn a lot during this process and in some cases they decide that old parts of the framework, like ASMX Web Services, won’t cut it when they move forward. It gets replaced by newer and better technology. As a good tool vendor though, Microsoft leaves the old technology in the stack for backwards compatibility, not to be chosen over the new technology.

It’s now 2009 and Microsoft is very soon launching a new version of their platform, .NET 4.0 and Visual Studio 2010, with even more changes and choices and there is no doubt there will be even more in the future. All in response to customer feedback.

In the meanwhile businesses has changed.

During these 10 years when the development platforms have evolved and developers have been provided more tools, business has changed. In 1999 IT and software was considered a cost of doing business. In 2009, for many companies, IT and software is their business. I’m not only talking about companies that build software or sell consultants, I’m talking about all sorts of businesses. Business and their view on IT has changed, based on the same mechanics that the development platform has; for every advancement in business process support by software, they want more.

Today there are higher expectations on software then it was 10 years ago. Microsoft is trying to help us developers to meet these expectations by providing us the tools we need. Higher abstraction layers, more automation and frameworks that solve specific problems.

So THAT is why we are where we are.

In some ways I agree, software development is complex, .NET framework is big. But there is a reason for it, business demands on software are more complex, business itself is more complex then it was 10 years ago. But this is our job. Our job is to help business evolve, and if we don’t evolve with them we will be their stalling factor, we will fail to support their needs.

To help business with the best solution we need choices, we need even more choices. We need choices outside of the .NET space. We need to learn and understand when and where a certain choice is the best choice. This is our responsibility as software developers, this is why we are paid, this is our god damn JOB.

Software development is all about learning

So this is why I am sad and frustrated, developers seem to not understand the basics of the job requirements. As a software developer, my job always include constant learning and constant improvement of my skills. If I can’t agree with that I am a bad developer. This is not the tool vendors fault, this is because business change, improve and learn as well. If we don’t do that with them, we will be left behind.

Similar posts on this subject:

Excel as a software engineer, be a professional not an amateur