пятница, 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

пятница, 25 ноября 2016 г.

Куча новостей

Привет, привет, привет!
Давненько не писал ничего. Учёба набирает обороты и совсем нет времени заниматься графоманией. Да, что там блог, не хватает времени даже на то, чтобы выспаться как следует. Учусь ежедневно до 01:00 - 02:00 AM .
Программы пишу - только клавиши на клавиатуре летят.
На курсе изучения Java каждую неделю происходят какие-то глобальные изменения. То maven нужно подключать к проекту, то checkstyle, то cobertura, то из sublimetext нужно перебираться на IntelliJ IDEA. Инструкции по всем этим инструментам приходится искать в интернетах и как-то адаптировать их под свои проекты. А после этого - ещё и ранее написанный код исправлять и комментировать.
В общем, всё как в самых "взрослых" "полевых условиях". Cложно, но очень интересно. ))

Из новостей:

1\ Наконец-то меня избавили от этого глючного skype! Недавно всё общение между обучающимися на курсе перенесли из skype в Hipchat (интересно, название образовано от слова "хиппи" или "хипстер"?)) Теперь по каждой учебной теме есть отдельная "комната" для общения, стало меньше флуда и теперь легче находить нужную информацию и задавать вопросы о наболевшем.
А наболевшего - просто горы. Пётр (руководитель курса) любит давать загадочные задания. ))
Такие, на пару-тройку часов погуглить. Да еще и по англоязычным сайтам.

2\ Skype заблокировал свежесозданный аккаунт моей жены, т.к. не нашел у себя в базах привязки акка к конкретному лицу (она у меня та ещё конспираторша). Написали, что аккаунт "подозрительно активный" (ага, общалась всего месяц только со мной и по 1 фразе в 2-3 дня) и потребовали ввести свой номер телефона, чтобы, значит, снять все подозрения. )))
Что у всех за навязчивая идея такая: во что бы то ни стало установить, какому реальному человеку принадлежит аккаунт?..

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

4\ На LinkedIn изменил свой профиль с "адвокатского" на "программерский". Сразу увеличилось количество просмотров профиля, количество интересных вакансий и вообще теперь всё просто здорово! ))

5\ Роскомнадзор заблокировал LinkedIn и кто-то ушлый уже через пару дней его "импортозаместил". Этот "заместитель" - это просто смешно. Судя по описанию, может быть ЛинкЮ и станет популярным среди той прослойки населения, для которой очень важно, какой ты рассы, вероисповедания и, какой у тебя любимый питомец. Т.е. среди тех, кто сейчас активно обитает в одноклассниках, вконтактиках и прочих своих мир@мэйлах.
Мне на такое "замещение" даже посмотреть не захотелось. Мы, профессионалы, остаемся на LinkedIn, т.к. умеем преодолевать административные барьеры. ))

6\ Поисковые сервисы хором "зажали" результаты поиска по запросу "расширение chrome для доступа к luinkedin". В первый день блокировки в любом поисковике можно было найти минимум 2-3 расширения в первых же строчках результатов.
Через два дня - уже нет.

7\ Вчера на рабочий комп хотел поставить программулину, скачанную из "недоверенного источника". Вместо программы установилось столько малвари от мэйл.ру, сколько до этого я не видел одновременно в одно время и в одном месте. Потратил пару часов на то, чтобы вычистить её ото всюду. Они что себе думают, что я после такого хамства стану их преданным пользователем?

8\ Наш Президент наехал на "учёных" - чиновников, которые для получения большей з/п "пролазят" в Российскую Академию Наук. Видел этот сюжет краем глаза по ТВ. Больше всего поразила реакция главного "академика" на вопрос Президента о том, действительно ли все эти чинуши являются "видными учёными", без которых наука "зачахнет". Этот самый главный "академик" ответил, что, они (чинуши), дескать, сказали, что начальство им разрешило стать академиками.
Мне моё начальство тоже разрешило стать академиком. Только при чём тут наука? ))

9\ Ежедневно пополняю свой репозиторий на GitHub новыми учебными программами.


До        После        GitHub        LinkedIn