Как стать программистом 5

Как стать программистом? Часть 5 – Еще важные технологии для java junior разработчика.

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

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

Восьмое место! Шаблоны

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

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

Вы должны знать и уметь писать DAO и хотя бы немного понимать, что такое MVC. Почитайте про то, как разбивать Ваше приложение на слои. Эти шаблоны, как и JDBC, хорошо учиться применять при написании своего CRUD.

Девятое место! Maven или Gradle

Наверно многим покажется странным, что я поставил Maven и Gradle на 9-е место – раньше чем spring и hibernate. Я рекомендую познакомиться со сборщиками как можно быстрее. Потому, что это избавит Вас от многих проблем связанных с добавлением новых фреймворков и библиотек в Ваш проект. Например, Вам не придется самому качать необходимые jar-ки и складировать их в папку lib или запускать тесты.

Обязательно научитесь собирать проект. Подключать новые зависимости. Из необязательных навыков назову работу с профайлами и создание вложенных модулей.

Десятое место! Spring core

На 10-м месте spring. Без него сейчас сложно. Но я Вас обрадую. Учить там не так уж и много. Вы должны уметь создавать bean-ы и внедрять зависимости в эти bean-ы. Также научитесь конфигурировать JDBC и Hibernate используя spring context. Изучите как это делать через аннотации.

Не обязательно, но будет плюсом умение использовать транзакции при работе с Hibernate или JDBC. Тоже не обязательно, но почитайте про JDBCTemplate, HibernateTemplate и аннотацию @Transactional.

Большинство технологий проще и интересней изучать на практике. Поэтому, если Вы уже написали свой CRUD, то перепишите его c использованием spring.

Одиннадцатое место! Hibernate

На 11-м месте Hibernate. Его сейчас также везде требуют. Что вообще нужно про него знать? Тоже не так уж и много. Во первых, научитесь мапить классы на колонки таблиц БД. Научитесь пользоваться аннотациями @ManyToMany, @OneToOne, @ManyToOne, поэкспериментируйте с ленивой загрузкой и каскадными операциями. Необязательно, но можете посмотреть как работать с транзакциями.

Опять же, попрактикуйтесь на своем же CRUD редакторе. Если когда-то писали CRUD на JDBC, то перепишите его на Hibernate.

Двенадцатое место! JSP

12-е место JSP. Вы должны уметь на чем-то писать слой представления. Это может быть JSP + JSTL. Можете изучить другие способы написать клиентскую часть. Например тот же AngularJS. Когда Вы получаете тестовое задание, то обычно от Вас не требуют писать сильно изощренную графику. Поэтому HTML, JS, CSS – должны быть хотя бы на базовом уровне. Лично я, когда устроился, JS практически не знал.

Тринадцатое место! Spring MVC

13-е место Spring MVC. Довольно часто новички не знают как грамотно организовать работу их веб-приложения через сервлеты. Тогда им на помощь придет Spring MVC. Не считаю его обязательным. Но там много всего, что поможет облегчить Вам жизнь при решении тестового задания.

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

Четырнадцатое место! Tomcat

14-е место Tomcat. Новичку про Tomcat знать нужно немного. Попробуйте развернуть свое приложение на нем. И научитесь запускать его в debug mode-е и подключаться удаленно через IDE.

Пятнадцатое место! JUnit

15-е место JUnit. Тесты это хорошо. Вы должны уметь протестировать свой CRUD редактор. Не обязательно, но можете посмотреть, что такое mock объекты и попробовать протестировать свои классы.

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


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

Шестнадцатое место! Git

16-е место Git. Системы контроля версий также не обязательны. Но они очень удобны. Если Вы их освоите хотя бы на базовом уровне, то не захотите больше работать без них. К тому же Вы неизбежно будете использовать их на работе. И скорее всего Вас попросят залить Ваш проект на GitHub для дальнейшей проверки.

Новичку научиться комитеть и заливать свой проект на GitHub и само-собой извлекать его от туда – более чем достаточно.

Семнадцатое и восемнадцатое место! Web-Services (SOAP, REST) и Шаблоны GoF

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

Можете немного вникнуть в тему шаблонов GoF и начать использовать их. Скорее всего Вы будете применять их неправильно и пихать где попало. Но может случится так, что вас попросят написать реализацию Singleton на собеседовании. По этому потренируйтесь. Еще познакомьтесь с этими шаблонами: Abstract Factory, Builder, Factory Method. 

Итог

Подводя итог напомню, что те критерии, которые я обозначил для каждого пункта этого Топ-а не являются догмой. Возможно в каждом отдельном случае придется изучить чуть больше, а может чуть меньше. Я всего лишь дал вам первоначальный ориентир. Если Вы все это освоите, то у Вас хорошие шансы найти работу. Например, в моем случае, я знал процентов 60-80% этого списка. И многое из этого знал на очень низком уровне. Про это я подробно рассказывал тут.

