A software developer is someone who develops quality software on time which delivers business value and upholds customer satisfaction.
The definition of the role of a software developer upholds the basic requirements of what it actually means to be a software developer regardless of the technology and business demands. Dissecting the role of a software developer unravels the premise on which the definition has been assembled.
A software developer
The software developer is the subject in the role of a software developer. The subject defines who or what is being described. Arguably, the subject in this context can be either interpreted as stereotypical or generalised but fundamentally it is aptitude which should be considered. The aspiring software developer may not have the correct experience nor applicable skills rather does the person have the ability to learn themselves into a software developer position. Does the person have the aptitude to be a software developer?
Develops quality software
Quality software is measured on how well the software has solved the user's problem. Essentially this means how satisfied the user is with the software. Low quality software, software which exhibits bugs, performance issues, data inconsistencies, lack of security and so on, only add to the user's problem. Being quality oriented also means being customer oriented. High quality software exactly meets the user's expectations.
To develop quality software the developer first needs to be customer oriented and then selects the correct tools and processes to support the development of quality software. The tools and processes are only supportive of quality and do not measure the actual quality of the software.
More about the definition of quality can be found here.
Developers must hurry but never rush. Rushing leads to mistakes which inevitably results in poor quality software. However, software which is developed in a hurry allows for quality features to be delivered frequently and on time while the business can still maintain its competitiveness. The business environment will always be competitive and its the responsibility of the software developers to support the rapidly changing business environment.
Which delivers business value
Software development is fun. Nonetheless, the software development team is surrounded by a business and the business has the assumption of generating profits. The team has an obligation to support the business by developing software which coincides with the direction of the business. Basically, the team develops the product or service which the business can sell to generate value.
Upholds customer satisfaction
The absolute aspiration of software is to solve a user's problem. The customer or end user's satisfaction directly correlates to how well the software solution has solved the user's problem. Therefore, a software developer should always be customer oriented which will lead to better quality software and translate into more satisfied users.
In conclusion, important skills like, listening, understanding, communicating, supporting, collaborating, talking and many more are also essential to be a software developer. In the book, The Pragmatic Programmer, the author asserts that developers should not judge their daily productivity on the amount of lines code which has been written. Therefore being a software developer is not only about producing lines of code but also interacting with the business and understanding its customers.