Mobile Developer Development Map

Every day we come across the concepts of “June”, “Middle”, “Senior,” but our ideas about what knowledge a developer should have at different stages of growth vary. Lack of a clear development plan and a lack of understanding of where to go next often leads to frustration and rash job changes.







The guys from AppsCast, together with the Head of Mobile of the Pandao project Alexander Cherny ( @AlexChernyy ), tried to figure out the issue and draw up their own map of the development of a mobile developer from the moment he got into the profession and to leading posts. Under the cat are tips for interviewing the jones, where to get good developers, recommendations for beginners to get a job, the key differences between jones, middle and seniors, and the importance of communication skills for all levels.



Daniil Popov : Today our guest is Alexander Cherny, from Mail.ru of the Pandao project. Tell us more about yourself.



Alexander Cherny : Hi. I lead the mobile development department at the Pandao project, which is dedicated to e-commerce. Now there are six people on staff, and it all started with me alone.



I started my career as a C and Assembler programmer, and came to mobile development as an iOS developer. The first factor was personal motivation to search for a further development path. Then there were two options: either Java in the financial sector, or mobile development, which was just beginning to appear. I did a great job of finding people from both areas, listened to their recommendations and thoughts. The second factor was random: the laptop died and on the advice of a friend I bought a used MacBook.



Daniil Popov : It turns out that you have gone from a simple developer to the head of the department?



Alexander Cherny : The path was linear. At first I grew up as an iOS developer, then I got a teammate, then my own little iOS development team, later a larger distributed team. At some point, there was a transition to the leadership of the entire mobile development.



Entrance to mobile development



Daniil Popov : Based on your experience, let's discuss this path in more detail and start from the position of a junior. What do you expect from a novice specialist who you take to the team? How can a person from the outside enter the profession of a mobile developer?



Alexander Cherny : The coolest way is to fish out all of NOT the first of the mobile development schools that are periodically hosted by various companies. The companies have a fixed amount of the number of joons per the number of seniors in the team, so they take one or two from these schools. There are no more junes to digest at the same time, or there simply aren't enough vacancies.



But the rest is often no worse than those taken by the course organizers. So I called one junior developer to my team, and he recommended a guy with whom I studied together to a neighboring team.



Alexei Kudryavtsev : It turns out that the guys from the courses can be normal Jones and be able to adequately develop? It seemed to me that many people there have the motivation to quickly go through everything in order to start earning money as soon as possible, but in reality they do not know how.



Alexander Cherny : There is an additional indicator of quality - this is the presence of educational courses of mandatory pre-selection and control points throughout the entire cycle of classes. This means that the graduate, at least, had the willpower to go through to the end, and the patience teachers to teach him.



Gentleman's june set



Daniil Popov : What are three things that a junior should know from hard and soft skills?



Alexander Cherny : From hard skills, you must know the language of the selected platform, if possible, know the platform SDK. Knowing architecture is not important to me because I don’t understand how architecture can be understood if you haven’t encountered the problems that it solves.



It is more interesting to hear from June the answer to the question “Why did you choose Android or iOS?”.


In terms of soft skills, I would like to see basic communication skills from everyone, since it’s not just the jones who have difficulties in speaking. When a junior developer enters the team, the ability to signal when something goes wrong is important. This many sin in their youth, believing that if they could not do something, then this is the end of the story.



Daniil Popov : How to understand your level on your own: are you matured to June, Middle or Senior?



Alexander Cherny : The level is measured relative to the team in which the developer is currently located.



Daniil Popov : It turns out that in one team you can be a senior, and in another middle?



Alexander Cherny : Yes, and here objectivity suffers, because they begin to demand competencies from a specialist, the presence of which is not completely clear. For example, they ask you to jump three meters up, but you don’t know how. In general, jumping is not yours, and no one can explain why they are needed at all in the client-server application. Do not jump? So - not a senior.



Alexei Kudryavtsev : Joons often come to get a job with the confidence that they are already great, but at the same time they have different skills. What other difficulties do interviews have?



Alexander Cherny : The biggest problem is the assessment from scratch, since nothing is known about June: there is no one to write and ask for recommendations, there are no completed projects.



