Project roles

Content:

  1. Introduction
  2. Table

Introduction:

Different companies use titles different. Big companies are different from small companies. Companies only developing for itself are different from companies developing for other companies. Companies developing custom software are different from companies developing plastic wrapped software products. US companies are different from Europena companies. And so on.

But even though it probably not match your organizaion perefctly then I hope that this little overview should still provide some insigth in the roles within a software development project. And please don't take it too literal or serious.

Table:

Titles Role Characteristics good Characteristics bad
CTO
CIO
Head of IT
SVP IT
Tasks:
  • Manage IT budget
  • Hires next level of managers
  • Responsible for all IT
  • Has final word in all matters not requiring CEO or board approval
Has the decision power and the overall responsbility for everything.
Understand how IT can support the business.
Willing to take calculated risks.
Focused on cost reduction.
Very risk adverse.
Head of engineering
VP engineering
Head of development
VP development
Tasks:
  • Manage development part of IT budget
  • Hires managers in development organization
  • Responsible for all development whether inhouse or provided by external vendors or hybrid
Understand when an IT project is starting to go off track and how to get it back on track. Focused on increasing budget and head count.
Head of operations
VP operations
Tasks:
  • Manage operations part of IT budget
  • Hires managers in operations organization
  • Responsible for all operations whether inhouse on premise or in cloud or outsourced
Get operations involved early in all IT projects. Tries to block all changes.
Project manager Tasks:
  • Responsible for one or more specific projects
  • Responsible for both project plan (resources, schedule and cost) and execution of plan
Able to manage customer/stakeholder expectations.
Able to motivate the team to work hard and efficient.
Is just a highly paid admin that produce reports to management that does not reflect reality.
Tech lead
Team lead
Group lead
Technical project manager
Tasks:
  • Responsible for handling low level assignments to team members
  • Helps developers that run into technical issues.
Has a solid experience and really understands the technical issues.
Knows the team so assignments go the right person.
Able to solve minor technical issues.
Knows who to involve for major technical issues.
Attempts to be a project manager instead of focusing on the technical issues.
Senior software engineer
Senior software developer
Senior programmer
Tasks:
  • Understand the requirements in detail
  • Responsible for low level design
  • Responsible for code review and other developer activities to ensure quality
Knows the system very well.
Good at coming up with simple solutions that actually works.
Good at mentoring other developers.
Avoids all work via various BS excuses.
Software engineer
Software developer
Programmer
Tasks:
  • Write the actual code !!!!
Knows a large number of programming languages.
Knows a large number of frameworks and standard patterns.
Don't know how to translate problem->algorithm->code and therefore end up randomly using copy paste of existing code.
Business Analyst
BA
Tasks:
  • Document the requirements in detail to be used by customer/stakeholders, project manager, tech lead, senior developers and developers
Has a deep insight in software/domain and are able to clarify unclear areas with customer/stakeholder. Produces large quantities of text and pictures that noone understands what means.
Technical writer Tasks:
  • Produces documentation for system - both end user and developer documentation.
Has a deep insight in software/domain and are able to actually explain how the system works. Produces large quantities of text and pictures that does not reflect reality because the person don't know.
QA engineer
Test engineer
Tasks:
  • Create test plans
  • Execute test plan and find bugs in system
Knows the system and where the tricky area most likely to have bugs are.
Good at envisoning all types of scenarios that may happen in production.
Just go through all the happy scenarios based on requirements.
Integration Engineer
IE
Tasks:
  • Responsible for getting all the components in the system installed and configured to work together
Has a very deep understanding of how the entire system works. Use try and error method.
Database Administrator
DBA
Tasks:
  • Together with developers and possible a database architect responsible for logical database design
  • Possible together with a database architect responsible for physical database design
  • Support operations when system goes into production
Understands how the database works internally, which can be important for understanding performance impact. Just a SQL super-user.
System Engineer
System Administrator
sysadm
Tasks:
  • Install hardware
  • Install and configure base software like operating system
  • Maintain both hardware and software when system goes into production
Understands the operating system.
Knows how to keep system uptodate with patches.
Good at scripting.
Just follows written guides and do as they say.
Network engineer Tasks:
  • Install and configure network boxes
  • Support operations when system goes into production
Really understand how the network protocols work at different levels. Just plug everything in and see if it works.
Enterprise architect Tasks:
  • Understand the business side
  • Understand all the IT systems
  • Propose changes to IT systems that provide business value (more revenue and/or less cost)
Proposed projects actually provide the predicted business benefits. Just a PowerPoint creator for the CTO/CIO.
Solution architect Tasks:
  • Understand all systems in scope for project and their interfaces
  • Responsible for overall solution works (scalability, availability, security, maintainability etc.)
Have a good feeling for what only works on paper and what also works in real world. Just an overpaid BA.
Software architect
Application architect
Tasks:
  • Understand the application
  • Responsible for split in tiers and layers
  • Responsible for choice of tech stack (programming language, frameworks, tools etc.)
Able to find a good solution for any problem within the application. Maintains a large number of diagrams that does not reflect how the application really works.
Infrastructure architect Tasks:
  • Responsible for design server hardware configuration
  • Responsible for design server base software configuration
  • Responsible for design networks
  • Responsible for sizing and capacity planning
Understands what can provide sufficient capabilities without being prohibitive expensive. Just run vendors configuration tool.
Database architect Tasks:
  • Together with developers responsible for logical database design
  • Responsible for physical database design
Deep understanding of how the database works internally. Just generate some ER diagrams from database tables created by developers.
Data architect
Information architect
Tasks:
  • Know what data is available in which systems
  • Know how data can be utilized to provide business value
Really understands what the data is (semantics) Just produces long lists with database tables and columns.
Security architect Tasks:
  • Responsible for that final solution are secure
  • Responsible for documenting that final solution meet security requirements
Deep understanding of overall solution.
Deep understanding of possible security threats.
Just use OWASP checklist.

Yes - there are a lot of architect roles listed - you may consider it a bias from my side. :-)

Article history:

Version Date Description
1.0 April 1st 2008 Initial version (in Danish) published on Eksperten.dk
1.2 February 14th 2010 Minor changes
2.0 April 22nd 2018 Translation to English and complete reformatting and publishing here

Other articles:

See list of all articles here

Comments:

Please send comments to Arne Vajhøj