Tips for those who decide to become an iOS developer



    A long time ago I was asked to write this article, but either the microphone was in my way or the stars simply did not converge.

    Briefly about me: I'm 43, I'm a Woman and an iOS developer. Now I have one of the most sought-after specialties on the market, the job search is on average from 2 days to 2 weeks.

    Those who accidentally stumbled upon this article and are still considering whether to change his profession or occupation, I will answer: if you don’t try, you will never know if you can change your life or not. To fear in advance to be mistaken is a waste of time.

    Well, now, enough morality, I proceed to the story of how I became an iOS developer, and what difficulties I encountered on my way. If you are too lazy to read, you can go directly to the results.

    Direction Determination


    In 2014, the company where I worked for 7 years closed (hello to the Lanka employees!). And I had a choice: to look for a job or think about who I really want to work with.
    At closing, the company’s management was very loyal to all of its employees, and we received money when dismissing, taking into account the course that had been leaped then (it was enough for me to live on for 8 months).

    In Lanka, I worked in procurement as an analyst. For a long time I couldn’t find anything similar in salary or functional duties.

    On the website hh.ru I ran into advertising: become a programmer and get a “one hundred million” salary in six months! I decided to check the market and was pleasantly surprised that the average salary of a programmer is higher than the salary of a good purchaser with knowledge of English by 2-3 times. Wow! (I thought then): you work in the office, you are engaged in logical tasks. Maybe remember the institute youth and start programming?

    I went to a well-known resource, which, for ethical reasons, I will not report to readers, and took a free course on the basics of programming. The course flew, did not even notice! All the tasks were easy (the institute base affected), and I finally realized that my immediate goal would be: retraining as a programmer! (for those who understand a small digression: I had zero English knowledge, because I taught French at school and university).

    Courses


    The goal has been set, now it was necessary to decide which of the many areas in programming it makes sense to master? I found a friend - a programmer (java), he recommended me to go to Mobile development, because The niche is fairly new, it is developing rapidly, and every year there will be more and more developers missing. (Albert, if you are reading this, hello and thanks to you for the advice!).

    Well, the goal is set, it's time to act! I paid for online courses (6 months + 2 months internship), then the cost of the courses was about 40k rubles (if anything, now it is twice as expensive). She waited for the start of her group and flopped down from all over the run into this ocean of new knowledge.


    It was very scary to risk, because On the course, everyone was much younger than me (from 18 to 30 years old), and there were practically no girls (we dropped out after the first lessons).

    A small digression: here and below, all prices will be quoted for Moscow. How are things with salaries and prices in another region, I can not tell.

    Looking ahead, I want to say that much depends not only on your dedication, desire and opportunities, but also on what kind of teacher you will fall on this path. I was lucky in this sense!

    Now, in order: online training for a mobile developer included 2 courses on ios-development, basic Java and 2 courses on Android-development + any gift course that I like. Classes (online) began in the evening around 20-00, so that all workers had time to return home by this time.

    I determined for myself that I want to do exactly Android development, because I did not have a single apple device, and I also belonged to those people who constantly troll the owners of apple gadgets for their rash spending of money (who could have imagined that in three years I would have two iPhones and macBook pros).

    I was somewhat disappointed due to the fact that the training started with the study of iOS. However, since iOS was studied in the objectiveC language, in this sense it was even easier for me, since The syntax is very similar to native C / C ++. The biggest difficulty on the course was due to the lack of a mac. I had a very cool laptop on Windows (16gb, i7, SSD256), therefore, having shoveled the forums, I found how to install a virtual machine and develop it on iOS under it. To say that the virtual is slowed down - this is putting it mildly! In addition, it was necessary to collect projects on the simulator, because I had neither a developer account, nor a device on which to develop, and even connect a device for assembly in a virtual machine — that is still a pleasure. I did not dare to buy a used phone, and my budget was strictly planned for exactly 8 months.

    Equipment Board
    Поэтому совет тем, кто решил заняться изучением iOS: купите себе дешевенький б/у macMini или поставьте хакинтош. И по деньгам не дорого, и эффективность выше (не нужно будет ждать по 10 минут каждой сборки).

    На первое время телефон не понадобится, т.к. для сборки на телефоне нужен аккаунт разработчика. Ну а если у вас уже есть айфон и если денег не жалко, то аккаунт стоит 100 у.е./год. Я пошла по сложному пути и обучение проходила на виртуалке, т.к. не видела смысла тратить деньги, к тому же Андроид тогда был моей целью.

    But ... it so happened that I was very lucky with the iOS teacher. ( Lowtrack , once again, thank you very much for your help and patience!). He very responsibly approached all the lessons, prepared in advance, each lesson did not last 1 hour, but 3+ hours, because For 1 hour it was difficult to open all the topics, explain to beginners how to use Xcode. But the most remarkable thing is that if I didn’t understand something, Lowtrack was always in touch and on any day (work or holiday) gave all the explanations on Skype, explained the mistakes, chewed on all the incomprehensible material for me.

    A small digression: I will remember for a long time how he explained to me on the example of an office cabinet and desktop what OOP is, what classes, objects, methods are.

    Since, I knew that my level in programming was far from that which the young guys had after university, I worked all day for 14 hours. I forgot to eat dinner. Sometimes DZ did not only during the day, but at night. She shot down the regime so that she went to bed at 6 in the morning, at 12 she woke up and again for studying. In general, to keep up with everything along with everyone, it was laid out by 300%.

    At the courses, Lowtrack advised me to go study English (at least get a basic level), had to fork out and invest another 25k in the initial 3-month English courses.

    Internship Search


    After 3 months, the iOS courses were over, and I realized for myself that I fell in love with iOS development. Later, when I started exploring Android, I realized that I want to do exactly iOS. And the teaching of Android was below the baseboard: in spite of the fact that the teacher on the courses was the best of the best, he didn’t give us any time at all, threw off the previously prepared training manuals on the theory, 90% of the lessons went into the analysis of other people's homework, and my job never been seen. In general, in these courses I realized that I was wasting my time, it was time to look for an internship.

    On online training I was promised a mandatory internship for 2 months. I started pulling them about this, and I was provided with contacts of firms that recruit junior internships after these courses. As it turned out, the internship is a lure. In fact, no one organizes it for you, it will only give contacts to companies where your resume may be viewed. The contacts of the online resource for internships were beautifully decorated on a separate page. Result: out of 5 companies, only 2 reviewed my resume, and I immediately received a refusal (and what's surprising when there were vacancies of such companies as redmadrobot), other companies did not even bother to look at my resume. On hh also no vacancies for juniors. I started to panic, because 5 months have passed since the beginning of the courses, and the time is already running out.

    I had to look for internships on my own. Those golden mountains that I promised on hh.ru in advertising, I did not find. Many googled and came across a message in vk that in the Conditional team (the name was specially changed) the interns ios and Android are constantly recruited. Wrote them in a group. What is most surprising, quickly received an answer. I and the guys with whom I finished the ios courses (there were 3 more, and only 1 were taken) were given a test task. I executed it (I suspect that my code was very funny and ugly). I was given another task, so that I did not reinvent the wheel, and I made my task with a specific framework. Remade! And then it remained only to wait for an answer ... We waited for a response for a long time (about 3 weeks). After 3 weeks, I could not stand the expectations and sank in the chatika that, probably, test task - this was our internship. After this phrase from Conditional, they contacted me and called me for an interview in Zelenograd.

    At the interview I was given a simple little problem, something related to sorting. I honestly did not know the syntax, so I googled, and at the very least invented sorting myself. I don’t know if the manager saw my torment (he probably saw it), he said only that the logic was interesting, but it could have been made simpler.

    Then I set several logic tasks. And he said that I approached them.

    Internship and first job


    So, it began!

    6 months after the start of the course I received a long-awaited internship! But I stopped rejoicing immediately, as soon as I was told that the internship was unpaid, and if I passed the internship successfully, then perhaps I would be hired. Those. I come to the company for 3 months every day, study / work, and for that I don’t get a penny! I felt a little sad, because Those guys who were not invited for this internship still found a paid job, although they already had programming experience in other languages. I decided that I should not be jealous, but grasp at this chance. Of course, I was very risky! I had planned money only for 8 months, and since the money was still spent on English courses, generally only 7, so I even had to get into debt a little.



    By the end of the internship, I realized how much the knowledge that is given in the courses is different from the real experience! If taken as a percentage, then the knowledge that I received from the courses is about 10% of all the knowledge that I received during the internship.

    To my shame, on internships and courses I paid very little attention to theory. Then nobody explained to me that theoretical knowledge is very important and will be needed when mastering practical tasks and for further interviews.

    Tip: Learn Theory
    Поэтому совет для начинающих: учите теорию! И если она Вам не нужна в данный момент, то точно пригодится в дальнейшем!

    On an internship, we, the same juniors as I (5 people on each platform), were entrusted to write a real project! It was very interesting!

    Since such a large project was organized for the first time in this company, chaos was observed everywhere and everywhere in the project. Each intern wrote who in that much. It was not really a review, because We did not have time for one manager to keep track of everyone, to train everyone, and also to think over the architecture. But then we all got an unforgettable experience while working on this project. ( Special thanks to: Mehdzor , Head of Mobile Development, for the knowledge gained, for patience and for understanding).

    The internship is over. Upon completion of the internship I was offered not a lot, not empty - a sn in 45k (this, of course, is not the salary that I would like, because working as a manager I could get about 60k), but I already worked together with these guys that I did not want to leave. The company is gray, everyone paid in cash in an envelope, according to labor, we were not even listed. I didn’t reduce my internship day, although they promised that if I show myself well, the term will decrease. As it turned out, these are only promises ... the probationary period for all colleagues was the same, because This is an additional motivation for interns to improve their work!

    Six months later, another 2 girls took us to the internship company.

    And then the persecution began: I was constantly pointed out to the progress of these two girls-students, to their excellent theoretical base, to be set on the fly (by the way, one of them did not pass the internship). It was very disappointing! In addition, I then had to simultaneously engage in managerial work on a new project, and there was little time left to develop (80% of the time I spent not on development, but on managerial responsibilities). The further, the worse the company was. Scored a lot of student interns, there were delays in salaries. And in the fall they began to cut people, because there were no more projects.

    Yes, it's a shame, it's sad, but, apparently, it's time to move on.

    Unfortunately, the last sn did not pay me. I think this money laid a black stain on their karma. Projects they no longer appeared, and the company closed.

    However, everyone who quit was able to quickly find a good job at a salary of 80+, even with experience from 6 months, in such companies as Sbertech, Alfabank, Tinkoff.

    Another advice for beginners: yes, it is very difficult to find a job for juniors, and you may spend more than one month, but try to find a white salary and it is desirable that there be a curator (ie, an internship with a further workplace, or a junior in established team).

    For example, I have a colleague (Sasha, wave your hand to my mother!), Who is working with me (Junior), looking for work after the courses for 2 months. Passed 8 interviews. Of these, only 2 invitations. The average RFP in the market for a junior is about 60-80K. If the internship option, then the internship can pay about 30-50k, which, you see, is better than working at H & M or courier.

    Low qualifications of developers in small companies


    I was a little slow. Hr-s, when they see my age, are skeptical about my resume (and I probably even understand them), so I did not receive as many offers as young guys.

    Advice to those over 35
    Очередной совет для тех, кому за 35: не унывайте! на рынке сейчас достаточно вакансий в маленьких компаниях, не только гигантам it-индустрии нужны разработчики.

    I settled into one small desk with a white salary. Since I had a little over a year of experience, I honestly evaluated myself with a junior. I was very surprised when in this company the guys who wrote the draft level were even lower (this also happens) ...

    My main mistake in joining this company was: at the interview I didn’t ask who would be the team leader and how the training process for juniors was organized. Later it turned out that there was no team leader at all, and they tried to make me, by hanging up their duties without a salary increase, because By level I am only a junior.

    Perhaps, to some of the young and ambitious guys, this will seem very interesting, but I would recommend not to take up such a position without relevant experience, since without experience, you will not be able to think through the architecture of the project (of course, you can shove Viper everywhere and everywhere, but not all trainees or juniors know what it is because of the lack of a theoretical basis).

    For example, what has been done in this particular project (before my arrival) is what makes an experienced person's hair move

    • вместо использования стандартной функции didSelect, на каждую ячейку ставился жест (на мой вопрос: зачем? ответили: “иначе в одном методе очень много строчек”)
    • больше 7 вьюконтроллеров на 1000+ строк (MVC — во всей красе)
    • как правило, на всех экранах методы ViewDidLoad/viewWillAppear на 300+ строк
    • вся верстка в одном сториборде
    • ошибок по верстке в огромном количестве, например, на скроллвью ставилась таблица
    • вместо того, чтобы менять у кнопки цвет при разных состояниях, использовались две разные кнопки для нажатого и отжатого состояния


    After working for 2 months, I decided to leave, because there was no competent team lead in the company, there was little work, it was forbidden to refactor, and it was impossible to maintain such code.

    Then I again had to look for work and more than once ...

    Market situation and gray salaries


    The situation on the market is such that many companies do not bother with marketing, recruit developers, invest money, the project starts, after the minimum functionality is written, and the project gets stuck, a week goes by and the project is closed, because does not bring the expected profit.



    But I also faced the same situation: I decided to take a chance and went back to the gray salary, since Former colleagues called on this project. A good team and adequate team leadership for many is of great importance. For me, too, it played a big role, and I had to pay for it. The project was closed, the salaries for the last 1.5 months are not paid. They offered to compensate for the equipment from the workplace.

    So I got two acquisitions: a new poppy 2016 and experience (never to mess with gray salaries).

    Tip: Bypass Gray Wages
    Не покупайтесь на серую зарплату, пусть даже самую высокую, ну или рассчитывайте так, что зп будет выше настолько, чтобы можно было отложить на пару месяцев за 2 месяца работы! На рынке очень много компаний, которые платят неплохие деньги в белую.
    Также не принимайте «псевдо-белые» предложения — с оформлением ИП. Статью по этому поводу уже выкладывали на хабре.

    Results


    I sum up all of the above:

    1. Do not believe advertising online courses with internships! Either an internship will be provided to you by a fictitious one, or only contacts will be given, and then they will do it themselves ... And remove rose-colored glasses, there are very few companies on the market that are ready to take people for an internship, because the intern takes up valuable time from a highly paid specialist.
    2. Yes, the developers' salaries are now very tasty on the market, but if you want to change the profession here and now, you will have to be patient and understand that in the first 2-3 years you can not count on a high salary.
      Also note that courses last from 6 to 10 months. If you are not ready to quit your job, you will have to abandon the usual get-togethers with friends, vacations and weekends, since all free time will be spent on training and homework.
    3. Set aside money in case you have to search for an internship or a job for a long time.
    4. Learn the theory from the first days of courses. If you independently acquire knowledge and learn something new - this is not yours, it means that the profession of a programmer is not yours!
      Example: in the courses I studied objC, however, in the process of work it became necessary to learn Swift as well. Developers who can write in two languages ​​are valued higher. Knowledge of the theory is always required during the interview.
    5. Pull up the English language (at least to intermediate), so that at least WWDC can look in the original.
    6. If you plan to develop on iOS, it is better to buy some used macMini or, if your hands are right, build hackintosh . It is desirable (but not necessary) to be able to check your results on a real device and, accordingly, buy a developer account ($ 100 / year).
    7. If you have little experience, be sure to specify at the interview whether there is an experienced team leader and how the company refactor. Because If you get into a company where inexperienced colleagues work, then your development will slow down.
    8. Do not buy gray salaries and PI
    9. The article did not disclose the question of how my family and friends looked at me, but keep in mind that they will look at you with wild eyes, strongly discourage and convince you that they have made a wrong move.
      Think only with your head. In the end, this is your life, and it is up to you to decide how to proceed with it and where to go next.
    10. Set a goal , promise someone to do it and take a chance!
      Then everything depends on you! I managed.

    Now brag a little. What I could afford for the last year:

    • paid off all debts;
    • bought the car;
    • I bought English courses for my daughter and for myself;
    • I paid for my daughter’s education in Greece and her boyfriend;

    I wish you all good luck in achieving your goals!


    PS HR: No, I'm not looking for a job. Yes, I have a good high-paying job with a white salary on an interesting project, I do not plan to change it. I do not exactly consider relocation options in St. Petersburg, N-Novgorod, Kaliningrad, Kazan or Sevastopol.
    I will consider only the option of moving to Israel (no, there are no Jewish roots, English is at intermediate level, I also know Russian and Ukrainian. I just like the sea, the country and the Jewish worldview).

    PPS: I will marry a Jew, preferably with the name Abramovich or Rotenberg (joke)

    Thank you for reading to the end!

    Thanks to Lowtrack for helping me write this article.

    Only registered users can participate in the survey. Sign in , please.

    Which of the following points do you consider the most difficult on the way of becoming a programmer?


    Also popular now: