Мой путь к программированию

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

Знакомство моё с компьютерами началось где-то в 90 году. Тогда, у друга, появился компьютер “Микроша”, это для нас было как восьмое чудо света.

Для тех, кто не знает, Микроша, не был похож на современный компьютер. Многие считают, что компьютер, это весь комплекс оборудования, который установлен за рабочим столом, т.е. системный блок, монитор, клавиатура, мышка. Но на самом деле, компьютер – это только системный блок, всё остальное, это периферия. Но даже на современный системный блок он не был похож. Вместо системного блока, все располагалось внутри клавиатуры, жесткого диска у него не было, вместо него, подключался кассетный магнитофон, а программы хранились на обычных магнитных лентах в кассетах. Магнитофон воспроизводил кассету, на которой были записаны звуки, такие же, как модемы использовали для своей связи, если просто объяснять, то компьютер “слушал” эти звуки, преобразовывал их в цифровые сигналы, далее конвертировал в код и загружал в оперативную память, после этого начинал работать с ними. Вывод же был на обычный телевизор, так же как подключались видеомагнитофоны.

Обычно мы на нем играли, но иногда и программировали на Бейсике. В основном, этим занимался мой друг, он был старше меня на 7 лет (хотя, почему был, он до сих пор старше меня

biggrin.gif

, и мы до сих пор с ним дружим), мне тогда было около 8 лет, а ему, как не трудно подсчитать 15. Мы с ним были соседями по площадке, и я часто ходил к нему в гости как мы переехали в один дом (многоэтажка) и познакомились. С тех пор и до сих пор мы общаемся. Так вот, он мне показывал некоторые команды и немного объяснял логику использования команд, но я всё равно был слишком мал для этого и конечно, больше играл в игры.

После, у него появилась денди и тут мы уже зависали у него всем двором, разумеется, теми, кто дружил. Про “Микрошу” конечно все забыли, так как на денди не нужно было ни чего загружать по полчаса и игры были красивее и интереснее, а когда у многих стали появляться денди, то и обмен картриджами сыграл свою роль.

Через некоторое время, это был уже где-то 95-96 год, у другого моего друга появился уже настоящий компьютер Pentium 133, это было что-то невообразимое, мы смотрели на компьютеры, как средневековые люди смотрели бы на электричество. Чуть позже у него появился и интернет, через модем, и мы уже пробовали программировать, создавая сайты. Сейчас, это уже не считается программированием, даже слово отдельное для этого существует: “верстка”, но по сути, это тоже программирование, только здесь ты не пишешь код для компьютера, а пишешь код для web-сервера, а он уже интерпретирует в свой код и выводит на экран сайт. Но опять же, больше все-таки играли в игры, а все остальное было как баловство.

Это всё стимулировало меня пойти учиться работе с компьютером. В 97 году после школы, я поступил в училище после 9-го класса, тогда профессия называлась: ”Оператор ЭВМ”. Тогда я понял, что компьютеры, это моё, и готов связать с ними всю свою профессиональную жизнь. Учеба давалась очень легко, и после 3-х курсов я пошел на 4-ый, дополнительный курс, на программиста. Честно признаться, изучали мы всякую хрень, типа Visual FoxPro, это язык программирования баз данных, он уже на тот момент был устаревшим и умирал, но выбора не было.

Отучившись, у меня все равно, было крайне мало опыта, и я устроился работать “продажником”, в филиал IT-компании, которая продавала своё программное обеспечение, крайне агрессивно, кстати, продавала. Рекламировать продукт не буду, т.к. эта программа жива и по сей день и развивается. Где-то через год, я перешел в отдел сопровождения продукта, и отработал несколько лет. Работая, я приобрел себе домой первый компьютер, это был Celeron 1200, счастью не было предела, но опять же, все сводилось к играм и изучению операционной системы. За это время, я не программировал, но не плохо поднатаскался в устройстве компьютера и операционки.

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

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

Шли годы, компьютеры развивались, мои знания росли как на дрожжах, т.к. мне приходилось работать совершенно в разных сферах, от настройки телевизоров и аудио систем (усилители, колонки), работа с видеонаблюдением, до монтажа и настройки крупных сетей, объединенных туннелями, с защитой от атак и многого другого. Со временем, стало скучно, да и работа все больше и больше не радовала. Я хотел заниматься умственным трудом, а в мои обязанности входили: и монтаж сетей (прокладка кабелей), и монтаж видеонаблюдения, и много ещё грязной ручной работы, которой, я всегда считал, должен заниматься персонал, менее квалифицированный, чей труд более дешевый, т.к. отвлекаясь на такую работу, моя непосредственная работа: администрирование и настройка, ни куда не девалась и простаивала, а тот персонал который мог заниматься монтажем, мою работу выполнить не мог. Но руководство всегда экономит на сотрудниках, и фразу “тыжпрограммист” слышишь всё чаще и чаще.

И здесь я вспомнил, что когда-то, хотел быть программистом, но почему-то, так и не занялся основательно этим. Я начал изучать более глубоко устройство компьютера, конечно, я к этому времени уже очень много знал, но мне хотелось узнать некоторые моменты ещё более углубленно. Я начал искать и читать литературу по большей части об устройстве самой операционки. И вот здесь уже и не грех прорекламировать книгу, которую я начал читать, т.к. впечатления у меня остались очень хорошие от этой книги, и почерпнул много нового. (Книга: “Современные операционные системы” авторов Э. ТАНЕНБАУМ и Х. БОС).