Все.

Подробнее

Нужно ли высшее образование

Нужно ли высшее образование разработчику?

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

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

Мое мнение

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

Как мне сказали HR-специалисты, руководители некоторых проектом категорически отказываются брать на работу людей без высшего образования. Но такие менеджеры,  по их словам,  попадаются достаточно редко.  
Подведем предварительный итог. Если у Вас нет высшего образования – это не значит, что Вы не можете работать программистом. Данный недостаток можно легко преодолеть, если грамотно подойти к поискам работы.

Факты

А теперь поговорим о фактах. Когда я стал прояснять этот вопрос, среди моих коллег, то выяснил, что в моей фирме нет программистов без высшего образования. Хочу подчеркнуть, я сейчас не говорю о других IT специалистах.

Как это можно объяснить? Думаю это связано с тем, что очень малый процент людей без высшего образования интересуются программированием. Лично я, когда был школьником, заинтересовался созданием сайтов. Я пытался сам изучать HTML и CSS. Даже начал учить язык Perl, но дальше темы массивов не продвинулся. После чего благополучно забил.

Я уверен на 100%, что если бы не пошел учиться на технический факультет, то ни когда бы и не стал изучать программирование. На факультете меня познакомили с моим первым языком программирования C++. Тогда я понял, что мне нравится программировать и получается у меня неплохо. Знакомство с Java произошло не по моей воле. Нам на втором году обучения преподавали курс прикладного программирования на Java и с тех пор понеслось :). Если бы не тот второй курс, скорее всего, Java я бы не знал.

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

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

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

Мнение HR-специалистов

Я поговорил с HR-специалистами из различных фирм. И все мне отвечали практически одни и те же вещи.

Приведу их сообщения как есть, без каких либо дополнений с моей стороны. Это Вам позволит оценить отношение всей сферы IT к сотрудникам не имеющих высшее образование. Кстати, я обещал не называть имен и названий фирм. Также уверен, что данную информацию можно перенести на все пространство СНГ.

HR-специалист номер 1:

Как вы относитесь к разработчикам без высшего образования?

По-разному. Конечно по опыту скажу, что с высшим образованием все же ребята в большем приоритете.

Сколько примерно у вас разработчиков без высшего образования? И сколько всего разработчиков? Какой штат у вас в целом?   

У нас компания чуть больше 50-ти человек, и никого нет без высшего)

HR-специалист номер 2:

Как вы относитесь к разработчикам без высшего образования?

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

Сколько примерно у вас разработчиков без высшего образования? И сколько всего разработчиков? Какой штат у вас в целом?   

В компании в основном все с высшим образованием. Есть один-два человека без высшего (средне-специальное/студенты). Около 85% с техническим образованием. Штат на сегодняшний день 59 человек.

HR-специалист номер 3:

Как вы относитесь к разработчикам без высшего образования?

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

Сколько примерно у вас разработчиков без высшего образования? И сколько всего разработчиков? Какой штат у вас в целом?   

На данный момент у нас работает около 5-ти разработчиков без высшего образования и 1 тестеровщик. Также у нас работают студенты 3-5 курса, которые пока также не имеют высшего образования. Их примерно 7 человек. Всего в штате около двухсот человек.

 

Также, один мой знакомый HR-специалист, в личной переписке, озвучил свое мнение:

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

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

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

 

Чтобы разбавить эту бочку дегтя медом, я в группе провел опрос. Можете тоже поучаствовать.

Я спрашивал “Вы работаете программистом. У Вас есть высшее образование (любое)?”
Из уже работающих 47% проголосовавших не имеют высшего образования.

Итог

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

Дополню еще тем, что у меня был начальник имевший высшее экономическое образование. Также знаю несколько примеров Java разработчиков уровня senior, которые имели высшее образование из области иностранных языков. Один из них переквалифицировался из QA. Сейчас живет где-то в Польше и работает кажется в luxsoft.

Знакомых без высшего образования у меня нет. Но, до меня доходили слухи, что без вышки проще пробиться в большие фирмы со штатом от 1000 человек. Просто по тому, что у них очень большая потребность в разработчиках. Называть такие компании я не буду. Их немного – около 10 наверно. И их итак все знают.

Дополнение

А теперь подумайте вот о чем. Если Вам сейчас 17-18 лет и Вы твердо решили, что хотите быть программистом, то высшее образование Вас замедлит. На получение высшего образования Вы потратите лет 5 и предположим, что курсе на 3 Вы устроитесь на работу. 3-й курс это очень рано. Лично я не знаю людей, которые так рано нашли себе работу. И получаем, что Вы, с таким планом, потратили на все 3 года. Хотя большинство потратит 4, а то и 5 лет. Это я имею виду, что Вы еще пытаетесь учиться в универе.

