Better Job Descriptions

For the most part, software developers do not specialize along industry lines and regardless of the official title most software jobs are programming jobs. It is common for organizations to use software developers, designers, architects and programmers as interchangeable roles. I have taken typical job descriptions for an industrial designer, industrial engineer, and architect and adapted them to the software industry. The last job description is for a software craftsman. Instead of starting from scratch and developing job descriptions, I have adapted job descriptions from other industries. The job descriptions will help define the roles and responsibilities for software designers, software engineers, and software architects.

Software Designer - s the professional service of creating and developing concepts and specifications that optimize the function, value and appearance of software applications for the mutual benefit of both user and developer.

The software designer's unique contribution places emphasis on those aspects of the software that relate most directly to human characteristics, needs and interests. This contribution requires specialized understanding of visual, tactile, safety and convenience criteria with concern for the user. Education and experience in anticipating psychological, physiological and sociological factors that influence and are perceived by the user are essential for software designers.

Software designers work closely with software architects and clients to determine how users will ultimately interface with the software applications. The position is a combination of engineer and artist, and it takes a unique type of mind to handle both of those concepts well.

Software Engineering - A software engineer is concerned with development, improvement, implementation, and evaluation of integrated and multiple software applications to eliminate waste and redundancy. Software engineering draws upon the principles and methods of engineering analysis.

An industrial engineer is concerned with such things as plant layout. A software engineer is concerned with how software applications interact with each other to best optimize and assist users in their work. Software engineers study the interactions of components within very large applications to optimize, eliminate waste, and redundancy.

Software Architect -In the broadest sense, an architect is a person who translates the user's needs into the developer’s requirements. A software architect should translate user requirements gathered by software designers and translate these into formal functional specifications. They would create sketches, drawings and documents to communicate design ideas to the customer. They would also develop the detail documents used by software programmers to create the software product.

Software Craftsman - Craftsman are vital to the software development team. They see to it the code is written to the specifications created by the engineers and designers.

I was working with a European client whose productivity was around 20 hours per function point. When their developers started to learn about their industry they saw a leap in productivity to around 5 hours per function point. Even more impressive was their time to market was reduced from twelve months to only four months. The primary reason for this was developers were no longer order takers but they became actively engaged in solving the business problem. The developers learned the vocabulary of the business and they did not require the core business to learn the vocabulary of software development. The developers became an integral part of the business and not a separate entity that was feed requirements.