{"id":14285,"url":"\/distributions\/14285\/click?bit=1&hash=346f3dd5dee2d88930b559bfe049bf63f032c3f6597a81b363a99361cc92d37d","title":"\u0421\u0442\u0438\u043f\u0435\u043d\u0434\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f","buttonText":"","imageUuid":""}

Как стать программистом если тебе уже за

Блуждая в интернетах и натыкаясь на вопросы типа: “Мне уже за (можете подставить любое число, но не поверите, я встречал даже 26!!!) не поздно ли изучать Java?” я хотел кричать:

- “Друг! Если ты еще можешь попадать пальцами по клавиатуре, тебе не поздно!”.

Здравствуйте!

Меня зовут Алексей, мне 44 года и уже год я работаю программистом.

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

Таких людей не много и обычно они очень заняты и хотят достаточно ощутимую оплату за свое потраченное время. Когда я изучал язык программирования Java у меня такого ментора не было. Мне пришлось пройти путь в одиночестве и помогли мне тут 2 фактора:

1. У меня был 15-летний опыт планирования, благодаря которому я умею быстро отделять главное от второстепенного.

2. У меня был 9 летний опыт системного администрирования. Это конечно никак не связано с программированием, но иногда дает представление о том в какой стороне проблема, если программа, например, не может получить данные из базы. Если у Вас нет опыта администрирования - не переживайте. Большинство программистов его не имеют.

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

1. Мечты сбываются если не бояться мечтать и двигаться к мечте.

2. Все, что я советую в этой книге, я проделал сам. А как говорится: только тот, кто помог себе - знает, как помочь другим.

Как я стал программистом.

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

Однако меня всегда тянуло к ИТ. В 1998 году я не мог себе позволить купить компьютер и купив жесткий диск вечером после работы подключил его к рабочему ПК, установил Linux Mandrake 8.0 - это была первая ОС за исключением DOS и Windows 95, что я увидел. Непередаваемый восторг!

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

Однажды, сидя в интернете, (через модем) мы с другом увидели рекламу каких-то ИТ услуг. На баннере был изображен системный администратор в свитере и джинсах, сидящий между серверных стоек, на коленях у него лежал ноутбук, подключенный к серверу.

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

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

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

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

И вот я - системный администратор! Мне не верилось! Я - тот парень из рекламы что я видел 13 лет назад!

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

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

Очень кстати мне помогла книга одного парня из Москвы. К сожалению, сейчаc я уже не вспомню ни ее названия, ни фамилии автора. Он был успешный бизнесмен, в прошлом системный администратор и описывал как правильно развиваться в ИТ как системный администратор. Как повышать свою стоимость на рынке и избегать распространенных ошибок (особенно не отращивать свитер, грязную кружку и чувство собственной важности, как делали классические администраторы 90-х). Книга стоила тогда целых полторы тысячи, что было ощутимо для моего бюджета. Я раздумывал неделю и решился. Эта книга сильно продвинула меня.

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

Чтобы Вы понимали это шаг назад по карьерной лестнице - обычно из техподдержки переходят в системные администраторы или (что реже) в программисты.

В этой компании, кроме технического уровня, требовался еще достаточный для общения английский и хорошее здоровье: четыре смены в неделю по 12 часов и 2 из них - ночные. Старше меня в компании был только еще один инженер - все остальные ребята от 18 до 30 лет. Это был физически и психологически сложный период, однако благодаря этому моя карьера в следующих компаниях как системного администратора пошла в гору. Дальнейший период моей трудовой деятельности я опущу - там уже не было таких примечательных рывков и дауншифтов: просто движение вверх.

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

Я тогда работал в одном банке ИТ-инженером. Мне было поручено задание: при помощи языка Python связать две системы, одна из них - это система заявок Jira, а вторая - для развертывания ПО Jenkins. На тот момент все, что я знал о Python, что это язык программирования, который имеет низкий порог вхождения.

Проект занял у меня 2 недели, безусловно мой код был ужасен и кошмарен, и надеюсь, что его никто не видел, но система регулярно отплевывалась заявками и все были довольны. А мне очень понравилось сидеть в IDE - среде разработки и творить. Я решил изучить Python и стать программистом. И безусловно, попался бы в ловушку, если бы не совет из книги для системных администраторов, что я упоминал выше, - постоянно следить за рынком труда. Я решил изучить рынок труда - насколько разработчики Python востребованы в Новосибирске. Оказалось, что практически ни насколько (напоминаю год был 2018, удаленка отсутствовала - пандемия еще не пришла).

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

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

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

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

Я хотел назвать эту книгу “Java для тех, кому за...”, в общем вроде как не для молодых. И задумался: молодость - это когда тебе еще не “за...” сколько? Ответ пришел сам собой: эти “за” мы себе устанавливаем сами, а объективно их нет: есть только СЕЙЧАС!

Вот и ответьте себе сами: “Не поздно учить JAVA сейчас?”

Не поздно <подставьте что угодно> сейчас? Риторический вопрос, правда? И ответ понятный.

Что будет в этой книге.

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

Чего НЕ будет в этой книге.

Здесь не будет никакой воды, рассуждений и избыточной информации.

