Учим программирование с нуля, личный опыт

Предисловие: статья для тех, кто не знает с чего учить программирование, но очень хочет чему-нибудь научиться в этой отрасли.
Всем доброго времени суток. Так уж повелось, что волею судеб (если точнее, то американской бюрократической машины) появилось у меня в запасе пара свободных месяцев в ожидании грин карты. Поскольку заняться все равно особо нечем, решил я под это дело автоматизацию тестирования изучать, по ручному тестированию брал онлайн классы товарищей с Украины, и раз уж выпало время записался на только что начавшийся онлайн класс всем известной школы Портнова. Поскольку в айтишной сфере уже не совсем начинающий, веб разработкой занимался ранее, решил попробовать автоматизировать что-нибудь, что называется джаст фор фан. За неимением ранее опыта в этом деле пошел на [известный форум программистов] и выбрал для начала selenium 2.0. (Сейчас вот пробную версию QTP (UFT) осваиваю, но это отдельная история). Чтобы пользоваться selenium нужно знать программирование на кое-каком уровне, без этого никак. А под это дело решил статью на этом форуме написать…

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

Начнем мы с классической тройки ̶б̶о̶е̶в̶ы̶х̶ ̶с̶к̶а̶к̶у̶н̶о̶в̶ языков программирования (кто не считает это языками программирования - ваши проблемы) для начинающих веб (и не только) программистов а именно: HTML, CSS, JavaScript.
Забегая вперед скажу, что уже зная эти три технологии, первые 2 из которых весьма несложные, вы уже можете искать вакансии front end разработчика, за весьма неплохую денежку даже на начальном уровне, да и мир фриланса никто пока не отменял, русский язык индусы пока не выучили, так что конкуренция не такая дикая. в интернете гигантское количество курсов, книг, статей и пособий по изучению этих технологий.
Сколько нужно времени, чтобы это изучить?
Тут все индивидуально, но при ответственном подходе и наличии хотя бы 5-6 часов в день за месяц можно вполне нормально освоить.

Теперь нужно добавить что-то потяжелее, если мы говорим про веб разработку, то тут бесспорно лидирует PHP, пусть говорят, что он умрет со дня на день, но пока таких тенденций не намечается. Но, лично я рекомендую PHP отложить на потом, а пока взяться за джаву, после джавы будет намного проще его изучать. К тому же, ни по одному другому языку программирования вы не найдете столько материалов по изучению, как по джаве.
Но в отличие от вышеупомянутых языков java это полноценный мощный объектно-ориентированный язык для выполнения задач любой сложности (для экспертов: да-да, на js особенно с фреймворками тоже можно много чего сделать, но пользоваться им при создании тяжелых серьезных проектов это удел мазохистов, ИМХО).

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

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

Что надо знать, чтобы автоматизировать тесты на java и selenium:
Базовые вещи, такие как переменные, методы (функции/команды), hello word как печатать;
Массивы, коллекции, без них никуда;
Что такое классы и объекты, как их создавать, что такое конструкторы;
Парадигмы ООП - полиморфизм, наследование, инкапсуляция;
Как работать с исключениями - как пользоваться конструкциями try catch finally;
Неплохо бы знать интерфейсы, нити и потоки, но можно и без этого, хватит просто зазубрить пару конструкций и что они делают.
Сюда бы PageObject pattern еще, и вообще прямо сказка будет.

Не пугаемся, если слова кажутся нам страшными, а конструкция public static void main (String [] args) вгоняет нас в холодный пот - не все так страшно, все эти темы мечтают, чтобы вы их выучили, они очень дружелюбные (только кусаются поначалу, пока вы плохо знакомы), поверьте.

Зная все это вы попадаете на распутье: когда вы будете ориентироваться в этих (и скорее всего во многих других вещах) и уже почувствуете уверенность в себе вам придется сделать выбор дальнейшего пути развития (конечно, можно изучать все сразу, если времени вагон, но если ваша цель найти работу, то надо копать вглубь, а не вширь):

  1. Front-End developer, весьма симпатичное направление, добавим к вашим текущим навыками angular/node (это фреймоворки для JS) + jQuery, bootstrap/foundation, а так же какой-нибудь препроцессор для css типа less или sass (последний прикольнее, имхо) и будет вам счастье.
  2. Full-Stack web developer учим PHP, и все вещи из пункта для front end developer, осваиваемся в этой дисциплине, разбираемся как работает интернет, что такое ftp,tcp/ip, и вперед. (mySql бы еще сюда и вообще конфетка будет)
  3. Back-End developer, Если вы поняли, что создавать всякие кнопочки и красивые анимации не для вас, у вас все вечно съезжает куда-то, а на планшете и телефоне вообще отображается какой-то ужас, но вас внезапно осенило, что все, о чем вы мечтали всю жизнь это писать код для веба, то доброго пожаловать в мир back-end разработки. Я специально выделил full-stack раньше, потому что многие люди, считающие себя full-stack девелоперами, на самом деле чистой воды фронтэндщики, просто умеющие делать всякие прикольные фичи, типа личного кабинета, поля для обратной связи и подписки на обновления по почте.
    Мир Back-End это серьезная инженерная область и если вы читаете это, то скорее всего это пока что не для вас. Поэтому подробнее здесь писать ничего не буду.
  4. Вы поняли, что писать тонны кода, вечно исправлять баги, сидеть до полуночи над заказом и выслушивать ежедневные: “О, а давай дизайн поменяем” или: “я понял, что мне не нужен просто сайт, поэтому напиши к нему форум за 2 дня за 500р сверху” не для вас, а пропадать таким знаниям грех, то, можно стать тестировщиком ПО, да не просто тестировщиком, а специалистом по автоматическому тестированию. Подразумевается, что если вы читаете данную статью, то вы знаете, кто такие тестировщики, если нет, то тут можно сказать весь этот раздел на форуме этому посвящен.

