Software Engineer

Competency-based
ONET: 15-1132.00

1

Years

45

Skills

144h

Related instructions
Classroom instruction topics
  • Organizational alignment and onboarding
  • Data privacy and security compliance training
  • Software release and operations procedures
  • Architecture and resilience patterns
  • Testing and instrumentation practice
  • Career development and mentoring sessions
On-the-job training
  • AD 1.1.1 Design Software
    • Do - Study and learn existing architecture documents used by the team. Participate in an architecture design review of a new or improved feature or system and document the results of the review.
    • Know - Know the basic principles of software architecture design used in the team.
    • Exit - Explain the architecture for the team’s major systems. Successfully contribute to a design review for a new or improved feature or system.
  • AD 1.1.2 Design Software
    • Do - Study and learn existing specifications for the team’s systems. Participate in a team review of system specifications for a new or improved feature or system. Independently propose changes to these document as needed during development.
    • Know - Know how to review and provide input to system specifications for features and systems developed by the team.
    • Exit - Refer to appropriate system specifications for different aspects of the team’s systems. Be able to augment or create specifications for existing or new systems.
  • AD 1.1.3 Design Software
    • Do - Understand some predominant datastores used by the team’s systems. Investigate internal and external platforms for data storage used by other teams.
    • Know - Know of the organization’s best practices around datastore choices and costs and benefits of each. Know how to organize and optimize data for common operations.
    • Exit - Be able to recommend appropriate datastores for new features or systems for the team. Propose drafts for new schema or changes to existing schema.
  • AD 1.2.1 Develop Software
    • Do - Study and learn the basic coding languages used by the organization to develop software. Understand common patterns, libraries and artifacts used to expedite quality code development. Use these tools to develop new or existing features and systems.
    • Know - Know the coding languages, libraries and artifacts used by the organization for efficient software development.
    • Exit - Features and systems developed are accepted. When applicable, able to contribute new features to shared codebases as well.
  • AD 1.2.2 Develop Software
    • Do - Participate on a software team that develops a new or enhanced software systems and learn basic concepts and procedures for developing software. Write and document some code, and refactor some code for a part of a software system.
    • Know - Know the basic software development process used by the organization. Know effective ways to write efficient and correct code that extends on best practices within the codebase.
    • Exit - Successful and active participation on a software development team including writing quality code that is well documented and testable.
  • AD 1.2.3 Develop Software
    • Do - Participate in review of code contributions as part of a peer group. Document the group's findings and recommendations for changes to or reworking of the code.
    • Know - Know how to participate in peer code review. Know how to give and receive constructive feedback to iterate on working solutions.
    • Exit - Able to submit code for review with adequate context and address feedback. Able to give feedback to peers on quality of code.
  • AD 1.3.1 Test and Validate Software
    • Do - Independently identify positive and negative test vectors for all code contributions. Collaborate with team as needed for more complex dependencies and side- effects. Create test plans for code contributions.
    • Know - Know team’s best practices around designing and writing manual and automated tests and process to validate code contributions with test coverage.
    • Exit - Know team’s best practices around designing and writing manual and automated tests and process to validate code contributions with test coverage.
  • AD 1.3.3 Test and Validate Software
    • Do - Understand the team’s integration and end-to-end testing best practices. Augment those test suites as appropriate when contributing code to relevant systems.
    • Know - Know the team’s integration and end-to-end testing best practices.
    • Exit - Additional tests are accepted by team after minimal peer code review.
  • AD 1.3.4 Test and Validate Software
    • Do - Interpret requirements for load testing existing or new systems. Use organization’s best practices to write, perform and interpret load tests.
    • Know - Know capacity limits and known bottlenecks of team’s systems. Know ways to detect and eliminate them when applicable.
    • Exit - Effectively document findings of load tests and ways to reproduce them as needed. Ability to identify and mitigate bottlenecks when applicable.
  • AD 1.4.1 Software Operations
    • Do - Study and learn the organization's process for releasing new features and bugfixes. Understand source code convergence and validation principles within and across teams. Independently release new versions of code for deployment.
    • Know - Know how to develop a release plan for an application. Know how to coordinate between peers within and outside team to effectively release changes.
    • Exit - Independently release and validate new code after peer review and testing.
  • AD 1.4.2 Software Operations
    • Do - Understand deployment best practices and feature rollout strategies within the team. Understand organization-level safeguards and tools in place to assist with deployments.
    • Know - Know deployment and rollout best practices, tools and processes within the team and across the organization.
    • Exit - Propose and execute code deployments after new versions have been released for use.
  • AD 1.4.3 Software Operations
    • Do - Understand the role of on-call engineers, managers and support specialists in mitigating customer impact during operational incidents. Shadow a team member for one rotation to assist with response where appropriate. Study documentation and procedures
    • Know - Know incident response best practices for the team and organization. Know relevant documents that detail incident response procedures.
    • Exit - Be able to effectively shadow an on-call engineer on a rotation. Be able to contribute to incident response and post-mortems.
  • AD 1.5.1 Software Maturity
    • Do - Complete relevant organizational and team-level security trainings. Incorporate learnings into design and development practices.
    • Know - Know of any existing security vulnerabilities in team’s systems and best practices to mitigate introducing new vectors for attack. Know organizational policies around data privacy and security.
    • Exit - Successful completion of security and compliance trainings and ability to incorporate security best practices into designs and code.
  • AD 1.5.2 Software Maturity
    • Do - Understand the organization’s best practices to achieve resilience by avoiding single-points-of-failure, applying appropriate load balancing and developing multi-tenant systems.
    • Know - Knows organization best practices to avoid common failure modes and critical design flaws in design and development of new features and systems.
    • Exit - Able to design and develop systems defensively against common performance pitfalls and failure conditions. Code accepted by team after peer review
  • AD 1.5.3 Software Maturity
    • Do - Understand the organization’s best practices for instrumenting software systems with appropriate metrics, logging and request tracing. Apply this to generate new metrics, logs and traces as needed during development.
    • Know - Know best practices, tools and dashboards to instrument the team’s software systems.
    • Exit - Be able to effectively interpret a team’s operational dashboards. Be able to augment them by creating new instrumentation as needed.
Interested in this apprenticeship?
Sign up to receive notifications about changes and updates about Software Engineer.
Program
Headquarters location
San Francisco, CA (94103)
calendar.svg
Get on our calendar
Not sure if WorkHands is right for you? Chat with our team today
sendEmail.svg
Send us an email
We'll get back to you shortly