From a developer to a leader. A few words about development and team building

Od developera do lidera, czyli o rozwoju i budowaniu zespołu słów kilka

Metapack is based on backend, but the development of our products required building frontend teams as well. It was not an easy task, but we entrusted it to Marcin, who has some experience in this field. What kind of experience? You will learn it from the conversation below. Marcin, our Frontend Team Leader, will also tell you what the recruitment process for the position of Frontend Developer at Metapack looks like, what skills he is looking for in candidates and what development opportunities he offers to members of his teams.

Marcin, let’s start from the beginning. How did you get to Metapack?

From the very beginning of my studies I was interested in topics from both the IT industry and the management industry. I have developed in both of these areas, although with a greater emphasis on IT. I found myself in Metapack on the recommendation of a friend. He noticed that I was good to listen to and that it was fun to talk to me. He saw that I was able to find the source of a professional problem and solve it fairly quickly. He immediately suggested that I start recruiting for the Frontend Team Leader at Metapack. It was funny to me at first, but with time it made sense. And it turned out that of all the candidates I was the best and here I am (laughs).

What do you think our colleagues saw in you during the recruitment process? What knowledge or experience did you demonstrate to make a good impression on them?

As I already mentioned, I tried to develop in two areas. Initially as an IT specialist to gain the necessary knowledge and be able to use it later. When theright moment came, I founded a non-profit organization called PingWin IT. Its goal was to bring together people from all over Poland who are at the beginning of their careers or want to change qualifications, or simply develop specific competences. Then I found them a free of charge project and created project groups in which they had the opportunity to see what real work in IT looks like, and not another tutorial from the Internet. The whole idea turned out to be a bull’s eye. A lot of people volunteered to take up the challenge.

Regarding free orders – the next step was to find entrepreneurs who needed a website, online store or application and who – in return for a free product – would hire a beginner to do it. We advertised on various websites, both on thematic groups on Facebook or even on Fiverr. We also searched through word of mouth for interesting projects. It was supposed to be a win-win deal. Entrepreneurs received the application or website for free, but they were informed from the very beginning that the project would be created by completely inexperienced people. This was due to the fact that we are not able to provide a specific time frame, although we will certainly deliver the project to the end. And there were a lot of willing entrepreneurs. Over time, more experienced people, seniors/experts who wanted to lead our project groups started to come to the organization. It had a great impact and is still functioning today.

I at its front from the very beginning. I helped everyone involved, I supported them in the implementation of projects. Over time, my duties came down to supervising if everything was working as it should, and the mentoring was taken over by seniors.

It’s very impressive. Tell us how do you come up with such ideas and how do you find the motivation to take on such an initiative and such a big challenge?

I have this trait of character that when something irritates me, it’s hard for me to just leave it alone. I sit down and wonder what I can do to improve it. I do this in every area of ​​my life, using the Kaizen concept of continuous improvement. In the case of PingWin IT, the impetus for action was the fact that there are so many people who would like to start their careers, but the lack of practical experience prevents them from doing so. Yes, there is access to the Internet, YouTube knowledge, blogs or books, but this knowledge is – in my opinion – very synthetic. You can forge formulas by heart, but experience shows that it has nothing to do with the business reality. These are two different worlds and the knowledge gained from online tutorials is not enough to develop practical skills.

So I decided to meet this problem and help such people learn and gain experience at the same time. This is valuable because it is associated not only with the programming itself, but also with conversations with a client, many project meetings (most often in the SCRUM environment). This is also an opportunity to get your first code review, but also to swallow the first bitterness after hearing from the client that they don’t like a given solution or that it needs to be changed.

Not only the participants had the opportunity to learn thanks to this initiative. You also gained experience in managerial work at PingWin IT. Do you have any other experience in this field?

Apart from PingWin, I also worked commercially, mostly as a developer. Interestingly, in each job, I quickly became an unwritten leader. I remember the last time I joined a team as a Frontend Developer. I had a mentor who had been with the company for two years. After about two months, our roles changed – I became his mentor. The funniest thing is that it was completely natural and unforced. When he explained a process to me, I started discussing it with him, looking for solutions that would make us do something better. This was also the case in previous companies where I worked. I have literally always become an unwritten leader and I have always felt very comfortable in this role. I am not consumed by stress, uncertainty. I like to have a real influence on the project, talk to the client, discuss various design topics.

I think that experience in both IT and being a leader is a big advantage. I worked on both sides of the ‘barricade’. If the client wants something, I can imagine it from a developer perspective. I am able to estimate the amount of work with greater or lesser accuracy. I think it is very important. In my opinion, to be a good leader you have to ‘grab a shovel’ as well.

You seem to be the right person in the right place then. You joined Metapack – a company that is based on backend – and you are given the task of creating a frontend team. Sounds like a real challenge.