С другой стороны, если Вы в 17-18 лет не пошли в ВУЗ, а начали учить программирование, то программистом станните за 1-2 года, в худшем случае за 3 года. И отсутствие высшего образования не сильно бы Вас замедлило. Но так можно только, если Вы чрезвычайно в себе уверены. Большинство будут учиться не эффективно или быстро сдадутся. А может Вы сапоги еще будете носить 1-2 года :)

Вот и получается, что Вам диплом только помешал. На мой взгляд, самый лучший вариант будет пойти в ВУЗ и изучать программирование и делать это так, чтобы не Вылететь. Тогда может у Вас и получится за те же 1-3 года устроиться на работу. Но такой вариант выглядит сомнительно. Не факт, что так удастся сделать. Например, я мог бы в своем ВУЗе так вилять яйцами, может в другом нет. Решать Вам!

Все.

Подробнее

Как стать программистом 4

Как стать программистом? Часть 4 – Топ 7 технологий для java junior разработчика.

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

 

Надеюсь Вы понимаете, что от junior не требуют глубоких знаний. Когда-то, кто-то мне сказал, что junior должен знать все, но чуть-чуть. Поэтому не кидайтесь учить все, вплоть до ассемблера. Короче, подробнее буду описывать по ходу.

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

Первое место! ООП

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

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

Раз Вы новичок, то Вас скорее всего, на собеседовании, попросят объяснить, как работает ООП на том языке, который Вы изучаете. Может дадут кусок кода, в котором иерархия классов и скажут определить, какой метод вызовется при тех или иных условиях.

Второе место! Java core

Вторым по важности идет java core. Это достаточно широкое понятие. На знание java core, Вас могут попросить решить тест. Этот тест будет из разряда, что будет если выполнится данный код. Вы заранее можете потренироваться решать такие тесты. В интернете полно ресурсов, которые позволят пройти такую проверку бесплатно. Поищите OCJP(SCJP) tests online.

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

Обратите внимание на то, что я сказал, что вам МОГУТ дать такой тест. Если его не дадут, то скорее всего спросят устно. В этом случае Вы можете проскочить.

Третье место. Java Collections

Также чрезвычайно важная тема. Вопросы по коллекциям будут вас преследовать всю вашу будущую карьеру, вне зависимости от того junior Вы или senior.

Первым делом выучите основные интерфейсы и поймите для чего они нужны и чем отличаются. Список не большой это Collection List, Set, Queue и Map. Не нужно заучивать все их методы, лучше научитесь пользоваться ими.

Затем выучите основные реализации. Также список не большой, это LinkedList, ArrayList, Vector, HashMap, Hashtable, TreeMap, HashSet, TreeSet. Их недостаточно просто уметь применять. Понимайте особенности реализации и то, когда их нужно использовать. Желательно знать временную сложность выполнения тех или иных операций.

Четвертое место. Servlets

Сервлеты – это тоже очень важная штука. Очень часто на собеседовании меня спрашивали о жизненном цикле сервлетов.

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

Пятое место. Synchronization

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

Научитесь пользоваться ключевым словом synchronized. Так получилось, что я устроился на свою первую работу не зная о существовании классов Semaphore и СountDownlatch. Поэтому я считаю, что это не сильно важно, но если будет свободное время, то поковыряйте их.

Шестое место. JDBC

Практически в любом тестовом проекте, который Вы получите, будет работа с базами данных. Тема, мягко говоря, важная. Знаете, что такое CRUD редактор? Если нет, то поищите в google.

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

Седьмое место. SQL

Раз уж мы коснулись JDBC, то и SQL не обойдем стороной. Вы достаточно неплохо познакомитесь с SQL, когда будете писать CRUD редактор на JDBC. Но я подчеркну еще, что Вы должны понимать следующие операторы языка SQL: SELECT, WHERE, INSERT, DELETE, UPDATE, JOIN (все типы), GROUP BY, ORDER BY.

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

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

Итог

Как Вы могли заметить, самые крепкие знания Вам потребуются по Java core. По всему остальному можно создать видимость наличия у Вас опыта использования. Это объясняется тем, что обычно только по Java core могут дать решать тест. А тест, как Вы понимаете уже сложнее, обмануть. Хотя может попасться такой интервьюер, который так будет придираться, что пиши пропало.