Параллельно я начал заниматься радиотехникой, прикупил ардуино, деталей кучу, всякие датчики, сенсоры. Собрал с нуля машинку на радиоуправлении, точнее на инфракрасном управлении, т.к. пультом к машинке был пульт от телевизора

biggrin.gif

Сам стравил плату, спаял ШИМ (широтно-импульсный модулятор, это такая штука, которая помогает управлять двигателями на сильном токе, за счет малых токов, которые идут от платы управления) и много ещё чего практиковал, читал книги по этой тематике, в общем было интересно, а самое главное, радости не было предела, когда ты создал что-то и оно работает

banan.gif

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

После всего этого, у меня вновь возродилось желание опять начать программировать, но уже не какие-нибудь сайты, а по настоящему, я хотел писать компьютерные игры, и работать в компании по разработке игр. Я решил вплотную изучить программирование, с языком я определился быстро, т.к. я хотел писать игры, то лучше C++ нет. Радиотехнику оставил пока в покое, и полностью погрузился в изучение книг по C++. Кстати, здесь опять могу порекомендовать книгу, читается очень легко и автор пишет довольно простым языком: “С++ Базовый курс”, автора Шилдт Г. Прочитав полностью книгу, параллельно практикуясь, решил написать свою игру. Для примера взял minecraft, т.к. логика в игре достаточно простая и графика тоже, там одни квадраты с текстурами, в общем ни какой сложной геометрии с множеством вычислений. Занимался этим в свободное от работы время по вечерам, дома, не забыв ещё уделить время семье. Трудностей, конечно, возникало множество, но для этого существует множество форумов по программированию, на которых легко и с удовольствием помогают (рекламировать конечно же не буду). По графике изучал OpenGL.

В общем, работая только дома, в сводное время, я потратил порядка трех лет, пока не стал считать себя “хоть немного понимающем в C++”, язык сложный, но очень интересный, мощный, позволяющий контролировать все ресурсы компьютера. Решил ещё более углубленно понять программирование и для этого прочитал базовые знания по ассемблеру, чтобы уж окончательно понимать, что там внутри происходит. Решил ещё изучить нейронные сети, и уж раз изучаю программирование, то написать нейросеть полностью самому, с нуля. Не хвастаясь, у меня не плохо получилось. Для своей нейронной сети я написал игру, змейки, подсмотрел основную идею в интернете, но не реализацию, это было дело принципа, написать самому. Прикрутил к каждой змейке нейросеть, размножил их, по ходу развил идею ещё глубже и создал случайные параметры сети для каждой змейки, разделил их на два типа, травоядных, и хищников. На сцене генерировались “яблоки”, которые поедали травоядные, и не много “мяса”, которые поедали хищники, но основная цель хищников были другие змейки, травоядные, а я наблюдал кто из них выживет

maniac.gif

В общем, брался за все понемногу, дабы набраться опыта, задачи придумывал для себя сам.

И тут приходит корона, в смысле вирус

zombie.gif

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

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

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

Настал час “X”. Я пришел на собеседование, такого долгого собеседование у меня ещё не было, обычно оно занимало минут 10-15, ну максимум 20, а тут практически час. Обсуждали много чего, и работу и просто жизненные ситуацию, меня гоняли по знаниям программирования, справедливости ради отмечу, что совсем не сильно, хотя, может это моё субъективное мнение, во всяком случае, мне было не сложно. И вот, по прошествии часа, показав свои работы, мне как обычно сообщают: “Мы вам перезвоним, если не перезвоним, то вы нас не устроили”. Я неспешно удалился и стал ждать звонка, обещали перезвонить в этот же день, так как после меня, по их словам, ещё была пара-тройка собеседований и всё, т.е. я был одним из последних. В целом, мне собеседование понравилось, коллектив хороший, руководство лояльное, да и как люди, сами по себе норм.

Сказать, что я волновался, значит ни сказать, ни чего, я пошел просто гулять по городу, обдумывая свои ответы на собеседовании и искал косяки, где я чего не так сказал, прокручивая в голове по сотне раз одни и те же диалоги и размышлял к чему мои ответы могли привести. Так, гуляя, прошло около 4 часов. И тут звонок, мне сообщают, что я полностью подхожу под их кандидатуру, и я принят, мне нужно подъехать в офис на следующий день и обсудить финансовые вопросы. Я уже не буду описывать моё состояние, чтоб это не выглядело как описание одних эмоций. Я был счастлив, но скептицизм преобладал.

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

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

Мне сейчас летом будет 39, C++ я начал изучать приблизительно в 35. Всем кто сомневается, что не сможет в этом возрасте, но есть большой интерес к этому делу, я желаю удачи и смелости, и не стоит бояться, нужно действовать. Если мозги на месте, всё получится.

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

Всем, кто дочитал до конца, Спасибо за внимание!

P.S. Если понравилось, я давно пишу уже статью о нейронных сетях простым языком, статья большая, времени мало, но как допишу, опубликую, если конечно вам интересно.