Для всех 4 вариантов будет nice to have запросы SQL, там ничего супер сложного нет, все относительно просто и доступно для понимания.

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

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

Для себя же я решил, что я не получаю удовольствия от создания веб сайтов, создав их пару сотен. Ну не мое это, если настанут черные времена или будут срочно нужны деньги, тряхну стариной, но надеюсь до этого не дойдет. А вот тестирование ПО мне приглянулось намного больше, поизучав самостоятельно и поняв, что курсы надо бы все-таки взять, нашел неплохой курс от каких-то украинских ребят. Да и вариантов масса других имеется, например я взял дополнительно еще курс Портнова. Нашел я для себя, что вот прямо всю жизнь я хотел быть тестировщиком, да не понимал этого. Но в силу молодости простительно. (11 класс закончил в прошлом году). Да и вряд ли бы живя в России я нашел работу тестировщиком, один мой приятель пытался, да в моем родном городе (столице региона между прочим) вакансий не было вообще, да и для программистов работы кот наплакал. А вот в США с этим все замечательно, даже в захолустье, где я обитаю 5-6 вакансий в день, да появляется, и это только для тестеров.
По сему, решил, что буду тестером, определения выучил, модели разработки, STLS, Aglie и все в таком духе изучил, жду теперь практических занятий в онлайн классе Портнова.

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

5 лайков

TC молодец в юнном возрасте начал учить, так держать!

Великого айтишника Стив Джобс звали, он никогда не программировал.

  1. Что бы стать программистом во первых надо подходить для этой работы. Далеко не каждому это подходит.
  2. После того как закончишь годичные курсы или самостоятельно всё изучишь за это же время, нужно как минимум пару лет работать что бы всё улеглось
    в голове и встало на свои места. А если у вас нет специального компьютерного образования непросто найти работу.
  3. Да и потом без корочек с как минимум первой степенью в компьютерных науках непросто найти работу.

добрая половина наших знакомых программистов не имеет профильного образования. Доросли до синьеров, и продолжают развиваться самостоятельно.

1 лайк

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

Мой муж начал в 2011.

:lol:

Тут лично я не соглашусь. Даже в американском универе, где я учился, в начале нужно было взять класс Programming 1 где учили основам программирования на Java в пределах одного класса и метода main. А потом уже, закончив его, можно было брать класс по Сlient side web development где изучались HTML, CSS, JavaScript. Потому что зная основы программирования на Java можно гораздо легче освоить JavaScript в котором набор инструментов один и тот же.

Согласен полностью, раньше когда писали программы на С и С++ и в самом деле вебпрограмирование считалось чем-то примитивным. Но сегодня писать на Java или .NET зачастую легче и приятнее чем какой-то большой сайт, скажем для крупной финансовой организации где нужно использовать несколько языков и десятки библиотек разных производителей. Я думаю написать программу для Windows на .NET намного легче чем что-то где надо писать серверную часть используя например РНР и SQL, а потом клиентскую с HTML, CSS, JAVASCRIPT. Есть ещё и масса технологий ANGULAR, MVC и т.д. Хотя конечно, если просто всё время лепить по шаблону онлайн магазины и порталы - то это несложно.

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

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

На фрилансе никто ваш диплом никто не спросит, почитайте вакансии на дайсе/монстре, там во тоже далеко не везде встречается

как ни парадоксально, но 90% заказов именно шаблонные, опять же, я про фриланс говорю

Конечно вы правы (нет)! Мне лично не удалось найти работу без опыта и работать вот уже год без профильного диплома. (сарказм если что).

ЗЫ А если по теме, то предложу свой вариант с чего начать. Предложу для новичка, а начните с простых базовых курсов. Очень рекомендую cs50, благо этот курс сейчас есть и в русской и в украинской адаптации. Там практически в игровой форме пробегаются по базовым вещам и в кратце затрагивают и С, и Джаву, и РНР с джаваскриптом. Очень полезно пощупать и понять чем хочется заниматся.

Кто потом не найдет работы из-за “кто не считает это языками программирования - ваши проблемы” - это тоже ваши проблемы ))

Ну раз рекламировать не охота :), можно плиз ссылочку на этот сайт в личку :blush:
Спасибо

Javarush погуглите

1 лайк

Сейчас столько всевозможных it-курсов, иди “не хочу”. У меня много знакомых закончили такие курсы. Работают единицы, да и то большинство на фрилансе

у меня тоже таких хватает

а где вы учились?