OKRs
See one, Do one, Teach one
Overview of Personal Mileposts
Both for further understanding, as well as in building out this notebook.
Hard Skills
Programming Skills
Programming Skill refers to an engineer’s ability to actually write code. This includes all of the key aspects of taking code from concept to release from understanding how to develop in different programming...
- Paradigms
- Data Structures
- Algorithms
- Systems Work
- Build Automation
- Testing
- Problem Solving
- Code Readability
- Error Handling
- Internet Technologies
- Common Frameworks
- Databases
- Scripting
- Common Tools
Software Design
Software design refers to an engineer’s ability to conceptualize higher level organization of code from components to systems. Software design includes everything from basic concepts of...
- Modularity
- Polymorphism
- Introductory Design Patterns
- Object-oriented Design
...through more advanced
- Design Patterns
- Domain-driven Design
- SOLID Principles
Soft Skills
Technical Leadership
Technical leadership refers to an engineer’s ability to work with groups of other programmers to produce something great. Technical leadership involves taking your knowledge, skills, and experience and influencing the rest of the team with it. Being able to improve the output of a single engineer, a team of engineers, teams of teams, or even the whole engineering organization from a technical execution standpoint.
Product Passion
Product passion refers to an engineer’s ability to turn code into something that is valuable for a user. This involves being passionate about our products, understanding how they work, making product and technical trade-offs, and ultimately driving the teams they work with to produce things of huge value. Product Passion is also about viewing our products through the eyes of a member, understanding their problems, and working to solve those problems.
Karmanaut
Our values are a key differentiator for CK Engineering. These are based on the sorts of things that make someone successful at CK in general.
- Challenge
- Empathy
- Action
- Sharing
Engineers who are able to challenge the way we do things in order to make them better, are focused on taking action with ideas, those that know how to work together to bring better outcomes and engineers who can do all of this while still getting along great with their coworkers. Ultimately, this is the bucket where
- intellectual curiosity
- autonomy
- drive
are highlighted.
Checklist
✓ | Build and Release processes |
✓ | DDD principles |
✓ | Design Patterns: Gang-of-Four. Common patterns & their ideal usage. |
✓ | HTTP: Sequence diagram |
✓ | SOLID Principles |
✓ | TESTING: Unit Testing, Integration Testing, Client Testing |
✓ | OOP: Encapsulation, Inheritance, Objects/Classes, Polymorphism |
✓ | REST: RESTful API’s, knowledgeable of common practices and concerns |
SOLID Principles
- Objectives: Solid, working knowledge of SOLID Principles
Key Results:
✓ | See | Pair with someone doing this |
✓ | Do | Build with SOLID Design |
✓ | Teach | Taught said principles to another (e.g. 1:1, lecture, article) |
DDD principles
- Objectives: Solid, working knowledge of DDD Principles
Key Results:
✓ | See | Pair with someone doing this |
✓ | Do | Build with DDD Design |
✓ | Teach | Taught said principles to another (e.g. 1:1, lecture, article) |
Build & Release Processes
- Objective: Build solid working knowledge of build & release process
Key Results:
✓ | See | Pair with someone doing this |
✓ | Do | Responsible for config of repositories, Jenkins, & test automation for build-release of new service |
✓ | Do | New service successfully deployed to production |
✓ | Do | Tweak configuration for purposes of debugging |
✓ | Teach | Taught said principles to another (e.g. 1:1, lecture, article) |
Strong Testing Practices
- Objective: Build solid working knowledge of testing practices
Key Results:
✓ | See | Pair with someone writing tests |
✓ | Do | Was responsible for creating tests. |
✓ | Do | Used TDD to guide code creation |
✓ | Do | Used Code Coverage to guide test creation |
✓ | Do | Build Unit Tests |
✓ | Do | Build Integration Tests |
✓ | Do | Build Functional Tests |
✓ | Teach | Taught testing to another |
Misc Ops
- Objective: Solid, working knowledge of DevOps tools (e.g. splunk)
Key Results:
✓ | See | --- |
✓ | Do | --- |
✓ | Teach | --- |
Ownership of _______
- Objective: Own a context, product, or
_______
- Hermes
- Reach Canada
/tax
and waitlist/early-access list- enhanced credit alerts
Key Results:
See | --- | |
Do | --- | |
Teach | Taught _______ to another |
Candidates
Knowledge sharing at CK
- TILs (e.g. Hashrocket's system)
- To be "the test guy"
Brainstorm food
Think of ways our team can improve. Find areas we are experiencing pain or under delivering and try to come up with options on how to solve those problems.
"Seek to replace yourself."
- Participate in the interview process.