This is well treated by the live repository on GitHub, even if it's just a synthetic project and one and a half activity is written.


If one and a half test for this activity is written - well done, and if there is a semblance of architecture - you need to take this. Something like this I take the jones. I have one more subjective and difficult to evaluate criterion - this is curiosity .



To summarize, here are the recommendations for the June:



  • understand the language, know all the basic constructions of the language, and not just repeat what they saw in the videos;

  • no one expects in-depth knowledge of the SDK, since updates come out often and I myself have stopped watching them, but I need to know things at the life cycle level;

  • understand your motivation and consciously go into the profession.



Alexei Kudryavtsev : When I was a june, it seemed to me that for a basic understanding of the language you need to run through all the Apple docks, know every class and function. What is included in the database, in your opinion?



Alexander Cherny : This is the basic syntax of the language that immediately highlights the IDE, the main collections from the series “how to work with arrays / lists”, “how to work with dictionaries / maps”. By UI, the basic knowledge is formed at the time of writing at least one test project.



Growing in the middle



Daniil Popov : How to jump from junior to middle? How to understand overnight that a specialist has stepped to the next step?



Alexander Cherny : Overnight, of course, you can’t understand. The very issue of categorization is the problem. Imagine that you meet a set of criteria, but one of them is not fulfilled and you cannot formally go to the next level. I am reserved to such an approach, especially in small teams.



At the same time, there are clear criteria that cannot be circumvented. For example, the level of setting goals and the responsibility that you bear for it. From the June you do not expect anything. He will read the task, for the clear writing of which his leader is responsible, and the maximum will ask questions on obscure points. You do not expect him to reflect on what will happen, if he evaluates limited cases, to think over a new paradigm of code for the solution. The middle is starting to cross this line.



Daniil Popov : What skills did you add to the middle in addition to what the junior has?



Alexander Cherny : There should be an understanding of architecture and priority on WHAT you write, and HOW .



One of the characteristics of a junior developer is that for him the fact of writing code is valuable. For the middle, the code is secondary, the task that it solves comes to the fore.


In the division of developers into June, Middle and Senior there is an unsuccessful visualization of growth through a strict step sequence. In product management, there is the MVP triangle - a minimally viable product. MVP is a line that is drawn not parallel to the base, but from the base to the top of the triangle. In such a scheme, you always know a little bit of everything, the middle can do more than a junior, and the senor, theoretically, should close the entire triangle by competency.



It’s more correct to consider the criteria not through “know / don’t know”, but through “how deeply I know”. The junior can know about the existence, the middle knows what is inside, and the senior understands why it was invented.


Daniil Popov : Should the middle understand Computer Science? Data structures, algorithms, hash collections?



Alexander Cherny : Yes, it is difficult to solve an applied problem without understanding the work of the same collections, therefore such a requirement for a middle can definitely be presented.



Alexei Kudryavtsev : You mentioned the triangle of competencies, and then what is included in it?



Alexander Cherny : In a simplified version of hard skills there is language, platform and architecture. If you look deeper, then you should use the formula of Daniel and break the blocks into Computer Science and Software Engineering.



Alexei Kudryavtsev : What about skills that an engineer does not always need, but can be useful: debugging, cryptography, performance?



Alexander Cherny : All engineers should be interested in the ability to use tolling. The junior may not be able to work with all the tools, but from the middle, I expect the same level of curiosity that the June at the entrance. I am sure that at some point he will be tired of clicking on the buttons in the IDE, and he will begin to learn the keyboard shortcut. Instead of logging around to search for memory leaks, it will launch the application tool.



Daniil Popov : Should the middle be interested in related fields and broaden their horizons?



Alexander Cherny : I am for the development of horizons and erudition. If a person shows such curiosity - this is a good vector towards the senior. He’s just different in his ability to answer the question “Why does it exist?” If the middle one writes the simplest class of the application, which everyone refers to the client-server, but does not realize why the traffic is not caught with https, and everything works when installing Charles - it's insulting. But to the junior, I would explain it myself.



In general, the middle was most unlucky. This is too long and unpredictable growth zone, it is not clear whether it will stretch for a long time.


