Many tech organisations are currently searching for new developers. Diving into the requirements for applicants in any given vacancy, it often requires the candidate to have an extensive experience in a language or work experience. But, what if you don’t have any or little experience. What if you are new to the field, just out of college or a coding bootcamp.
In the last six months I got the possibility to develop a starters program for my employer Coolblue. A program that aims to provide a place for developers that just finished a computer science related education or followed a coding bootcamp. I am thrilled that I got the chance to develop and run this program, as we are a large company I feel we have a responsibility to offer opportunities to individuals fresh in the field of software engineering.
This week the program has reached it’s end and the eight starters are now part of our development teams where they continue to learn, gain experience and grow as developer. In the four weeks of the program we’ve looked into many different technical and personal topics, kick starting development of skills and getting used on how we do things at Coolblue.
I have learned many things while developing and running this program, In this post I share some of the things that I’ve learned.
Knowing what your boundaries are
Knowing what your boundaries are, is important and helpful before you start designing the curriculum. In my case it was clear that I could work with the group for four weeks before they were expected to join a development team. A personal one for me was that I wanted even number of candidates, as I wanted the starters to work a lot in pairs, and that eight would be the maximum number for me.
Figuring out the curriculum
For me this was the hardest and scariest part, it was the first time I am designing such a program without any formal training. There are many interesting topics to learn, skills to master and much to learn about yourself. What would be the most important and useful topics to discuss during the program.
I started with soliciting input of our development teams. By collecting their recent experiences when onboarding a new colleague I learned a lot about the expectations on general topics. Key elements here were things like: git, knowledge of the organisation and the (HR) systems we use, our SCRUM process and our take on monitoring & logging.
These insights were very useful to me to make sure I was incorporating the right topics in the program and to gain confidence I was helping to bootstrap the developers to join a team easily.
Within Coolblue we have defined a set of Tech Principles that show how we roll. It describes our take on testing, architectural philosophies and more. This also gives a lot of input on the topics to discuss. In the end I’ve added the topics of SOLID, Continuous Integration/Continuous Deployment, clean architecture & security.
Retrospectively I would better balance the different topics of the curriculum. A lot of topics were handled in the first week and it was simply too much. I would also slice out some topics or simplify them. For example, we spent a whole day on AWS and CI/CD, but a next run could be about 20% of the content in 2 hours.
It is not just about the technical things
The technical topics are important, but for me it was key that the program would have a strong focus on personal growth and introspection. I believe you work better in a team if you are more aware of your own strengths, weaknesses and characteristics.
One of our core values in Coolblue is friends, ‘open, honest & direct’. We give direct feedback to each other, a lot of feedback. Of course with respect, but giving respectful feedback is not that easy. I believe it is a skill and you have to learn it. So we did and we gave it quite some attention. Not just by discussing the model we use for feedback, but also by doing a weekly retrospective on the program at the end of every week. It turned out to be good practice for the starters and gave valuable feedback regarding the program for me.
Finding the right starters
Running the program for the first time also means it was the first time we had to search candidates for the program. Therefore we put quite some thinking in the characteristics we would be searching for in our candidates.
Candidates need to match our core values. For example having an attitude of go for it or showing to have a flexible attitude. This is the same for all the candidates that apply at Coolblue and we are quite good at finding the people that match our core values. Other traits had to do with passion, an attitude of learning and not being afraid of making mistakes and able to learn from them.
To figure this out each candidate spoke with me and four colleagues in a speed dating fashion. Each of the interviewers had a specific element to focus on and that gave us a broad view on the candidate and it was a relaxed way for the candidates to meet multiple Coolblue employees. Afterwards the candidates were very positive about the recruitment process.
For the technical evaluation the candidates worked on a custom HackerRank test with questions varying some programming challenges in a language of their choosing and some theory questions. It did gave us some insight in the technical skills of the candidate, but in a next run I wouldn’t do it again and choose another method. I find the HackerRank test too limited to have a good and trustworthy indication of the technical skills of the candidate.
The importance of a safe environment
Thinking back at the times that I started fresh at a company, I always felt overwhelmed in the first few days. So many new systems, people, business knowledge, ways of working and many more. I could only try to imagine how it would feel for the starters when being introduced to so many new topics.
The first day was largely about building trust along the starters and me. It was important to me that they felt safe and would speak up if something was bothering them. From start I have been candid about my own anxious feelings running a new program without any experience and that we would learn together.
During the program I made a habit about regularly checking in with the group how they were feeling. Checking if there was energy to move on, if everyone was feeling confident to move on to a next topic or if we needed some time to reflect or review what we’ve been discussing. Later on I learned how well this was received by the group.
Another valuable thing was discussing the impostor syndrome early in the program. It gave a familiarity to a feeling they, actually… we, all were feeling. That feeling of being a fraud and way out of your league. It proved to calm some of the nerves some of the starters had.
These are definitely not all, but these are the learnings that come to mind easily when I look back in retrospect on the program. If you have the possibility to offer a place to new developers I hope this gives some inspiration to define your own program and help you on your way.