This Article describes the various types of Responsibilities involved in developing software projects
Product Planning Related
• Manage the Vision and Strategy of a Project
• Control the feature roadmap of the project
• define integration points within the Product which enable internal and external users to provide feedback
• gather user feedback, communicate with users and prioritize feature requests
• prioritize bugs
• Competition review
o subscribe to news, resources and competitor blogs / feeds
o regularly post tidbits of information w.r.t competition on internal lists
o study new releases by competition and conduct atleast one structured presentation for the benefit of all teams on a regular basis (monthly / quarterly)
• Document requirements and specifications
UI Prototyping Related
• Investigate competition and check various alternatives for performing a given task
• Generate prototypes using Axure and Balsamiq
• Usability Testing - Hallway / Focus Groups / Staging etc
UI Design Related
• design the graphics, flash, images, icons, html, css and javascript
UI Text Related
• write the labels, text, instructions, error messages on every single page of the UI
• write every email that will be sent to users from the software
User Experience related
• Reviewing user experience of the product as a whole
• Ensuring UX is intuitive and kick-ass
Architecture Related
• Platform Selection
• Module design
• Define the high level design of the project
• Define the Deployment Architecture
o How will the modules be deployed
o Reverse proxy setup
o Load Balancer Setups
o Vertical/Horizontal Partitioning
• Data structure architecture
o Determine the optimal way in which data will be stored - RDBMS / OODBMS / Proprietary Format etc
o Database structure and architecture
o Clustering setups
o Indexing strategies
o Archival strategies
o CDN
• Caching architecture and platform
• Storage Architecture
o SAN configuration
o RAID configuration
• Conduct relevant tests to determine the most suitable architecture for all of the above
• Perform relevant research to make decisions on all of the above
• Document of all of the above in detail after confirmation
• Document any Complex algorithms
• Conducting generic training sessions on scalability, architecture and design
• Conducting specific training sessions on Project Architecture
Dev Related
• Test driven development
• Writing Unit Tests with close to complete coverage
• High and low level design
• Coding (Java / C++ / C# / Ruby / PHP / etc)
• Frontend Coding (Javascript, Ajax, jQuery, Flex, Silverlight etc)
Testing Related
• Automating Testing
• Planning and writing Functional Tests
• Planning and writing Stress Tests
• Planning and implementing Continuous Builds and Continuous Integration
• Implementing test coverage reports for Unit Testing and Functional Testing
• Defining manual test cases and overseeing Manual Testing process
QA Management Related
• Identifying relevant testing tools and technologies for different test requirements
• Defining testing processes across the organization
• Conducting regular training courses on automated testing
• Inspecting, improving and evolving our Project Development Processes
Delivery and Process Related
• Ensuring all of the below as a part of ensuring process adherance -
o Agile dev processes are being followed
o TDD is being followed
o Daily stand-ups and weekly iterations are being conducted
o All tasks, features, bugs are tracked through our Issue Tracker
o Continuous Integration is functional
• Ensuring documentation of Architecture
• Ensuring our Project Development Process is followed to the tee
• Ensuring all tasks have estimates associated with them, and all releases have schedules associated with them
• Maintaining the heartbeat of a project
• Ensuring timely delivery of a Project and keeping dev teams and other teams informed of timelines
• Publishing an accurate Release log upon release
• Ensuring test coverage for unit tests and functional tests is in line with our defined standards
User Documentation Related
• Maintaining the User manual
• Defining the structure of the user manual
• Writing articles within the user manual
• Coordinating with support, sales and other teams to identify documentation requirements
• Ensuring all new features are adequately documentated upon release
• Encouraging community participation in the documentation and corresponding translation efforts
People Management
• Managing the team
• Resource allocation
• Providing feedback to team members
• Motivating the team regularly
• Being available to resolve any issues of any team member
• Recruitment
• Managing and implementing Training processes for team members
• Appraisal Management
Marketing Related
• Evangelism & Social Media Marketing
• Blogging about the project, its features, releases, usage etc
• Managing relationships with the beta testing community within and outside the organization
System Administration Related
• Defining the server specifications, and network topology of the deployment
• Managing and monitoring server deployments
This Article describes the various roles and respective designations involved in developing software projects
Roles represent a collection of Responsibilities that will be carried out by an individual. Every designation in the product engineering team is a part of one of the below roles.
Prior Reading
• Types of Responsibilities
Product Owner Role
• Intro
o A Product Owner as the name suggests own one or more Projects in their entirety
o Is a hardcore techie and possesses very good business acumen
o Has exceptional people management skills
o Various individuals responsible for various facets of the project report into a Product Owner
o May not actively code unless the team size / project is very small
o Reports into Management and is responsible for driving the project
• Types of Responsibilities Handled
o Direct Responsibilities
Product Planning Related
People Management
o Oversight Responsibilities
UI Prototyping Related
UI Design Related
UI Text Related
User Experience related
Architecture Related
Dev Related
Testing Related
Test Management Related
Delivery and Process Related
User Documentation Related
People Management
o Oversight responsibility means that the actual responsiblity belongs to someone else in the team under supervision / guidance / monitoring / mentoring of the Product Owner
o If a specific role for a given type of responsibility is absent in that team then that Responsibility becomes the Direct Responsibility of the Product Owner. For eg
if a project does not have a Product Analyst / Business Analyst, this responsibility falls on the Tech Lead / GM / VP of that project
similarly if the project does not have a QA Lead, or a Usability Lead, or a Iteration Manager, all these responsibilities fall on to the Product Owner of that project
o The Product Owner role represents the final authority in Project Development. For eg
even if a Project has a Product Analyst or Business Analyst, the actual vision and feature map will be discussed with and confirmed by the Product Owner of that project
similarly despite a Usability Lead being assigned to a Project, the Product Owner of that project will be involved in and confirm the UI Prototypes
• Hierarchy of Product Owner Designations
o Tech Lead
o GM, Software Dev,
o VP, Software Dev,
o SVP, Software Dev,
Module Owner Role
• Intro
o A Module owner owns a specific module
o a hardcore techie - possesses good business acumen
o People management skills required - responsible for managing a handful of software devz / testers who work on the module
o Reports into Product Owners
• Types of Responsibilities Handled
o Direct Responsibilities
Product Planning Related
People Management
Dev Related
Delivery and Process Related
o Ancillary Responsibilities
UI Prototyping Related
User Experience related
Testing Related
Other responsibilities that Product owners may assign
• Hierarchy of Product Owner Designations
o Module Lead
Product Management Role
• Intro
o Product Management roles assist Product Owners by taking on direct responsibilities involving the product's vision, strategy, path, goals, ui, text etc
o Must have been a developer for several years
o Must have excellent business acumen
o Purely an Individual Contributor, does not require People Management Skills
o Reports into relevant Product Owner
• Types of Responsibilities Directly Handled
o Product Planning Related
o UI Prototyping Related
o UI Text Related
o User Experience related
o In absence of a Iteration Manager, the Product Analyst may manage Delivery and Process related responsibilities
• Hierarchy of Product Visionary Designations
o Product Analyst
o Business Analyst
o GM,
o VP,
o SVP,
Dev and Architect Role
• Intro
o Individual Contributors, do not require People Management Skills
o Report into relevant Product Owner
o Junior designations - Developer with 1-6 yrs experience
o Senior designations
Very senior techie with a large legacy of diverse experience (8+ years)
Spends most time on architecture, and some time on hands-on coding of specific important modules
• Types of Responsibilities Handled
o Junior Designations
Dev Related
Delivery and Process Related
o Senior Designations
Dev Related
Architecture Related
Delivery and Process Related
• Hierarchy of Dev Designations
o Junior Designations
Software Developer
Lead Developer
o Senior Designations
Principal Developer
Architect
Lead Architect
Principal Architect
Delivery and Process Role
• Intro
o Sr developer with 1+ yrs experience in our organization
o Must possess a clear understanding of our processes
o Individual Contributor with some people management and collaboration skills, assists Product Owner in managing people on the project
o Reports into relevant Product Owner
o Typically the delivery role maybe performed by any Sr Developer on the team for a given release (sometimes even part-time)
• Types of Responsibilities Handled
o Delivery and Process Related
• Delivery Designations
o Iteration manager
Testing and QA Role
• Intro
o Well versed with automated testing, defining and writing tests
o Well versed with Unit Testing, TDD, Test driven development, Functional Testing and testing tools
o Well versed with Best practices, coding standards, code coverage tools, code analysis tools etc
o Junior designations
purely individual contributors
report into relevant Product Owner or Senior designations
o Senior Designations
must have significant QA and testing experience (8+ yrs) across diverse platforms
people management skills required. may have Junior designations as reportees
report into relevant Product Owner
• Types of Responsibilities Handled
o Junior Designations
QA Related
o Senior Designations
QA Related
QA Management Related
• Testing Designations
o Junior Designations
Software Developer - Testing
Lead Software Developer - Testing
o Senior Designations
QA Lead
Principal QA
VP, QA
Sample Teams
Below we present two sample team configurations and who fulfills what responsibility
Small Project Team
• Tech Lead
o Direct Responsibilities
Product Planning Related
Architecture Related
Delivery and Process Related
People Management
o Oversight Responsibilities
Dev Related
Testing Related
User Documentation Related
• 2 Software Developers
o Dev Related
• 1 Test Engineer
o Testing Related
• Part time UI lead + UI Associate
o UI Related
• Part time Tech writer
o User Documentation Related
• Part time Sysad
o Sysad related
Fully Mature Project Team
• Tech Lead / GM
o Direct Responsibilities
None
o Oversight Responsibilities
Dev Related
Testing Related
User Documentation Related
Product Vision Related
Architecture Related
Delivery and Process Related
People Management
• Product Analyst / Business Analyst
o Product Planning Related
• 'x' Software Developers + Architects
o Dev Related
o Architecture Related
• QA Lead + Test Engineers
o Testing Related
• Iteration Manager
o Delivery and Process Related
• Part time UI lead + Fulltime UI Associates
o UI Related
• Part time Tech writer
o User Documentation Related
• Part time Sysad
o Sysad related