Те, що я дізнався під час своєї подорожі як самовчений розробник мобільних пристроїв

У цій публікації я розповім всю свою подорож про те, як я став професійним розробником мобільних пристроїв.

Я сподіваюся, що читання мого досвіду допоможе вам задуматися про своє сьогодення та своє майбутнє, або допоможе вам розпочати кар’єру розробника, або спонукає вас рухатись уперед у досягненні своїх цілей.

Мій університет і як все починалося

Я закінчив середню школу з математико-інформатичним ступенем у маленькому містечку в Румунії.

Як і більшість моїх друзів, у вас було два варіанти, щодо міст, в які можна вступити до університету. Я обрав Бухарест, столицю Румунії.

Я виріс, думаючи, що університет - це обов’язкова справа. Це, мабуть, відбувається у більшості країн.

Усі наші батьки хочуть цього для нас.

Я ніколи не відчував бажання вибрати конкретний ступінь. Звучить знайомо? Ніколи не бачив, як я працюю чимось після того, як закінчив університет.

Зрештою, я вирішив вступити до економічного університету в Бухаресті. Знову було два варіанти. Один вважався хорошим університетом, а інший, де ви заплатили б великі гроші лише за те, щоб отримати диплом.

Я склав кілька іспитів на першому, не вивчаючи, чесно кажучи. І явно я не пройшов.

Мені довелося піти з другим варіантом.

Швидко вперед, і я закінчив економічний університет. Але я закінчив два роки пізно. Я ніколи не захоплювався економікою і ніколи не бачив, як працював банкіром. Я завжди думав, що хочу отримати диплом, і все.

Я ніколи не думав, скільки плачу за цей марний диплом, але мені потрібен був диплом, щоб його прийняло суспільство, так?

Я зазнав невдачі, маючи диплом економіста, але не маючи досвіду чи знань. У наступні роки за допомогою сім’ї мені вдалося створити два підприємства, які теж провалились.

Я не буду обговорювати їх у цій історії, але скажімо просто, що я багато чому навчився. Я також грав у покер в Інтернеті, і мені це вдалося.

Через сім років після закінчення середньої школи я виявив, що не маю досвіду роботи, успішного бізнесу та грошей.

Я знав, що повинен вжити заходів, і знав, що всі мої мрії про успішний бізнес не відбудуться скоро, якщо у мене не буде резервного плану.

Тоді я подумав:

Яку роботу я можу отримати, яка зробить мене щасливим, добре заплатить і дозволить мені добре жити у віці 30-40 років, навіть якщо мені так і не вдається створити власний бізнес?

Єдина відповідь, яка мені спала на думку - це програмування. Я мав певний досвід роботи в середній школі і створив кілька веб-сайтів.

Проблема була лише одна - мені не подобалася математика в середній школі, і я завжди думав, що не зможу навчитися професійному програмуванню без чудового її розуміння.

Я був неправий.

Напевно, є багато таких людей, як я, людей, які мають однакові думки та сумніви. Але все, що вам потрібно зробити, це вжити заходів і почати вчитися.

Вивчення Android та Java

Це був 2014 рік, коли я вперше почав вивчати ідею навчитися кодувати.

Перше, що я зробив, це в Google на деяких курсах у Бухаресті, і я знайшов компанію, яка запросила мене до своїх офісів. Я поїхав туди, і пам’ятаю, у них був чудовий мебльований офіс з великою кількістю iMAC. Я сказав собі: "Це те, що мені потрібно".

Через десять хвилин я виявив, що вони проводять всі курси в Інтернеті і що це більше схоже на офіс, щоб продати курс, а не робити курс.

Я не пам’ятаю точної ціни, але вона була близько 1500 - 2000 доларів. Я не взяв.

Я відпустив цю ідею на кілька місяців, потім настав 2015 рік. Новий рік, нові плани, нове життя, розумієш?

Я знову почав вивчати особистий курс і виявив, що їх називали завантажувальними таборами.

Знайшли один у Бухаресті, і вони робили Java, і коштував він лише близько 800 доларів США протягом чотирьох місяців. Це було б кілька годин на день з викладачем та іншими учнями.

