Since 2018, Slash has been practicing a new approach to enhance the professional growth of our engineers. The Developer Path at our venture studio is a comprehensive framework, where software engineers progress in career by improving and expanding their skill set. As they get better at the skills, they move further on the Developer Path and reap the benefits – financial benefits, time flexibility, job satisfaction.
As individual engineers become more upskilled, we at Slash gain on three levels: the engineers’ confidence grows, giving them both job and personal satisfaction; from the business standpoint, we get more work done; and frankly, it is more fun to do things if the team is effective. Motivation – check, results – check!
As Slash CEO Andries De Vos notes, the Developer Path at Slash is “self-directed and holistic”. What that means is that people get to choose how they want to direct their growth, and we provide different options for the engineers so that people are not all doing the same things. We accommodate for different levels of specialty and proficiency.
Our framework has 4 major categories of skills: Productivity, Engineering, Programming, and Team Work. Each of them includes a number of skills (competences), and each competence has 4 levels of proficiency: Apprentice, Developer, Senior, Lead. When engineers first enter the framework, they become an Apprentice, and after acquiring all the required skills, they are considered experts and given the Lead level of proficiency.
We have 4 skills in this category:
- IDE & Terminal – a development environment, which allows you to work effectively with command lines to get your work done. Apprentice can work with VIM + CLI Basics, Lead has VIM + CLI Level 3 down.
- Using Git – Gits are version control solutions, and depending on the level of proficiency, the engineer will need to learn commands. The level of proficiency goes from simpler commands like clone, commit, pull and push to more complex ones like merge, checkout, and release version management.
- CI/CD – Think of it as a pipeline of continuous code development. Here, proficiency starts with understanding what it is and why it is needed. Developer is able to use the pipeline, Senior can modify it, and Lead can create a pipeline.
- Ability to focus – A concept that is easy to understand and hard to implement. The ability to focus is a mental practice that helps developers stay concentrated on their work for long periods of time. Apprentices usually get distracted every 15 minutes or so, Developers are better able to focus but still need more than 10 breaks to talk and check their phones. Leads are a bit of mythical creatures in our age of distractions: they not only focus for very long periods, but bring other people back into focus too.
We have been going by fours so far, but this category actually includes 5 competences:
- API – This is the competence of working with information exchange. Senior developers can create APIs and documentation, and Leads are able to design advanced types of APIs and testing solutions.
- Architecture – This skill is about understanding our frameworks and using them comfortably. At higher levels of proficiency, the developers are able to design architecture advice on common and complex systems (website, CRM) and infrastructures like cloud computing.
- Data – The skills of understanding major databases (there are around 200 of those in the world). The level of complexity of data structures increases as the developer moves further on the path, from simple and complex MySQL/NoSQL queries to mastering 3-5 of the 7 data structures (arrays, stacks, queues, linked lists, trees, graphs, hash tables).
- Requirements – In this category, Developers are expected to be able to easily understand technical requirements, Seniors can translate business requirements into technical ones, and Lead engineers support clients, provide advice, and elaborate acceptance criteria.
- Security – This skill is a prerequisite starting from the Senior level. Senior engineers can translate security requirements into technical solutions, and the Leads are able to translate risk analysis into security requirements, and analyze the consequences of potential threats.
- Coding paradigms – They range from markup (HTML/CSS), required at the Apprentice level, to imperative/declarative, object-oriented programming, and functional programming. Depending on the skill level, the engineer can work with 1, 2, 3 or all 4 of them.
- Refactoring – This is the skill of cleaning code (via test automation, for example) and rewriting it when we think it has met its purpose and we need to refracture it to accomodate for the required architectural depth. Here, Apprentice is only required to understand what refactoring is. The competence levels of Developer to Lead are able to identify 1 to all 5 of bad practices in need of fixing. We call them code smells: bloaters, object orientation abusers, change preventers, dispensables, and couplers.
- Testing – From the very beginning, our developers should be able to do basic code debugging and quality testing. Further on the Path, they learn to write unit tests, coach on code testability improvement, and design and implement high-level testing solutions like integration testing. These are all skills they can acquire at Slash within our Developer Path framework.
- Algorithmic – This is a competence encompassing 8 techniques: conditions, loops, nested loops; sorting; searching; simple recursive; backtracking; divide and conquer; dynamic programming; and greedy. The Developer level is where you can use 3 of these techniques, and our Leads can use 7.
This category is more about personal development, although it does include skills necessary for professional growth.
- English – We require proficiency in English, measured by the internationally accepted certificates. The starting point is TOEIC 650, and our Leads are expected to score 7 average in IELTS.
- Agile development – Slash does not require prior knowledge of agile development methodology. You can learn it with us! It becomes a matter of practice to learn how to break down tasks and estimate their duration, secure team members’ participation in the ceremonies. In the later stage of progress in this competence, you will be able to coach the team and help the others to improve the quality and efficiency of their work.
- Leadership – You do not have to be a born leader. Leadership is not only about personal traits, it is about attitudes and practices that enable you to take care of your team. We provide guidance for our Apprentices, and when they reach the level of Developer, they are able to understand tasks on their own and take responsibility for delivering the tasks. Our Senior developers are able to provide personal guidance to team members, and the Lead developers take the responsibility for entire projects and mentorship and empowerment of whole teams.
- Communication – No one can argue against the importance of this skill. From pitching your ideas to fully engaging in discussions, this competence is something we help to build. The Slash framework focuses on enabling developers to explain ideas and opinions clearly, make sure they are understood correctly, and explain projects of any complexity to stakeholders in a comprehensible way.
How do we measure progress?
We have internal assessment, of course, external tests, and we get extensive feedback from our clients. All across the four categories, we follow the development of our Apprentices and learn from them what they think about the experience.
Do I have to stay at Slash forever if I start the Path?
Absolutely! And you sign the contract in blood (haha). On a serious note, as we provide resources and mentoring, as well as more job satisfaction and productivity thanks to our development framework, it is very beneficial career-wise and for personal development, even if developers choose to move away from Slash. Besides, our framework is organized in a clear and structured way, so developers can measure their progress themselves and have a good understanding of how much they have grown.
Currently our team is willing to move from software engineering to software craftsmanship. Software craftsmen are people that are really best in class. We will evolve this framework to enhance our ability to become craftsmen, and that means adding more dimensions, more skills, and an extra level of proficiency. We are big supporters of the learning culture – the “can do, can learn, can share” attitude. We want our developers to grow while they are at Slash.
We hope this has been informative for anyone who considers becoming a developer and starting their career at Slash. Let us know what you think!
Tag CloudAgile - Agile Delivery - Animal Framework - B2B - blockchain - Clean code - Client consulting - cloud platform - Code Refactoring - coding - cryptocurrencies - DeepMind - Design Research - Developer Path - DevOps - Digital Ownership - founder equality - founder equity - front end developer - Fullstack Engineer - Growth strategy - Hook model - innovation - Manual Testing - Metaverse - methodology - Mobile Engineer - NFT - playbooks - Podcast - product versions - project management - Recruitments - Remote Work - Sales machine - Slash - Software Development - Software Engineering - teamwork - Tech Talks - tech teams - testing playbook - The Phoenix Project - Unit testing - VB Map podcast - Venture Building - virtual retreat - Web3