That’s right, but I like challenges. Even though Metapack is a backend company, many development processes are very well prepared and documented here. After a month of implementation, I felt very comfortable with the entire organizational flow.

Let’s talk a little more about the product that you develop in your team. What is it and what is it for?

This is a tracking application that serves both sellers and end users, i.e. buyers. When a customer buys a product, he or she can monitor its status from shipment to collection. On the other hand, from the perspective of the seller, i.e. the Metapack customer, the application allows you to personalize your parcel tracking page. It’s a bit like stacking blocks.

The application is very extensive. It allows you to track several parcels at once, sent at the same time. Suppose a customer buys three pairs of T-shirts on the site and the seller ships them from three separate warehouses. The user can then view each such package as part of a large shipment. Of course, there are plenty of exceptions along the way. For example, when a parcel is sent to a collection point, the so-called PUDO (PickUp DropOff), it may turn out that in the system the shipment changes its status to ‘Ready for pickup’, but it’s not really there yet. It happens most often as a human error. This is what we call an exception. Why? Because we, as Metapack, cannot simply revoke the status, this is misleading the customer, after all, he or she could already check the status of the order. To ensure the highest possible quality of service, we must display a message such as ‘We apologize for the error, the shipment is still in progress’. This is one of the many exceptions.

Are you already getting customer insight regarding the application? Are you planning to develop it in line with the trends on the e-commerce market?

Yes, definitely. For example – research on customer behavior and conversations with them show that returning goods is a common practice. A large percentage of parcels end up this way, so it has to be included in our solution. The application is therefore to provide the possibility of tracking the return shipment, as well as the possibility of sending this return. The application also has additional functions, such as e.g. seller rating.

We know the functionalities, now from the technological point of view. What technologies and tools do you use?

The entire application is written in React. The architecture and issues of data security and consistency have been well thought out, because when communicating with an external backend service, there is also an intermediary layer on the way – a micro service written in NodeJS, which we also support. This backend is extremely useful when establishing a local session, without unnecessary creation of remote accounts. In addition, any changes that will come from external services force us to change (almost) only in our NodeJS layer, without interfering with the frontend.

We know what you are working on, so let’s move on to recruitment. You are the leader of the teams you build, so you take an active part in the process of hiring new people. Tell me who you are looking for right now.

We are looking for people ready to assimilate a large dose of knowledge about the application. Diligence and openness are the most important things here. Experience is also important, but both junior and senior will find their place with us. Most of the work on this project has already been done, so there is no pressure on deadlines. In this situation, a beginner would have time to get accustomed with the application, but it would require a lot of work and enthusiasm. When I say ‘beginner’ I don’t mean someone who has never worked in the technologies we are talking about. I mean a person who has already acted on the subject, but still has room for development in this matter. If the words ‘docker’, ‘typescript’ or ‘hooks’ do not impress the candidate, there is a good chance that we will get along.

However, when it comes to more experienced candidates, I think that also for such people I will find areas for development here. We use more and less complex mechanisms. I adapt my development tasks, of course within reason, to the candidate and his preferences.

How do you plan the onboarding process then? What will the first weeks of work in your team look like?

Contrary to appearances, this is a very complex question, because each candidate is different and when building a team, I try to look for additional talents in each of them. The post is called Frontend Developer. However, one frontend may have a flair for the backend (Node), another may have a flair for testing. Someone else is a Frontend Developer, but likes to work on devops topics. There are also candidates focused strictly on the frontend and devoting all their energy to activities only in this area.

So when we talk about onboarding, it will look a bit different depending on these predispositions. For example, if the employed person shows interest in NodeJS, I introduce them mainly to the backend structures. If someone had a testing ground, we would also focus – apart from the frontend – on how to test such an application. Quality Assurance for this product is a very complex process. If, on the other hand, a person would like to develop additionally in the areas of infrastructure, I will show them how the entire release process takes place.

Of course, there are also implementation issues related to the entire industry and the direction of Metapack’s activities that are carried out by third parties operating strictly in these areas. Here it looks pretty much the same for each candidate.

So you adjust the onboarding process to the candidate. How about the recruitment process? What does it look like? Is it the same for everyone and what can candidates expect step by step?

I am a fan of minimalism and simplicity, so all the steps are also simplified. The first is an interview with the recruiter. The purpose of such an interview is mutual verification. We find out whether the candidate is suitable and whether our approach suits the candidate. We also verify the knowledge of English at this point. Work in this position requires it and without language it will be very difficult for such a person to implement and perform their duties. Communicative, absolutely minimal knowledge of English should be enough to start with.

The second stage is the recruitment task. It is designed to test skills across the board, from beginner to expert. It checks many areas of knowledge in the field of frontend. The content of the assignment clearly states what needs to be done. It has also been clearly stated what is included in the junior/ mid /senior skills. We also clearly emphasize this. I would not like applicants to be unnecessarily frustrated. The candidate completes the task and places the project on GitHub, adds me as a co-creator. Then I have access to the commit list (history of work done), to the code, and of course I can download this repository, run it, check if it works at all.

