Software Development Job Descriptions

Software Development Job Descriptions

Director of Software Development

Nature of Work

The Director of Software Development is a highly responsible senior manager with responsibility for all software development activities within the organization. This position typically reports directly to the Chief Information Officer (CIO). In all but the smallest development organizations, this will be at least a second level management job.

Education and Experience Profile

A typical candidate for this position will have at least fifteen years work experience in software development or a closely related engineering field. Recommended education for this position is an advanced degree, either in computer science, engineering, or business with a concentration in management information systems. At least five years of first level management experience is also recommended along with five or more years experience as an individual contributor in a software development role. Even though this is a second level manager position, we have seen few individuals succeed in such a role if they do not have "hands on" development experience.

Management, Leadership, and Personal Skills
  • Thorough understanding of the company's vision and goals, business operations, and markets.

  • Thorough knowledge of the theories and principles of management and administration.

  • Thorough knowledge of planning, project management, budgeting, and quality assurance as it relates to software development projects.

  • Thorough knowledge of developing RFIs and RFPs along with the criteria for evaluating vendor proposals, products, and services.

  • Excellent oral and written communication skills.

  • The ability to formulate , present, and support budget estimates and financial plans concerning software development activities along with the related hardware and software acquisition costs.

  • The ability to manage feasibility studies and economic analyses designed to improve effectiveness and efficiency of software development applications, tools, and processes.

  • The ability to establish and maintain effective working relationships at all levels.

  • A passion for software development.

  • The ability to inspire and lead through others.

  • The ability to train and mentor software development project managers.

  • The ability to coordinate and prioritize customer requests with the assistance of other managers to ensure the highest level of service possible to the customer.

  • The ability to direct the setting of performance standards, write performance evaluations, issue counseling forms and disciplinary actions, handle employee complaints and grievances, and recommend the hiring, termination, and promotion of staff.

Technical Skills
  • Knowledge of current technological trends in the software development industry, such as object-oriented programming, multi- tier software development, component architectures, design patterns, and web-based software.

  • Knowledge of computer languages, operating systems, application packages, database management systems, networks, and hardware capabilities.

  • Knowledge of system integration issues between diverse platforms (PCs, Unix, mainframes).

  • The ability to gather and analyze data and draw logical conclusions.

Chief Software Architect

Nature of Work

The Chief Software Architect is the most senior technical position within a software development organization. This individual is responsible for the overall application architecture of the organization. The chief software architect also sets directions for enterprise-wide standards in the area of languages, tools, and processes for software development. This position typically reports to the director of software development, and perhaps occasionally to the CIO within the corporation.

Education and Experience Profile

A typical candidate for this position will have at least fifteen years work experience in software development across a wide variety of development projects. Recommended education for this position is an advanced degree, either in computer science, engineering, mathematics or a closely related field with a concentration in software engineering.

Management, Leadership, and Personal Skills
  • Understands the company's vision and goals, business operations, and markets.

  • Has knowledge of planning, project management, budgeting, and quality assurance as it relates to software development projects.

  • Has knowledge of developing RFIs and RFPs along with the criteria for evaluating vendor proposals, products, and services.

  • Has excellent oral and written communication skills.

  • Has the ability to lead feasibility studies and economic analyses designed to improve effectiveness and efficiency of software development applications, tools, and processes.

  • Has the ability to establish and maintain effective working relationships at all levels.

  • Has a strong passion for software development.

  • Has the ability to inspire and lead software developers throughout the organization.

  • Has the ability to train and mentor senior software engineers .

Technical Skills
  • Has thorough knowledge of current technological trends in the software development industry, such as object-oriented programming, multi-tier software development, component architectures, and web- based software.

  • Has thorough knowledge of computer languages, operating systems, application packages, database management systems, networks, and hardware capabilities.

  • Has thorough knowledge of system integration issues between diverse platforms (PCs, Unix, mainframes).

  • Has the ability to gather and analyze data and draw logical conclusions.

  • Routinely writes and publishes technical articles, papers, reports, journals, or books on software engineering.

  • Has the ability to direct software and hardware benchmarks.

  • Has thorough knowledge of enterprise and system modeling.

  • Has thorough knowledge of object-oriented analysis.

  • Has fluency with object-oriented modeling tools (including UML) and languages.

