Процесс обучения человеческого мозга состоит из нескольких стадий, особенно тех, кто занимается разработкой программного обеспечения. Не многие разработчики программного обеспечения развиваются, некоторые сбиваются с рельсов и отказываются от своей мечты не потому, что они недостаточно умны, и уж точно не потому, что они не имеют достаточной квалификации и опыта, но в основном потому, что им не удалось охватить и пережить различные этапы, которые проходит разработчик программного обеспечения, чтобы развиваться, независимо от того, какой язык программирования он / она выбирает для изучения и становится экспертом.

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

Основной этап:

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

Новичок: второй этап наступает только в том случае, если вы упорно прошли через основы, научились искусству изучения, исследования и применения на практике того, что вы изучаете, и полностью поняли основные концепции. вы начинаете расширять свои знания за пределы основных основ и приложений, углубляясь, возможно, в этом случае, в случае небольшого приложения, применяя более продвинутые подходы к вашему небольшому приложению, не просто написав большие классы с миллионом строк кода, но написание выделенных классов с выделенными функциями и применение некоторой формы наследования от ваших суперклассов к вашим подклассам. И если ваша программа может успешно скомпилироваться и выполнить задачу, для которой вы ее разработали, не сталкиваясь с раздражающими ошибками времени выполнения и, возможно, один или два репозитория git, чтобы подтолкнуть их к ..., и вы определенно освоили свои основы объектно-ориентированного программирования на основных этапах и хорошо применили их в своем маленьком приложении. Итак, добро пожаловать на этап Новичок.

На этом этапе новичок может устроиться разработчиком программного обеспечения и фактически создать идеально работающее/функциональное удобное приложение. Именно на этом этапе вы обнаружите, что у вас есть удивительная учетная запись GitHub, полная красивых пользовательских интерфейсов с классными внутренними функциями и рабочими приложениями, которые любой студент, изучающий информатику или программную инженерию, готов получить в свои руки, чтобы завершить свой калькулятор или практическое занятие по марсианскому роботу. задания.

Эволюция. Третий этап — это то, что я называю «Эволюция». Этот этап требует постоянного мышления, благодаря которому вы продолжаете создавать вещи, учиться и применять то, чему научились, во всем, что вы строите. этап, чем больше вы делаете, тем больше вы развиваетесь, и эволюция утверждает, что «чем больше вы что-то делаете, тем лучше у вас это получается», да, на самом деле, чем лучше вы становитесь, тем более опытным вы становитесь в создании того, что вы строите. На этом этапе человек гораздо ближе к тому, чтобы стать профессионалом, специалистом и так называемым экспертом. Но он никогда не сможет по-настоящему достичь уровня профессионала, специалиста и эксперта, если не продержится достаточно долго, чтобы развить глубокую страсть к предмету / ремеслу / технологии. /art.Ибо именно страсть приведет человека к творческой стадии, когда человек начнет исследовать творческое подсознание и разрабатывать инновационные идеи, применяя свои навыки, полученные на предыдущих стадиях.

Этап страсти: на этом этапе ваши базовые знания из фундаментального этапа становятся естественной чертой (как приветствие с добрым утром, которое легко слетает с языка) новичок Этаппревращается в сочетание знаний и умений новичка с «Я хочу продолжать это делать», «Мне это нравится»,порождая, таким образом, огромную страсть:страсть Этап. К сожалению, одного интереса на этом этапе недостаточно, чтобы преуспеть в качестве инженера-программиста или разработчика программного обеспечения. Это страсть, которая будет вами управлять, и страсть, которая позволит вам продолжать работу.

На этом этапе человек становится более или менее одержимым тем, что он делает, до такой степени, что в этом мире не имеет значения ничего, кроме вашей страсти, и кажется, что вы не можете прожить ни дня, не делая ничего. Это. Вы даже встали на свидание, чтобы исправить ошибку в вашем коде. Вы забыли пообедать, и часы проходят так, как будто планета внезапно ускорила свое вращение. Вы принимаете «Поток». Живете в подключенном мире где не существует ничего другого, что находится перед вашими глазами, и формируется глубокая способность концентрироваться в течение долгих часов. Вы становитесь зомби.

Сражайся или беги. Итак, вы развили огромную страсть (на вашем Github даже есть 20 репозиториев с некоторыми классными приложениями), и теперь у вас так много потрясающих идей для различных программных приложений, что вы даже превратили прочтите как можно больше электронных книг, статей и блогов по разработке программного обеспечения. Это стало для вас естественным процессом, таким же естественным, как проверка почты каждое утро. с творческими идеями, чтобы решить их, применяя свои технологические навыки. Дизайн веб-сайта похож на набросок человечка из палочек для вас, создание API похоже на выпечку торта для бабушки, а написание пары SQL-запросов превратилось в забавную задачу. тот этап.

