День защиты детей от плохого кода

в 7:11, , рубрики: Блог компании Яндекс.Деньги, день защиты детей, ненормальное программирование, образование, Программирование, разработка игр, Учебный процесс в IT, школьники

День защиты детей от плохого кода - 1

Пост посвящен дню защиты детей. Любые совпадения – не совпадения.

В 10 лет у меня появились первый компьютер и диск с Visual Studio 6. С тех пор я придумываю себе задачки — автоматизировать дела, собрать какой-нибудь веб-сервис для трёх человек или написать игру, которую потом удалят из плеймаркета от старости. Конечно, я терял исходники и писал код, который стыдно показывать людям. И в 10 лет я бы точно не отказался получить из будущего архив со всеми косяками — чтобы никогда их не допускать.

Пару недель назад я спросил коллег из Яндекс.Денег, что бы они сейчас посоветовали ребенку, который хочет стать айтишником, а потом вспомнил кое-что о себе. Так появился этот текст. Предлагаю об этом поговорить.


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

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


Детство

Какое самое веселое занятие в программистском детстве, когда ещё нет интернета?

У меня их было два — разобрать все игры с диска «800 игр на русском языке» всеми программами с диска «Всё, что нужно хакеру», а потом переписать все игры, на которые потратил больше 10 часов, с нуля на Бейсике. Нет никакой разницы, что получится, — даже если получится такое.

День защиты детей от плохого кода - 2

Ты берёшь, пробуешь, переставляешь блоки местами, экспериментируешь и дотягиваешься до всего, до чего можно дотянуться. Сносишь 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, на дополнительных занятиях выжимали всё из теории графов и зубрили, сколько памяти требуют все существующие в мире алгоритмы всего на свете.

Я вот не решал, не ходил на допы, а просто доучился в своём математическом классе, попутно делая интересные штуки. Спойлер — на собеседованиях они будут никому не нужны.


Сначала лучше определиться, что нравится из IT. Если нравятся все направления, то будет сложно. Учить какой-то язык — ни к чему не приведет, будет только путаница в дальнейшем.

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


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

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

День защиты детей от плохого кода - 3


Поддержу, важнее помогать советами, что можно делать и где брать инфу, а не наоборот. И совершенно не страшно, если он вначале будет на ощупь что-то делать, осознание позже придёт. Важно, чтобы нравилось.

Эрик, инженер по тестированию


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

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


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

Автор: evil_me

Источник

* - обязательные к заполнению поля