Еще дополню, что в мое слово “обмануть” я вкладываю немного другой смысл. Я думаю, что почти у всех новичков есть некоторая своя оценка их знаний. И зачастую она очень низкая. То есть, ты думаешь, что ничего не знаешь, а на работу тебя взяли. Получается ты думаешь, что обманул интервьюера. Хотя он может просто закрыл глаза на некоторые твои пробелы и фирма готова их закрыть за свой счет. Получается, что  обман существует только в твоей голове.

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

Все!

 

Подробнее

Как стать программистом 3

Как стать программистом? Часть 3 – Что должен знать junior разработчик? Минимальный арсенал знаний.

Привет. Я Александр. Это третья статья из серии о том, как стать программистом. Сегодня я решил поделиться с вами тем, что минимально нужно знать и чем владеть для получения работы.

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

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

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

Мое тестовое задание.

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

У меня было несколько заданий за то время. Пред последнее  я уже плохо помню. Там было что-то очень простое – буквально один сервлет, который брал текст из БД (База данных) и выводил его в окно браузера. Также, можно было этот текст, через HTML форму, сохранить в базу. При всем этом, мне нужно было использовать SVN для хранения исходного кода на сервере.

Затем, мне дали второе задание, сроком на 2 недели. И сказали, что по его результатам меня возьмут на настоящий проект, на испытательный срок. Я был в шоке, от того, какой мне маленький срок дали на исполнение задачи. Все усугублялось тем, что мне нужно было делать это задание не на java, а на groovy. Вернее даже на фреймворке, который использовал Spring MVC, Hibernate, Gradle и Groovy. Его название Groovy on Grails. Как вы понимаете я его не знал.

Должен заметить, что я был совсем чуть-чуть знаком с такими технологиями как Spring MVC и Hibernate. Про Groovy и Gradle я вообще ничего не знал. Немного знал JDBC и SQL.

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

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

Что я знал на момент прохождения собеседования?

Решил отыскать свое старое резюме, чтобы рассказать вам о том, что я тогда знал или думал, что знаю. В ответ на резюме, рекрутер прислал мне свою анкету. В которой я отвечал на некоторые вопросы. Вопросы из разряда “Кем вы видите себя через 10 лет?”. Будет свободное время, запилю статью, в которой прочитаю свои ответы. Недавно прочитал, очень даже улыбнуло.

Прежде чем начать, я обращаю ваше внимание на то, что эта статья называется “Что нужно знать программисту java junior? Минимальный арсенал знаний.”. Он полностью основан на моем опыте. Позже будет статья, в которой я назову топ технологий, которые нужны java junior там около 23-х пунктов. А в этом просто назову, что я знал и то, что бы следовало знать.  

Начнем. Первое, что я указал в резюме это-то, что знаю Spring Framework. Если мне не изменяет память, тогда я знал, как внедрять зависимости. Признаюсь, что на тот момент я делал это максимум раз пять на 2-3х своих проектах. О понимании зачем это нужно и какие выгоды несет и речи нейдет. Не помню точно, но я уже наверно, немного использовал jdbcTemplate и hibernateTemplate.

Я посоветую вам не тратить сильно время на jdbcTemplate и hibernateTemplate. Достаточно будет пару раз попрактиковаться в их использовании и знать, что это дает. Лучше научитесь конфигурировать JDBC и Hibernate (JPA) используя Datasource и Spring context.

Далее. Я написал, что знаю Spring Security. На самом деле, я максимум мог разместить форму для входа на сайт на странице, чтобы она кое-как работала. Опять, речь не идет о том, что я знал как вообще это устроено. Я наверняка брал просто конфигурацию, которую нашел на каком-то сайте и копировал ее себе. А потом долго пытался настроить ее под себя, методом проб и ошибок.

Spring Security знать не нужно. Мало вероятно, что он понадобится вам на собеседовании.

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

Если вы больше не знаете, ни одной технологии, на которой можете написать клиентскую часть вашего веб-приложения, то изучите Servlets, JSP и JSTL. Вы точно не ошибетесь. Научитесь передавать информацию на jsp страницы и красиво ее преподносить.

Hibernate и MySQL. О том, как работает Hibernate я тогда понятия не имел. Я пользовался сотнями статей, которые описывали простейшее DAO и то, как мапить поля объектов на таблицы базы данных. В качестве базы данных я использовал MySQL. Не уверен, что я тогда мог на SQL сгенерировать простейшую схему базы данных. В этом мне помогал Hibernate.

Hibernate знать нужно. Нужно уметь мапить поля сущностей на колонки таблиц. Также умейте написать простейшее DAO с использование HibernateSQL – знать обязательно. Уметь использовать join. И уметь группировать полученную информацию.

Я более или менее мог написать простейшие запросы с использованием JDBC. Запросы с join я тогда не писал. JDBC Скажу тоже самое. Умейте писать DAO. Там же вы минимально познакомитесь с SQL.