Озираючись назад, я думаю, що вони були дешевими за те, що запропонували, але я думаю, що ми були другою партією, яку вони мали.

Вони розповідали нам всі речі про те, що мене найнять після буткемпу, але мені було все одно.

Я хотів навчитися кодувати і думав, що мені вдасться швидко знайти роботу вже через кілька місяців. Я мав рацію, але це було не так просто, як я думав.

Заняття розпочались. Вони завжди говорили нам, що недостатньо робити лише уроки під час наших спільних годин.

Я намагався слухати. Але вдома все ніколи не мало сенсу. Програмування було важким, і я часто думав, що не зможу закінчити завантажувальний табір.

Я штовхався все сильніше і сильніше. Пройшов один місяць курсів, коли я дізнався, що ми збираємось вивчати Java з Android, але знову ж таки, мені було все одно. Я закохувався в Eclipse, і все траплялося на екрані, коли ми кодували.

Eclipse - це інтегроване середовище розробки, яке спочатку використовувалося для розробки для Android. Зараз ми використовуємо Android Studio.

Це було важко. Урок після уроку я намагався вивчити змінні, класи, успадкування, інкапсуляцію, для циклів тощо.

Але я боровся. Я не мав чіткого уявлення про те, як я можу використовувати все це у великому додатку. Багато разів це не мало сенсу.

Якщо ви тільки почали програмувати і відчуваєте те саме, я хочу, щоб ви знали, що це нормально.

Наші наставники завжди говорили нам: "Вам не потрібно знати про все це з голови. Просто спробуйте зрозуміти, що це таке і як ви можете ними скористатися".

Вони мали рацію, але це я з’ясував пізніше. У той конкретний момент часу це не допомогло.

Я шкодую про те, що я не робив проектів з самого початку. Я завжди думав, що мені потрібен вчитель і що ти не можеш нічого навчитись самостійно в Інтернеті. Я лінувався і знову помилявся.

Через чотири місяці мені вдалося створити свій перший "неробочий" додаток. Це був додаток, де студенти могли орендувати кімнати в інших студентів чи людей.

Я сказав "неробочий", тому що в ньому не було жодної серверної частини або жодного користувача. Це більше нагадувало демонстраційний додаток, який використовував якийсь SQLite для зберігання даних.

Я пишався цим, бо за кілька місяців до цього я навіть не уявляв, що можу це зробити.

Буткемп закінчився, і я думаю, що більше ніколи не спілкувався з кимось із їх керівництва.

Не впевнений, чи намагалися вони влаштувати мене на роботу, чи, можливо, вони вважали, що я недостатньо хороший для кар’єри розробника.

Перші співбесіди та перша робота молодшим розробником Android

Я почав брати інтерв'ю, і я пам'ятаю, що моє перше - роль Java у великій міжнародній компанії, розташованій у Бухаресті. (Підказка: у них понад 300 000 співробітників, а їх дохід з 2019 року становив близько 77 мільярдів.)

Я не брав інтерв’ю, але вважаю, що розмова була вдалою. Можливо, мене не взяли на роботу, бо я не мав досвіду.

Після цього мені знадобився ще місяць, щоб отримати чергове інтерв’ю.

Друг, якого я завів у завантажувальному таборі, допоміг, рекомендуючи мене. Якщо він прочитає цей пост, я хочу подякувати йому.

Роль насправді була розробником Android для румунської аутсорсингової компанії, яка мала контракт з телекомунікаційною компанією.

У мене було два інтерв’ю з ними, переважно технічні питання, і я досі пам’ятаю, коли вони телефонували, щоб запропонувати роль.

Зарплата була невелика, але це не мало значення.

Я думаю, що я запустив bootcamp наприкінці травня 2015 року, а свою першу роль молодшого розробника Android я розпочав у січні 2016 року.

Це було цілком досягненням.

Мій менеджер призначив мені проект, і тоді я почав дізнаватися про контроль версій, як працювати Agile та як працювати за 2 тижні спринтів.

Якщо ви почали вивчати програмування або хочете почати, я рекомендую три речі.

  • Почніть сьогодні (Необов’язково, якщо ви вже розпочали)
  • Робіть якомога більше проектів
  • Вивчіть контроль версій (Git, Bitbucket або Gitlab) і перенесіть туди всі свої проекти.

Можливо, я напишу ще одну статтю про всі ці речі.

Під час перебування в цій компанії я зустрів багато доброзичливих та корисних людей. Я, мабуть, дратував багатьох з них, бо спочатку я просив про велику допомогу.

Нова країна та інші робочі місця для Android

Через 9 місяців я вирішив, що хочу переїхати до Лондона, оскільки отримував багато повідомлень від рекрутерів. Також я думав, що там буде легше продовжувати свою кар'єру, а потім повернутися до Бухареста.

Мені пощастило, що там жила моя сестра, і вона була досить добра, щоб дозволити мені жити з нею.

Навіть коли у мене були вербувальники, які обіцяли мені інтерв’ю та подібні речі, коли я потрапив туди, у мене не було зустрічей.

Я знав, що це буде непросто, і подав заявку на багато вакансій в Інтернеті.

Через два тижні я отримав інтерв’ю у британській телекомунікаційній компанії. У них був невеликий ІТ-відділ, і їхній розробник Android пішов. У них були внутрішні програми для CRM для Android, якими користувалися їх співробітники, і їм потрібен був хтось для обслуговування та розробки нових програм.

Це був однорічний контракт, і зарплата не була великою (я це з’ясував пізніше), але знову ж таки, я був щасливий.

Того року я навчився тонни (самостійно).

Я вивчив специфічні для Android технології, такі як:

  • Що таке архітектура, як Model-View-Presenter, і як використовувати її в додатку
  • Як правильно провести одиничне тестування
  • Тверді принципи

І так далі.

Я все це дізнався на роботі та у вільний час. Я працював, а у вільний час будував програми для себе.

На сьогоднішній день усі мої програми (5 на Android) завантажують понад 100 тис., Переважно органічно, але лише одна з них заробила більше 2000 доларів США.

Я працював у телекомунікаційній компанії рівно рік. Я хотів спробувати щось інше у Лондоні та співпрацювати з іншими розробниками Android.

Мені знадобився певний час, щоб зрозуміти, що як розробник програмного забезпечення вам завжди потрібно робити більше, ніж те, що ви робите на роботі. Те саме з лікарями чи юристами. Їм регулярно потрібно вдосконалювати свої знання, щоб бути кращими за інших.

Я почувався готовим працювати над більш значним проектом, але, думаю, не мав достатньої кваліфікації.

Це мене не знеохотило, і я взяв роль Android у глобальній аутсорсинговій компанії.

Я збирався працювати у великому британському банку в Лондоні.

Спочатку мені було страшно, але мені знадобився місяць, щоб відчути, що я є частиною цього проекту.

Я зробив три інтерв’ю, перш ніж вступити в проект.

Протягом моєї кар’єри всі співбесіди, які я робив, мали два-три кроки.

Перший, як правило, з HR, де вони запитують вас про ваш досвід.

Друге інтерв’ю може бути з технічними питаннями, завданнями додому або технічними питаннями з деякими алгоритмами.

Третє інтерв’ю може бути з технічним керівником, менеджером або знову з кимось із HR.  

Я почав працювати в банку у відповідній команді Scrum. Ми працювали 4 розробниками Android, 4 розробниками iOS, менеджером проектів, власником продукту, 2-3 інженерами із забезпечення якості, бізнес-аналітиком, копірайтером, дизайнерами.

Усі ці люди розробляли важливу частину програми. Проект був масовим.

Тільки в команді розробників було більше 30 розробників Android і більше 30 розробників iOS.

Я пробув у цій ролі один рік, як і на попередній роботі. Причина? Я хотів повернутися до Румунії.

Мені пощастило мати навколо себе лише хороших колег.

Ніколи не помиляється просити про допомогу, якщо ви хочете навчитися. Ми всі почали спочатку, з нульовими знаннями. Я відчуваю, що страшно не хотіти вчитися, коли ти не знаєш.

Рік у банку навчив мене багато чому, і це відчувалося як кілька років. Я вивчив:

  • Як робити огляди коду
  • Як працювати над проектом, який вимагав 100% покриття коду для модульного тестування
  • Як доставити функції вчасно
  • Що таке чиста архітектура і як писати код, який легко читати, не залишаючи безлічі коментарів

І багато іншого, що я, мабуть, не пам’ятаю.

Повернення додому з більшими знаннями

Це було в листопаді 2018 року, коли я повернувся до Бухареста, після двох років і трохи життя в Лондоні.

Це був чудовий досвід, але він не відчував себе як вдома.

Після повернення я досить швидко (2 тижні) отримав нову роботу в іншій аутсорсинговій румунській компанії.

Мені знадобилося всього чотири місяці, щоб я знову поїхав на новий піврічний проект у Лондоні.

Я не був радий залишити свою дівчину в спокої, але гроші були непогані лише за півроку роботи.

Мені не дозволяється розголошувати будь-яку інформацію про проект, оскільки я підписав угоду про нерозголошення інформації, і сьогодні я досі працюю на них. Але я зараз перебуваю в Бухаресті. Я працюю в поточній компанії вже більше півтора років.

Що я дізнався на цьому проекті?

  • Як створити команду
  • Як запустити великий додаток з нуля. Я, мабуть, буду дуже пишатися, коли ми будемо запускати, і люди будуть ним користуватися.
  • Як адаптувати вимоги до великої кількості невідомих.
  • Як досягти результатів, працюючи з людьми у всьому світі.

Це була шалена подорож.

Висновок і те, що я дізнався

Мій пост містить понад 2000 слів, і я відчуваю, що не розповів вам багато подробиць про те, що я дізнався. Я лише подряпав поверхню.

Це було непросто, але я не шкодую, обравши цю кар’єру.

Якщо ви мене 5 років тому, просто починайте.

Вам захочеться кинути. Вам здасться, що ви недостатньо розумні, ви почуватиметесь як будь-який розробник, якому потрібно кілька годин / днів, щоб щось вирішити без будь-якої удачі, а потім має момент блиску.

Не неправильно не знати, і жодне питання не є дурним. Це страшно, якщо ти не хочеш вчитися.

Сьогодні більше розробників, ніж будь-коли, готові допомогти. Ви можете легко знайти групи Discord, де люди із задоволенням відповідають на ваші запитання щодо програмування. Є багато спільнот Reddit, які будуть корисні. Можливо, навіть канали Slack можуть працювати для вас. Пошук наставника також може бути рішенням.

Веб-сайти та канали YouTube, такі як freeCodeCamp - це все, що вам потрібно для початку.

Ось усі речі, про які, я сподіваюся, ви дізналися в цій публікації:

  • Починати важко, але кожен день вивчення чогось нового принесе вам величезне задоволення.
  • Вам потрібно робити всілякі проекти. Знання основ - це добре, але побудова речей та робота з контролем версій допоможуть вам підготуватися до майбутньої роботи.
  • Люди готові допомогти (як онлайн, так і майбутнім колегам)
  • Будуть дні, коли нічого не вийде. Ви не знайдете рішення легко. Або розслабтеся і поверніться до проблеми пізніше, або просто попросіть про допомогу.
  • Усі розробники (молодші, середні та старші) шукають рішення в Google і часто застряють.
  • Ви відчуєте синдром самозванця, але повірте мені, коли я скажу, що я зустрів розробників із ступенем CS, які гірші за мене.
  • Будучи розробником, це не тільки кодування. Важливі також м’які навички.

Якщо вам сподобалась ця стаття і ви хочете отримати більше цього, підпишіться на мене у Twitter. Я пишу про свою подорож розробником мобільних пристроїв, про свої невдалі / успішні стартапи, про маркетинг додатків та всі інші речі, про які я дізнався за останні 10 років.