Engineering Hard Skills - Programming

Design and implementation of algorithms and data structures to solve computational problems. Writing effective, efficient, readable, robust, idiomatic, and reusable software code. Knowledge of and fluency in one or more (high-level) programming languages.

novice
  • Learns what makes code readable by consuming Babbel-internal guidelines and external literature on the matter.
  • Learns about coding best practices by consuming Babbel-internal guidelines and external literature on the matter. Realises when code violates these practices.
  • Starts using debugging tools to debug changes they made themself
beginner
  • Consistently writes readable code, with clarity of intent for themself and others. Might need help identifying expected edge cases and potential errors, but then writes code that accounts for them.
  • Starts to apply essential coding best practices, as learned by consuming Babbel-internal guidelines and external literature on the matter
  • Uses a systematic approach to debug issues located within a single service.
competent
  • Writes readable code that accounts for expected edge cases and errors
  • Consistently applies established coding best practices and introduces new best practices in the codebase where appropriate.
  • Experienced at using systematic debugging to diagnose all issues located to a single service. Uses systematic debugging to diagnose cross service issues, sometimes with help from more senior engineers.
proficient
  • Leaves code better than they found it, be that in terms of readability, testability, efficiency, robustness. Refactors code as necessary when working in the area
  • Proficient at using systematic debugging to diagnose all issues within the scope of their domain. Contributes to systematic debugging efforts across domains.
expert
  • Uses advanced programming techniques deliberately and only sparingly to solve complex problems elegantly while being mindful of increasing the cognitive load for themself and others.
  • Leads wide-ranging coding language shifts/code refactors in expertise area (front/back/mobile) or in a cross-team project endeavour (e.g leads an org-wide movement from php to node.js)