In challenging economic times, you need to “Be All You Can Be.” I am not just talking about being the best at coding in your company. I assume because you are reading this magazine that you are a programmer and that you are probably very good at your job. To ensure that you are not the one that gets the pink slip on your desk, you really should think about what else you can do to make yourself more valuable to your company. In this article, I present several of those soft skills that I think will help you with this goal.

As programmers, we love to code. That is a good thing and it is an absolute necessity to get your job done. However, I find that many programmers simply write too much code, or spend too much time creating the “perfect” algorithm. Most business application programmers are creating software to solve a specific business problem. Make sure you are just solving the problem that the user asked for and not trying to deliver a Cadillac when a Chevrolet will work just fine.

I have too often seen programmers spend 100 hours on getting a 10% increase in speed on a routine that is only called twice in their application. This approach will not endear you to management when you are taking too long to get the application done. You will make yourself more valuable in management’s eyes by finishing the software on-time and on-budget. Deliver the Chevrolet then wait for them to ask for the Cadillac. Everyone will be much happier.

Understand How Software Helps Your Business

Yes, I know you coded the software, but do you really understand how it helps the end user get their job done? If you have never done the users job, how do you know if the software you are writing is really going to help? I think it is the job of every software engineer to work with their end users for a day or two to really understand the pain points and how your software can alleviate that pain.

When you take the time to work in the actual business you get a better appreciation for what the users do day in and day out. Sometimes it is a good idea to put together a simple UI prototype and get that in front of your end user as quickly as possible and ask them to try it out with you watching. You need to sit back and just watch them; don’t say anything, just watch. If they struggle with even getting started, then you probably need to go back to the drawing board on the UI and come up with a different approach.

Your goal as a software developer is not to write the most elegant, top performing code in the world. Your goal is to solve a business problem. If you don’t do that, then your software is absolutely useless! I know that is not what you want to hear, but that is the truth in most businesses. Your software should either reduce the cost of doing business, or increase the bottom line of the business. After all, if you don’t do this, then you and your software might just be thrown out the door.

Get Involved with Requirements Gathering

To ensure that you truly understand what the software should do to help the business, you should be involved with the up-front requirements gathering. I know some companies do not allow programmers to talk with the end users, but you should be really picking the brain of the person that did do the requirements gathering. Make sure you ask questions about “why” you are doing something in the requirements. Don’t just follow the requirements verbatim if they don’t seem to make sense to you.

Ask questions and get the answers. Many times when you do this, it forces the person who gathered the requirements to go back to the user to get some clarification. This reflects positively on both of you and your manager will appreciate this. It is better to get the right answers up front and solve an issue before it becomes a major problem. A major problem would be if you coded something to the specification, did not ask any questions, then find out later that you need to re-program something because it was not what the user wanted.

Communication Skills Are Vital

If you are unable to communicate verbally and in writing, then you will always have a serious disadvantage. Communication skills in any industry are important, but in our industry, being able to talk to end users, management, project managers, analysts and your fellow developers can make or break your career.

Oral Communication

The ability to talk to your end users about the business problem they are trying to solve will help you immensely when you start to create the code. Understanding the problem and being able to ask the right questions can shorten your development time considerably. Again, this goes back to understanding the business. If you understand what business you are in then you can write better software. I once talked with a programmer who worked for a commercial airplane manufacturer. He told me that only after working at the company for years did he finally say to someone “you mean we make airplanes?!” This programmer was so lost in coding that he completely forgot that he was supposed to help the business make aircraft.

Another area where oral communication skills are paramount is in the ability to talk to your teammates. I know a lot of programmers are introverted and are shy when talking to other people. However, that is something you need to get over. It is vital that you be able to talk with other programmers. You can learn a lot from other people. You might also find that they have developed some routines that can help you get your job done faster. Don’t get caught up in the “not-invented-here” syndrome. If you think that only software you create is good, then you will soon be out of a job. You do not have time to write everything yourself and still meet the goal of keeping your company in business. Take advantage of what your peers have to offer.

