by Michael K. Campbell
The economy looks grim, and while it’s still too early to predict what the fallout will be for the software and web development industry, it’s never too early for developers to plan to increase their business value. To be successful far into the future developers need to assess how they can add strategic value to their organizations, and how they can best engage the entire IT department in the most efficient creation, deployment, and operation of software. Today I want to talk about some things that you can do to improve your worth and give yourself a better chance of sticking around should things get ugly or landing another job should things get really ugly.
Unit testing is all the rage right now in the development world because it lets you automate some of the more tedious aspects of your daily workload. There’s nothing like the confidence that unit testing instills in an IT group when everyone knows developers can maintain and extend code whenever the need arises. This is something you can’t even approximate without unit testing. So, I find it strange that, due to the slight learning curve involved with learning how to unit test, many developers and shops haven’t undertaken any form of automated testing. If you haven’t picked up this valuable skill yet—there’s no time like the present. Learning how to automate testing will improve your value at your current workplace, and it will be another arrow in your quiver when you interview for your next job and you’re confident fielding unit testing questions.
Generate Code, Don’t Just Write It
As the saying goes, good developers create good code and great developers write code that generates good code. Yes, the use of reflection or code-gen can be great ways to build value in the form of code generation, but scripting, XSLT, and other simple technologies such as the use of templates, can also be used to automate repetitive tasks and increase your prowess and your value. This is particularly true when it comes to persisting and hydrating data in and out of databases—NHibernate, LINQ to SQL classes, and a host of other resources represent ways to quickly and efficiently generate useful code with little effort. Best of all, with NHibernate and others, you don’t need to create code-generation functionality from scratch; you can achieve greatness by just pulling existing tools off the shelf and learning how to use them.
Go Back to the Basics
Whether it’s cracking open books and articles about best practices for coding, coupling, or project management, it’s a good idea to frequently contrast the realities you deal with on a daily basis with the theoretical ideals of how those tasks should be handled. For example, I’m always amazed at how much I’m able to learn each time I pick up Steve McConnell’s excellent book, Code Complete (Microsoft Press, 2nd ed. 2004). The insights in this book shape my coding practices and make me a better developer.
Upgrade Your Skill Set
It’s hard to believe, but Microsoft .NET Framework 3.5 has been out for almost a year now. Yet many developers haven’t taken the time to see what’s offered. Are you learning about Windows Presentation Foundation (WPF), Silverlight, or LINQ? There are tons of resources available to help you easily and quickly learn about these new platforms, technologies, and approaches to creating solutions. Or, if you already have a solid feel for .NET 3.5, what about Visual Studio 2008 SP1? Are you using the ASP.NET Model View Controller (MVC)? What about Dynamic Data or the Entity Framework?
The WinDevPro site and newsletter will help you understand these platforms, solutions, and approachs over the coming year, because it’s important for you to be aware of your options and solve problems that cause you pain on a daily basis.
Do you already have great developer skills and know plenty about the topics I’ve covered? Then it’s time to either look at picking up a new language or branching out into other IT areas. It’s a well known “secret” that learning a totally new language will help you better understand the languages that you already know. A new language shows you how to solve the problems of translating business logic and intelligence into instructions for machines a new way. Another way to branch out is to take some time to understand the work of systems administrators. Developers who only know how to code aren’t as valuable as those who know how to code and can also troubleshoot deployment or security issues.
Build Business by Solving Forward
Although becoming better at building software and solutions represents one way to increase your value, you can also stand out by building business and building people. And, just as you can get a kick out of seeing an application or solution that you’ve built solve a real problem, you can also gain huge satisfaction when your success in interpersonal relationships contributes to business success.
Building business is hallmark of being professional. In some organizations, being proactive might mean addressing issues that don’t necessarily fall within your typical sphere of influence. In my experience though, opportunities to solve-forward outside of your usual domain are rare due either to the pressures of day-to-day demands, office politics, and so on.
Try being proactive and building business by thoroughly addressing all of the options available whenever you need to report a problem to management. Instead of just spelling doom and gloom when you reveal an unexpected problem or a slipping milestone, give them options among solutions that you’ve thoroughly vetted in terms of potential outcomes, potential pain points, and the potential strengths and weaknesses of each approach contrasted with the others. Doing this enables managers to make better informed business decisions. They’ll see you as a key asset and appreciate your strategic value instead of cringing every time you need to meet with them.
Build Value by Building People
You build people by sharing with them; for me, it’s a great source of satisfaction in my development and my systems administration work. And no, I’m not talking about throwing self-help seminars during lunch breaks. I’m talking about being free and open with what you know, and actively trying your best to increase the knowledge and understanding of those around you about the technologies, tools, and business processes that you use. Specifically, I’m talking about “lifting” other people around you without fear or concern that you might be making yourself less valuable. I think we’ve all seen what happens when co-workers get stingy or reclusive with what they know.
For example, I’ve worked with too many people who made the mistake of thinking that they were valuable because they knew more than the next person. This made them parsimonious with their knowledge. I’ve seen some people strive so strenuously for job security in this manner that they torpedoed other developers. I’ve heard of cases where developers actually injected routines or logic into processes that required their periodic intervention to facilitate continued operations. This TCO-raising behavior is foolish and short-sighted, particularly in an era where management values rapid low-cost team-built solutions. Who looks like the weakest link here?
On the other hand, if you build others up, encourage openness and communication, and increase overall productivity you’ll be seen as a leader. And, even in the worst scenario, where you’ve done all of these things and still find yourself with a pinkslip due to layoffs or down-sizing, you’ll have entrenched yourself in the hearts of co-workers and peers who will go on record as references in an increasingly networked world. Plus, your strong people skills can give you an edge in the technical job market.
Tough times call for tough measures. But even without the specter of tough times looming, happiness comes from pushing yourself, setting goals, and realizing your dreams, no matter how circuitous the path. So, figure out what you want out of life, adapt to disruptions, and share knowledge. You’ll achieve a quiet and powerful sense of self-confidence that will take you far.