Еще я писал, что имею опыт работы со Swing. Я делал на нем покер. Я уже как-то про это упоминал. Еще делал игру “Жизнь”. Если интересно поищите в интернете, что это такое. Swing знать не нужно. Его сейчас практически никто не использует.

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

JavaScript и Ajax – мог отправлять Ajax запросы и писать простые скрипты. Манипулировать домом я тогда не умел. JavaScript и Ajax – нужно знать (не сильно) и уметь отсылать Ajax запросы на сервер и потренируйтесь манипулировать домом.

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

Также я указал, что знаю Assembler. Хотя пользовался им только в рамках программы в университете и то пол года всего. Assembler – в топку. На позицию java junior его знать не нужно.

Ну и минимально использовал XML. Для чего я его тогда использовал, для меня загадка.  Не понимаю, что в нем можно учить.

Про английский я писал, что говорю на уровне elementary, а пишу и распознаю речь на уровне intermediate. К счастью требования к английскому не высоки. Достаточно уметь бекать и мекать, но чем лучше у вас английский тем у Вас больше шансов.

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

Итог

Я очень вам рекомендую попробовать сделать свой магазин кофе. Используя такие технологии как Spring core, Spring MVC  и Hibernate. Пусть у вас эта система тоже отправляет письма вашим клиентам. Если у вас это получится, то смело начинайте ходить по собеседованиям.

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

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

Все.

Подробнее

Для тех, кто вообще ничего не знает

Для тех, кто ничего вообще не знает

Мне, частенько, через ВК, задают одни и те же вопросы: “С чего начать?”, “Какую книгу почитать?” и т.д. Я на такие вопросы (в вк) не отвечаю. Потому что этот поток нескончаемый.

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

Вопросы:
Подскажи пожалуйста парочку вводных книг по java)
Я бачив твій ролик в ютуб підскажи з чого начати навчання по програмуванню?
Я хочу стать программистом ! помоги пожалуйста
С чего начать чтобы стать программистом Java?
Может посоветовать какие-то книги или видео-материалы для новичка

Ответ:
Найдите хорошую книгу для начинающих. И планомерно читайте ее, не забывая полученные знания испытывать на практике. Например, если вы научились выводить сообщение в консоль, попробуйте написать программку, которая выводит в консоль фразу “Hello world”. Поняли что такое рекурсия или изучили циклы, напишите вычисление факториала через циклы или рекурсию (Кстати, вас могут попросить сделать это на собеседовании).

Вот книги которые можно почитать для старта.

  • Java. Руководство для начинающих Автор: Герберт Шилдт (Herbert Schildt) – поищите новейшее издание. ссылка
  • Философия Java Автор: Брюс Эккель – поищите новейшее издание. ссылка

Из этих двух книг я читал первую (рекомендую), а вторую пролистал.

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

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

После этого попробуйте пройти несколько собеседований (5-10 штук). Если не получится, будем думать дальше.

Еще посоветую несколько каналов? на которых вы можете найти полезную информацию.
Естественно, первая ссылка будет мой канал))
https://www.youtube.com/user/aliaksandrbudnikau
Обязательно ознакомьтесь с этими ссылками Как стать программистом 1, Как стать программистом 2 и Программист в 40 лет.

Вот еще каналы:
https://www.youtube.com/user/devcolibri
https://www.youtube.com/user/KharkovITCourses
https://www.youtube.com/user/JavaTrenerOlegon
https://www.youtube.com/user/loftblog
https://www.youtube.com/user/ytkach
https://www.youtube.com/user/vitaxafication
https://www.youtube.com/user/pro100fox2
https://www.youtube.com/user/JavaOOP
Пишите в комменты если я что-то забыл.

Группы в вк:
Моя группа
Дружественные группы
https://vk.com/studyjava
https://vk.com/skillkit
https://vk.com/techiespro
https://vk.com/proglib
https://vk.com/tproger
https://vk.com/tnull
https://vk.com/devcolibri
Пишите в комменты если я что-то забыл.

Удачи! 😀

Подробнее

40 летний программист

Зарплата программиста. 40 летний программист. Часть 1.1

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

Начало

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

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

Конечно, кто-то сейчас напишет в комменты сопливую фразу, что заниматься нужно тем, что приносит максимальное удовольствие. С этим спорить сложно. Да. Заниматься нелюбимым делом трудно. Но заниматься любимым делом, все дни на пролет и получать от этого смешные деньги – это просто тупо. Жизнь же не ограничивается только любимым делом. Тебе опять же захочется завести семью. Нужно задуматься о том, на что можно обеспечить свою жену и детей, занимаясь любимым делом. У голодного художника и дети голодные.

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

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

Перспективы

Стандартный пакет

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