Software Development Manager

Nature of Work

The Software Development Manager is the individual with ultimate responsibility for delivering a high quality software project meeting all required functionality within schedule and on budget. This individual directs the successful design, implementation, and delivery of one or more projects, depending on the project size and management experience. This position typically reports directly to the director of software development and is typically a first level manager position with seven to ten direct reports. However, on a large project, this may be a second level management position.

While specific software development management responsibilities will vary widely based on organization structure and project size, certain criteria are shared by the manager responsible for a 3 developer 3 month project and an 80 developer multi-year project. This section describes the typical skills shared by successful project managers. Our focus in this chapter is on skills unique or critical to the management of software development projects.

Education and Experience Profile

A typical candidate for this position will have at least ten years work experience in software development or a closely related engineering field. Recommended education for this position is an advanced degree, either in computer science, engineering, or business with a concentration in management information systems. At least five years of experience as an individual contributor in a software development role is recommended.

It is very difficult to manage a software development team without having a development background. Depending on the project size and complexity, between five and ten years development experience is desirable for a first level software development manager. Without hands-on development experience, it is not only too difficult to understand the technology, it is also difficult to understand how to manage and motivate developers. This in turn means a technical degree is a good minimum education to require for development managers. An MBA degree is typically not required of first level managers as long as they have basic business and management training, often gained through in-house courses. An in-house course can be more closely tailored to the business needs of the organization than a general university level course. Likewise, an advanced technical degree is not a typical requirement as development managers should concentrate on people and management skills and rely on the software architect for the heavy technical work.

The above should not be construed to imply that every senior developer with five to ten years experience should be considered a candidate for management. An all too common mistake of organizations is to thrust their best developers into management roles without proper management or business training and without any consideration of the developer's desires. An almost equally bad mistake is to drive your best developers into management roles by not providing equally attractive technical career paths. Providing equal management and technical career paths lets you retain the best developers and avoids driving them to take management positions simply because they have hit an artificial barrier in their technical career path . It is interesting to note that many VPs or director level managers in development organizations actually have criss-crossed career paths, having transitioned between technical and management roles several times or more during their career.

Management, Leadership, and Personal Skills
  • Understands the company's vision and goals, business operations, and markets.

  • Understands theories and principles of management and administration.

  • Has knowledge of planning, project management, budgeting, and quality assurance as it relates to software development projects.

  • Has excellent oral and written communication skills.

  • Has the ability to establish and maintain effective working relationships.

  • Has a passion for software development.

  • Has the ability to inspire and lead other software developers.

  • Has the ability to train and mentor software engineers.

  • Has the ability to coordinate and prioritize customer requests with the assistance of other managers to ensure the highest level of service possible to the customer.

  • Writes performance evaluations, issues counseling forms and disciplinary actions, handles employee complaints and grievances, recommends the hiring, termination, and promotion of staff.

Technical Skills
  • Has knowledge of current technological trends in the software development industry, such as object-oriented programming, multi-tier software development, component architectures, and web-based software.

  • Has knowledge of computer languages, operating systems, application packages, database management systems, networks, and hardware capabilities.

  • Has knowledge of system integration issues between diverse platforms (PCs, Unix, mainframes).

  • Has the ability to gather and analyze data and draw logical conclusions.

Senior Software Engineer

Nature of Work

A Senior Software Engineer is one who can take responsibility for the analysis, design, and implementation of software systems. This individual will stand out as the most experienced and knowledgeable software engineer on the projects to which he/she is assigned. The senior software engineer will typically report to a software development manager.

Education and Experience Profile

A typical candidate for this position will have at least ten years work experience in software development across a wide variety of development projects, or an advanced degree and at least eight years experience. Recommended education for this position is an advanced degree, either in computer science, engineering, mathematics, or a closely related field with a concentration in software engineering.

Management, Leadership, and Personal Skills
  • Understands the company's vision and goals, business operations, and markets.

  • Communicates clearly and concisely, both verbally and in writing.

  • Establishes and maintains effective working relationships at all levels.

  • Has a strong passion for software development.

  • Inspires and leads other software engineers on their project and on other projects within their organization.

  • Has the ability to train and mentor more junior software engineers.

