понедельник, 27 февраля 2017 г.

Что нового за месяц

Вот и пролетел месяц с моего последнего сообщения в блоге. 
Что нового произошло за этот месяц:

Вчера закончил пятый модуль из четырнадцати. Сегодня приступлю к шестому. Времени ни на что, кроме изучения java, не хватает. Впрочем, и на изучение java его тоже мало. Хочется знать как можно больше, но процесс тормозится по двум причинам:
1) Физически ограничены возможности организма по усвоению новой информации. Быстрее, чем с полуторной скоростью, смотреть видео-лекции не получается. С книгами - то же самое. Можно читать быстрее, но тогда суть текста и отдельные нюансы начинают ускользать. Приходится возвращаться и изучать по второму разу.
2) Приходится отвлекаться от учебы на бытовые нужды: поесть, сходить на работу, в магазин, покормить кота, пообщаться с семьей и друзьями.

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

За 14 дней отпуска успел пройти только один модуль курса. А рассчитывал пройти минимум два. Но так случилось потому, что меня постоянно отвлекали от учебы - то звонками с работы, то жена с поездками по магазинам. Помаявшись так 4 дня, отправил жену к тёще, а начальнику на работе сказал, что я ушёл в отпуск не для того, чтобы продолжить работать дома в шортах. Получается, что фактически, из 14 дней я учился только 10. Зато как учился!
Написал игру крестики-нолики, сделал свои реализации: List, Set, Map и Tree, сделал интереснейшее контрольное задание по 5 модулю - написал программу, которая производит биржевые расчеты: парсит 200 МБ xml-файл, в каждой строчке которого (более 1,5 млн. строк) находит ордера, суммы, количество купленного или проданного, название книги ордеров, собирает это всё в коллекцию, сортирует, делает хитрые расчеты и взаимозачёты ордеров и красиво выводит результат на экран. Всё это программа делает не более, чем за 6 секунд с момента её запуска (такие были условия задачи).
Переписывал я эту программу с нуля 3 раза. Первый релиз выполнял работу за 12 минут. Второй - за 4,5 минуты. И только третий, наконец, стал выполнять работу в отведенные 6 секунд.
В общем, я доволен как слон.))

Мои однокурсники уже во всю ходят на собеседования. Я тоже пробовал послать пару раз резюме, но никто не откликнулся, т.к., видимо, не на том я ещё уровне знаний, чтобы претендовать на самостоятельную работу. Но ничего, наше время ещё придёт. ))
Промониторил рынок труда в нашем городе. Программисты требуются в основном 1С, java-script и PHP. Изредка появляются 1 - 2 вакансии программистов на  java. Возможно, для трудоустройства мне нужно будет переехать в Москву или Санкт-Петербург. Ещё подумывал о Новосибирске. Но этот город я оставлю на крайний случай, т.к. не особенно хочется ехать в сибирские морозы.))

На этом всё. Времени разглагольствовать нет - есть время работать и учиться. ))


До      После      GitHub       LinkedIn      HeadHunter.ru

пятница, 27 января 2017 г.

Радость и жалость

Настало время порадоваться за других и пожалеть себя.

Уже второй человек с курса по изучению Java нашел себе работу. На следующей неделе будет собеседование ещё у одной моей сокурсницы и по совместительству выпускницы Иннополиса. Эти ребята серьёзно изучали java в течение как минимум полугода и многого за это время добились.
На фоне них мои "достижения" кажутся мне смешными, а моё изучение java - больше похожим на топтание на месте, чем на движение вперёд.
Также настораживает то, что все эти ребята где-то на середине оставили прохождение курса и дальше пошли своим путём (кто в Иннополис, кто на самообучение)...

Работа юристом в последнее время отнимает у меня всё больше моральных сил. Каждый лишний день, проведенный в суде, для меня как каторга. Наша секретарь заметила, что по понедельникам я прихожу на работу как на похороны.
А как ещё я должен себя чувствовать, если каждая минута, проведенная на работе - это минус одна минута из тех, что я мог потратить на изучение java?
Прошло уже 3 месяца, а я не освоил даже 1/3 курса. Освоил только 3 из 14 модулей... Если учёба и дальше пойдёт такими темпами, то к последнему модулю я доберусь только к следующему году... А хотелось бы побыстрее ))

Из хорошего - на курсе много интересных задач, в которые погружаешься с головой и для решения которых приходится использовать все ранее полученные знания.
Из плохого:
- как ни крути, задачи эти учебные и воспринимать их всерьёз никто не будет;
- задачи отнимают слишком много времени, так как для их решения приходится много искать и изучать дополнительной информации, которой не было в лекциях курса. Из-за большого количества материала, который нужно найти и изучить самостоятельно, приходится изучать его только по верхушкам и обещать себе вернуться к более детальному изучению позднее;
 - манера руководителя курса преподносить материал. Наблюдается странный феномен: о себе, о жизни и "пути самурая в java" преподаватель бесплатно складно  рассказывает на youtube и говорит при этом вроде бы правильные и понятные вещи. Но в платных видео-лекциях из него почему-то вырывается какой-то неконтролируемо-спутанный поток сознания, мысль "скачет" как блоха на сковородке. Местами непонятно вообще ничего. Особенно это удивляет потому, что этот феномен присутствует на записях лекций. Я бы еще понял, если бы это проявлялось в он-лайн трансляции. Но, блин, лекцию-то, которую он своим ученикам, по сути, продает, можно хоть 100 раз переснять и отмонтировать, чтобы в ней не было по 3-5 минут написания неработающего кода, который он потом по 3-4 раза исправляет, пауз по 20 секунд, когда он думает, что сделать или сказать дальше, нескладной речи, состоящей из слов "класс", "метод" и междометий, и т.п. "затыков".

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

Недавно на geektimes прочитал две статьи (1 и 2) от шизофреников о шизофрениках. Автора первой статьи узнал. Он живет в моем городе. Пару лет назад я читал на форуме велосипедистов и в livejournal его статьи "о его непростой жизни психически больного". Автор второй статьи - скорее всего его девушка и по совместительству его лечащий врач-психиатр. ))
Поначалу его интересно было почитать: что-то новенькое и вроде как прямиком "из жизни", но потом его однообразные выворачивания себя наизнанку и его жалость к самому себе становятся просто скучны (сюжет никак не развивается)) ).
Не пойму, для чего он одни и те же статьи "о своей непростой жизни психически больного" распространяет по интернету. Хочет оставить свой след, жаждет внимания или пытается таким образом заработать? Мне сложно представить достижимость им этих целей.

Ну, и чтобы не заканчивать пост на психах, скажу о том, что в третьем модуле я изучил системы ввода-вывода (IO, NIO) и сокеты, а сейчас изучаю S.O.L.I.D.-принципы в java:



До      После      GitHub       LinkedIn      HeadHunter.ru

понедельник, 16 января 2017 г.

Почему так медленно?

Всё, конечно, хорошо, java - вполне себе познаваемый язык программирования. Ничего сверх-сложного или непонятного в нём нет. Но, всё же, по моим ощущениям, как-то слишком медленно у меня продвигается обучение.
Прошло уже 2,5 месяца, а я еще даже не перешёл на 4 модуль курса. Хотя, при поступлении на курс, планировал пройти его чуть ли не за полгода. Наивный.)) 
Думаю, дело в том. что слушком сложной оказалась для меня одна из задач третьего модуля - на сортировку большого текстового файла, которую нужно было сделать не загружая файл в память. Три недели с ней провозился, изучая теорию, алгоритмы и несколько раз полностью переписывая нерабочие решения.
Еще две недели ушли на создание сетевого файлового менеджера (неделя - на написание и неделя на ожидание проверки и внесение корректив в код).

Н-да... такими темпами учиться мне ещё как минимум до октября месяца... Надеюсь, при трудоустройстве мне это зачтётся ))

Странно вот, что: в одном из блогов один товарищ писал, что изучал java  на курсах всего 3 месяца, а после этого 3 месяца искал работу. Сейчас в Иннополисе набирают на учёбу начинающих программистов на java и готовят их к будущему трудоустройству за 2 месяца. Как можно за такой короткий срок подготовить специалиста по  java?

Из приятных новостей: до весны осталось 1,5 месяца календарных и, наверное, месяца 3 фактических - когда снег уже растает и можно будет одеваться не в зимнюю одежду. Планирую в этом году начать ездить на велосипеде и бегать как только растает снег. А пока лежит снег, хочу начать каждые выходные подыматься на гору Шошина, которую видно из нашего офиса. Ее высота всего 212 м., но готовиться к подъему на более серьёзную вершину (хочу сходить по весне на г.Пидан - 1332 м.) можно и на ней.
Посмотрим, какие из этих моих планов осуществятся. ))


До        После        GitHub        LinkedIn        HeadHunter.ru

среда, 11 января 2017 г.

Закинем удочку

Время - летит. Особенно остро это ощущается после Нового Года. Вот, вроде бы еще вчера был 2016 год, а сегодня уже 2017. Появляется ощущение того, что могу "опоздать на поезд" )).
Хотя, какие мои годы. Мой "поезд" тронется точно по расписанию и не раньше, чем в него сяду я.))

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

Почти нет времени изучать английский язык. Всё время уходит на изучение java  и смежных с ним вещей.

На новогодних каникулах мой ментор отдыхал (не проверял мои решения задач) и я, чтобы не простаивал "процессор", записался на курс "Разработка веб сервиса на Java" от Mail.ru. В вводной лекции этого курса перечислялись базовые знания, которые необходимы для прохождения курса, и они у меня имеются. Но при изучении первого же тестового задания понял, что был "обманут в своих лучших чувствах" и мне необходимо дополнительно самостоятельно изучить ещё: HTML, CSS, javascript и servlet's.
Поэтому решил пока не торопить своего ментора с проверкой задач и быстренько подтянуть знания по этим направлениям. С основами HTML ознакомился вчера за вечер. Сегодня хочу написать html-страничку - каталог со всеми имеющимися у меня видео-курсами. Попробую их таким способом упорядочить. Ну, или сперва займусь изучением CSS, а уже после этого сделаю красивую страничку-каталог. ))

Отредактировал себе профили на LinkedIn и headhunter.ru. Теперь там всё "по-взрослому", как у "настоящего" девелопера. )) За 1 день количество просмотров моих резюме превысило то, что было за всё время до этих изменений.
Я понимаю, что мне с тем уровнем знаний, что у меня есть, пока ещё рано искать серьёзную работу. Но "удочку закинуть" надо. Рыба, она всякая бывает ))
Буду пополнять свои резюме навыками, по мере их приобретения. пока не уверен, что это нужно, но может быть как-нибудь сделаю пару-тройку скрин-шотов кода или работающих программ - в качестве портфолио. Графа "Портфолио" в резюме есть и природа, как известно, не терпит пустоты. )


До        После        GitHub        LinkedIn        HeadHunter.ru

вторник, 20 декабря 2016 г.

Прогул, клавиатура и фэйлы

Вчера я заболел и в первый раз "прогулял" учёбу ((. Кто-то нехороший с утра чихнул или покашлял на меня в публичном месте (в суде или в магазине) и к ввечеру моя голова уже просто раскалывалась пополам от боли. Пришлось "наглотаться" таблеток и лечь спать пораньше.

Вернул букву "Ё" на её место, т.к. переключать раскладку через "Ё" оказалось для меня чем-то противоестественным. Периодически забывался и пытался напечатать "Ё", а получалось что переключал раскладку клавиатуры, или, пытаясь не глядя переключить раскладку клавиатуры, попадал на клавишу "Esc" ))

Купил на работу новую клавиатуру с ножничным механизмом - Slim Line K7 W
Теперь мне не приходится долбить по клавишам, как секретарь-машинистка из эпохи печатных машинок. Правда, единственная устроившая меня клавиатура оказалась урезанного "ноутбучного" типа (без клавиш "Home" и "End").
В итоге, ту производительность, которую приобрёл, благодаря мягкому ходу ножничного механизма клавиш, потерял на отсутствии кнопок "Home" и "End", т.к. теперь приходится переносить курсор в начало или в конец строки мышкой. ))

Послушал записи нескольких "тренировочных" собеседований с кандидатами на должности junior и middle разработчиков... Это просто жесть. Особенно в той части, где кандидату предлагают в блокноте написать программку.
За 2-3 часа собеседования спрашивают вообще ВСЁ, что только можно спросить.
Интересно, потяну ли я такое собеседование?..
Вот так сходишь на пару подобных собеседований, потыкают тебя носом в то, чего ты не знаешь и комплекс неполноценности тебе обеспечен. ))

Уже 4 дня бьюсь над решением задачи по внешней сортировке текстового файла объемом 3 Гб. Отсортировать нужно строки по их длине. 
Уже 3 раза писал разные программы по 200 строк, но каждый раз натыкался на какую-нибудь неразрешимую проблему и понимал, что выбранный мной способ решения этой проблемы, в корне неправильный.
В интернетах подробно разбираются рекурсивные механизмы такой сортировки. О нерекурсивном алгоритме почему-то никто даже не упоминает... Однако такой нерекурсивный алгоритм откуда-то известен всем моим однокурсникам... Они что, все сами до него додумались или нашли книжку, где он объясняется, а я настолько глуп, что не смог ни того, ни другого?..
Хорошо, что один из однокурсников в общих чертах смог мне его объяснить. Сегодня постараюсь написать программу. 
И вот такие вот фэйлы здорово понижают мою самооценку... ))

Из-за сильно усложнившихся (похоже, только для меня одного) заданий по программированию уже неделю не занимался английским. Ну, вот, когда народ умудряется сочетать изучение java  с изучением английского? Я, например, каждый день с 19:00 до 24:00 - 03:00 занят программированием. Хорошо, если из этого времени удается выделить час - полтора на изучение книги по java. Так, когда ж английским-то заниматься? Если только во сне... Но, говорят, что на английском сны начинают сниться не раньше, чем через пару лет проживания в англоговорящей стране. ))


До        После        GitHub        LinkedIn

вторник, 13 декабря 2016 г.

Tips & Tricks

Частенько при написании программ по новым темам возникает необходимость "подглядывать" в ранее написанные мной программы. подумываю завести себе какую-нибудь "базу знаний", что-то вроде своего собственного "Tips & Tricks". Возникло затруднение? Открываем базу, смотрим, как это надо делать и делаем.
Можно, конечно, и по класс-файлам искать, но хочется, чтобы все было красиво: с описанием и возможностью поиска.
Пока еще не определился, как это сделаю. Присматриваюсь к MyTerra.

До        После        GitHub        LinkedIn

Прогресс

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

Неделю назад сдал ментору устный экзамен по 2 модулю (части) курса по java и перешел к изучению 3 модуля.
А впереди еще 12 модулей (частей).
Общая структура курса такая:
001. Базовый Синтаксис. (7)
002. ООП (8)
003. Ввод-вывод (3)
004. ООД (7)
005. Collections (7)
006. Garbage Collection (5)
007. Multithreading (6)
008. SQL, JDBC (5)
009. Serlvet JSP (9)
010. Hibernate. (5)
011. Spring (7)
012. Интеграция. (7)
013. Шаблоны проектирования. (6)
014. Алгоритмы. (7)
В скобочках указано количество тем, на которые поделен модуль. В каждой теме по 1 - 6 заданий на написание программ по пройденной теме.
По каждому модулю нужно устно сдать от веты на контрольные вопросы (около 30 - 40) и 1 - 2 контрольных задания.
Выглядит каждый модуль примерно так:


Задания по пройденным темам всегда предполагают самостоятельное изучение тонн дополнительного материала. Оно и правильно. Это приучает искать информацию самостоятельно и читать спецификации на английском. ))

На экзаменах, помимо 30 - 40 заранее известных вопросов, могут быть заданы около 10 дополнительных. Поэтому всегда найдется 1 - 2 вопроса, на которые не готов ответить. Нельзя объять необъятное.
Но это не беда. Вопрос, на который ответить не смог, записываем себе в специальный "white list" и ставим на котроль пополнить недостающие знания.

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

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

Еще, с 3 модуля ментор разрешил мне пользоваться IDEA. До этого все программы я писал в Sublime Text и gedit. Несмотря на все свои плюсы, IDEA в некоторых частях настолько сложна и запутанна, что проще то, что нужно сделать в gedit.
Например, на днях попробовал сделать каталоги и pom.xml для программ 3 модуля в IDEA. Такой фарш получился... И, главное, не исправляется в IDEA никак. Пришлось удалить все файлы IDEA из проекта, сделать все "ручками" и потом открыть как уже готовый проект в IDEA ))
В общем, есть еще к чему стремиться.


До        После        GitHub        LinkedIn

среда, 30 ноября 2016 г.

Мотиваторы, возраст, Ё

Очень важно в процессе обучения постоянно находить для себя какие-нибудь мотивирующие вещи. Например, вчера это был разговор с кам-то из сокурсников о том, как это здорово - стать программистом и как поскорее бы хотелось уже устроиться на новую работу. Сегодня это может быть чья-то статья, в которой рассказывается о том, что учиться никогда не поздно. Завтра - новая вакансия на LinkedIn, для которой тебе не хватает изучить всего-то ничего (какие-нибудь Spring's или Hibernate). Послезавтра - новый подкаст на IT-тему. Еще дальше - видео на Youtube про switche-ров и все такое.
Все эти вещи будут являться теми самыми "хлебными крошками", которые покажут тебе, что ты идешь в правильном направлении.

Замотивировавшись сегодня "по самое небалуй" вечером "ухну" следующее задание по Exception-нам.))

Про возраст. Я уже вроде бы раньше писал, что возраст - учебе не помеха. Хочу выложить здесь свои более структурированные мысли на эту тему.
Для сомневающихся, переучиваться или нет, есть еще один способ решения "проблемы" возраста. Это арифметический способ: 
Допустим, например, что возраст "сомневающегося" составляет 40 лет. Сколько из них он работает по своей последней специальности? Самый максимум - 20 лет без высшего образования и 18 лет - с высшим.
Сколько лет ему осталось работать до официальной пенсии? 20 лет. А обещают, что скоро это будет 23 года.
Таким образом, в возрасте 40 лет человеку предстоит работать дольше, чем он уже отработал до этого. Т.е. трудовая деятельность его еще не закончилась даже наполовину.
Если такой человек задумался о смене профессии и единственное, что его смущает, это вопрос о том, а не поздно ли он все это затеял, то после приведенных расчетов вопрос можно изложить в таком виде:
- сможешь ли ты продолжать дальше работать в той же специальности, что сейчас, еще 20 лет или лучше попробовать что-то другое?

Про "Ё". С недавних пор я настроил на клавиатуре на букву "Ё" переключение языка ввода. В Windows на работе это оказался единственно возможный способ сделать переключение языка ввода не alt+Shift  и не Ctrl+Shift. Устанавливать специальные программы для этого не захотел (зачем замусоривать систему). Зачем мне понадобилось изменять сочетание клавиш для переключения языка? Все просто: дома я работаю на Ubuntu в IntelliJ IDEA. В ней использую сочетание клавиш Ctrl+Shift+/ для комментирования строк. Одновременно при этом переключался язык ввода. Пришлось сменить сочетание клавиш на другое и дома и на работе, чтобы все было "безобразно, но однообразно" ))


До        После        GitHub        LinkedIn

понедельник, 28 ноября 2016 г.

Switche-боязнь

Уже довольно давно меня мучает вопрос о том, почему java-исты так боятся оператора switch().
Вот, написал я вчера программу. В ней указал:
String key = input.ask("Enter your choice number: ");
switch (key) {
    case "0":
    case "1":
    case "2":
    case "3":
    case "4": menu.choice(Integer.parseInt(key));
         break;
     case "5": return;
     default: System.out.println("Incorrect input. Try again.");
}
Ментор сказал, что всё отлично, вот только switch() надо убрать. Конечно, ранее он говорил о том, что якобы switch() - это усложнение чтения программы и надо его везде заменять на if-else(), но я почему-то думал, что это относится к случаям, когда после каждого case: пишут по несколько строк кода.
В моём же случае всё очень наглядно и легко читаемо. Отсюда и вопрос: почему java-исты так боятся оператора switch()?
Вот, сейчас поменяю это на if-else() и получится непойми что. Ну, да, ментору наверное виднее. ))


До        После        GitHub        LinkedIn

суббота, 26 ноября 2016 г.

"Программисты" vs "инженеры"

На днях в одном из подкастов услышал очередное "откровение" о том, что есть два подхода к разработке ПО:
1\ инженерный подход - если работает, то лучше это не трогать;
2\ подход программиста 80 лвл - всегда всё переделывать.

При этом ведущие были явно на стороне второго подхода. И вроде обосновывали это красиво, и я даже местами был с ними согласен... Но, блин, как же я понимаю "инженеров"... ))


До        После        GitHub        LinkedIn