Как я уже сказал, велика вероятность, что Вы не получите от жизни, то о чем мечтаете, но в замен Вы можете получить небольшой бонус –  ежемесячную компенсацию в размере…. Так стоп. Давайте определимся с тем какой вектор Вы выбрали.

Рис. 1. Статистика зарплат с сайта dev.by

Если Вы управленец – super project manager с опытом работы, скажем, лет 10. То Вы можете рассчитывать на ЗП в Минске до 6 штук баксов. Может кто-то заработает и больше. Я не беру в расчет людей которые доросли до топовых должностей. Мои цифры основываются на статистике с сайта dev.by (Рис. 1). Нечто подобное можно ожидать и в Киеве. В Москве, думаю, что процентов на 20% больше.

Но что если Вы выбрали путь развиваться как технический специалист? Опять же берем человека с опытом около 10 лет super senior developer. Тут дела обстоят чуть по хуже – 5 с половиной штук в месяц(Рис. 2) тоже самое я нагуглил и в Киеве. Думаю Москва опять будет впереди планеты всей.

Рис. 2. Статистика зарплат с сайта dev.by.

Сделаем промежуточный вывод. Помимо уважения или, другими словами, позиция альфа самца в Вашей компании, с таким доходом Вы сможете, ни в чем себе не отказывая, накопить на квартиру стоимостью в 100 000$ за 2-3 года. Или за те же деньги отправиться в кругосветное путешествия. Конечно, если Вы уложитесь в 3-4 недели отпуска. Хотя, когда Вы достигните такого уровня, то Вы сможете диктовать свои условия работодателю и начать работать удаленно.

Пакет “Демократия наше все”

Если для Вас работа в офисе не кажется каторгой и Вы достаточно амбициозны, то для Вас есть пакет “Демократия наше все”.

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

Чтобы начать получать такие предложения от Вас требуется совсем немного. Зарегистрируйтесь на LinkedIn и если у Вас достаточно лет опыта скажем 2-3 года. То через некоторое время, Вас достанут десятки предложений о работе. Некоторые из них будут предлагать работу за границей.

Если задаться целью и поискать самостоятельно, хоть это и не обязательно, то есть варианты переселиться куда-нибудь и подальше. На тот момент что я работаю в IT несколько моих знакомых переехало жить в Польшу, Германию, Нидерланды и США.

Поначалу может оказаться, что Вы работаете на условиях, которые ниже среднего по рынку, но со временем все может стать хорошо и даже отлично. Мне друг рассказывал, что он жил у одного парня в Париже, который работает в Гугл и, если мне не изменяет память, то он зарабатывает по 10 штук в месяц. Не знаю точно, но скорее всего, эта цифра без вычета налогов. Так что дерзайте, Google или Apple ждут Вас.

Пакет “Я не такой как все”

Нет. Вас перспектива торчать в офисе годами совсем не греет? Вас ничего не держит и Вам хочется повидать мир? Не беда, у нас есть для Вас пакет услуг “Я не такой как все”.

Как-то я залез на одну из зарубежных фриланс бирж. И у меня глаза на лоб полезли от тех расценок. Как Вам перспектива заработать 20-50$ в час? Да. Вы, скорее всего, не будите никем управлять и это способ потешить свое самолюбие для Вас не катит. Но в замен, у Вас ненормированный рабочий график. Вы не слышите и не видите чавкающих, сморкающихся, что-нибудь грызущих или чуть ли не пускающих шептунов коллег вокруг Вас. Те кто знакомы с openspace офисом, меня поймут. Кстати, Вы не знаете сколько лет сейчас дают за преднамеренное убийство? Что-то я замечтался.

Вернемся к вопросу о деньгах. Если учесть что Ваши расценки 20-50 $ в час и Вы, скажем, работаете пять дней в неделю по 4 часа то выходит, что в месяц Вы заработаете 1500-4000$. Согласитесь, это очень даже не плохо, если учесть что Вы работаете пол дня, а все остальное время катаетесь на серфинге где-нибудь в Таиланде. Или если Вам не нравится сидеть на месте, то постоянно перемещаетесь. Вы даже можете залезть в любую пещеру или опустить на дно Марсианской впадины. Главное чтобы там был Wi-Fi и источник питания для Вашего ноутбука.

Что если у нас нет фантазии и мы не знаем как себя занять в свободное время? Тогда мы можем попытаться найти работу по 8 часов в сутки. И это уже почти 8 штук в месяц. Когда я писал этот текст, то так и не смог придумать новых примеров на что можно тратить такие деньги. Хотя? Я бы ходил стричь бороду в самый дорогой салон красоты, причем меня бы обслуживал леприкон на ходулях, специально прилетавший из Ирландии.

Пакет “Мастер Йода”

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