After this stage, I write down my comments. I have three columns: strengths, minor disadvantages that could have been done better, and serious mistakes, most often resulting from the candidate’s ignorance. The candidate always receives such a note in response, regardless of whether they got ion or not.

The last stage is a recruitment interview, the general idea of ​​which is for this person to see us, for us to see them, to talk. I’m not a fan of rifle-like questions, it doesn’t make sense. Such an interview allows me, first of all, to check whether the candidate has completed the task on his own or someone else has done it for him, because unfortunately such situations happen. Everything becomes clear after the first few questions, so it’s really not worth doing it. Better to do less and not get in than to do a lot and then make a fool of yourself in the meeting. We talk as a developer to a developer. I ask how they develop their knowledge, what sources they use, their favorite internet creators, commercial and non-commercial projects, and so on.

Recruitment is always a challenge, because we have to get to know the candidates in a very short time and find out if they are suitable. I think that these stages allow for a fairly reliable test of someone’s knowledge, but also allow the interested party to determine whether they want to work with us.

How long does such a process take on average per candidate?

Much depends on the availability of the applicant. There are two weeks to complete the task, which is still a lot of time. They can be done in 3 days, but we know that the candidate may not be sufficiently available, hence the additional time. I need one or two days for a reliable assessment of the task. The whole process should therefore be completed in two weeks, but it all depends on the candidate.

Your teams are built and adapted to remote work, which means that you are open to candidates from all over Poland. What is your approach to remote work and a distributed team?

I always laugh among my friends that I was ahead of COVID times. From the beginning of my work as a developer, I really appreciate remote work. I like to program in the comfort of my home. Of course, I was eager to come to the office, but I noticed that at that time I was focusing primarily on talking to developers, exchanging experiences, and not the development itself. I just feel like talking a lot in the office. In my case, working from home is therefore more efficient.

When it comes to maintaining an integrated team, there are now many tools to do this. The basic thing is to build such a bond with both the employee and the team not to force, but to encourage feedback and conversations. Not to treat online meetings as a necessary evil, but a place to exchange experiences. I will definitely want to build such an attitude in my team. In PingWin, the teams were also dispersed, and they worked together without any problems.

Leadership tools such as ‘coffee rooms’ also work well. It’s an online room that is open all day, you can come in with a coffee and talk to another person, not necessarily on technical issues. From time to time, I also organize ‘one to one’ meetings with developers, aimed at taking care of employee well-being and finding and solving problems as quickly as possible.

Of course, working remotely does not rule out real integration, such as several-day trips. You know, see each other, high-five them and go out for dinner.

Sure, and we know that Metapackers like to hang out with each other after hours. Coming back to recruitment – in the whole process you have already looked through some of the applications. What is your first impression, first opinion about the candidates or the candidate market? Anything that surprised you?

As a positive surprise, I happened to have a few candidates who wrote the task a bit worse, but nevertheless moved to the next stage and turned out to be a huge volcano of knowledge during the interview. They were able to briefly and succinctly answer the question, basically exhausting the topic in just a few sentences. Unfortunately, there were also candidates who most likely sent their CVs top-down everywhere without reading the position they were applying for. For example, a Python developer with a year of experience who doesn’t even have a mention of JavaScript in their resume. I also had the opportunity to talk to a programmer who did the task perfectly, but in the interview after ten minutes I knew he wasn’t the one that did it.

Sadly, we also got a few candidates hurt by our previous employer, and we either happen to attract them or the situation is more common than you might think. I mean a situation where the company doesn’t appreciate the employee and doesn’t care about their development. It’s hard to develop without a mentor to show you the direction and find areas for improvement. It’s like wandering in the woods. In my opinion – also a slight madness.

Knowledge is widely available today, but there is also a lot of ‘junk’ information on the Internet. How can a beginner know what’s right and what’s not? So something that is completely natural for us turned out to be a profit for many candidates.

As an employee with extensive experience and knowledge, what would you recommend to such young, talented people? What can they do to develop skills and know what’s right and wrong?

Be as ambitious as possible on the subject. Even with little experience. You can try to find a project of your own or join a friend who is working on something. Perhaps you can find a group of people on forums or thematic groups who would like to do something together. Move towards a project approach. I’m really not a fan of Internet tutorial knowledge.

Finding a mentor is equally important. The more we know this person, the better. It can be a family member, a friend with more experience, a public figure from the Internet. The point is that this knowledge should be possible to consult with the author. When I talk to developers, I often use the metaphor of the school board as our brain and the knowledge it contains. If we write something on such a board, then it is harder to replace some bad habits or ‘junk’ knowledge with the right one. The board can be erased – human memory, at least for the moment, can’t.

Thank you for the interview.

Other news