День захисту дітей від поганого коду

День захисту дітей від поганого коду

Піст присвячений дню захисту дітей. Будь-які збіги – не збіги.

У 10 років у мене з'явилися перший комп'ютер і диск з Visual Studio 6. З того часу я вигадую собі завдання - автоматизувати справи, зібрати який-небудь веб-сервіс для трьох осіб або написати гру, яку потім видалять з плеймаркету від старості. Звичайно, я втрачав вихідні коди і писав код, який соромно показувати людям. І в 10 років я точно не відмовився б отримати з майбутнього архів з усіма косяками — щоб ніколи їх не допускати.

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

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

Сергій, молодший програміст

Дитинство

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

У мене їх було два — розібрати усі ігри з диска «800 ігор російською мовою» всіма програмами з диска «Все, що потрібно хакеру», а потім переписати всі ігри, на які витратив понад 10 годин з нуля на Бейсику. Немає жодної різниці, що вийде, навіть якщо вийде таке.

День захисту дітей від поганого коду

Ти береш, пробуєш, переставляєш блоки місцями, експериментуєш і дотягуєшся до всього, чого можна дотягнутися. Зносиш Windows, 10 годин ставиш Windows назад. Намагаєшся повернути драйвери. Розбираєшся, як улаштований DOS. Розбираєшся, як мають стояти перемички, щоб твій хард завівся в комп'ютері в друга (там 200 мегабайт нових ігор!). Крутиш софт, крутиш залізо, знаєш і збираєш комп'ютер. Пишеш футбольний симулятор 13 років, зрештою.

Коли нічого немає, стаєш щасливим і від такого.

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

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

І не рекомендую зациклюватись на одному напрямку в IT. Тут теж кругозір має значення.

Анна, старший системний аналітик

Середня школа

Якогось моменту на форумі повітового міста П обговорювали програмування — і там з'явився тред із заголовком «У велику компанію шукаються програмісти PHP». Текст оголошення був таким:

В крупную компанию ищутся программисты PHP:

Для того, чтобы понять, стоит ли вам приходить на собеседование, выполните несложное задание: напишите программу на php, которая находит такие целые положительные числа x, y и z, чтобы x^5+y^5=z^5. (^ - степень).

Отвечать можете здесь.

У цьому треді відписалося лише кілька людей — там був і я. З усією своєю шістнадцятирічної наївністю я відповів:

Реально чет странное. Да и комп нужен неслабый, штоб ето найти...
Ибо от x,y,z <=1000 таких чисел нет-эт во первых (сел набросал в vb, большего ПОКА не дано), во вторых комп подсаживается намертво.

Не все равно чето нето, ИМХО.

Так, розіграш, пастка для новачків, так, падонкафський, та й що. Очевидно, що я витратив кілька днів на простий скрипт, але зовсім забув про існування теореми Ферма — про що автор треду, шанований The_Kid, уточнив у самому кінці.

Итог печален - в П. практически нет людей, знающих математику, но каждый второй мнит себя мего программистом. За три часа, на все форумах на которых я разместил сообщение, было суммарно около двух сотен просмотров... и всего два правильных ответа. А теорема Ферма - это ведь школьная программа, и условия ее настолько просты, что должны бросаться в глаза. Кстати, параллельно при опросе в аське 6 из 6 знакомых новосибирских студентов ответили «Это же теорема Ферма».
И кого после этого брать на работу?

Тоді це викликало в мене бурю обурення в дусі: «Якщо я не написав про теорему Ферма, це не означає, що про неї не знаю», — класична відмазка. Чи сумно мені зараз? Ні, це також урок на все життя. Як тоді, коли мою гру зафічерили в індонезійському Windows Phone Store, а за два тижні видалили, бо я не оновив якісь там умови EULA.

І зовсім незрозуміло: якщо в одній там великій компанії немає кого брати на роботу — ким тоді бути? Чим займатися? Куди зростати?

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

Настали часи, коли в дипломі стають набагато важливішими базові предмети (математика, фізика, інформатика, філософія), а не прикладні (програмування, проектування в конкретних галузях тощо). Вища освіта почала розділятися на шари – базовий (інженерний) та прикладний. Слід навчатися не конкретним навичкам, а мисленню, науковому підходу, розумінню, як вирішувати проблеми, софт скілам.

Це щодо університету. На прикладні навички в людини ще буде все життя.

Олег, провідний системний аналітик

Університет

Пишеш код на плюсах, пишеш код на Джаві. Торкаєш асемблер, відводиш руку, вляпуєшся в Qt і думаєш, за що так з тобою роблять. Курсу до четвертого всім стає все одно, на чому ти пишеш чергові важливі лаби, — викладачі дивляться на код абияк.

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

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

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

Ян, спеціаліст з фін. моніторингу

Реальна історія - за симулятор Windows, зроблений з товаришем на коліні в 10 класі, в університеті можна отримати кілька іспитів та заліків автоматично. Можна навіть потім розповідати всім, наскільки це було класно. Проблема в тому, що це не було класно — це були заплутана архітектура, огидний код та повна відсутність будь-яких стандартів хоч чогось.

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

День захисту дітей від поганого коду

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

Ерік, інженер з тестування

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

  1. Витрачи час, знайди книжку і постав-таки той дистрибутив Убунти, який тобі безкоштовно надіслали з Canonical. Там явно якась проста проблема, Убунта заводиться скрізь. А Лінукс тобі дуже знадобиться.
  2. Не бійся консолі. Volkov Commander, звичайно, поміщається на одну дискету, але спробуй розібратися, навіщо тобі всі ці команди, потоваришуйте з командним рядком. А дискети помруть. Диски помруть. Флешки теж помруть. Не дуже переживай.
  3. Почитай про алгоритми, розберися у сортуваннях, деревах та купах. Читай книжки.
  4. Щоб розібратися в основах, платні курси не потрібні. Скоро з'явиться Ютуб – ось ти здивуєшся.
  5. Не зациклюйся на Бейсіку. У світі є сотня технологій, які варті твоєї уваги, і мільйон речей, які цікавіше, ніж вкотре малювати юзерформи в Екселі. Візьми бодай Python — а далі розберешся.
  6. Навчися користуватися Гітом, забекап усі вихідники. Напиши хоча б один клієнт-серверний додаток, щоб розуміти, як вони працюють. Розберися в мережах, свитчах та маршрутизаторах.
  7. І якщо ти зараз це читаєш, то все не дарма.

Розкажіть у коментарях, щоб ви написали собі з минулого? Порадьте що-небудь нинішнім школярам і студентам, які поки що на роздоріжжі і намагаються знайти свій шлях. Давайте поговоримо про це.

Джерело: habr.com

Додати коментар або відгук