Written Communication

Besides the oral communication skills, you need to work on your written communication skills. An easy place to start on your written skills is to start writing a simple weekly summary report to your end-users and/or manager about what you did this week and what you see as your tasks for next week. You will be absolutely astounded how just this simple task at the end of each week will raise people’s opinions of you very quickly. These written reports will accomplish a few goals. First, it will get you used to writing and that is a great skill to develop. Second, it will communicate to your managers and end-users that you care about their project. Third, it will inform your manager what you expect to accomplish next week. This gives them an opportunity to let you know if they think there are other priorities that you should be paying attention to, rather than what is on your list. This is a very positive move on your part that comes from just a weekly email status report.

Another method of improving your writing skill and providing a valuable service at the same time is to work on documenting your code. As you are writing your classes and methods, use the XML commenting feature built into Visual Studio to add summary comments to each class and method. This couple of extra minutes to jot down a short description of the purpose of the class and each method will help you collect your thoughts on what it is you are trying to accomplish. In addition, these comments become a roadmap for the maintenance programmer that comes behind you. Believe me they will appreciate these comments. Besides, how many times have you been the maintenance programmer? Do you remember how those little comments have sometimes been a great memory refresher for you six months after you wrote that code?

Expand Your Knowledge

As developers we can sometimes get into a coding rut. Do you find yourself just doing C# or just Visual Basic? Do you find you only use one or two design patterns? Most engineering people tend to think in terms of on/off or black/white. Not everything in this world is so simple. The ability to be flexible in your life will pay off not only at work, but in your overall personal life too. Even if you think you are the best programmer in your shop (and you just might be), there are always people that know different things than you. Seek out these people and pick their brain for what they are doing.

A great way to get out and expand your knowledge and talk with other people is to attend user groups or Code Camp events, go to developer conferences such as DevConnections or Tech Ed, and read different magazines. You might also want to get involved with any of the hundreds of forums online. These are all great ways to learn new skills, share your ideas with others, and then see what people think of your ideas. I find that when I write an article or share a piece of code with a co-worker that I end up getting feedback that leads me to discover a better way of doing things. Sure, it is scary to put yourself out there for the entire world to see and to criticize, but it is a great way to expand your knowledge.

Another way to expand your knowledge and make yourself more valuable to your company is offer to take on a new assignment that is outside your comfort zone. If you have been doing all C# development, then write your next application in Visual Basic. I have often found that by knowing different languages I see things that are good in one language that I can apply to the other. Another idea is if you have not done a lot of developing of stored procedures in SQL Server, then offer to write some for your next project. Discuss the best practices of writing stored procedures with a DBA. The more you know about your overall development environment the better your application development skills will become.

User Interface Design

Most programmers I know can put together an “OK” user interface. It works, but it might not be the best way to do things. I encourage all programmers to take an art class, learn graphics design, learn Photoshop, or any other type of class that will encourage you to use the right portion of your brain. No one expects you to become a graphic artist overnight, or indeed at all, but by utilizing this different area of your brain, you will find you will become a little better at UI design.

The messages you display to a user in a software application are just as important as the UI design. Really think about each dialog box, label, and other messages you display to the user. Create messages that are clear and concise, not cryptic messages that will only make sense to other programmers. Write messages in full grammatically correct sentences and check your spelling. Explain exactly what happened, and if you can, write steps the user should take to solve the problem. All of this helps make your application much more user-friendly and will cut down on support calls that otherwise cost the company money.

Summary

A well-rounded developer is always going to be more valuable to a company than just a “code slinger.” Make sure you are one of the more well-rounded developers by beefing up your skills in the areas outlined in this article. I am sure you will find that just doing a couple of these things will increase your status within your company and hopefully will lead to a raise or at the very least keeping your job when others around you are getting laid off.