Developer Levels
ITIMS currently has two developer levels with specific expectations on qualifications, development practices, mentorship, and other responsibilities. This page documents those expectations in an effort to be transparent about the skills and experiences we find most valuable for software developers and as a tool for our developers to work with their supervisors and teams to cultivate them.
Developer
Summary
The Developer is a participant on their team and in the community of developers at the Library. They work with stakeholders, operations staff, and team members to design, implement, test, document, and maintain the software and infrastructure underpinning the library’s work. They are effectively implementing existing practices and further developing their skills alongside their colleagues.
Required Qualifications
- Bachelor’s degree or equivalent
- 2+ years of experience
- Experience with at least one programming language.
- Experience building web applications that drive workflows and meet contemporary usability guidelines using modern HTML, CSS, and Javascript frameworks.
- Proficiency with common tools for source code version control, collaboration, and deployment; preferably Git, GitHub, Capistrano, and Ansible.
- Ability to work in a Linux-based environment
- Willingness to learn new technologies and data/metadata formats
- Strong oral and written communication skills
Expectations
- When Writing Software
- You are an active participant in collaborative software development including pair programming and code review.
- You participate in open source software.
- You take the lead in directing and implementing solutions to moderately complex, loosely scoped problems, engaging with stakeholders as needed.
- You are comfortable working on most issues independently.
- You are developing techniques to improve software quality and implementing those which have been agreed on by your team.
- You are able to recognize when you’re stuck and reach out to your colleagues for support.
- You write code which is well tested and solves stakeholder’s problems.
- As a Team Member
- You recognise that a strong team is one which brings together the most diverse group of people. You create a genuinely inclusive team environment where everyone feels welcome, heard and valued, no matter what their background. You act as a role model in actively encouraging everyone to value difference, and you're quick to challenge any behaviours which damage this.
- You enable other engineers on your team to be successful.
- You are building skills to become comfortable in sharing our work. You may present at conferences or in collaborations.
- You learn from failure: you admit mistakes, avoid assigning blame, and you share your learnings with the team.
- Working with Stakeholders
- You can work with other team members to discuss feature requirements with stakeholders.
- You communicate information you receive from stakeholders with the rest of the team.
Responsibilities Breakdown
- Writing and Maintaining Software - 70%
- Open Source Community Engagement - 10%
- Building Development Skills - 15%
- Working with Stakeholders - 5%
Senior Developer
Summary
The Senior Developer is a technical leader on their team and in the community of developers at the Library. As developers they work with stakeholders, operations staff, and team members to design, implement, test, document, and maintain the software and infrastructure underpinning the library’s work. As a senior developer they lead product design, mentor other developers, and work to build a community of modern and effective development practice.
Required Qualifications
- Bachelor’s degree or equivalent
- 7+ years work experience
- Demonstrated experience with at least two programming languages
- Minimum three years experience, with similar responsibilities, working in an environment that includes complex software systems, object-oriented programming, web-based applications and services, and distributed architecture.
- Experience building complex web applications that drive workflows and meet contemporary usability guidelines using modern HTML, CSS, and Javascript frameworks.
- Demonstrated experience with test-driven development.
- Experience researching, developing, and implementing software practices in a collaborative environment.
- Proficiency with common tools for source code version control, collaboration, and deployment; preferably Git, GitHub, Capistrano, and Ansible.
- Ability to work in a Linux-based environment
- Willingness to learn new technologies and data/metadata formats
- Strong oral and written communication skills
- Experience in mentorship
Expectations (In Addition to Above)
- When Writing Software
- You are able to break down complex problems into knowns and unknowns and develop potential solutions.
- You are an active participant in accurately scoping work cycles to best support our users.
- You contribute work to open source software and lead cross-institutional initiatives to ensure the software we use is well supported.
- You act as an expert in one or more projects or fields and are routinely sought out for opinions and guidance.
- You proactively analyze and provide recommendations for improvements in software architecture to increase the system’s reliability and simplify maintenance for the team.
- You are adept at deployment of our software and supporting ongoing maintenance of its systems.
- Your code is engineered in a way that is easily understandable to colleagues and efficiently solves stakeholder requirements.
- As a Leader
- You recognise that a strong team is one which brings together the most diverse group of people. You create a genuinely inclusive team environment where everyone feels welcome, heard and valued, no matter what their background. You act as a role model in actively encouraging everyone to value difference, and you're quick to challenge any behaviours which damage this.
- You act as a mentor to other developers on the team, other staff writing software, and/or developer interns.
- You take the lead on directing and implementing solutions to significantly complex, unscoped problems.
- You improve the overall quality of engineering done on your team and consistently take steps to support the growth and success of your teammates.
- You often act as a representative to our team in collaborations and at conferences.
- You participate in giving training courses and initiate leading skill-sharing sessions with other staff.
- You act as a project lead for large projects - supporting colleagues by triaging project boards, analyzing timelines, and ensuring work is actionable towards a specific goal in that project.
- You assess potential hires on their technical ability.
- Working with Stakeholders
- You are adept at working with stakeholders to find technically ideal solutions to their use cases.
- You are able to present technical concepts in a way that non-technical stakeholders fully understand. You are able to effectively communicate complex concepts including systems, but also processes and plans. Your written communication is clear, concise and uses simple language.
- You are able to accurately triage issue priority with stakeholders including recognizing and independently acting upon urgent problems that are negatively impacting our colleagues’ work.
Responsibilities Breakdown
- Writing and Maintaining Software - 50%
- Working with Stakeholders - 15%
- Mentorship - 15%
- Research, Implementation, and Distribution of Development Practice/Processes - 10%
- Open Source Community Engagement - 10%