Developer Role and Responsibilties
We are looking to promote a junior developer to the role of developer. As Engineering Manager, my responsibility is to outline the role and responsibilties. Here is my first pass. Feel free to tear it apart so that I may adjust my expectations, or use it!
Developers are responsible for implementing software to achieve the business needs and goals of the project set forth by project stakeholders. Developers, with guidance from team leads, managers and architects, fill in the gaps between business requests and software implementation, including design, modeling, and analysis. Developers are expected to work in a dynamic and fast paced environment. Developers may code individually, in pairs, or collaborate with arbitrary members of a team.
Developers are expected to communicate clearly and efficiently with their manager and product stakeholder. Developers should be vigilant about obstacles that will impede reaching their development goals, both in quality and timeliness as agreed upon with the stakeholder. Developers are expected to communicate and revise expectations as obstacles come up; they are expected to raise any problem up through the management chain until these problem is given the attention it needs and/or is resolved.
Specific responsibilities of the Developer include:
- Evaluate, assess and recommend software solutions
- Break down solution into discrete milestones that map a general path from a request’s concept to deployment
- Design and model solutions that fit the problem domain
- Revisit and reevaluate proposed solutions as new information is introduced into the problem domain
- Implement software according to current best practices
- Use lean and agile principles as guides to efficient development practices
- Communicate with project stakeholders to discuss timeline and delivery expectations. Communicate and revise expectations as needed
- Raise and propagate concerns, with team and stakeholders, that will delay project delivery or reduce quality of shipped software
- Build flexible data models and seamless integration points
- Coordinate with other developers and software professionals
- Continue to learn and hone skills as software developer
- Implement new, and modify existing, applications, feature requests and software tools
- Hunt and fix bugs
- Maintain existing software
- Develop user interfaces and client displays- Test software; where possible provide automated regression testing, green path, edge and corner case testing
- Document setup, deployment and any other non-trivial processes
blog comments powered by Disqus