Стадия, на которой вы даже хотите дойти до создания программного обеспечения, которое активирует маленький будильник, который напоминает вам, что вы должны покормить свою кошку через 2 минуты, иначе она войдет в вашу рабочую зону и мяукает так громко, что вы потеряете концентрацию. в том, на чем вы глубоко концентрируетесь (расслабьтесь).

Вы хватаетесь за рожки проблемы, рисуете несколько набросков (вайрфреймы Lo Fi), затем решаете сделать их более реалистичными, разрабатывая несколько хай-файных каркасов и пользовательских интерфейсов в SketchApp и, возможно, даже доходите до дизайна UI/UX. в AdobeXd. Идея воплотилась в жизнь, у вас есть блестящий прототип, за который любая миллиардная компания набросится и купит его у вас, и вы взволнованы тем, что начинаете писать для него код.

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

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

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

Вы даже получили пару вакансий фрилансера, и все потому, что вы победили зверя на этапе бей или беги. Вы очень уверены в своих способностях и даже отказываетесь от низкооплачиваемой работы, чувак, у вас даже есть возможность сделать это. Это гениально!!! Пока мы говорим, вы на седьмом небе.

Затем в один прекрасный день вы получаете действительно прекрасную вакансию. Пройдите собеседование по телефону с честью и пройдите собеседование один на один / личное собеседование со своим знанием темы. Затем вам дается технический тест для разработки простого приложения списка. который отображает список элементов с сервера путем синтаксического анализа некоторого json из некоторого URL-адреса, размещенного на веб-службах Amazon, которые компания отправила вам. Глубоко с уверенностью и гламуром вы совершаете погружение. Вы создаете красивый пользовательский интерфейс для этого, чтобы увеличить ваши шансы на побеждая других кандидатов и становясь чемпионом. Затем вы бездельничаете, возвращаясь к своей обычной рабочей рутине поддержки запущенных приложений, ожидая отзывов от потенциального работодателя.

Вы настолько уверены в себе, что даже прибавили в весе, на 3 фунта, с таким восхитительным спокойствием духа, что вскоре вы будете зарабатывать от 50 000 до 100 000 долларов в год в качестве инженера-программиста в этой большой компании-гиганте. ваша степень в области компьютерных технологий или программной инженерии висит на вашей стене в красивой золотой рамке. Вспоминая обо всем, чему вас учили в школе, как просто о фундаменте для незавершенного дома, и о том, как хорошо вы справились со своим средним баллом и в конце концов закончили. У вас достаточно отраслевой опыт на ваших предыдущих стажировках, вы даже уволились с большинства этих работ, чтобы наслаждаться жизнью, работая из дома и зарабатывая много денег в качестве внештатного разработчика программного обеспечения. И, конечно же, приложения, которые вы запустили в прошлом году, принесли вам достаточно денег поставить еду на ваш стол и даже платить арендную плату за свою маленькую квартиру в подвале. Теперь вы даже пускаете слюни, живя в особняке с 5 спальнями и бассейном в Голливуде, когда представляете, как эта зарплата изменит вашу жизнь. неделю спустя вы, наконец, получаете электронное письмо: вы взволнованы и готовы начать собирать чемоданы и более чем готовы приступить к своей новой высокооплачиваемой работе. Вы уверенно открываете свое электронное письмо, и оно гласит:

"Здравствуйте, Джон Доу! Спасибо, что нашли время, чтобы завершить наше собеседование и процесс отбора. Мы высоко ценим ваш интерес к работе с нами. Мы с удовольствием просмотрели ваш практический тест и были очень впечатлены, как и мы. судя по вашему портфолио, резюме и вашему уровню опыта. Но, к сожалению, мы не будем продолжать с вами на этом этапе, так как в вашем приложении не хватает архитектуры и модульных тестов.

Еще раз благодарим вас за интерес к сотрудничеству с ABCZZ

Желаем вам всего наилучшего в ваших начинаниях.

С уважением

Группа сотрудничества ABCZZ”

Ммммм, ну ты сейчас в ярости!!!!.

Выкурил целую пачку сигарет и даже выпил целую бутылку виски.

Вы начинаете просматривать свой контрольный список для практического собеседования:

Разработайте приложение со списком:Проверьте

Проанализировать элементы списка по этому URL как json:Проверить

и, кроме того, вы разработали для него красивый пользовательский интерфейс:Проверить

Приложение отправлено на github:Проверить

Вы даже создали собственный API, отвечающий за операции CRUD в качестве промежуточного ПО для данных и вашего приложения:Проверить Проверить Проверить

отправьте репозиторий URL-адресов приложений на github через неделю по электронной почте технической группе:

Что ж, вы закончили через 3 дня и отправили:Чек — Проверить бонус Чек

Но что я сделал не так, почему меня отвергли!!!!!!

У вас начинают падать волосы, и вы начинаете задаваться вопросом, где вы ошиблись, что они имеют в виду под отсутствием архитектуры и тестирования, я запустил эту чертову штуку, и она работает. Вы попадаете в яму депрессии и приступ гнева. И любой, кто пересекает ваш путь с теплой улыбкой, является вашим врагом номер один.

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

Вы продолжаете доходить до практических этапов, но, похоже, не можете найти работу. Что я здесь делаю не так, спросите вы.

Затем вы проводите некоторые исследования по архитектуре:

  1. Многослойный шаблон
  2. Шаблон клиент-сервер
  3. Шаблон ведущий-подчиненный
  4. Шаблон канала-фильтра
  5. Шаблон брокера
  6. Шаблон одноранговой сети
  7. Шаблон шины событий
  8. Шаблон модель-представление-контроллер
  9. Шаблон доски
  10. Шаблон интерпретатора

и применяйте их к каждому практическому собеседованию, которое вы получаете. Но вы все равно получаете отказ 100 раз.

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

Неделя 1: на работе. Вы сталкиваетесь со стоячими встречами, которые вас раздражают, но в любом случае вам приходится в них участвовать, ведь это новое приложение, над которым вы и ваша команда будете работать.

Неделя 3. Ваш товарищ по команде злится на вас за то, что вы не используете пакеты, интерфейсы и не применяете подход реактивного программирования, и даже просит вас уменьшить размер. вашего кода, используя больше наследования в ваших классах. Проходит 6 месяцев, у вас нет социальной жизни, но теперь вы прекрасно вписываетесь в команду, как недостающая головоломка несуществующей головоломки. Вы научились автоматизировать программные процессы. , как писать модульные и автоматические тесты, и у вас даже есть профессиональное понимание применения архитектуры к вашим приложениям, и вы понимаете важность этого. несколько классов повсюду, которые функциональны, но сложны и дороги в обслуживании и содержат ошибки.

Год 1: вас осенило, и вы оглянулись на высокооплачиваемую работу, которую могли бы получить год назад, если бы только у вас было достаточно терпения, чтобы освоить отраслевые подходы и их инструменты в разработке программного обеспечения. Но это только становится забытым прошлым, и вы крепко держитесь за свою работу и принимаете каждый день, когда узнаете что-то новое. Вы даже осознаете силу повторного использования и силу создания библиотек для ваших приложений. Учетная запись github даже сейчас известна и процветает благодаря небольшим библиотекам, которые другие разработчики используют с вашим именем. как гений, безумный ученый в лаборатории бесконечных экспериментов. Теперь тебя не остановить. Ты стал суперзвездой. Теперь мир знает твое имя.

Год 2. С каждым годом вы становитесь профессионалом в том, что делаете, и теперь ваш работодатель и товарищи по команде доверяют вам.

И вот однажды: Объем работы в компании внезапно увеличился, и вам поручили разработать большой проект самостоятельно. Одиночная миссия, которую вы так долго ждали: Наконец-то!!

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

Вы начинаете применять все, чему научились, и по прошествии нескольких недель вас вдруг озаряет, что вы все еще учитесь. опять же, с фундаментальной стадии. А потом вдруг некоторые методы и объекты в языковой библиотеке становятся избыточными. И вы вынуждены рефакторить свой код, и вам начинает казаться, что ваш мир снова рухнул, вы вернулись на круги своя. one.Вы снова сталкиваетесь с фундаментальной стадией, новичком, эволюцией, борьбой или бегством и стадией страсти:

И вы знаете, что если вы не исследуете и не понимаете эти новые вещи (фундаментальная стадия, стадия новичка), вы не сможете разработать эти классы (Эволюция), и если вы не сможете успешно разработать эти классы, вы не сможете создать другие классы, которые заставят работать это приложение, но вы должны стараться не сдаваться, вы должны копаться в своем уме и применять все знания, которые вы знаете, чтобы исправьте эти ошибки и заставьте эту штуку работать (Борьба или бегство), но вы также должны сохранять спокойствие, владеть своим разумом и верить в себя. И вы прекрасно знаете, что если вы потеряете страсть, вы не сможете продолжайте (Стадия страсти:). Вы так усердно работали, и приложение, наконец, было одобрено QA (командой обеспечения качества). Это после того, как они заставили вас пройти через ад с исправлениями туда и обратно , взад и вперед добавляя функциональные возможности ваших приложений и отправляя вас на карусель через бесконечный лабиринт пыток над некоторыми вещь, в которой вы были на 100% уверены, идеальна и готова к развертыванию. Но, наконец, вы это сделали.

У вас есть официальный опыт. Теперь у вас есть возможность развиваться вместе с языком программирования и любыми новыми технологиями, которые появляются на вашем пути. Вы можете быстро изучать и осваивать новые вещи и применять их. И вы способны писать чистый и тестируемый код. официально опытный, они даже возложили на вас ответственность за поддержку проекта, и тем не менее, независимо от того, насколько вы опытны, вы все равно чувствуете, что все еще изучаете основы с каждой задачей, которую вам предлагают. Затем однажды генеральный директор представляет блестящую идея/скорее проблема, чем идея, и вы вынуждены материализовать эту идею и решить проблему.

Решение проблем. Вы встречаетесь с товарищами по команде, пытаясь решить алгоритмы и применить наиболее возможные подходы к воплощению этой идеи в приложение. Команда UX/UI уже представила прототип вашей команде, но вам, ребята, нужно придумать архитектуру программного обеспечения, чтобы начать писать это приложение. В конце концов, проект стартует после нескольких месяцев, потраченных на проект на белой доске, планирующий наилучший подход к идее.

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

Приближается встреча в понедельник, вы провели выходные, отмечая свое достижение, и впервые за 2 года провели воскресенье, отдыхая и запоем, наблюдая за малышкой-боссом на Netflix. И вы готовы представить свой код в понедельник, и вот тогда вы понимаете, что , каждый из ваших товарищей по команде решал похожие проблемы, некоторые даже испытали больший удар, чем вы, но все в курсе в понедельник, и команда готова собраться вместе и начать собирать весь проект вместе. Ваш модуль прошел все тесты модулей и инструментов, и ваш алгоритм идеален.

С годами вы даже доходите до того, что тратите 2-3 раза в день на решение нескольких алгоритмов, чтобы улучшить свои навыки решения проблем. прежде чем стать экспертом / профессионалом. Вы так уверены во всех своих знаниях, но обнаруживаете, что набираете баллы ниже среднего на большинстве ваших практических онлайн-тестов, до такой степени, что чувствуете, что страшный синдром самозванца подкрадывается, как призрак в ночи .

Стадия эксперта: по мере развития программного обеспечения и развития языков программирования этот этап всегда будет определяться тем, насколько сильно вы будете стремиться учиться, как долго вы сможете продержаться (Бейся или беги). ) и сколько страсти вы должны продолжать идти. Процесс обучения никогда не останавливается. Вы всегда будете чувствовать себя новичком, осваивающим основы, синдром самозванца будет поражать вас миллион раз с каждым новым используйте любую возможность, чтобы отпраздновать развернутое приложение, насладиться отзывами пользователей (хорошими или плохими) и работать над улучшением своих приложений, чтобы получить положительные отзывы сообщества / пользователей, а затем есть льготы и реквизиты от ваших боссов, которые длятся всего неделю до Вас снова бросают в океан, наполненный акулами, чтобы решить еще одну сложную проблему. И если вы будете стремиться становиться все лучше и лучше с каждым днем, придет время, когда мир воспримет вас и прославит как эксперта.

Это будете вы, счастливые, блестящие и применяющие свои навыки для разработки инновационного программного обеспечения на благо человечества. Деньги будут хорошими, всегда хорошими. Цикл будет повторяться снова и снова на каждом этапе, и вы будете праздновать и празднуйте до тех пор, пока какой-нибудь 12-летний хакер не взломает ваше программное приложение, и вы снова не обнаружите, что боретесь за решение проблемы «Что пошло не так» и снова не окажетесь на этапе «Сражайся или беги».

В заключение, есть только одно правило, которое управляет миром программного обеспечения: РАЗВИВАЙТЕСЬ ИЛИ РИСК СТАНЕТЕ ИЗБЫТОЧНЫМ.