Technical Skills
  • Has thorough knowledge of current technological trends in the software development industry, such as object-oriented programming, multi-tier software development, component architectures, and web- based software.

  • Has thorough knowledge of computer languages, operating systems, hardware capabilities, and two or more software specialty areas such as application packages, database management systems, middleware products, or networks.

  • Has thorough knowledge of system integration issues between diverse platforms (PCs, Unix, mainframes).

  • Has the ability to perform system integration of software systems across heterogeneous platforms.

  • Has knowledge of GUI design.

  • Has the ability to gather and analyze data and draw logical conclusions.

  • Occasionally writes and publishes technical articles, papers, or reports.

  • Has the ability to perform software and hardware benchmarks.

  • Has knowledge of enterprise and system modeling.

  • Has knowledge of object-oriented analysis.

Software Engineer III

Nature of Work

A Software Engineer III is one who can participate as a team member in all phases of the software lifecycle, including the analysis, design, and implementation of software systems. The position will typically report to a software development manager.

Education and Experience Profile

A typical candidate for this position will have at least six years work experience in software development across a wide variety of development projects, or an advanced degree and at least four years experience. Recommended education for this position is a degree, either in computer science, engineering, mathematics, or a closely related field with a concentration in software engineering.

Management, Leadership, and Personal Skills
  • Understands the company's vision and goals, business operations, and markets.

  • Communicates clearly and concisely, both verbally and in writing.

  • Establishes and maintains effective working relationships at all levels.

  • Has a strong passion for software development.

  • Has the ability to train and mentor more junior software engineers.

Technical Skills
  • Has knowledge of current technological trends in the software development industry, such as object-oriented programming, multi-tier software development, component architectures, and web-based software.

  • Has thorough knowledge of computer languages, operating systems, hardware capabilities, and one or more software specialty areas such as application packages, database management systems, middleware products, or networks.

  • Has thorough knowledge of system integration issues between diverse platforms (PCs, Unix, mainframes).

  • Has knowledge of GUI design.

  • Has the ability to gather and analyze data and draw logical conclusions.

  • Occasionally writes technical articles and reports.

  • Has knowledge of object-oriented analysis.

Software Engineer II

Nature of Work

A Software Engineer II is one who can participate as a team member in all phases of the software lifecycle, including the analysis, design, and implementation of software systems. The position will typically report to a software development manager.

Education and Experience Profile

A typical candidate for this position will have at least three years work experience in software development or an advanced degree and at least one year work experience. Recommended education for this position is a degree, either in computer science, engineering, mathematics or a closely related field with a concentration in software engineering.

Management, Leadership, and Personal Skills
  • Understands the company's vision and goals, business operations, and markets.

  • Communicates clearly and concisely, both verbally and in writing.

  • Establishes and maintains effective working relationships at all levels.

  • Has a strong passion for software development.

Technical Skills
  • Has knowledge of current technological trends in the software development industry, such as object-oriented programming, multi-tier software development, component architectures, and web-based software.

  • Has thorough knowledge of computer languages, operating systems, hardware capabilities, and one or more software specialty areas such as application packages, database management systems, middleware products, or networks.

  • Has the ability to gather and analyze data and draw logical conclusions.

Software Engineer I

Nature of Work

A Software Engineer I is an entry level software development position. This individual will participate in detailed level design, coding, and unit test of software modules. While it is tempting to place entry level software engineers directly into coding assignments, we find getting them involved in the detailed design process of a task is important. The software engineer who does his own detailed design is more likely to do the coding correctly because he understands the reasons behind each detailed design decision.

Besides working on their own code, entry level programmers also participate in code walk-throughs for other programmers. What separates entry level programmers from more senior ones is their expected productivity levels and the amount of mentoring and training they require. We try to place entry level programmers on teams with more senior programmers and provide plenty of opportunities for informal mentoring and training. While all new programmers receive training on internal software standards, development tools, and policies, there is no substitute for having someone nearby to ask a question of when the need arises.

