Engineering Project Roles#
These are the engineering roles and responsibilities on a project team. This is how we role.
Technical Roles Throughout Bixal#
- Back End Development Practice Area
- Lead Software Architect
- Technical Lead
- Senior Back End Developer
- Backend Developer
- Backend Intern
- JavaScript
- JavaScript Lead
- Senior JavaScript Developer
- JavaScript Developer
- Presentation Practice Area
- Front End Lead
- Senior Front End Developer
- Front End Developer
- Operations and Infrastructure Practice Area
- Infrastructure and Operations Lead
- Site Reliability Engineer
- Infrastructure Architect
- System Administrator
- Technology Support Specialist
- Quality Assurance Practice Area
- Quality Assurance Engineer
- Information Security
- Information Security Officer
Back End Development Practice Area#
A Backend Developer has fluency or near fluency in one or more languages. They are able to help collect requirements, design, and build components of applications. They are familiar with the tooling of the technology and framework of their assigned projects and can work on most component level tasks with minimal guidance.
Technical Lead#
Skill | Level |
---|---|
Agile mindset | Practitioner |
Communication | Working |
Team collaboration | Working |
Working within constraints | Working |
Leadership and guidance | Working |
Strategic thinking | Awareness |
System Design | Awareness |
System Administration | Awareness |
Application Command Line Tools | Working |
Application Design | Practitioner |
Quality Code and Standards | Practitioner |
API Design | Working |
Identity and Role Management | Working |
Presentation | Awareness |
Service Oriented Architecture | Working |
Redundancy Patterns | Awareness |
Presentation Practice Area#
Front End Developers most often work within the presentation layer of applications and often have fluency or near fluency in one or more client side languages. They are able to help collect requirements, design, and build components of Front End applications and themes. They are familiar with the tooling of the technology and framework of their assigned projects.
Front End skills commonly used within our project work.
- Web APIs / HTML Semantics
- CSS Styling, Layout, and Animations
- BEM Naming Conventions
- SASS and other CSS Extension Languages
- Twig Templating Engines
- Component based theming
- Drupal CMS Application Design
- Configuration Management
- Composer and Drush Command Line Tools
- JavaScript
- JavaScript Web Application Design
- React JavaScript Framework
- jQuery DOM manipulation
- Gulp and Webpack Task runners and Build Tools
- Mobile First Responsive Web Design
- 508, WCAG, and Aria Accessibility
- USWDS Web Design System
- Pattern Lab Atomic Design Tooling
- Docker based Local Development
- GIT Version Control
- Web Performance
- Browser Development tools
- Browser and Platform Testing
- Data formats (XML, JSON, YML)
- Data flow and Restful APIs
- Package and Dependency Managers
- Search Engine Optimization (SEO)
- Interactive Design
- User Experience
- Prototyping and Design Tools
- Content Strategy
- Information Architecture
- Ticketing and Triage
- Code Reviews
- Estimation and Planning
Front End Roles#
- Developer roles align into three categories; Lead, Senior Developer, and Developer.
- Each category is expected to have skill level inheritance. For example, A Senior Developer will have working knowledge of Version Control and so should it be for Lead Developers.
- While Front End roles are often cross functional team members, there are high level considerations that place skills into practice which include Technical and Administrative contributions.
Generally speaking, the following Administrative skills should be considered for each of the three Developer roles.
Lead#
Skill | Level |
---|---|
Agile mindset | Practitioner |
Communication | Practitioner |
Team collaboration | Practitioner |
Working within constraints | Practitioner |
Leadership and Guidance | Practitioner |
Estimation and Planning | Practitioner |
Strategic thinking | Practitioner |
Innovation and Solutions | Practitioner |
Mentoring and Training | Practitioner |
Standardizing Procedures | Practitioner |
Risk Evaluation | Practitioner |
Senior Developer#
Skill | Level |
---|---|
Agile mindset | Working |
Communication | Working |
Team collaboration | Working |
Working within constraints | Working |
Leadership and Guidance | Awareness |
Estimation and Planning | Working |
Strategic thinking | Working |
Innovation and Solutions | Working |
Mentoring and Training | Awareness |
Standardizing Procedures | Working |
Risk Evaluation | Working |
Developer#
Skill | Level |
---|---|
Agile mindset | Awareness |
Communication | Working |
Team collaboration | Working |
Working within constraints | Working |
Leadership and Guidance | Awareness |
Estimation and Planning | Awareness |
Strategic thinking | Awareness |
Innovation and Solutions | Awareness |
Mentoring and Training | Awareness |
Standardizing Procedures | Awareness |
Risk Evaluation | Awareness |
Front End Lead#
Our Front End Leads are responsible for projects, people, and innovations. This requires a broad skill set for interacting and communicating with multiple teams and "pre-sales" activities. Often, they will provide training, documentation, ticketing, code-reviews, and mentorship while supporting personnel management. It is expected that leads will have a deeper understanding of the technology stack and how to implement strategic solutions within projects that reduce risk and provide project success.
Responsible for project deliverables, ensuring that:
- Clear descriptions and estimates of technical deliverables support and determine the scope, approach, schedule, and budget.
Responsible for co-leading projects with project manager(s), ensuring that:
- Team design and decisions around technical resources for assignments are accurate and effective.
- Provide information to clients regarding the technical deliverables or project plan.
- Ensure that the project manager is made aware of and understands all technical issues and risks, including the team’s ability to deliver on-time and within budget.
Skill | Level |
---|---|
Local Development | Practitioner |
Drupal Application Design | Practitioner |
JavaScript Application Design | Working |
Data flow and APIs | Practitioner |
Application Command Line Tools | Working |
Version Control | Practitioner |
Quality Code and Standards | Practitioner |
Site Building and Module Configuration | Practitioner |
Web Design Systems | Practitioner |
Design Auditing | Practitioner |
Naming Convention Methodology | Practitioner |
Scoping and Triage | Practitioner |
Content Strategy | Working |
Backend Technologies | Working |
Senior Front End Developer#
With proven problem-solving skills, Senior Front End Developers typically work more independently and in support of guidance from Front End Leads. They will help to execute and develop solutions from well-rounded technical and user experience considerations providing estimates, risks, and prototypes. Through analysis and experience they should be comfortable working in and taking on many different Front End technologies while pursuing additional depth in both CMS and JavaScript Applications. Mentoring others is an option for those who seek it. However, it is expected that they will support Front End Developers with guidance, technical knowledge, and quality control.
Responsible for theme code and site configuration, ensuring that:
- Code and configuration are organized, well maintained and documented.
- People working on it know how it is organized, and where to add/edit things.
- Responsible for "low level" support for people working on theming or configuration tickets.
- Generally, does all of the theme level work themselves
Responsible for interactive components, ensuring that:
- The components are properly aligned with design, functionality, and accessibility requirements.
- People working with the components know how they are built, and where to add/edit things.
Skill | Level |
---|---|
Local Development | Working |
Drupal Application Design | Working |
JavaScript Application Design | Awareness |
Data flow and APIs | Working |
Application Command Line Tools | Working |
Version Control | Working |
Quality Code and Standards | Working |
Site Building and Module Configuration | Working |
Web Design Systems | Awareness |
Design Auditing | Awareness |
Naming Convention Methodology | Awareness |
Scoping and Triage | Working |
Content Strategy | Awareness |
Backend Technologies | Awareness |
Front End Developer#
With skills ranging from entry to mid-level, our Front End Developers will focus mostly on implementing theme code and site configuration. Awareness of expected skills for being effective within projects will be garnered through standard operation procedures and learning opportunities. Code and skill improvements should be tracked and organized with more experienced developers.
Responsible for theme code and site configuration, ensuring that:
- They contribute to the building of web sites by taking design mockups and implementing them in part or in whole within responsive templates and/or themes.
- Code and configuration are maintained, organized, and implemented per guidance and documentation.
Skill | Level |
---|---|
Local Development | Working |
Drupal Application Design | Awareness |
JavaScript Application Design | Awareness |
Data flow and APIs | Awareness |
Application Command Line Tools | Awareness |
Version Control | Working |
Quality Code and Standards | Awareness |
Site Building and Module Configuration | Working |
Web Design Systems | Working |
Design Auditing | Awareness |
Naming Convention Methodology | Awareness |
Scoping and Triage | Awareness |
Content Strategy | Awareness |
Backend Technologies | Awareness |
Compliance Practice Area#
Information Security Officer#
An Information Security Officer owns the process of all assurance activities related to the availability, integrity and confidentiality of customer, employee and business information, in compliance with the company information security policies.
They are familiar with with common information security management frameworks such as NIST, ISO/IEC 27001, ITIL, or COBIT. The Information Security Officer has the ability to lead the organization through HIPAA, PCI DSS, SOC1/SOC2 or CJIS compliance efforts.
Skill | Level |
---|---|
Leadership and guidance | Working |
Strategic thinking | Working |
Identity and Role Management | Working |
IS Strategic Planning | Working |
Technology Risk Management | Working |
Agile mindset | Working |
Communication | Working |
Team collaboration | Working |
Working within constraints | Working |
System Design | Awareness |
System Administration | Awareness |
Application Command Line Tools | Practitioner |
Application Design | Practitioner |
Quality Code and Standards | Practitioner |
API Design | Awareness |
Skills Description#
- 508 and Accessibility. Understands 508, accessibility needs, and tooling. Is able to translate complex designs and prototypes to accessible formats.
- Agile Mindset You know about agile methodology and can apply an agile mindset to all aspects of your work. You can work in a fast-paced, evolving environment and use an iterative method and flexible approach to enable rapid delivery. You are unafraid to take risks, willing to learn from mistakes and appreciate the importance of agile project delivery for digital projects in government. You can ensure the team knows what each other is working on and how this relates to practical government objectives and user needs.
- API Design and Concepts. Understands what an API is, concepts, and design. E.g. - Authentication and Authorization, Tokens, CRUD, REST, Headers, etc.
- Authentication and Authorization. Understands modern authentication and identity works in a distributed system.
- CI/CD, Cron and Task Runners. Understands enough bash and framework tooling to automate portions of the software development lifecycle using task runners (Jenkins, pipelines, CircleCI, etc.), Lambda, and cron. Understand framework tooling well enough to set up tests for linting, deprecated code, coding standards, etc.
- Code Review. Understands how to merge multiple branches, resolve conflicts, manage workflow, and provide constructive feedback to pull requests.
- Configuration Management. Understands how to use framework configuration, and environment variables to configure an environment in line with a 12 factor application.
- Content Strategy. You can intake content design comps and provide timely feedback for both the arrangement, display, and organization of content. You help create and implement restrictions and workflows for administrative content tasks. You support web metrics and search engine optimization as well as site structure and navigation.
- Command Line Tools. You understand the proper tools to use that allow access and interface with local and remote environments from the command line. You can also create your own scripts and tools that help you work more efficiently and are able to share those with the team.
- Communication. You can communicate effectively across organizational, technical and political boundaries, understanding the context. You know how to make complex and technical information and language simple and accessible for non-technical audiences. You can apply foundational concepts of layout, spacing, color, type, iconography, use of imagery to ensure that content is legible and readable and that users see and understand interactions. You can advocate and communicate what a team does to create trust and authenticity and can respond to challenge.
- Community Awareness and Evaluation. Understands when to use community code vs creating custom code.
- Design Auditing You can intake design comps and provide timely feedback for both visual and interactive design elements to the design team.
- Design and Prototyping Tools. Has awareness around design tools (adobe, sketch, etc.) and how to work with designers to develop workable prototypes.
- Data Flow and APIs You take charge of how data is stored, maintained, and delivered to the user interface. You understand how to securely consume, and change data received from user interaction. Often times you are called upon to develop custom presentations and workflows from multiple data sources.
- Data Flows and Diagrams. Understands dataflow and is able to diagram a process, workflow, or system data flow.
- Database Migrations. Understands migration process in depth and can guide, architect and execute a complex one using the frameworks migration API.
- Dependency Management. Understanding of how dependency management is accomplished in their language or framework.
-
Drupal API. Understanding of Drupal 8 APIs (Migrate, Form, Cache, Batch, etc.).
- Drupal API Endpoints. Understanding of the various ways you can expose a Drupal endpoint for API consumption.
- Drupal Application Design You lead the effort in the applications quality and development workflow. You support or implement processes and continuous integration efforts. You architect and maintain the core code and varying environments for content production and iterative development. You often focus on stability and security, guiding the overall improvement of each implementation.
- Drupal Behaviors. Understands how to attach JavaScript as a scoped behavior.
- Drupal Breakpoints. Understands how breakpoints and image styles are used to promote consistency through an application.
- Drupal CKEditor. Understands how to configure CKEditor within the Drupal framework.
- Drupal CLI. Understands how Drush and Drupal Console can be use to deploy changes, assist in migrations, and debugging applications.
- Drupal Custom Entities. Understanding how and why to create a custom entity in Drupal.
- Drupal Custom Fields. Understanding how and why to create a custom field type in Drupal.
- Drupal Form API. Understands how to utilize Form API.
- Drupal jQuery. Understands Drupal's implementation of jQuery and how to utilize behaviors.
- Drupal Libraries. Understands how to use Drupal Libraries API to properly scope dependent libraries.
- Drupal Programmatic Menus. Understands how to programmatically create and update menu and menu links.
- Drupal Programmatic Blocks. Is able to programmatically create blocks and block admin forms.
- Drupal Template Preprocessor. Is able to write template preprocessor.
- Drupal Theming. Understands the components of a theme and how to set up and organize assets.
- Drupal Twig Components. Is able to create components using Twig and Drupal functionality.
- Drupal Site Building and Module Configuration You are comfortable developing low-code page content structures and providing value with implementing and configuring community provided modules. It is your responsibility to maintain these configurations and the quality of any change request.
- Drupal Solr Configuration. Understands how to implement Solr in Drupal and create a search index and facets.
- Drupal Views. Is able to create maintainable and reusable views using best practices.
- Framework Community Awareness. Knowledge and awareness of community tools and how they improve features without adding bloat.
- Framework Content Modeling. Understands how frameworks model reusable content and ensures that content is easy to enter, searchable, sortable, etc. when applicable.
- Framework Best Practices. Understands the basics of how to work in a framework, and understands the best practices around common tasks.
- Framework Scaffolding Tools. Understands how to use community tools to speed up common and generic tasks.
- Functional Programming and Design Patterns. Understands what functional programming is, where it's used, and the design patterns.
- Git. Understands how to use git, workflows, manage pull requests, and various branching methodologies.
- HTML5. Can write semantic HTML5.
- JavaScript. Understands the tooling, libraries, and implementation of native JavaScript.
- JavaScript Application Design. You lead the effort in the applications quality and development workflow. You support or implement processes and continuous integration efforts. You architect and maintain the modular component compositions that create performant and stable user interfaces with accessibility and scalability in mind. You are sometimes called to guide conversations around progressive decoupling and how/or when to integrate them in with monolithic content systems.
- Load Testing. Can create performance testing scripts and generate benchmarks.
- Leadership and Guidance. You can interpret vision to lead on decisions. You can create a collaborative environment and sustain a good service. You can understand and resolve technical disputes across varying levels of complexity and risk. You can solve issues and unblock problems. You know how to drive teams and set the pace, ensuring teams are delivering. You can manage risk, including effectively managing and tracking the mitigation of risks. You can manage various dependencies across teams, departments and government as a whole.
- Mentorship. Promotes learning and supports more novice developers in both technical and non-technical skills at various skill levels.
- MVC Design Pattern. Understands what the MCV design pattern is and how it's used.
- Naming Convention Methodology You are fluent or nearly fluent with one or more naming convention methodologies and how to implement them within the code base.
- Object Oriented Programming. Understands design patterns and OOP principals.
- Object Relation Mappings (ORM). Understands what an ORM is, why it's used, and the pro's and con's.
- Patching and Updating Framework. Knows how to patch core framework and/or contributed modules (and create custom patches when needed) and composer functionality.
- Presentation Framework Tooling. Is aware of community tooling and presentation frameworks which help build component based presentation, compile scripts, css, scss, etc.
- Prototype Presentation Components. Is able to use tooling to quickly prototype and develop generic abstractions.
- Quality Code and Standards You can produce code that follows the standards that the project decides to use for each language. In addition, one should also be aware of how to produce code that follows best practices and is maintainable, commented appropriately, readable (easily scanned), and provides for easy reuse. Knowledge on how to use automated tools such as static analysis, linting, testing, and other tools that allow for quality code and less regression is a huge plus.
- Relational Databases. Understands relational databases and topics such as connection strings, pk/fk's, constraints, and the various relationships they define (e.g. one to one vs one to many).
- Reusable Code. Understands how to write reusable code, and takes the time to consider how a similar feature might be needed in the future.
- Responsive Design. Understands how to translate complex designs and prototypes to responsive HTML5.
- SASS, SASS Modules, SASS Functions, and Mixins. Understands SASS and is able to create reusable mixins.
- Scoping and Triage From experience or through requirements gathering, you can organize ticketing details and acceptance criteria. You may also be called up on to review and provide guidance for resolving "bugs" in the system. When needed you can deliver estimates for completion as well as value and risk assessments.
- Services and Dependency Injection. Understands what a service is and can implement it utilizing dependency injection.
- Strategic Thinking. You can take an overall perspective on business issues, events, activities and discuss their wider implications and long-term impact. This could include determining patterns, standards, policies, road maps and vision statements. You know how to focus on outcomes rather than solutions and activities.
- System Design You can define the architecture, modules, interfaces, and data for a system to satisfy specified requirements. Systems design could be seen as the application of systems theory to product development. There is some overlap with the disciplines of systems analysis, systems architecture and systems engineering.
- System Administration You are responsible for the upkeep, configuration, and reliable operation of computer systems; especially multi-user computers, such as servers. The system administrator seeks to ensure that the uptime, performance, resources, and security of the computers they manage meet the needs of the users, without exceeding a set budget when doing so.
- Task Estimation and Breakdown. Is able to break down epics and stories to the task level, and provide estimates which take into account unknowns and confidence interval.
- Team Collaboration. You can contribute to the work of the organization, building successful teams through understanding team styles and influencing as well as motivating team members. You know how to give and receive constructive feedback, facilitating the feedback loop. You can facilitate conflict resolution within teams, ensure the team is transparent and that the work is understood externally. You can help teams maintain a focus on delivery while being aware of the importance of professional development.
- Testing. Understands unit testing and how to write unit tests in their framework.
- UML. Understands and can create UML diagrams.
- Working Within Constraints. You understand and can work within given constraints (including but not limited to technology and policy, and regulatory, financial and legal constraints). You know how to challenge constraints that can be changed. You can ensure compliance against constraints by adapting products and services where needed.
- Web Design Systems You know how to quickly understand Design Systems and how to integrate them within projects. You participate in customizing designed components and adding
- Web Servers. An understanding of how a web server or reverse proxy works, common ports, and the networking involved.
Level Description#
- Working A knowledge of how to make something work without any deeper understanding of why it works, or of how to fix it if it breaks.
Documentation built with MkDocs using a modified Windmill Dark theme