Я професійним програмістом (це який працює з 9:00 до 18:00) став в 27. Витратив багато часу на навчання в університеті, аспірантурі, викладачем працював. Тому в вас в 15 дуже гарний вік, щоб вивчити програмування та знайти гарну роботу к 18 рокам.
Чи можливо потрапити на IT-проєкт у 17 років?
Так, можливо. Я особисто наймав на роботу талановитого першокурсника ХНУРЕ (Python, Backend). Що підвищило його шанси? Я був десь рік з ним особисто знайом, тому що він ще будучи школярем ходив на мій Python-гурток на якому показував свої здібності.
З цього можна зробити висновки:
1. Знайдіть спільноту та познайомтесь з усіма.
2. Покажіть ваші здібності: портфоліо на GitHub, пет-проджекти, технічні доповіді, особистий блок, ютуб-канал, пропонуйте безкоштовну допомогу.
3. Відкрийте телефон та подзвонить кожному та запитайте: «Я працював над створенням вебдодатків, SaaS-проєктів і eCommerce-рішень. Чи потрібна вам така допомога? Чи потрібна вашим знайомим така допомога?»
4. П. 3, але з телефона батька та матері: «Мій син працював над створенням... » (далі по тексту).
Я працював над створенням вебдодатків, SaaS-проєктів і eCommerce-рішень
«Talk is cheap. Show me the code.» — Linus Torvalds
Все реально, ви на на правильному шляху, в вас все вийде! Якщо буде потрібна особиста порада — будь ласка пишіть в особисті.
Ще додам до статті, що якщо треба ефективно зберігати масиви простих даних, то можна використати пакет array. Особливо, коли програміст розуміє, які дані будуть в масиві.
>>> import array
>>> a1 = []
>>> a2 = array.array('H')
>>> for i in range(50000):
... a1.append(i)
... a2.append(i)
>>> sys.getsizeof(a1)
444376
>>> sys.getsizeof(a2)
104750
>>> a2.itemsize
2
У цьому прикладі я обрав ’H’ — unsigned short (С type) — int (Python type), де кожен елемент займає 2 байта в памʼяті. Та це у 4 рази компактніше ніж стандартний масив.
Ще ці масиви зберігаються компактно у памʼяті, та центральний процесор буде ефективно використовувати кеш-памʼять.
Цілком дякую за дуже цікаву та змістовну статтю. Кожен програміст повинен знати, як воно там працює «під капотом». :)
Це називається paralysis by analysis — параліч через аналіз «що краще? може це? а може те?». І замість того, щоб вивчати та автоматизувати час гається на роздуми.
Приваблюють Cypress та Playwright? Супер! Почніть автоматизувати за допомогою цих технологій. Java або Python? Будь що, але пишіть скріпти автоматизації.
Мій особистий шлях — це Python + Selenium. Ми за допомогою цих технологій написали декілька тисяч тестів та змінювати пока що планів немає. Я розробив онлайн-курс де за 60 годин навчив десятки людей автоматизувати з нуля: Selenium + Python: автоматизація тестування веб-додатків.
Is it acceptable to use injections like this example below.
Так. Це т. з. Setter Injection.
Can it be considered as a good practice?
Так.
20 років тому Мартін Фаулер описав різні засоби для Dependency Injection: Inversion of Control Containers and the Dependency Injection pattern. Зверніть увагу на розділ “Deciding which option to use”.
Особисто я для тестування використовую unittest.mock.
Ось я робив лекцію з прикладами моків різних сервісів для тестування: Python Mock, MagicMock: мокаем веб-сервисы, базы данных (російською мовою).
написання коду на папірці
Нещодавно почав знову писати програми на аркуші. Такого стану потоку не відчував мабуть років з 10. :)
Перший компʼютер в мене зʼявився в 1990 або 1991, я навчався у другому або третьому класі. Батько зпаяв мені ZX Spectrum. Мати придбала книгу по Бейсіку. Я знайшов там першу програму: вона повинна була запитати моє імʼя та написати «Привіт, Вова!».
Я набрав цю програму аж з двох рядків. Та нічого не трапилося. Вона не працювала. Я не міг зрозуміти: чому компʼютер не виконує мою програму? Адже я її написав повністю!
Я повернувся до теорії та почав читати книжку далі.
У наступному абзаці було написано: «Щоб запустити програму введіть команду RUN».
Я ввів та вона запрацювала.
Я вважаю що без теорії я не зміг би стати програмістом. :)
Усім гарної пʼятниці! :)
Сценарій: Передача 1000 повідомлень розміром 1 KB.
А які були повідомлення? Яке кодування?
Середній розмір повідомлення (KB)
А якщо усі повідомлення були 1 КБ, то в чому сенс рахувати середній розмір?
1. Можна дати оцінку по факту виконання попередніх схожих проектів. Наприклад: «Ми розробили схожу CRM за півроку, командою з 3 інженерів, це коштувало $100,000.»
2. Якщо власного досвіду не має, то найняти консультантів з досвідом схожих проєктів, які можуть надати готові WBS з оцінкою.
3. Менеджер проєкту повинен доповісти стейкхолдерам (замовнику) про ризики: scope is not defined, requirements are missing. Доповісти, що ці ризики суттєво впливають на терміни та бюджет розробки. Запитати: чи готовий замовник ці ризики нести? Якщо так, то беріть та розробляйте продукт. Якщо замовник не готовий нести ризики, то запропонувати знизити ці ризики: сісти за задокументувати скоуп та вимоги.
Тема дуже актуальна! Два місяці тому я робив вебінар (англійською мовою) щодо селф-промоушену для інженерів, та чому це важливо для нашої спільноти.
Аудиторія:
1. Хто хоче стати впливовими інженерами у своїй спільноті, ставши лідерами та прикладами для наслідування для тисяч людей.
2. Хто прагне видимо висловлювати і отримувати визнання за свої досягнення в компанії, будувати тісні стосунки з керівництвом та ключовими клієнтами, і стати ключовими членами своєї команди та компанії.
3. Хто хоче отримувати пропозиції роботи від провідних компаній, впевнено проходити співбесіди та розуміти свою цінність, знаючи свої сильні і слабкі сторони.
Теми:
1. Що таке самопросування і чому це важливо для КОЖНОГО?
2. Я не зробив нічого особливого — чи варто просуватися?
3. Де просувати себе?
4. Я все ще маю сумніви, чи варто мені займатися самопросуванням...
5. Приклади та кейси.
Посилання на YouTube: Self promote! Don’t wait for your manager!.
Майже усі турніри з тенісу (див. ATP Tour) — там спортсмени особисто подають заявки на змагання. Там складна рейтингова система, щоб тримати рейтинг на рівні спортсмен повинен постійно грати та вигравати. Тому запрошувати не має сенсу — хочеш бути в топі — кожені
Я навчався в
Ой, за 15 років роботи старшим викладачем ХНУРЕ багато чого доводилося на пальцях пояснювати. :)
На протяжении последних 5 лет я с переменных успехом запускал отдел автоматизации тестирования в своей компании Design and Test Lab. Первый запуск был примерно в 2017 — нашлось несколько талантливых инженеров-тестировщиков, которые самостоятельно изучили Python + Selenium и написали скрипты автоматизации. Но эти люди со временем ушли из компании и знание автоматизации в компании тоже ушло. :)
Второй запуск был в 2021 году. Тогда уже мы ввели внутренний еженедельный семинар по Селениуму и автоматизации и начали всех инженеров учить Питону и Селениуму с нуля. Получилось тоже не очень, потому что на это выделяли мало времени.
Третий запуск в 2022 был самым успешным. Я разработал и записал видео-курс Selenium + Python: QA Automaton. Особенности: изучается Python с нуля, но в том объеме, которого в принципе хватает чтобы понимать и писать скрипты автоматизации. Так же изучается основа Selenium WebDriver тоже в том объеме, чтобы было достаточно начать автоматизировать наши веб-проекты. Т. е. я старался подстраивать программу курса под нужды моей компании. В этот раз автоматизированное тестирование сдвинулось с мертвой точки, наши ребята написали уже больше 1000 автотестов на наши веб-приложения. Покрытия тест-кейсов иногда доходит до 50%, что в принципе очень хорошо, когда на проекте больше 1000 тест-кейсов.
По вопросу: «Нужно ли знать <язык программирования> чтобы автоматизировать?» — в Селениуме однозначно нужно (будь это Python, Java или C#), и чем лучше знаешь — тем проще, но основ хватает.
Онлайн курс по самому Питону лежит в открытом доступе на YouTube: Язык программирования Python/Питон.
Дисклеймер: я автор этого курса, т. е. по сути это самореклама. И я готов отвечать за качество курса.
Та їм і не треба знати. Це лише діагностична інформація, яка допоможе розробникам швидше виправити помилку.
Если ошибка повторяется, то описывают шаги. Если этот креш происходит при непонятных обстоятельствах, то просто в тикете отсылка к Сентри, а программисты пускай уже сами смотрят стак трейс и чинят.
Для всех наших проектов 100% обязательная установка Сентри. QA-инженеры имеют доступ, но не обязаны разбираться в стак-трейсах. Сентри интегрирована с Джирой и куа заводят тикеты на основании репортов Сентри.
«Молодість — це недолік, який дуже швидко проходить». :)