Позначка: python

  • Як стати Software Engineer: моя історія

    Як стати Software Engineer: моя історія

    Для кого ця стаття?

    Для таких як я сам, хто в часи пандемії та суттєвої трансформації життя, вирішив змінити професію.

    Досвід

    Я — Сергій Купрієнко, зараз працюю Junior Software Engineer у великій аутсорсінговій компанії. До цього мав досвід у різних сферах: займався продажами, видавничою діяльністю, робив переклади, був редактором енциклопедії, науковцем-істориком, екскурсоводом, ученим секретарем музею. Захистив кандидатську дисертацію по історії інків та отримав науковий ступень PhD. Часто все це було паралельно, оскільки одночасно навчався та працював на 2-3 роботах.

    Хобі

    Хотів би згадати про свої хобі: історія, література (художня, нон-фікшн, наукова), переклади з іспанської мови, ведення блогу. На ентузіазмі я видав більше 10 книжок із перекладами джерел по історії Доколумбової Америки, а це, гадаю, більше, ніж було зроблено за 100 років до того. Маючи якесь хобі, як правило, згодом я отримував роботу, пов’язану з ним.

    Я мало був пов’язаний з IT-сферою напряму, аж поки не увійшов до команди Великої української енциклопедії, яка розробляла першу універсальну українську енциклопедію. Я був куратором розробки її онлайн-порталу, тобто, фактично, Project-Manager’ом, і разом із командою ми запустили у 2019 році.

    Switch

    А тепер розкажу про те, як я здійснив свійswitchіз науковця-історика в Software Engineer. В цілому, весь процес зайняв 1 рік 😊.

    Рішення про зміну професії я прийняв, порадившись із дружиною, в січні 2020 року, оскільки побачив перспективи розвитку та попит на IT-спеціалістів. Вона сказала, що варто спробувати. Це звучало фантастично, бо я не знав достеменно, що вивчати, скільки це займе часу і через що доведеться проходити. На той момент я працював у музеї на адміністративній посаді. 

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

    Методики

    Перша методика —швидкочитанняза допомогою технології Text-to-Speech. Для того, щоб нею скористатися, потрібно лише мати смартфон з Android, додаток PocketBook. В додатку треба включити аудіо режим Text-to-Speech, але на швидкості 2Х, тобто в два рази швидше звичайної вимови. І тоді будь-яку книгу можна прочитати дуже швидко. Ось моя публікація з цього приводу. Загалом, за 2018-2019 роки я прочитав більше 700 книг найрізноманітнішої тематики.

    Друга методика — швидкоперегляд. Усі навчальні відео я так само переглядав на швидкості 2Х. Гадаю, в майбутньому всі діти будуть навчатися, читаючи та переглядаючи відео зі швидкістю 2Х. 

    Python

    Коли задумався, яку мову програмування вивчати, то я вирішив обрати Python, як найпростішу для розуміння і найпоширенішу у викладанні. В березні 2020 побачив знижку на курси Data Science/Data Analytics відDatacamp, а підписка за $100 на рік – це крута інвестиція, то не вагаючись її купив. Далі подумав, як спланувати навчання і тут натрапив на сайт від компанії Epam, де можна було детально прописати всі можливі цілі, яких потрібно досягнути для рівня Junior. У мене було бажання стати Data Analyst. Під це і сформував свій план розвитку. Хоча в подальшому я і змінив своє ставлення до цієї цілі. Тож не варто цементувати в бетоні речі, доцільно бути гнучким до вимог ринку, роботодавця або клієнтів.

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

    Закладки

    Також я мав за гарну звичку додавати будь-який цікавий сайт в закладки свого браузера Chrome. Пізніше з цих закладок я зробив репозиторій на GitHub, де розподілив посилання на сайти по категоріях. Паралельно я перечитав сотні статей про Python наMedium.com— і, скажу, що це один із найкращих ресурсів для розробників. Загалом за рік я переглянув чи перечитав більше 1500 статей по Python.

    Поради: зберігайте важливі сайти в закладках; структуруйте за темами.

    Paternity leave

    Звідки у мене було стільки вільного часу на все це? Доволі просто — я перебував уpaternity leaveзі своїм малятком. І скажу, що це був найкращий час у моєму житті, сповнений барвистими емоціями і новими враженнями. Власне, необтяжений якоюсь іншою роботою, я зміг себе присвятити батьківству та навчанню.

    Резюме та тестові завдання

    Поки тривало навчання, я робив мало своїх проектів. І це було найбільшою помилкою. Усвідомив я це лише в літку 2020 року. Тоді я почав надсилати свої перші резюме й отримувати перші відгуки. А це було неабияким випробуванням, адже майже усюди для новачків обов’язкова умова — виконати тестове завдання. Більшість тестових завдань були міні-проектами, частина – алгоритмічні задачки. Іноді ламав голову по три-чотири дні. Часто не міг вирішити одне чи два завдання з переліку в три-п’ять пунктів. На тиждень міг опустити руки. Але потім почав розуміти поразки як стимул поліпшити свої знання та навички. І все це давало змогу вивчити невідомі раніше теми.

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

    Перші проекти на Python

    В основному підтягував знання по напрямку Software Engineer наLinkedIn Learning, де зібрано чудові високоякісні курси по будь-якій мові програмування (підписка на перший рік коштувала 27 Євро). Я, мабуть, переглянув та протестував сотні цих курсів на різні теми по Python, Data Science, Machine Learning, NLP, Django та Flask.

    Саме веб-фреймворки Django і Flask мене зацікавили найбільше. І коли почав ними займатися, то відчув, що це і є ті речі, з яких можна зробити реальні пет-проекти, які можна вказувати в резюме. 

    Прокачайте свій Github-профіль

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

    Вважаю, що чим більше ви як Software Engineer урізноманітните свій GitHub-профіль та резюме, тим більше шансів у вас буде отримати першу роботу в IT. Ось який профіль я зробив собі.

    До речі, на замітку рекрутерам, саме через такий тематичний пошук мене знайшла рекрутерка і запропонувала тему, яка цікавила мене і яка потрібна була замовнику. Тобто win-win ситуація. 

    Поради: розміщуйте власні пет-проекти на github, вказуйте їх у резюме.

    Прокачайте свій LinkedIn-профіль

    Паралельно, раджу прокачати свій профіль в LinkedIn, бо саме звідти часто надходять пропозиції від рекрутерів. Для цього я скористався особистими порадами Юлії Шишенко та її статтею. А також додав у друзі більше 2000 людей (HR, рекрутерів, Python-розробників, Data Scientist’ів і т.п.). Також створіть профіль на Djinni (https://djinni.co/), але новачкам отримати офер там може бути тривалим випробуванням, хоча як не дивно, саме там я отримав перший дивний офер.

    Поради: оптимізуйте профіль у LinkedIn, адже саме там вас будуть шукати рекрутери.

    Перший офер

    Найцікавіше почалося, коли мені запропонували перший офер у листопаді 2020 року…

    Але трохи передісторії 😊 

    Перша спроба потрапити в IT-компанію була доволі дивна. В листопаді 2020 року після інтерв’ю та тестового завдання на логіку я отримав офер на посаду Technical Customer Support від продуктової компанії. Мені здавалося, що так я зможу потрапити в IT, але не з парадного входу. Тим більше ризиковано для мене було, тому що основний стек у компанії був PHP. Домовилися, що я вийду на роботу 1 грудня. Коли я прийшов, то мені виділили комп’ютер з усіма налаштуваннями та доступом до HelpDesk. Я почав читати документацію. Та вже в перший день мені дали опрацьовувати перші запити від клієнтів. Оскільки не все було зрозуміло, то я почав радитись у свого менеджера, але на всі мої запитання була одна відповідь (усно або в чатах): “Ти маєш сам все вирішити та зрозуміти”. Це було дивно чути. На наступний день було те саме, але ще й комп’ютер почав самовільно перезавантажуватися разів чотири чи п’ять, після чого постійно доводилося наново все запускати і це нервувало. Та вже по обіді стало зрозуміло, що ніякої підтримки я не отримаю, мов, “розбирайся сам”, і я вирішив, що не хочу тут працювати. Сказав, що мене це не влаштовує, і роботодавець та я зрозуміли, що на тому і бути, ми розійшлися. Пропрацював я лише півтора дні, і це була моя найкоротша робота в житті. Я й досі не можу зрозуміти такого підходу роботодавця, коли новачок має розбиратися сам без будь-якої підтримки, і  його залишають сам на сам із невирішеною проблемою та неробочою технікою.  

    Коучинг-сесія

    Далі почалися “темні” дні пошуку роботи. І вже коли я був на самому емоційному дні, бо я ж хотів самостійно знайти роботу, без чиєїсь допомоги, моя дружина Любов Купрієнко, психолог та психотерапевт, запропонувала провести для мене коучинг-сесію. Це було 15 січня 2021 року. Я не уявляв, для чого воно треба. Але коучинг був крутий і збувся в усіх деталях, змінивши мій стан відчаю від довгого пошуку роботи на стан натхнення від бажаного результату. Ми поставили ряд цілей та конкретних формулювань, які я б хотів почути від майбутнього роботодавця:
    1) роботу мають запропонувати до 1 лютого 2021 (тобто протягом двох тижнів!),
    2) я маю почути фразу, якої чекав: “Ми раді запропонувати вам офер…”
    3) я хотів, щоб мені також сказали, що у мене буде ментор.

    І тут почалося! Стали надходити пропозиції одна за одною. 

    Офер та контр-офер

    Спочатку рекрутерка однієї з найбільших аутсорсінгових IT-компаній України пропонує мені пройти кільки етапів інтерв’ю на позицію Software Engineer та виконати непросте, але цікаве тестове завдання. І вже коли ми були на останньому етапі, на мене вийшла рекрутерка іншої — продуктової компанії. Теж запропонувала провести одне (замість традиційних 2-3) інтерв’ю з їхньою командою розробників. Я спочатку не знав, що відповісти, а потім подумав, що це найкращий шанс дізнатися про свій рівень та оцінити самого себе, тому я погодився.

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

    Дилема

    І почалася дилема.

    Вибрати першу, але велику компанію, з меншим рейтом, хоча і з ментором, або другу компанію, з більшим рейтом та одразу на позицію Junior. 

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

    Від Trainee до Junior Software Engineer

    І отримав джоб-офер своєї мрії, саме такий, як я описував у коучінгу, і саме в ті терміни, тобто протягом двох тижнів!

    За три місяці випробувального строку у якості Trainee Software Enginee, я вивчаю також Bash, основи C language, ознайомився з компіляторами.

    По завершенні випробувального терміну, отримав промоушен до рівня Junior Software Engineer.

    Продовжую вивчати все нові і нові речі – CI/CD, pipelines, Docker, можливо, Cloud-платформи або щось інше. Як то кажуть “нєсть їм числа”. 

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

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

    Джерело: Highload

  • Conda cheatsheet

    Conda

    Managing Conda and Anaconda, Environments, Python, Configuration, Packages. Removing Packages or Environments

    (більше…)
  • Find the sum of the digits in the number 100! (Python)

    Find the sum of the digits in the number 100! (Python)

    Python code to demonstrate a method to compute the factorial digists sum, i.e. 100 factorial (100!).

    This test exercise I’ve recieved when I was looking for a Trainee Python Developer position.

    n = 100
    fact = 1
      
    for i in range(1, n+1): 
        fact = fact * i
    
    # Convert number to string
    text_fact = str(fact)
    
    # Initialize empty list for every letter of factorial string 
    summ = []
    
    for letter in text_fact:
        summ.append(int(letter))
    print(sum(summ))
    648
  • Django ORM and SQL: Making QuerySet Expressions

    Django ORM and SQL: Making QuerySet Expressions

    Making QuerySet & Query Expressions with Django ORM like SQL, or Django ORM == SQL.

    If you are migrating to Django from another MVC framework, chances are you already know SQL.

    In this post, we will be illustrating how to use Django ORM by drawing analogies to equivalent SQL statements. Connecting a new topic to your existing knowledge will help you learn to use the ORM faster.

    Let us consider a simple base model for a person with attributes name, age, and gender.

    (більше…)
  • The Pause Effect and most common words

    The Pause Effect and most common words

    With Pause Effect Python script you can find the topic of any text only parsing 1/30 or 1/50 of all text:

    –https://github.com/skupriienko/Pause-Effect

    Люблю досліджувати. Мабуть, це з дитинства.
    Несподівано виявив, що достатньо 1/30 або 1/50 від усього тексту, щоб зрозуміти основну тему тексту.
    Вирішив назвати цю свою знахідку “The Pause Effect”.

    Якщо спеціальним чином вибрати слова з будь-якого тексту (книга, стаття, туторіал тощо). Ви всі зрозумієте, про що твір, переглянувши на перші 20 найуживаніших слів.

  • Weather Ukraine Kyiv Scraper на Python

    Weather Ukraine Kyiv Scraper на Python

    Написав “Ukraine-Kyiv-Weather-Scraper” після Gmail-reader‘а. Може кому знадобиться. Це Python модуль для автоматичного збирання погоди для м. Києва (Україна) з сайту meteo.gov.ua, результат збирається в файлі csv (кожен раз створюється новий файл із міткою часу).

    Запустіть ukraine_kyiv_weather_scraper.py і ваші результути будуть збережені у папці ‘result_csv’.

  • I analyzed 1000 articles about Python

    I analyzed 1000 articles about Python

    I started studying the Python programming in March 2020.
    Since then, I have reviewed and collected thousands of PDF articles, as well as more than a thousand links to articles.
    This is, so to speak, my learning path and knowledge base.

    (більше…)
  • Create my first open source project – Pyxtract

    Create my first open source project – Pyxtract

    Create my first open source project – Pyxtract:
    – https://github.com/skupriienko/Pyxtract

    Python module for extracting texts from thousands of URL and/or PDF:

    – Download and parsing articles from URLs
    – Extract texts from local PDF files
    – Analyze texts
    – NLP preprocessing
    – Visualization
    – Word clouds
    – Name Entity Recognition

    NER
    Boxplot

KUPRIENKO