Business Skills In Software Development
Software development is more than technical knowledge. The reason for writing code and developing software is to solve problems. More often than not the problems a developer is solving are for businesses, either for a Fortune 500 or a small business. In order to be effective doing your job as a developer, general business skills are needed to navigate through the corporate world.
Communication skills
Being able to adequately communicate with your co-workers, project manager, clients and sometimes executives at your workplace is a great skill to have. Developers get very excited about technical talk, most business people are not as technical as engineering folks. Knowing your audience and talking with the right level of detail is important. For example, if you are talking to a fellow developer about the complexity of the architecture of the software is a great conversation, when talking to a business person about the same topic, there is no need to give out all the little details, they just want to know how long it will take to get it done and how much it will cost and the benefits it will bring to the company (they like graphs and numbers).
Industry knowledge
Most likely you will be coding to solve a problem for a specific industry, if working for a bank, you will need to learn how bank systems work. Does the software need to meet certain requirements to be compliant? Are you dealing with personal data that needs to be encrypted? How much of that data can you hold and for how long? If working for health care, how does that affect the way you write code, are there specific protocols you need to follow? There are questions for almost every industry that might be different. Be aware of the kind of industry you are working for.
Time management / Organization
A software is a project, projects have deadlines and are budgeted. Most developers work in teams but for the most part they are assigned to individual tasks and features for the project and time of completion is estimated for each task. There are some tasks that are hard to accurately estimate and are broken down into small pieces, the developer must be good at managing his/her time to complete the tasks and communicate the progress to the project manager. Agile software development is a popular method to manage software development projects, the team plans for 2-3 weeks slots of time called sprints, after each sprint the software must be finished, tested and production ready.
Negotiation
This is a skills that can be trained, most people are uncomfortable at negotiating. A good developer will need to learn this skills to be able to negotiate for either more time to complete the project, more budget (more resources) or the quality of the project (Scope or Quality Triangle). Business people inevitable change the scope of the project from time to time, this is where developers (and their leads) need to be able to negotiate. If the business adds more features to the project, then either more time needs to be added to complete it or more resources need to be allocated (or both) in order to achieve the same quality.
There are many other business skills that are beneficial for developers and their teams, these are only a few of them. These skills are to be learned as a developer matures in his/her career, after all this is a ever learning career.