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 of 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 straight 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 skipped then (it was enough for me to live on them for 8 months).

In Lanka, I worked in procurement, 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, since The niche is quite new, it is developing rapidly, and developers will be more and more lacking every year. (Albert, if you are reading this, hello and thanks to you for your advice!).

Well, the goal is set, it's time to act! I paid for online courses (designed for 6 months + 2 months internship), then the cost of 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 capabilities, 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 ill-considered waste 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 machine has slowed down 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
Therefore, advice to those who decided to study the iOS: buy yourself a cheap used macMini or put a hackintosh. And for the money is not expensive, and the efficiency is higher (you will not need to wait for 10 minutes of each assembly).

At first, the phone will not be needed, because To build on the phone you need a developer account. Well, if you already have an iPhone and if you don’t feel sorry for the money, then the account costs $ 100 / year. I went the hard way and the training took place on the virtual, because I did not see the point of spending money, besides, Android was then my goal.

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 weekend) 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 a desktop what OOP is, what classes, objects, methods are.

Since, I knew that my level in programming was far from that which young people 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 lay down at 6 in the morning, at 12 she woke up and again to study. In general, to keep everything on par 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 already 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 internship online resource 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 is there to be surprised when vacancies of such companies as redmadrobot hung there), other companies did not even bother to look at my resume. On hh also no vacancies for juniors was not. 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. A lot of google and came across a message in vk that the i-traitors and Android interns are constantly recruited to the Conditional team (the name has been specifically changed). 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 would not reinvent the wheel, and I did my task with a certain 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 didn’t stand up to expectations and ended up in a chat, which was probably a 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 I 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 every day for 3 months, 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 only had money planned 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 on the courses is about 10% of all the knowledge that I received on the internship.

To my shame, on internships and courses I paid very little attention to theory. Then no one explained to me that theoretical knowledge is very important and will be needed in the development of practical tasks and for further interviews.

Tip: Learn Theory
Therefore, advice for beginners: learn the theory! And if you do not need it at the moment, then it will definitely come in handy in the future!

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. I did not really have 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 , the 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 kind of 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 for a day, although they promised that if I show myself well, the term will decrease. As it turned out, these are just 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 did not devote to development, but to managerial responsibilities). The further, the worse the company was. They 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 qualification of developers in small companies


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

Advice to those over 35
Another advice for those over 35: do not be discouraged! There are now enough vacancies in small companies on the market, not only the giants of the it industry need developers.

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 arranging for this company was: at the interview I did not ask who would be the team leader and how the process of teaching 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

  • instead of using the standard didSelect function, a gesture was made on each cell (to my question: why? answered, “otherwise there are a lot of lines in one method”)
  • more than 7 view controllers for 1000+ lines (MVC - in all its glory)
  • As a rule, on all screens the ViewDidLoad / viewWillAppear methods are 300+ lines
  • all layout in one storyboard
  • errors on the layout in large quantities, for example, on the scrolling table was set
  • instead of changing the color of the button in different states, two different buttons were used for the pressed and unpressed state


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 into the store, 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
Do not buy for a gray salary, even the highest, well, or count so that the sn will be higher so that you can postpone for a couple of months for 2 months of work! There are a lot of companies on the market that pay good money in white.
Also, do not accept "pseudo-white" sentences - with the design of IP. Article about this already laid out in Habré.

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 interviews.
  5. Pull up the English language (minimum 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. Since 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:


I wish you all good luck in achieving your goals!


PS HR: No, I do not search for work. 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 the 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 the level of intermediate, 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.

Source: https://habr.com/ru/post/415345/


All Articles