In many organizations, entry level software engineers might not be expected to provide any training to more senior members of the programming team. However, with technology changing so quickly, new college hires often have experience in areas other members of the team do not. After they have been working on a project for a month or two, we ask all entry level software engineers to select a topic they studied in school or have a keen interest in and present a training session on it to the rest of the project team. At the very least, this serves to develop presentation skills that will be useful later in design and code reviews. Often, however, we find new hires actually come up with meaningful topics to present which later get incorporated into some aspect or another of the project.

The position will typically report to a software development manager. Working in an entry level position, this individual will typically be assigned a mentor who is a more senior software engineer.

Education and Experience Profile

A typical candidate for this position will have zero to three years work experience in software development. Recommended education for this position is a technical degree, either in computer science, engineering, mathematics, or a closely related field with a concentration in software engineering.

Management, Leadership, and Personal Skills
  • Understands the company's vision and goals, business operations, and markets.

  • Communicates clearly and concisely, both verbally and in writing.

  • Establishes and maintains effective working relationships at all levels.

  • Has a strong passion for software development.

Technical Skills
  • Has knowledge of two or more computer languages, including one object-oriented language such as Java or C++.

  • Has knowledge of operating system principles and basic hardware capabilities.

  • Has basic knowledge of current technological trends in the software development industry, such as object-oriented programming, multi-tier software development, component architectures, and web-based software.

  • Has the ability to gather and analyze data and draw logical conclusions.

Toolsmith

Nature of Work

The position of Toolsmith is a new one that has appeared over the last several years on software development projects using a very large number of third party development tools and utilities. The need for a toolsmith role is being driven by the ever increasing number of commercial off the shelf (COTS) packages. Since object-oriented languages like Java and C++ and component architectures like JavaBeans and ActiveX drive the market for more and more commercial off the shelf (COTS) packages, we expect more and more software development projects will have someone in a toolsmith role.

The toolsmith is a senior software engineer whose responsibilities include analyzing project requirements to select appropriate COTS tools, working with the software architect to integrate COTS tools into the overall design of the application, training other software engineers on proper use of COTS tools in the project environment, and being an overall project resource in the use of COTS tools. The toolsmith also works closely with the chief software architect to assure that the use of COTS tools for software development is standardized as much as possible across the organization. The toolsmith typically reports directly to a software development manager.

Education and Experience Profile

A typical candidate for this position will have at least ten years work experience in software development across a wide variety of development projects, or an advanced degree and at least eight years experience. Recommended education for this position is an advanced degree, either in computer science, engineering, mathematics, or a closely related field with a concentration in software engineering. The individual will have a broad experience base working with COTS design and analysis tools, class libraries, integrated development environments ( IDEs ), graphics user interface (GUI) design tools, configuration management tools, testing tools, middleware packages, DBMS packages, and other general development tools and utilities.

Management, Leadership, and Personal Skills
  • Understands the company's vision and goals, business operations, and markets.

  • Communicates clearly and concisely, both verbally and in writing.

  • Establishes and maintains effective working relationships at all levels.

  • Has a strong passion for software development.

  • Inspires and leads other software engineers on their project and on other projects within their organization.

  • Has the ability to train and mentor other software engineers in the use of COTS tools.

Technical Skills
  • Has thorough knowledge of current technological trends in the software development industry, especially in the use of COTS tools for object-oriented programming, multi-tier software development, component architectures, and web-based software.

  • Has thorough knowledge of computer languages, operating systems, hardware capabilities, and COTS tools such as application packages, database management systems, and middleware products.

  • Has thorough knowledge of system integration issues between diverse platforms (PCs, Unix, mainframes), especially as it relates to the integration of COTS components with in-house developed software and integration across different COTS components .

  • Has the ability to perform system integration of software systems containing COTS components across heterogeneous platforms.

  • Has knowledge of GUI design using COTS tools.

  • Has the ability to gather and analyze data and draw logical conclusions.

  • Has the ability to write and publish technical articles, papers, or reports on the use of COTS tools in the project environment.

  • Has the ability to perform software and hardware benchmarks to evaluate different COTS tools.

  • Has knowledge of COTS tools for enterprise and system modeling.

  • Has knowledge of COTS tools for object-oriented analysis.

  • Has thorough knowledge of writing plugins for COTS products (i.e., plugins for Netscape Navigator, Photoshop, etc.).

Webmaster

Nature of Work

Over the last five years, the position of Webmaster has grown from non-existent to one typically performed part time after hours by some forward thinking engineer, to a highly respected position overseeing everything from graphics design to electronic commerce to high volume transaction systems. It is estimated that over fifty percent of new software being written today will be involved, in some way or another, with a web-based application. Many software development organizations, however, still contain little or no experience base with web-based applications. All too often, new applications are simply "thrown over the fence" with web site integration left to the webmaster and his deployment team. Even if your software project has nothing to do with the web, it may be useful to have an internal webmaster to run a project web server. Many development organizations find a project web page quickly becomes the focal point for everything from fostering sharing and reuse of software components to scheduling review meetings to tracking bugs .

Within a software development organization, the webmaster is typically a senior engineer with at least Software Engineer III or equivalent experience. While on a small project the internal webmaster may still be a part-time position; on larger projects the webmaster can easily be a full time position. This position reports to the software development manager. Many software development organizations actually have a webmaster and perhaps an entire web team at the top level of the organization, reporting directly to the director of software development.

Education and Experience Profile

A typical candidate for this position will have at least six years work experience in software development across a wide variety of development projects, or an advanced degree and at least four years experience. The webmaster should also have two or more years experience running a web server environment. Recommended education for this position is a technical degree, either in computer science, engineering, mathematics, or a closely related field with a concentration in software engineering. The individual will have a broad experience base working with different web server packages, middleware, back-end DBMS systems, web server DBMS integration, and Java technology.

Management, Leadership, and Personal Skills
  • Understands the company's vision and goals, business operations, and markets.

  • Communicates clearly and concisely, both verbally and in writing.

  • Establishes and maintains effective working relationships at all levels.

  • Has a strong passion for software development.

  • Has the ability to train and mentor other software engineers in creating their own web pages.

Technical Skills
  • Has thorough knowledge of current technological trends in web server, web client, and middleware software.

  • Has thorough knowledge of multiple web client platforms including Netscape Communicator and Microsoft Internet Explorer.

  • Has thorough knowledge of the Java platform, including Java servlets, Java applets, Java applications, JDBC (for DBMS connectivity), and Java middleware platforms.

  • Has thorough knowledge of CGI protocol including its strengths and limitations.

  • Has thorough knowledge of two or more scripting languages such as Perl or Tcl.

  • Has thorough knowledge of web server and web client integration issues between diverse platforms (PCs, Unix, mainframes).

  • Has knowledge of Java Server Pages and Active Server Pages.

  • Has thorough knowledge of web site maintenance tools.

  • Has thorough knowledge of web site monitoring and performance analysis tools.

  • Has the ability to perform software and hardware benchmarks to evaluate different web-based applications and tools.

  • Has thorough knowledge of web site security issues, including setting up secure web servers using the SSL (secure socket layer) protocol, password protecting web pages, and web server configuration issues related to site security.

  • Has knowledge of writing plugins for COTS products (i.e., plugins for Netscape Navigator, Photoshop, etc.)

Database Administrator

Nature of Work

The Database Administrator (DBA) works with commercial DBMS packages and tools to design logical data models, translate logical models into physical models (database schema), implement data storage, data integrity, data consistency, and data security, manage database backup and recovery, and manage available database space. Within a software development organization, the DBA will typically be responsible for one or more DBMS packages used as part of the development environment as well as any DBMS packages that are part of the actual software application being developed and thus required for application testing. This position will typically report to a software development manager but may also report to a separate operations department.

Education and Experience Profile

Depending on the number, size, and complexity of project databases involved, the DBA position may range from a junior to a senior one. A junior DBA position typically requires one to three years related work experience and a degree in computer science or related field. A senior DBA position typically requires seven years related work experience, four or more as a DBA, or an advanced degree in computer science or related field and four years related work experience.

Management, Leadership, and Personal Skills
  • Understands the company's vision and goals, business operations, and markets.

  • Communicates clearly and concisely, both verbally and in writing.

  • Establishes and maintains effective working relationships at all levels.

  • Has the ability to train and mentor other software engineers in creating efficient SQL queries.

  • Has a strong passion for database administration.