Данный вариант может переплюнуть все что я говорил до этого. Можно попробовать начать зарабатывать каучингом. У меня был разговор с очень интересным человеком по этому поводу. И я насчитал минимальный доход в 4000$ если обучать 20 человек по 200$ в месяц. Если Вам кажется, что обучать одному 20 человек это не реально, то подумайте: людей можно разбить на группы или наработать материал с небольшим количеством людей. Если все сделать грамотно то можно помечтать о доходе в 10 штук. А если попробовать работать на западную публику, взвинтить расценки до 1000 баксов и набрать группу больше 20 человек, то мы насчитали 20-25 штук.

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

Самый крутой пакет

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

Заключение

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

Хоть в статье и не было практических рекомендаций, надеюсь что он был Вам интересен. Также, надеюсь, что больше у Вас нет идиотских мыслей по поводу того, кем Вы станете в 40 лет. На крайняк, Вы можете податься в видеоблогинг!

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

Также не забывайте про группу в контакте.

Подробнее

Как стать программистом пр

Как стать программистом? Часть 1

Проанализировав статистику поисковых запросов Google и Яндекс, я решил немного отойти от тех тем и типов сюжетов, которые записываю обычно. Я обнаружил, что ключевой запрос и слова “Как стать программистом” в месяц набираются в 100-200 раз чаще чем запросы по шаблонам проектирования. Было решено провести небольшой эксперимент: посмотреть на то, как эта тема повлияет на статистику просмотров данного ролика по сравнению с другими. Так же, возможно, как это хорошо отразится на скорости роста подписной базы моего канала.

“Как стать программистом?” — довольно философский вопрос. Поэтому на него трудно сформулировать однозначный ответ. Я вспомнил как изучал программирование и попытаюсь сформулировать свои мысли на тему того, как бы следовало это делать. Планируется, что это будет серия роликов и возможно, ближе к концу, я опишу как я учусь сейчас. Также постараюсь поговорить о более практических вещах. Где найти время, как ускорить прогресс обучения и т.д.? Постараюсь мотивировать вас посвятить этому делу побольше времени.

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

Первое о чем я хочу поговорить — это Цель.

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

Точка Б — это то чего Вы хотите достичь, это Ваша цель. Если цель — “Стать программистом”, то я спешу Вас огорчить: Вы неправильно обозначаете цели. Постараюсь объяснить, что в моем понимании хорошая цель.

Мои родители живут в небольшом городе в Республике Беларусь. Периодически я езжу к ним в гости и иногда речь заходит о моих ровесниках. Я слышу от родителей про некого Вовку, который якобы мой ровесник. Вовка работает на местном маслозаводе программистом и получает 200-250$. Они еще удивляются, как хорошо что я остался работать в Минске. Полбеды, когда они называют программистами еще админов или продавцов в компьютерных магазинах. Мне от таких рассказов хочется смеяться. Если Ваша цель “быть программистом”, то я Вас обрадую — на маслозавод пробиться не сложно. Но я думаю, это не то чего Вы хотите.

Пока пишу данный текст, вспоминаю старый фильм “Ослепленный желаниями”.

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

Ладно, вернемся к основной линии рассуждений. На мой взгляд, цель должна быть конкретной. “Я хочу зарабатывать энную сумму денег”, ” Хочу работая программистом на языке Java, путешествовать по миру каждый месяц.” Кстати, я знаю такого человека. Или такая: “Я хочу жить в США и работать в Google” — это тоже хорошая цель, если Вы не собираетесь быть там уборщиком. Нужно больше конкретики.

Теперь нарисуйте точку Б и напишите рядом свою конкретную цель.

Шаг номер 1: Поставьте правильную цель.

Поговорим о том как попасть из дочки А в точку Б. Нам нужен путь и понятно, что путь это некая последовательность действий. О том, какие это действия, я расскажу дальше. Сейчас поговорим о том, как сделать Ваш путь максимально коротким.

Нарисуйте точку В на одной прямой с точками А и Б. Это Ваша другая цель и она не связана с программированием. Скажем, это цель накачаться и догнать вес своего тела до 100 кг. Вы начали свой путь из точки А, идете в точку В и в конце концов достигнете точки Б. Но путь от А до Б увеличился т. к. Вы тратите часть времени на посещение спорт зала. Чем больше у Вас дополнительных целей между точками А и Б – тем дольше у Вас путь. Подумайте, может есть менее важные точки в Вашей жизни и Вы перенесете их за приделы отрезка АБ? Это не значит что Вы их достигать не будете — Вы их просто отложили.