The same dzhuns are simpler: with constant employment on projects in an adequate team, your growth to the middle will take from a year to two and a half, no more.



Daniil Popov : What about soft skills for the middle?



Alexander Cherny : Middle should no longer be afraid to talk about problems and be able to take a feature and work it out on its own, perhaps not yet understanding its interaction with other features. For example, a task flew with a picture from the designer and briefly described what needs to be done. Based on these introductory middle, I must say what problems may be, for example, there is an element that is not in the system and will take a long time to make. This is a kind of self-censorship mechanism regarding the tasks it receives. Even at this point, the skill of estimating deadlines is added.



Daniil Popov : How about communications? Without them, the task cannot be worked out and evaluated?



Alexander Cherny : Yes, you need to be able to talk with interested parties. Do not complicate the chain and directly ask the designer, go to the developers of another platform and find out if you understand the task the same way.



Daniil Popov : What do the middles most often not know?



Alexander Cherny : Many people overwhelm the language and SDK, and in the most fantastic places. How many middles died because of the misunderstanding that the iterator is an object, or by the question of whether the string is represented - an array or a list.



I try to check not the level of knowledge and not even reasoning, but the reaction to reasoning. For example, I tell you that there are three different situations and the compiler behaves differently. One can dismiss this situation, and the other can say that he never thought about it, but with a laptop in his hands he could reproduce the situation in the IDE so that the debugger shows what the difference is.



Congratulations, you are senor!



Daniil Popov : What skills should be added to middle ones so that you can call yourself a senior?



Alexander Cherny : What is the señor doing? He defines the technical culture of the project as a whole, since he understands what benefits all development activities will bring to the business. Here you need experience, understanding of the business and the ability to take risks. The senior understands the problems of the level "I have a vidos freezing, but I want it to leaf smoothly." How exactly this will be done does not matter.



Senior - the guarantor of technical expertise. They go to him with a question and a desire to get a specific set of actions.


From the middle, I wait for the understanding that there is a virtual machine and it exists for a reason, from the seigneur - how it can be used with benefit.



Alexei Kudryavtsev : How about knowledge in reverse engineering?



Alexander Cherny : Anyone can reverse. Do not be afraid to do it - this is the border of the middle and senior. You need to understand where data and resources are stored - nothing fantastic.



An interesting characteristic of the middle, which distinguishes his senior, is that he always says that he is ready to do the task, but does not always understand what is behind this and what the consequences will be.


To distinguish between levels, you can add the use of libraries. Junior drags any library if it solves a problem. Middle drags, but thinks that we need to see if there is a similar solution in the project. Senior writes his bike to put stars on GitHub.



You can silently drag a library and assume that it solved the problem. You can look at it and see that you need only a small piece and take only it. You can drag the whole library because the deadlines were running out, but create an appropriate issue in order to fix it later. The point is with what level of understanding to approach pulling.



Daniil Popov : Senior should not only correctly select libraries, but also understand them, they may also have problems. Unlike the middle, which will cover everything with try-catch, the senior will fork, repair and make a pull request for this problem.



Alexander Cherny : When adding a library, the lord takes full responsibility for the consequences. Middle will drag and transfer responsibility to the library itself or its developers.



Where to go?



Daniil Popov : Is there life after lordship? I see options: lead, department head, CTO or Project management.



Alexei Kudryavtsev : What about technical development: technical expertise, principal, or even change direction?



Alexander Cherny : All options have their own consequences. Yes, you can go into managerial positions, but you can stay in the technical environment - this is definitely not a stop in development.



Daniil Popov : I got the feeling that the hard skill set is highly dependent on the company you work for and its profile.



Alexander Cherny : It affects. A large grocery company such as Facebook has thousands of technicians. All of them are very limited in choosing technical solutions - there is an approved stack, there are entire infrastructure teams and an architectural committee that makes decisions for everyone. In this case, the engineer becomes a company locked developer, who is obliged to use the company's paradigms. Over time, it becomes more valuable for the company, but not the fact that this value will be perceived from the outside.



Daniil Popov : And what if I wanted to engage in a skill that is not typical of a company product?



Alexander Cherny : First I ask the person where the idea came from. Sometimes people come with strange desires and cannot explain their nature. If the developer can justify, then you need to look further at how this idea fits the product. It is likely that it will still come in handy for business.



