[Из песочницы] Откуда берутся плохие программисты и в чем их проблема
Данная публикация раскрывает проблему возникновения плохих программистов на личном примере, подразумевая, что аналогичные ситуации сплошь и рядом. Тем не менее, в конце публикации будет попытка вывести основные ключевые аспекты, которые если не решить, то хотя бы стоит о них задуматься.
Вместо введения или как я узнал о программистах
Время от времени попадаются на глаза комментарии, а то и статьи с оттенком ностальгического приступа о том, как тот или иной программист расписывает свою историю о знакомстве с еще кассетным БК. У меня такой же имеется, меня им хотели порадовать родители. Отец выменял его на свою стереосистему, но вот непрофильное образование и непонимание что с этим делать дальше вылились в не увенчавшиеся успехом попытки его подключить. Потому БК остался в коробке, где и сохранился по сей день.
Само знакомство с компьютером произошло спустя пару лет, когда эксперименты родителей со школами, привели меня в учебное заведение, где программированию обучали с младших классов. Конечно же я загорелся этой школой, особенно меня впечатлил момент когда мне довелось поиграть в «Принца Персии», пока мама о чем-то разговаривала с моей будущей учительницей. И понеслось…
Играть в школе на компьютерах можно, но только на уроках информатики, и только после того как выполнишь некие задания. Задания же эти плавно переходили от решения простых математических задач к составлению алгоритмов их решения, и непосредственно к их программированию. Тяга к знаниям была потрясающая, хотя подозреваю, что не совсем честное наблюдение… играть хотелось больше, но именно это и подстегивало к скорейшему познанию основ Basic и TurboPascal.
Нам объясняли о типах переменных, о синтаксисе, об условных операторах, о том, что зная все это, можно теперь делать все что угодно. Потом нам показали ASCII и процесс программирования перемешался с творчеством. В классе 5 мы уже выводили на экран графики простеньких функций, рисовали работающие часы с круглым циферблатом, и невероятно красивый развивающийся флаг.
Школа давала невероятную программу, с которой еще не окрепшие мозги едва справлялись. Уроки с 8 утра до 6 вечера. Возможно это и послужило дальнейшим переводом в другую школу, где отношение к программированию и пичканью всей информацией подряд было не столь приоритетно. На уроки информатики в 8 классе мне дали право свободного посещения, потому что весь материал который они хотели преподнести был освоен в предыдущей школе. Основы Basic, мать их так.
Наступило затишье, в период которого лишь хорошо пополнился английский словарный запас и появились зачатки понимания английской грамматики.
Очередная смена школы и физ. мат класс, где с упорством носорога учитель алгебры вдалбливала в нас знания и формулы. Договорившись с родителями, летние каникулы прошли под её неустанным вниманием и с пачкой чистых 48 листовых тетрадок, которые исписывались формулами, примерами и их решениями за 1–2 дня. Основы TurboPascal не подарили освобождение, но познакомили с Doom и Quake на уроках.
Институт, новый восторг и немного разочарования
На момент поступления опыт с программированием еще горел в глазах. Компьютеры начали появляться повсеместно и тяга к ним росла.
Словарный запас английского из одной школы, физ. мат класс в другой позволили без проблем пройти вступительные экзамены, несмотря на огромный конкурс.
Мое мнение основывалось на вычитанных из книг умозаключениях «Учить нужно то, что интересно» и «Учить нужно то, что пригодиться в жизни». Чем ближе к профилю, как я считал, тем лучше: Информатика, Основы программирования, Базы Данных, Операционные Системы, Сети и ещё с пяток предметов. На них делал успехи.
Нужно понимание чем отличается хаб от роутера — это я знаю. Нужна курсовая в виде программы на Delphi по учету для паспортного стола — получите. Программа на TurboPascal для решения той или иной математической или физической задачи — да запросто, покажите формулу и я вам все распишу и график построю, еще интерфейс с кнопочками нарисую.
И тут выясняется, что программирование далеко не те детские шалости, чем занимались в школе, и что бы учиться дальше нужно было осваивать «кучу разного вида математик». Они почему-то давались мне с переменным успехом. Дискретная математика и мат. логика показались мне элементарными знаниями, в последствие которые вылетели из головы напрочь вместе со своими конъюнкциями и дизъюнкциями, так же как и принципы работы машины Тьюринга. Высшая математика далась легче, чем математический анализ, но и там и там, перед каждыми экзаменами приходилось обращаться за помощью к репетиторам. Теория вероятностей прошла мимо ушей. Незнание математики отразилось и на прочих предметах — физика, электротехника. На всех, где требовались формулы и сложные, для меня, вычисления.
Из интересов исключились почти все гуманитарные предметы, где преподавателю не получилось заинтересовать незадачливого студента. Зачем-то история, культурология, английский язык, зачем-то география и ещё что-то там было. Исключением стала философия, к которой интерес был в общих чертах, а не как к знаниям в целом, потому не посещалась и сдана была за счет пересказа экзаменатору личных умозаключений. Экономика была понята и сдана на отлично благодаря обворожительной преподавательнице.
Возвращаясь к профильным предметам и разочарованию в подзаголовке, скажу одно — плохо когда студенты знают предмет лучше своего препода, монотонно бубнящего материал с книги, а таких было предостаточно. Все полученные знания были лишь поверхностными. Может ли человек учить других, если RAM память, ОЗУ и Оперативная память для него совершенно разные вещи, или что у процессора есть такая характеристика как размер кеша?
Были так же преподаватели, которые наоборот, столь увлекались своим предметом, что забывали про студентов, не реагируя на них. Вот стоит такой, пишет что-то на доске, и не слышит что материал не понятен и требует дополнительных объяснений. Он дописал формулы, что-то там в уме вычислил, стер сразу все с доски и опять начинает писать. И ведь видно, преподаватель знает свой предмет… даже обидно.
На волне разочарований и недопонимания, мимо ушей прошел предмет ООП с основами С++. Стало не интересно и скучно.
Что-то там про графы, про классы, фабрики. Но школа о которой говорилось в самом начале дала о себе знать. Много информации — ищешь подходящий шаблон, решаешь задачу подставляя в этот шаблон. Потому и курсачи по ООП были решены и сданы.
Личное знакомство с компьютером в домашних условиях казалось принесло мне больше знаний, чем все года обучения. Умение быстро печатать, переводить формулы в TurboPasal и знанием где поменять пароль учетной записи Windows в глазах преподавателей читалось как успешно обученный студент.
Тем временем, или о работе
В какой-то момент под руки попал Photoshop. И тут пошло… С++ который не усваивался, под гундеж преподавателя, превращался в самостоятельное тыканье кнопок графического пакета на компьютере в дальней части аудитории, что бы без «палева». Потом следовали летние курсы веб-дизайнера и изучение HTML с CSS. А со следующим семестром устраиваюсь на работу в ИТ компанию. Пока еще «помогайка» с мизерной зарплатой и огромными амбициями.
Дизайны которые рисовал вызывали у старших товарищей громкий хохот. Так что отсутствие умений, но присутствие знаний позволили им усадить меня за формирование контента для интернет-сайта — найти картинку, вырезать фон, добавить описание с форматированием html тегами.
HTML и CSS это хорошо, сказал мне тогда начальник, и подсунул книжку по PHP, прочитав которую я должен был переписать старый сайт на PHP. Писал я его долго. Около года, самостоятельно вычитывая в интернете как реализовать ту или иную задумку. Как коряво бы не выглядело в коде, но он работал как надо. Там были и голосовалки, и оценка новостей, и парсеры rss лент, и регистрация пользователей.
Развивая навыки фотошопа по онлайн-урокам и сдав свой первый рабочий проект, мне уже ставили задачи разрабатывать дополнительные ресурсы. Небольшие внутренние проекты компании. Все просто и деревянное. Форма ссылается на скрипт, который хранит в себе проверки, потом делает редирект на страницу результата. Неожиданно для себя, я вернулся к программированию. Пускай уже на PHP.
Диплом
В глазах деканата, студент работающий уже не первый год, защитивший успешно диплом — золото. Тем более не надо да же заморачиваться с его дальнейшим трудоустройством. Держи диплом — беги на все четыре стороны.
Работа, или выбор между знаниями и зарплатой
Получив диплом стоило задуматься и о уже нормальном трудоустройстве, тем более старая работа начала трещать по швам, сокращать штат, свертывать направления. Старшие товарищи уже разбежались кто куда, учиться не у кого. Найти новую работу новоиспеченному специалисту со стажем работы в известной по городу компании проблем не составляет.
Через неделю уже подписывал бумаги на новом месте. Работы меньше, зарплата больше, но только нужно подучить SQL, до уровня «join» и объявления переменных в хранимых процедурах. В довесок возврат к прикладному программированию в виде Delphi.
Спустя пол года новая работа находит меня. Встает выбор — переустанавливать винду в штате за более высокую зарплату, или продолжать по договору писать запросы. Началось складываться впечатление, что мир имеет свои необъяснимые порядки: меньше работай — больше зарплата. Черт с ним, пойдем по пути меньшего сопротивления. Смена работы заняла всего 3 дня. И вот, я работник на новом месте. Осваиваю как обжимать витую пару, менять картриджи и восстанавливать винду с заранее подготовленного образа, что бы меньше затрачивать времени. Свободное время уходит на серфинг ржаки в интернете, а начальник отдела учит играть в набирающей популярность LineAge. Уже от скуки разворачивается на рабочей машине апач в денверовской сборке и пишутся простенькие утилиты для внутренних нужд, что бы опять таки экономить свое время. В свободное время методом тыка осваивается Corel, Flash.
Нет! Так дело не пойдет. Программист я или кто. Тем более веб это перспективно, надо развиваться в эту сторону. На просторах интернета в этом время разгораются споры о jQuery и Ajax, о Silverlight который должен победит Flash, о крутости ActionScript (до которого не дошли руки).
С этой мыслью покупается билет на поезд в сторону столицы, на деньги от собранного на коленке сайта под заказ на зачатках ноунейм CMS. Путем тупого перебора нужного и ненужного когда и версткой страниц.
Я уже программист, но для полного цикла не хватает научиться рисовать, потому нашлось учебное заведение готовое обяъснить как держать карандаш в руках. Сделано. Теперь стоит призадуматься о поиске работы. «Я же PHP программист» — так и пишу в резюме. В итоге куча собеседований где с каждой новой беседой чувствую себя идиотом:
— А как вы форматируете страницу? Табличная верстка? Это же прошлый век! Только DIV.
— Вы работали с Unix, ну или хотя бы с Linux?
— Сможете за пол часа с помощью линейки и PHP построить самолет? (именно так для меня звучали некоторые вопросы)
На очередном собеседовании мне задали вопрос, который объяснил если не все, то многое «А вас разве этому не учили в институте?». У меня открылись глаза на неизмеримую пропасть между уровнем образования в далеком регионе и центральными городами. Не мог поверить что про Linux могут рассказывать в институте. В голове начали всплывать, что те ребята, с первой работы, как раз-таки заканчивали центровузы.
В конечном итоге нашел себе местечко. Поставили перед мной пустой комп, вручили диск с Linux — это твое рабочее место. Вот так и познакомился с этой системой, неловко вышло, пришлось задать три тысячи вопросов, пока не добрался непосредственно до непосредственного программирования на PHP. Тут опять у окружающий начали возникать вопросы: Где твое ООП? Как это ты никогда не работал с SVN? Ты в курсе что появились CMS и такой-то фреймворк? Вот оно, сейчас я знаний нахватаюсь. Талантливых ребят вокруг куча, есть кто объяснит и разжует. Но зарплата по факту вышла меньше чем было обговорена. Хватало ровно покрыть расходы на учебу, съем квартиры в подмосковье и проезд. Еда и коммуналка в эту сумму не вписывались. Потому, не загадывая, что было бы, насколько было там перспективно в плане получения знаний и опыта пришлось уволиться.
Ладно, думаю, не получилось. Не все еще потеряно, я ведь еще что-то да знаю.
Тут опять сработало необъяснимое правило: «Меньше работай — больше получай». Пригодились полученные знания SQL и сопровождение систем учета — вот тебе СУБД со своим скриптовым языком. Есть проблема — решай, нет — читай интернеты. И зарплаты хватало да же на «погулять» раз-два в месяц». В свободное время попытался сделать платную интернет-голосовалку, с привязкой к сервису оплаты через смс — четыре уникальных посетителя за пол года. Поржал и забыл.
И тут началось, или обнаружение проблемы
Освоение скриптового языка занял дня 3–4. Дальше работала лишь фантазия, что с этим делать и как. Время от времени вспоминались забытые навыки, и с шаблонным подходом получилось связать например СУБД с самописной программкой через DDE. Рутина и серость дней поглотила. Свободное время уходило на поиск «ржаки» на ЯПе и попытки мельком следить за технологиями. Где-то в это же время была нарыта ссылка на хабр.
Учеба завершена, столицу покорить не получилось. Пришлось вернуться в родной город и продолжить путь поддержки СУБД, сменив пару рабочих мест, принцип «меньше работы — больше денег» начал сдавать позиции. Частая смена рабочих мест, переезды и смена профиля не позволили построить карьеру, а возраст подкрадывается к тому, что о своей семье, квартире и машине надо было задумываться давно.
Оглядываясь по сторонам начал замечать, что люди вчера сидевшие в офисе за компьютером, теперь сидят с крутым ноутбуком в шезлонге перед океаном, где-нибудь в Таиланде. Контакт просто заваливают приложениями и играми. Каждый третий программист начал писать игру под андройд. Один за одним начали стрелять стартапы в разных направлениях.
Началось чтение книг как вспоминание уже пройденного, чтение и попытки осмыслить какие-то новые тенденции, причем из разных областей. Перечитана большая красная книга о PHP. Прочитаны книжки по работе с JavaScript, jQuery, открыл для себя работу с DOM. А потом тупик…
И тут я начну выделять основные проблемы с которым столкнулся или сталкиваюсь в данный момент, в попытках стать настоящим программистом. Форма простая — основная идея, её составляющие и за ними последует её восприятие автором.
Предпосылки к проблемам:
1. Образование
1.1 Устаревшая система образования.
Фраза что знания полученные на учебе устаревает к моменту выпуска не нова и не теряет своей актуальности.
1.2 Непрофессиональный подбор кадров.
Не может человек не разбирающийся в предмете, обучать других. Из этого ничего хорошего не получится.
Прочитав всю мою историю, представьте хотя бы на минуту, что я открыл тренинг-центр и начал обучать ваших детей программированию.
Да, они смогут написать небольшую программу по работе с БД, но объяснить почему оно работает — нет. Про облачные технологии от меня они то же не узнают.
1.3 Отсутствие у преподавателя объективного ответа «зачем?».
Можно было эту проблему отнести и ко второму подпункту, но нет. Несколько иная ситуация, ни коим образом не является показателем знания предмета преподавателем. Скорей отражает его педагогические способности. И не только в сфере подготовки ИТ специалистов.
Оглядываясь назад я понимаю, что, например, при создании игр весьма пригодились бы знания по геометрии и физике. Но упомянул ли об этом преподаватель? Или почему бы не объяснить тесную связь между конъюнкцией и «and» в программировании? На простых примерах, приближенных к действительным задачам. Ставить не так, где надо найти вероятность нахождения абстрактного числа, из абстрактного множества, а узнать шанс выигрыша в лотерею или комбинации в покере. Думаю с таким подходом теория вероятности была бы намного занимательней.
Как итог, из 30 человек с группы, 20 дошли до диплома. 5 из них работают «условно» по специальности, фактически программированием, занимаюсь только я. Иногда все таки приходиться писать мелкие программки на Delphi для внутренних нужд.
2. Трудоустройство
2.1 Работодатель до сих пор не готов воспитывать специалистов
Без опыта работы сейчас никуда не устроишься, а не устроившись не наберешь опыт. Хотя на личном примере моуг сказать, что те знания которые у меня сейчас есть — приобретённое в процессе работы и от части проявление личного интереса к тем или иным вопросам.
2.2 Работодатель не готов платить
Звучит незакончено, но это так. Чтение некоторых книг у меня сопровождалось на ряду с просмотром требований на высокооплачиваемые вакансии. С каждым годом развивается тенденция, где знаний требуют больше, а платить хотят меньше.
Могу предположить что это порождается простым способом (не беря в расчет общую компьютерную граммотность населения): Приходит программист в организацию на выполнение определенных функций. Набирается опыта и в итоге щелкает данные задачи как орехи, а в свободное время в процессе оптимизации, или по чьей-либо инициативе, вводит дополнительные «фишки». Затем понимает что ему нужно двигаться дальше или уходить на вольные хлеба и покидает место. От пришедшего после него программиста уже требуют не только базовые знания на момент формирования должности, но и знания «фишек» которые ввел его предшественник. Только вот зарплата та же. И так дальше по нарастающей. Бац! Наняли второго сотрудника, в помощь, т.к. первый не справляется. У обоих появилось свободное время на введение в оборот своих новшеств. Бац! Сокращение, одного увольняют, второй увольняется сам. Вот вам вакансия с кучей требований и минимум оплаты.
2.3 Скачки зарплат вне зависимости от опыта и знаний
Приходиться часто выбирать, особенно молодым специалистом. Больная проблема выбора, которая может сыграть злую шутку в последующем. Здесь и сейчас вам будут платить много, но вся работа будет заключаться в однотипной рутине, но зато будет хватать денег. А в другой компании платят копейки, вкалывать надо сутками, но есть специалисты, у которых можно поучиться. Не факт конечно что у коллег будет на вас время, да и у вас самого на самообразование. Выбор между перспективой материально себя обеспечить или потенциальная возможность профессионально расти. Не стоит забывать, что много работать никогда не значит много зарабатывать.
Текущие проблемы:
1. Интернет из источника информации начал превращаться в большую помойку
1.1 Бесполезная информация
В отдельный период жизни, я отличался способностью найти иголку в стоге сена, за что ценился в своем кругу общения. Нужно найти где купить дизельный генератор в 4 часа ночи? Не ссы, сейчас найдем.
Теперь не могу найти решение простых проблем возникающих при попытке закодить какой-нибудь функционал. На большинство запросов в поисковик я нахожу кучу аналогичных проблем по различным форумам, без ответа. Если ответ есть, то заключается в отсылке к самому поисковику, нежели к статье которая объясняет как решить поставленную задачу. Ссылки на поисковик я получаю и сам в ответ, если не удалось найти решение и пришлось самому написать на форуме.
— Мне нужно хранить данные в Excel. Как это сделать?
— А нафига? Все просто — не используй Excel, используй mySQL.
Это был еще один вариант распространённых ответов, только условия задачи от подобного комментария не изменятся, и все еще будут требовать хранить данные в XLS. В спорте почему-то все проще. Хочешь накачать бицепсы? Делай «вот таквота и вот таквота» © Невский.
Все четко и систематизировано.
1.2 Не актуальная или неполная информация
В последние годы можно заметить большой рост числа каналов на ютубе, кучу сайтов предлагающих различные курсы и тренинги. Самое интересное, что писклявый школьный голос пытается объяснить тебе суть мироздания, но ты где то это уже видел… ах, да, это просто слизанный курс с другого канала. В защиту школьников скажу что подобным грешат и уже взрослые дяденьки. Часто в таких пересъемках теряются важные детали. Теряется обратная связь с автором курса, что бы задать ему вопрос. И подобные курсы обычно неожиданно обрываются — все, нет следующей лекции, владелец забил на канал.
Не так давно предложили за вознаграждение написать сайт, потому решил осваивать очередную CMS, написать к ней тему и пару модулей. Зайдите на сайт комьюнити Drupal, Wordpress, DLE, Joomla и посмотрите возникающие вопросы. Там уже нет программирования, никто не сможет объяснить как реализована работа с шаблонами, потому что дальше проблем «какие настройки плагина поставить?» и «как поменять картинку?» они не уходили.
— Я вас научу создавать сайты с нуля на Drupal. Вот тут интуитивный интерфейс о котором я буду рассказывать полтора часа, а потом вы скачаете 100 плагинов и сайт будет готов.
1.3 Высокий порог понимания актуальной информации
Обратная сторона второго пункта. Помните картинку про сову? Где нужно было сперва нарисовать два овала, а на следующем шаге рисуем оставшуюся сову.
Лично у меня возникают сложности въехать в статью «простым языком как делать крутые вещи для чайников», где понятно только введение, а после следует употребление специализированной терминологии, использование сторонних технологий. Это как читать чужой код, где закомментированы только первые две строчки.
И ведь опять обидно. Человек мало того что владеет материалом, он его понимает, жаждет им поделиться, но просто не может донести до конечного потребителя — читателя. Ошибка в том, что человек забывает, что очевидные для него вещи, или как он считает, для других специалистов, другим могут оказаться совершенно не знакомые и непонятны. Какой такой синглтон?
Именно для таких целей, на части курсов по программированию, при ответственном подходе, какими знаниями надо обладать, что бы успешно их закончить.
2. «Изобретатели велосипедов»
2.1 Изобретатели.
Изобретателей стало куча, и самое распространенное изобретение — придумывание названий старым вещам. Данный способ я отныне нареку «плейсхолдером», а библиотеку с функциями — фреймворком. Вводя в тихий ужас всех несведущих. Звучит как-то так.
2.2 «Велосипеды изобретателей».
Конечно, фреймворки облегчают людям работу. Но навязывание очередного не является путем просвещения.
— Нафига ты это пишешь с нуля? Используй вот этот фреймворк! Там все есть!
— Ну, а как же я научусь и буду понимать как все работает?
— Тебе это не нужно. Достаточно знать как работать с фреймворком.
Нужно. И когда это пойму, сам буду изобретать очередной велосипед, потому что глядя на обилие фреймворков, CMS, библиотек понимаешь, что у некоторых из них руль поворачивает только на лево, другие не умеют ездить по лужам, а для оставшихся нужно еще прикрутить десяток колес.
Самая же основная проблема да же не освоить новое средство, сколько выбрать нужное, способное полностью удовлетворять всем потребностям, и которое будет оставаться актуальным еще долгое время.
Так же, в какой-то степени, я считаю неверным подход, когда советуют потратить кучу времени на изучение одного фреймворка, что бы потом обязательно перейти на другой.
Проблемы личного характера:
Здесь я озвучу те факторы, которые непосредственно мешают человеку, основываясь на личном характере.
Не будем брать в расчет уровень обучаемости и банальную лень. Иначе лень можно рассматривать как отсутствие мотивации или недостаточности знаний как сделать нужное затратив минимум усилий и времени. Уровень обучаемся так же зависит от половзрелости человека, от мотивации и бог знает еще от чего. Например из меня ботаника не вышло. Что в школе, что в институте — хотелось со всеми веселиться, погулять, попить пивка и не остаться без внимания сокурсниц.
1. Знание английского
Я не умею на нем говорить, плохо воспринимаю на слух, и уж точно не знаю грамматику. Но тем не менее словарный запас позволяет, хоть со скрипом, читать техническую документацию, изредка подглядывая в словарь, ну или пропуская слово и пытаясь уловить суть из других.
Это одна из главных личных ошибок — вся документация и первоисточники на английском. На русском же есть переводы, отдельно взятые статьи, освещающие только часть айсберга. Бывает что на очередной вопрос тебе кидают ссылку, а там все на английском… ты понимаешь что в ней 70% воды, которую придется так же со скрипом переводить, пытаясь добраться до сути, и это требует усилий.2. Перфекционизм
В данный момент пытаюсь отучиться от правила «если делать, то все должно быть идеально, иначе вообще не делать». Таким образом не идеальные плагины пытаються переписываться с нуля, а интерес к проекту теряется еще на проработке какой-нибудь конкретной детали, до создания общей структуры проекта. Пытался сделать игру на бесплатном движке и увлекся рисованием графики, а на создании геймплея проект надоел — слишком много ушло времени.3. Самоедство
Я уже упоминал что как-то нарыл ссылку на хабр, и с этого все и началось. С каждой странице я ощущаю себя просто безмозглым одноклеточным. Не понимаю 85% информации выкладываемой сюда и поражаюсь насколько продвинутыми могут быть технари. Все ведь познается в сравнении — реверс инжиринг, компьютерное зрение, какие-то математические формулы с замысловатыми закорючками. Откуда? Откуда вы все это знаете? Как дошли до уровня понимания добавления в чужую игру мультиплеера с помощью Node.Js или разработка STM32F4 USB RNDIS драйвера? В такие моменты вокруг меня начинает развертываться целая вселенная знаний, которые покрыты темной пеленой и мне не доступны.
Осознание всего этого удручает.4. Социальная замкнутость
Частично это мое упущение, в плане морально-этических норм к окружающим, частично от среды в которой я вырос. Попросту на данный момент не представляется найти специалиста, с которым можно было консультироваться, или общаться на около ИТ-шные тему за кружкой пива. Среди моего окружения да же те кто отучился со мной на программиста, уже забили на все эти технологии, предлагая поступить их совету — зачем мучатся, когда схема «купи-продай» успешно работает.
Нет, скайп здесь не решит проблему полностью. Старший товарищ должен быть всегда в зоне доступности, что бы мог ткнуть пальцем в экран и сказать что не так, готовый поддержать любой проект. Ну или влепить подзатыльник. Нет человека с которым можно взяться за проект.
5. Легко выпасть из темпа
Не уследил за технологией? Все, вчерашний гуру остается не удел, потому что мир изменился до неузнаваемости. Именно для этого я пытаюсь читать хабр с непонятными статьями, что бы через год-другой, мне стали встречаться знакомые слова.Итог
Я программист, который вроде и кодит, и что-то знает, но на данный момент не способный реализовать свои идеи. А вот с ними как раз проблем нет, как и с фантазией в целом. У меня есть куча идей, на мой взгляд очень классных. С точки зрения программиста — простые в исполнении, для человека владеющего. В итоге я пишу эту статью, как очередной самоанализ. Надеюсь что было интересно, и на ваши комментарии.
Но сперва, по правилу «критикуешь — предлагай», я предложу идею решения проблем в виде интернет ресурсов:
1. Систематизация знания
Сначала о систематизации. Нет ничего нового, достаточно лишь усовершенствовать текущую программу образования. Нужен интернет ресурс с древом знаний, которое в качестве ствола имеет перечень необходимых знаний для становлением программистом. Ветви — специализации и направления. Каждое знание это ссылка на литературу. Все четко определено, какую книгу за какой читать. Какую технологию за какой учить, что бы достичь выбранного результата. Без лишнего мусора. Хочешь знать основы ООП? Прочитай эту книгу этого автора и получишь базовый минимум необходимый для следующего шага.
Все знания, как и литература, имеют свою рейтинговую систему приоритетов и выбираются большинством путем голосования. Какую книгу читать про ООП? Все верно, ссылка выведется только на ту, за которую проголосовало большинство. Для более подробного изучения можно углубиться в кору дерева и раскрыть список из ТОП-3 необходимых книг на данный этап изучения.
Листья — технологии и знания лишь дополняющие ветки специализаций. Сидишь на ветке с JavaScript — вот тебе листочек с Angular.Js. Корни древа, будут представлять собой набор знаний не обязательных для новичка, но дающих основательную базу для изучения. Например корнем может быть английский язык или например знание теории вероятности. Уровень сложности деревьев один — все должно быть правильно и актуализировано изначально, без точек возврата к пройденному материалу. Математика — свое древо, Электроника — свое древо, Физика — свое древо. Без пересечений. Ссылки между деревьями могут быть лишь в корнях.
2. Менторство
Хабр, тренинг-курсы показывают, что есть хорошие специалисты, готовые не только делиться знаниями, но и воспитывать таких же специалистов. Для этого создается интернет-ресурс по поиску ментора, куда новичок может обратиться со своей идеей проектом или желанием чему-то научиться. Он описывает свое желание или идею на ресурсе в общую кучу или конкретному ментору. Один пост или обращение от одного «ученика», которое могут оценивать по критериями перспективности, интересности и т.д.
Каждый ученик имеет свою карточку, с оценкой степени владения знаниями тех или иных технологий (при существовании древа знаний, то оценки производятся по его составляющим). «Субъективные» оценки проставляется самим учеником, «Объективные» — менторами после открытых собеседований, лог чата которых храниться в карточке ученика, либо по завершению процесса обучения или реализации задуманного проекта.
Карточка ментора хранит в себе информацию о знаниях, некое портфолио, степень заинтересованности в поисках учениках, указании времени, которое он готов уделять и, степени вовлечения, и при желании, суммы вознаграждения, например не более 10% от доходов реализованного под его руководством проекта.
Ментор должен готов пройти с учеником путь от начала до конца, поэтому будет для них вводиться система репутаций. От ментора будет зависит процесc реализации и обучения.
Между ментором и учеником будет заключаться договор публичной оферты, о неразглашении, или о условиях сотрудничества, если оно будет подразумевать вознаграждение.
Регистрацию производит с привязкой через «реальный» идентификатор, вроде номера телефона с смс подтверждением, что бы можно было вести черный список, для менторов забивших на учеников, или учеников бросившие процесс обучения. 3 раза подряд подписался за ученика, а потом от него отказался — добро пожаловать в черный список. Ментор сказал прочитать этк книгу еще месяц назад, а ты закатал вату — черный список, не отнимай у людей время.
В целом, ресурс о менторстве представляет не очередную интернет-школу с персональным учителем, а скорей предоставление шанса неопытному разработчику, или же новичку, реализовать свою задумку под руководством профессионала. На базе чего могут возникнут совершенно новые проекты и команды.
Собственно, вот и все.