Technical Skills

A senior level DBA position would be targeted at an engineer who is thoroughly capable in all of these areas. A junior level DBA position would be targeted at an engineer who is capable in a subset of these areas.

  • Evaluates project-wide database infrastructures , develops detailed analysis reports and recommendations for database systems. Defines logical data model.

  • Plans, designs, and implements databases on a variety of platforms. Proficient at translating logical data models into physical data models (schema).

  • Understands features and performance limitations of different database platforms.

  • Understands and has experience implementing database cluster systems, including high-availability failover and parallel database options.

  • Plans and implements database backup and recovery procedures. Understands optimal database backup strategies and is experienced at integrating database backup procedures into general purpose backup tools such, as Legato or Veritas.

  • Has knowledge of database monitoring, tuning, and capacity management tools and utilities.

  • Has knowledge of database connectivity APIs, including JDBC and ODBC.

  • Has knowledge of database software installation and maintenance, database creation, startup, and database shutdown.

  • Has knowledge of database I/O and memory allocation characteristics and in tuning I/O and memory for optimal database performance.

  • Has knowledge of database locking, transaction, and concurrency controls.

  • Has knowledge of referential integrity and its enforcement using foreign keys and primary keys.

  • Has knowledge of two phase commit protocols used by different DBMS packages.

  • Has knowledge of distributed database concepts, including database replication.

  • Has experience in optimizing single and multi-table queries through the correct use of indices.

  • Participates in quality audits of database systems to ensure consistency throughout the software development organization.

  • Has knowledge of database benchmarking techniques.

  • Evaluates vendors ' DBMS product offerings and helps select the best suited DBMS for project applications.

System Administrator

Nature of Work

The System Administrator is an advanced technical position with responsibility for technical consulting, server design, network design, planning, implementation, management, and operational support for all computer hardware platforms. Because most software engineers are likely to be able (and want) to administer their own desktops, we will concentrate in this section on the server system administrator. This individual will be responsible for administering all file, DBMS, application, and other servers used within the software development organization. Many times this individual will report up through an operations group rather than through the software development organization. Nevertheless, we cover this position here because of its importance to any software development organization.

Education and Experience Profile
  • A server system administrator generally has a technical degree and at least two to five years experience working as a desktop system administrator.

Management, Leadership, and Personal Skills
  • Understands the company's vision and goals, business operations, and markets.

  • Communicates clearly and concisely, both verbally and in writing.

  • Establishes and maintains effective working relationships at all levels.

  • Has a strong passion for supporting software development organizations.

Technical Skills
  • Evaluates, installs , monitors , debugs, audits, and maintains server software on a variety of hardware platforms.

  • Maintains a "run book" of server configurations and operational procedures.

  • Acts as the main liaison to the hardware and operating system vendors for all server maintenance and support activities.

  • Writes user documentation as appropriate.

  • Installs, tests, and implements server operating system upgrades and enhancements.

  • Prepares specifications for server hardware and software environments that adhere to technical standards and ensures interoperability with other servers in the organization.

  • Responds to emergency calls relating to server performance, diagnosis of problems, and repairing problems.

  • Maintains data integrity and security of server software.

  • Monitors server performance including DASD, CPU, network, and memory utilization.

  • Responsible for creating and maintaining user accounts and associated databases such as NIS, LDAP, and Automounter.

  • Responsible for creating and maintaining host and system databases, including DNS.

  • Has knowledge of cross-platform server backup packages such as Legato or Veritas and their implementation.

  • Has knowledge of server Reliability, Availability, and Serviceability (RAS) features and the ability to properly configure a system to take advantage of all available RAS features.

  • Has knowledge of RAID configurations including striping and mirroring and the ability to correctly configure DASD to optimally meet all business requirements including cost and performance.

  • Has knowledge of server clustering techniques.



Software Development. Building Reliable Systems
Software Development: Building Reliable Systems
ISBN: 0130812463
EAN: 2147483647
Year: 1998
Pages: 193
Authors: Marc Hamilton

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net