It is important to approach this process individually. It often turns out that this is not the best that a person can do now.



Daniil Popov : You said that you considered the division into June, Middle and Senior fuzzy. Is it needed then?



Alexander Cherney : When the team is small and everyone knows everything, you can do without shortcuts. In a huge corporation, graduation will be needed to comply with the labor code in order to transfer salaries.



Developer Development Cards



Alexei Kudryavtsev : How can a developer determine growth points?



Alexander Cherny : I am of the opinion that the employee should be engaged in a career, since it is impossible to patronize everyone. If a person wants to search for something, then the correct request is the name of the platform and developer roadmap. You can find a bunch of mind maps with detailed information, in what order and what to develop.



Daniil Popov : When preparing the release, we looked at the development map of the iOS developer. There are so many things that it seems that after studying the entire spectrum, an engineer will become overqualified for 90% of companies in the Russian market.



Alexander Cherny : Nobody checks the depth of knowledge. For example, I look at the map and see the Core Location framework, but there’s no specifics what exactly is needed in it: to know about its existence or to understand low-level things, for example, which coprocessors are capable of producing additional energy efficiency in the background.



The roadmap is just a survey map that you look at and analyze which city you have already visited and photographed against the background of a sign at the entrance. At the same time, the roadmap is not linear and you do not need to know the previous one to go to the next, you can move where you want here and now.


Alexei Kudryavtsev : Roadmaps are not always useful, as they often do not coincide with what is required at work, and do not always cover the things that you "swim" in. How to create a personal roadmap?



Alexander Cherny : Hackerrank recently had a study on what employers now want from developers. Regardless of the size of the team, the first is problem solving - the employer's desire to hear from the engineer a clear answer on how to solve a particular problem and at what cost.



Alexei Kudryavtsev : How do you feel about individual development cards, where competencies are described, with a team lead, the results are evaluated and it is determined what to pump next?



Alexander Cherny : It's great if both sides have time for this. In all conversations about development, there is one nuisance: at some point, an employee understands that there is nowhere to develop here and changes his job in the hope of development. A cognitive distortion arises - with the change of environment you stop thinking about real development, and all the forces go to adaptation in a new place.



Alexei Kudryavtsev : Then is it worth changing work for the sake of development?



Alexander Cherny : If the employer is stable and allows solving technological problems, and the development team does not change, then no. I don’t want the developers to change jobs to solve some personal problems. I always ask the question at the interview what actions the person took to solve the issues that led to his dismissal from his previous job.



By the way, there are problems with the Head of development position and other managerial positions of the developer. There are not many people above, and this top of the business considers you a self-sufficient person who should not only help solve the problems of your employees, but also deal with your difficulties alone. Not sure if this is the right approach.



Daniil Popov : What else do you ask at the interview besides technical questions?



Alexander Cherny : Recently, I have been using cases from past projects of our teams. It is important for me to understand how a person reacts to various situations. For example, two developers have a different understanding of the role and responsibility of the View Model. You are the third. How to make you work all together next year. It is important for me to understand how a person reacts to such situations. Or do you strongly disagree with the code review that two of your colleagues conducted, and there are only three of you. This is problem?



I do not like abstract questions, so I take a specific code that is so separate that I can understand it in 30 seconds, and try to understand the soft skill of a person.



Daniil Popov : What is more important for you in the candidate: soft or hard?



Alexander Cherny : There are questions that I do not want to answer binary. With age, I became calmer at the level of hard skill. Not knowing any part is not a problem. If it matters. then you can give the person to read the documentation section and write an example of the operation of the desired element. On average, soft skill prevail, approximately 65% ​​to 35%.



Developing a developer involves not only deepening knowledge of platform development, but also broadening one's horizons, mastering soft skill professionally and immersing oneself in related industries. If you are serious about development, then do not miss the autumn Saint AppsConf 2019 . In the Introductory-track, we promise to reveal maximum insights from colleagues from other areas of development, and the General-track will teach you how to properly manage finances and help from an expert point of view look at the protection of personal data . Book tickets at a good price, the next increase is September 16th.



All Articles