Five Essential Skills For Software Developers
There are a lot of software developers out there and the competition is high in the current job market. The economy is in a state of flux and the unemployment rate continues to rise. It’s important to develop a set of skills that distinguish you from the rest of the pack and I believe maintaining a well rounded set of skills is the best way to do that. Here are five essential skills to keep you on top of the game.
- Technical Knowledge
- Verbal and Written Communication
- White Board
- Time Management
- Social Interaction
As a software developer this is a set of skills which is constantly evaluated and tested by managers and co-workers. It’s a topic of your performance review and is the most highlighted topic on your resume. If you fluffed up your resume to land that job you’d better study hard nights and weekends to deliver the goods; this is not a skill you can fake for long.
Keeping up with the latest technology is tough and requires many hours of personal time to read about and play with the latest and greatest of technology X. Technology moves too fast to keep up with it all so narrow your focus to specific areas of interest and become an expert those areas. Remember that technology is only a tool for implementing software designs. The selected technology, or programming language, should not dictate your software design rather your software design should dictate which technology you use to best implement the design. Whatever you do, target technical skills that you find interesting and maximize your marketability
While it’s fine to specialize you also want to remain flexible. A developer who has a solid understanding and the ability to work in all layers of an application from the user interface to the back end database code is a valuable team member. More importantly, become an expert on the application you work on. If you find a weak area within your team, take the opportunity to become the expert. Build relationships and talk with developers that work on other areas of the application to increase general knowledge of the overall product. The more you know, the more valuable you are to the company.
Verbal and Written Communication
Developers must be able to communicate software designs clearly and effectively with managers, business analyst and other team members. The ability to analyze business requirements and produce functional specification and design documentation is critical. Documentation should be written concisely covering all the business requirements. At times, it may be necessary to present your software design to a larger group in the form of a presentation. Presentations require strong verbal communication skills and the use of visual aids are beneficial. The ability to communicate your ideas clearly in front of a group of people is essential to career advancement.
I’ve written thousands of pages of documentation in the form of functional specifications and architectural design documents using Word, Visio and PowerPoint. While these documents are great for presentations and getting a project off the ground I’ve found that most people don’t actually read them (particularly the executives). This is when a quick, high-level overview of the design described pictorially on a white board is the most effective and efficient form of communication. As the old saying goes…”A picture is worth a thousand words”.
There is some skill required to be a good “white boarder”. I’ve worked with engineers who’s white board skills are horrible. While verbally communicating the design, they attempt to use the white board as a visual aid but nothing of substance is ever drawn. A series of dots, boxes, circles, lines and squigglies (which are supposed to represent text) are produced which result in something resembling a heaping, multi-colored plate of spaghetti (I myself am guilty of this). If you come back to the board the next day to review the drawing it is completely unreadable and has no meaning at all. Slow down and try to remain aware of what you are communicating. It is easy to become so involved in what you are verbalizing that the visual aspect of the white board suffers. I’ve always been impressed with people who can use the white board effectively. They tend to speak clearly and produce clean, easy to understand diagrams.
Time management is an essential skill in the developers tool belt. A developer who has good time management skills can consistently deliver projects on time. This, in turn, will earn you the respect and confidence of project managers. Effective time management requires the ability to multi-task and delegate. Multi-tasking allows the developer to juggle multiple task at one time. Delegation enables multi-tasking by allowing the developer to distribute and offload tasks to alternate resources. Think of multi-tasking and delegation as concurrency in the work place, each employee/department is a worker thread, delegate a task and move on to the next.
Make the most of your time at work while at work. Do not bring work home unless you absolutely have to. If you find yourself bringing work home often then you are probably not utilizing your time at work efficiently. Create a todo list each day and methodically check off each task as they are completed. Microsoft Outlook has a task list feature which allows you to set reminders and completion dates. This is a great way to keep things moving. If you are working from a project plan, check it daily to make sure you are completing task on time in conjunction with the projected completion date. Keep interested parties up to date on your progress and completion of major milestones.
At the end of the day this is just a job, a way to make money and pay the bills. Take some time to relax and associate with your co-workers in a social environment. Eating together is a great way to bond with people so try getting a group together for lunch or an after work drink and appetizers. Keep the work talk light and spend more time getting to know each other on a personal level. Socializing with your co-workers can help you in the work place. Allowing others to get to know you on a personal level may make them feel more comfortable and trusting. Developing a trusting relationship with your co-workers can increase communication, and efficiency in the office. Social interaction, along with demonstrated competence, is a great way to build up your referral network.