Не бойтесь что-то переносить на потом. Если Вы чего-то действительно хотите, то снова вернетесь к этому. Что это дает? Вы не распыляетесь и это сокращает путь от А до Б. Может кому-то это покажется очевидным, но я Вас уверяю, для многих это очень сложно сделать. Я сам, до сих пор, не отучился от дурацкой привычки усидеть сразу на двух стульях. Например, многие из Вас пытались читать сразу 2 книги, а по итогу было хорошо, если дочитывали хотя бы одну из них. Или ночью пытаешься отладить программу для лабораторной работы по программированию и параллельно поджарил гречку на плите, да  так, что оплавились пластмассовые ручки кастрюли.

Делайте свои дела последовательно, Вы не мультипроцессорная машина, поэтому Вы только имитируете параллельность.

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

Шаг номер 2: Отложите менее важные задачи на потом.

Теперь поговорим о той скорости с которой Вы будете двигаться.

Скорость нашего движения зависит от нашей эффективности. Пусть Вася стал изучать язык на 1-м курсе университета, а работать он стал курсе на 3-м. В то время как Коля, также стал изучать язык на 1-м курсе, но работать стал на 2-м. Получается, что Вася на изучения необходимого минимума потратил 2 года, а Коля 1 год. Откуда делаем вывод, что Коля более эффективно учится т.к. он потратил меньше ресурса времени чем Вася, на достижение одного результата. Еще известно, что Вася и Коля небыли задротами, они находили время на учебу и на тусовки. Но как Коле удалось достичь результата за год? Просто он эффективно управлял своим временем.

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

Конечно, Вы пропустите некоторые тусовки. Подумайте, а во что Вы потом сможете конвертировать время потраченное на них? Да не во что. А время потраченное с пользой — в более высоко оплачиваемую работу и в последствии, заработанные деньги в крутую тачку или на путешествие. Те чудо-программисты, с маслозавода, которые зарабатывают сейчас 200-250$, в то время когда могли учится — занимались ерундой, бессмысленно тратя время в клубе и бухая по вечерам.

 

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

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

Шаг номер 3: Составьте план ваших занятий и придерживайтесь его.

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

Вы когда-нибудь задавались проблемой выбора смартфона? Если да, то наверно замечали, что выбрать его не так-то просто. Я не учитываю случаи, когда Вы приходите в магазин и сразу покупаете смартфон распиаренный рекламой. Я говорю о том, что очень сложно сделать правильный выбор, когда Вы начинаете сравнивать смартфоны разных производителей. Вы сравниваете десятки моделей по десяткам критериев и никак не можете остановиться на одной модели.

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

Вот вопросы, которые определяют ключевые критерии при выборе языка:

— для чего используют этот язык и хочу ли я этим заниматься?

— сколько можно заработать работая с этим языком?

— количество предложений работодателя?

— простота в изучении данного языка?

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

Сколько можно на нем заработать? Не буду лукавить — я, помимо того что больной ублюдок, еще и жадный ублюдок(но я с этим честно борюсь! =)) Для себя этот критерий я рассматривал наравне с первым. Но тут есть небольшой нюанс. Высокие зарплаты в этой сфере говорят о том, что есть спрос на программистов. За какие-то знания платят больше, а за какие-то меньше. По большему счету, ЗП не очень сильно разнится для программистов владеющих разными языками. Больше зависит от уровня конкретного специалиста, чем от языка на котором он пишет. Думаю, исключением может быть специалист, который владеет какой-то новой технологией и на рынке таких парней очень мало. Но со временем, ЗП скорее всего, опустится до уровня остальных технологий.

Также, если Вы изучаете программирование “с нуля”, то простота языка для Вас играет важную роль. Сложная технология отнимет больше времени и сил на изучение какого-то минимума, с которым можно написать что-то простое. А изучать тупо читая книгу без практики — скучно и такой подход может отбить все желание. Кроме того, если язык сложный, то скорее всего, спрос на таких специалистов небольшой. Просто существует тенденция к тому, чтобы писать код как можно быстрее и удобнее.

На основании таких критериев, я бы выделил Java, C#, ObjectiveC и PHP. Так сложилось, что на втором курсе университета мне пришлось познакомиться с Java. Это был годовой курс прикладного программирования.

Java значительно проще в изучении чем С++, например. Давно есть огромный спрос на Java и думаю, что он еще продлится долго. По поводу зарплат, тут как я уже говорил, все зависит от уровня специалиста и от его жадности.

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

Беглый поиск выдал, что на нем написаны многие приложения для Amazon, поиск Bing от Microsoft( я тут вижу небольшую иронию) и серверная часть для Google+.

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

Заключение

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

Как я уже говорил, вопрос “Как стать программистом?” довольно философский. Это подразумевает, что у кого-то может быть другое мнение относительно данного вопроса. Что абсолютно нормально и потому я не претендую на истину в последней инстанции.
Пока!

Подробнее