Здесь не будет глубокого изучения какого-либо инструмента\технологии.

Здесь точно не будет изучения самого языка программирования Java. Эта книга не заменит Вам книги по Java. Объясняю еще раз: это книга-ментор, которая будет вести Вас и направлять, поясняя, что и в какой степени изучать в Java и не только.

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

Для кого эта книга

Первые 3 части книги для тех, кто решил попробовать себя в программировании, но пока не знает какой язык выбрать и с чего начать, равно как и для тех, кто уже начал изучать Java, но не знает куда двигаться. Когда я искал для себя мотивацию и инструменты для изучения Java, где-то в интернетах наткнулся на комментарий человека, который учился на курсах и закончив их попытался написать проект, а в итоге как он сам выразился «получился набор классов и что с этим делать непонятно».

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

Четвертая часть книги подойдет любому начинающему айтишнику - программисту, системному администратору, тестировщику и т.д.

Начальные требования

Для того, чтобы начать без боли погружаться в программирование нужны 2 вещи:

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

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

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

Глава 2. Выбор языка программирования

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

Уровень языка - это степень, в которой семантика языка учитывает особенности мышления человека, нежели машины — то есть уровень языка тем «ниже», чем он «ближе к машине», и тем «выше», чем он «ближе к человеку».

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

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

Это листинг программы, которая выводит на монитор сообщение "Hello, world!".

-------------------------------------------------Hello, world!---- Assembler:

SECTION .data

msg db "Hello, world!",0xa

len equ $ - msg

SECTION .text

global _start

_start:

mov eax, 4

mov ebx, 1

mov ecx, msg

mov edx, len

int 0x80

mov eax, 1

mov ebx, 0

int 0x80

---------------------------------------------------------

А вот аналогичная программа на Java:

---------------------------------------------------------Hello, world!---- Java:

public static void main(String[] args) {

System.out.println("Hello world!");

}

---------------------------------------------------------

C# приводить не буду - синтаксис похож на Java и области применения сходны: это и веб разработка и десктоп приложения. Тем не менее на рынке труда Java более востребована. Вот результат запроса на одном из самых известных поисковиков вакансий:

10865 вакансий «java»

6153 вакансии «C#»

Теперь таже самая программа на Python:

-------------------------------------------------------Hello, world!---- Python:

print("Hello world!")

---------------------------------------------------------

Всего 1 строка.

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

- относительно недавно стал применяться в веб-разработке.

- Используется в data science: машинное обучение, анализ данных и визуализация.

Ну и конечно программа написанная на Python в большинстве случаев будет выполняться дольше, чем написанная на Java.

А вот, к чему я все это вел, такая же программа на языке GO, который позиционируется как высокоуровневый (как Python), но значительно быстрее:

---------------------------------------------------------Hello, world!---- Go:

import "fmt"

func main() {

fmt.Println("Hello world!")

}

---------------------------------------------------------

Я рассматривал GO как кандидата но, когда открыл что-то посложнее понял, что Java читается легче.

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

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

2.1. Плюсы Java:

Несмотря на растущую популярность Go и Python, Java остается одним из самых востребованных языков уже более десяти лет.

У Java возможно самая широкая сфера применения. Java используется для:

- веб-разработки - на нем написаны сайты такие как Амазон, РЖД, Одноклассники и т.д;

- мобильной разработки - Java основной язык разработки на Android;

- десктопной разработки - даже есть реализации графических пользовательских интерфейсов операционных систем Linux, Solaris;

- создания серверной логики — бэкэнд большинства крупных сайтов, порталов, магазинов и т. д. написан на Java;

- создания распределенных систем - например Нadoop: набор утилит, библиотек и фреймворк для разработки и выполнения распределённых программ, работающих на кластерах из сотен и тысяч узлов.

- создания баз данных (база H2 написана на Java);

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

2.2. Минусы Java.

Конечно, есть и минусы. Из наиболее значимых:

Java создавался как замена С++ поэтому код похож, но более “громоздкий”: один из минусов Java - это многословность, что делает его более читабельным, но загромождает код, хотя лично я не считаю это минусом.

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

Так что в сравнении с большинством востребованных на рынке труда языков программирования язык Java:

1. В целом быстрее;

2. По востребованности превосходит всех за исключением Python;

3. По широте применения ему практически нет равных.

Глава 3. Среда разработки

В этой главе мы поговорим об IDE — Integrated Development Environment - среде разработки. Вы часто будете встречать такое сокращение - IDE.

Что такое среда разработки (IDE) - это приложение, которое включает в себя:

Редактор кода.

Компилятор.

Сборщик.

Отладчик.

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

Учитесь сразу работать в IDE - это значительно ускоряет обучение, так как там есть подсветка синтаксиса (ключевые слова выделяются цветом), есть подсказки - среда Вам подскажет варианты завершения кода и конечно сразу подсветит синтаксические ошибки.

Сред разработки существует великое множество - примерно около трех десятков. На данный момент лидируют три:

Продолжение книги вы можете скачать здесь

https://alex-nsky.company.site/

0
Комментарии
-3 комментариев
Раскрывать всегда