Веб-приложение на java для портфолио

💡 Усі статті, обговорення, новини про Java — в одному місці. Приєднуйтесь до Java спільноти!

Доброго времени суток! Я начинающий программист — самоучка, изучаю java примерно с лета прошлого года. На данный момент занимаюсь поиском работы и столкнулся с тем, что у меня нет достойных примеров кода, чтобы не зазорно было прикрутить к резюме. Посему хотел — бы узнать у людей, которые сталкивались с подобным. Что такого можно сделать, чтобы джуниору добавить веса в глазах работодателя при поиске работы?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

А как расположить упоминаемые в этой теме технологии(и, возможно, не упомянутые тоже) в порядке актуальности/важности на сегодняшний день для Java трейни? Что для трейни «маст хев» для того чтобы чувствовать себя уверенно на собеседовании, а в какие из всего «зоопарка» пока можно не лезть? Если кто может проранжировать с небольшими комментариями, вкратце по каждой что необходимо знать/уметь, желательно также знать/уметь — буду благодарен.

1. Что вы делали год если изучали, а кода нет? Эккеля читали? Собственно синтаксис java 2 недели максимум, и то для слабого студента, а где остальное время проводили?
2. Когда пишут такую саморекламу то надо писать:
— стэк изученых технологий
— ссылки на пет-проэкты или гитхабь
— рекрутерам
— куда угодно но не на доу, а то вас запомнят :)
3. Хотите добавить веса ешьте булочки (Spring/(MVC, Data)/(JPA/Hibernate)/MySQL ...). Есть надо каждый вечер, можно и после 18-00
4. Велкам на хакатон если хотите попробовать свои силы. Велкам на тренинг, чтобы засветиться как потенциальный джун
5. Как вариант ждите 23-го дня рождения пойдете сразу синьором, вас попросят провести собеседование тут-то вы себя и возьмете джуном ;)
6. Сертификация

П.С. Перепишите log4j, сделав доки залив на гитхаб, кода для демонстрации кода хватит.

Давайте проясним некоторые вещи — «junior» — разработчик на Java с 6+ месяцами опыта разработки реальных проектов. Человек без опыта и приличных знаний — стажер, студент, trainee

Что такого можно сделать, чтобы джуниору добавить веса в глазах работодателя при поиске работы?
«Веса» = з.п. ?
Для junior-а такого не бывает, нужно хорошо изучить базу:
1) Java Core (Шилдт красная книжечка по Java 7)
2) Servlet/JSP
3) Основы БД и SQL
4) HTML/CSS
5) базовый javascript
[6] базовый Spring/Hibernate

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

Выводы:
1) на собеседовании покажите, что готовы учиться и изучать, проявите фантазию и кругозор.
2) снизьте зарплатные ожидания до минимума, наряду с прочими ништяками = берите что дают.
3) будьте готовы ОЧЕНЬ усердно учиться первые 2 месяца, а потом и все время.

Написать хороший код без опыта работы — принципиально невозможно.
Oh rly? Или сойдемся на том, что опыт учебы, самообучения и олимпиад всё же играет роль?
Или сойдемся на том, что опыт учебы, самообучения и олимпиад всё же играет роль?
Неа, ни капли. Ничего из приведенного вами не учит тому, что код должен быть поддерживаемым.

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

После скольки лаб вы перестали гавнокодить и какие принципы вы для себя вывели?

В клиническом смысле я не говнокодил и до начала 1го курса.
До ума довел читабельность кода на 2м. На то были свои причины.
На 3м писал нормальные классы уже не «по заданию», а для себя.

Принципы?
0. Разумность названий методов, классов, переменных.
1. Не хакать и не усложнять — лучше переписать структуру, если это реально.
1.1 Не получается — прокомменитруй нормально.
2. Минимальность отвлекающих операций, нормальное разбиение алгоритмов на методы.

Это навскидку из универа.

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

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

В клиническом смысле я не гов*нокодил и до начала 1го курса.
Это вам поверят на другом форуме, где сидят бизнесмены-домохозяйки, но не IT-шники. Гов*нокодят все и всегда, особенно в начале своего пути, некоторые не перестают никогда. Убеждать всех в обратном — ставить под сомнение то, что вы являетесь программистом.
Так сказать проще сказать на черное, что оно белое, чем куда-то развиваться.
Ну если считать, что ты достиг всего и развиваться некуда, то да, плохо дело.
Гов*нокодят все и всегда, особенно в начале своего пути
К 1му курсу я программировал лет 5 как.
некоторые не перестают никогда
Давеча наговнокодил и наговноархитектурил (на самом деле наговнорефакторил) в проекте потому что релиз и тест должен был быть позавчера к тому моменту. Иногда это необходимость, главное — понимать и убирать за собой.

гавнокод у программистов — как онанизм у подростков :).

Все что вы перечислили — безусловно имеет смысл, но все зависит от «глубины» использования

Главное не «глубина», а умение пользоваться :D
Я пока эти 3 пункта вынес в основные для себя в плане поддерживаемости кода. Есть ещё много мелочей и внутрикомандных/проектных договоренностей. Да, это всё приходит с опытом, но набить шишки и получить этот самый опыт в достаточно большом объеме можно без реального опыта работы. Это, собственно, то, что я хотел сказать. И я видел достаточно людей, которые так и получили хорошие навыки за время обучения для дальнейшего трудоустройства и быстрого включения в нормальную работу. Никто же не говорит, что сразу в дамкисиниоры c умением определить корень проблемы по выражению лица джуна.

Ну значит я уникум. Меня университет научил писать поддерживаемый код.
Сказочник вы видный.

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

Первая работа меня научила самому циклу разработки, планирования, CI, циклу релизов, работе с SVN/Github. Мало чего связанного с процессом набирания кода руками на клавиатуре

«Красиво» и «поддерживаемо» — не всегда одно и тоже. Ну по крайней мере, то, что казалось мне «красивым» лет пять назад(к примеру — подробные комментарии, любовь к указателям и рекурсии, алгоритмические выпендрежи вместо парочки лишних ифов) — вызывает ужас сейчас.

P.S. Да, есть люди, которые параллельно учебе разгребают какой-нибудь опенсорс, или фрилансят. Но отношения собственно к «универу, лабам и олимпиадам» это не имеет.

Имеет, но недостаточно, именно поэтому я дописал самообучение (в контексте не фриланс и не реальная работа над опенсорсом) туда. Если нет интереса и выполнять задания «абы сдать» — толку было бы мало.
Опять же, знать указатели, рекурсию и алгоритмические выпендрежи очень полезно для того, чтобы понимать, когда их действительно стоит применять, а когда можно обойтись чем-то более простым для понимания другим человеком.

Знать — оно всегда полезно. Но реальное понимание «что будет, если наступить на грабли» возникает исключительно после того, как на эти самые грабли наступишь. Раз десять.

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

Это как боевые искусства: когда стоишь, отрабатываешь движения — вроде все просто, понятно, и получается. А вот когда первый раз участвуешь в спаринге — вся техника внезапно работать перестает.

«Да не парься, никто тут менять не будет»
Хмм за 2 с небольшим года работы ни разу такого не слышал и не говорил, по-моему. Проигрышная стратегия. Хотя «не парься, на следующей неделе мы переписываем весть этот кусок» бывало.
А вот когда первый раз участвуешь в спаринге — вся техника внезапно работать перестает.
Ну есть такое — реальное окружение добавляет проблем, которые ты никогда не учитывал в локальной одиночной работе. Меня никто не готовил к ’resolve using mine’, потерянным кускам конфигурации на лайве и бредовой работе enterprise-саппортов. Тем не менее, после грабель, вынесенных из универа, это понимается с 1го раза и дальше можно спокойно работать. И, снова же, не эксперт в БИ, но тренировочные спаринги таки должны готовить к реальным. Почему не рассматривать хорошую работу над лабами и самообучение как тренировку?
Почему не рассматривать хорошую работу над лабами и самообучение как тренировку?
Только по одной причине — нет того, кто скажет тебе, что ты не прав. И тебе не впаяют штраф за нечитабельный код :)

От жеж люди, а! Без кнута и работать нормально не могут.
Хотя да, у меня были свои штрафы за нечитабельный код ещё в универе, так сложилось. Видимо, это тогда и научило. Тем не менее, примеров как хорошего, так и плохого кода, равно как и статей/книг на эту тему, в интернете полным полно, чем я и пользовался. Захочется — освоится.

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

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

Самокритика — сильное оружие. У меня с этим всё хорошо.
Ну а заучивать я разучился ещё в младшей школе.

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

Ещё раз. Самокритика — это хорошо, но только другой программист может действительно подтвердить что он может работать с этим кодом. Или не может.

Как пример, для вас g_hold может быть привычным именем для реестра и никаких проблем не вызывать. И пока с кодом работаете только вы — проблем действительно с этим именем не будет.

Но если честно, то и многие бодишопные сыньёры часто хромают в плане чистоты кода. Помню когда то с ужасом слушал рассуждение на внутреннем семинаре о том, что длина метода не должна быть больше 200 строк.

Так что мой коммент относится не к «быть принятым на работу джуном» (я устроился работать в свое время вообще без опыта и знаний), а к возможности писать действительно хороший код.

но только другой программист может действительно подтве многие бодишопные сыньёры часто хромают в плане чистоты кодардить что он может работать с этим кодом.
многие бодишопные сыньёры часто хромают в плане чистоты кода
Собственно в этом и проблема. Я перевариваю даже хреновый код, но заставляю джунов писать более-менее адекватный и сам стараюсь так же делать.
Есть серьезные источники и хорошие книги по которым можно проанализировать свой код и сделать выводы. Кто-то может, кто-то — нет. У меня после прихода из универа в компанию не возникало проблем с качеством кода, даже хвалил кое-кто, хотя в универе одногруппники жаловались, что мои лабы бесполезны для копирования, т.к. нифига не понятно (ООП -> процедурка). Возможность писать действительно хороший код зависит не только от опыта работы, а от кучи вещей. Я придираюсь не к тому, что всё приходит с опытом и общением, а к тому, что
принципиально невозможно
хотя в универе одногруппники жаловались, что мои лабы бесполезны для копирования, т.к. нифига не понятно
А вот и повод задуматься. При условии, конечно, что ваши одногруппники знали синтаксис.

Опыт работы является необходимым, но не достаточным условием для хорошего* кода. Ну а «чисто теоритически» идеальный код может и генератор случайных последовательностей сгенерировать.

*Под хорошим кодом я понимаю максимально простой и читаемый код.

А вот и повод задуматься
Я и задумался — отказался в итоге от игры указателями и всяких алгоритмических хитростей.
При условии, конечно, что ваши одногруппники знали синтаксис.
ООП C++/C# у меня, процедурный Delphi у них. Те, кому мне было интересно показать свои лабы и посмотреть их, проблем в чтении не испытывали.
Обоснования необходимости опыта работы для написания хорошего кода я всё равно не дождусь никогда. Чем целенаправленное ковыряние библиотек и чтение правильной литературы на тему написания хорошего кода хуже, чем советы лида я всё равно врядли пойму.

Я же уже говорил — взгляда одного человека не достаточно.

Oh rly?
Yes of course. Также как и человек, читавший о тяжелой атлетике лишь в книгах не сделает жим 15×100 кг. Почему-то в спорте все понятно, а в программировании возникают сомнения.
Или сойдемся на том, что опыт учебы, самообучения и олимпиад всё же играет роль?
Играет роль при участии в таких же олимпиадах или в попытках произвести впечатление в университетской среде, но большинство таких олимпиадных медалистов ничего из себя не представляют на работе. Сферические кони в вакууме — еще недостаточно для работы.
Также как и человек, читавший о тяжелой атлетике лишь в книгах не сделает жим 15×100 кг.
Логичное сравнение. А если человек уже тренируется с весом поменьше и предрасположен к хорошему набору мышечной массы?
Хотя про книги есть зерно — сталкивался с парой людей минимум, которые любили читать умные книжки, а потом писали редкий бред. Хотя там скорее была проблема в том, что люди читали архитектуру, а пробелы были в алгоритмизации, математике и говнокоде в методах.
Сферические кони в вакууме — еще недостаточно для работы.
Я что, спорю? Олимпиадное программирование дает алгоритмизацию, оптимизацию, понимание сложности и кое-какие навыки в плане обработки исключительных состояний и ошибок. В то же время оно почти не дает ООП, потому что функционалка там пишется быстрее в 99% случаев + читабельность часто нулевая.
Учеба дала теорию ООП, кое-какую поддерживаемость, несколько ЯП чтобы оценить разные подходы.
Самообучение дало нормальное погружение в языки, кучу часов раскуривания всяких мануалов и набивания шишек в тех местах, где одногруппники сдавали лабы на Delphi с прошлых годов. Сложно именно это на самом деле назвать самообучением, скорее просто выполнение заданий в большем объеме, чем требовалось. Но и всякая ерунда из разряда «поковырять ради интереса» тоже была всегда.

Я доказал бы тебе обратное, ну очень много текста выйдет..

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

Товарищи, т.е. чтобы получить работу Junior Java необходимо знать:

Spring/(MVC, Data)/(JPA/Hibernate)/MySQL/ на бекэнде, на фронтенде Bootstrap + jQuery
?

И сколько ориентировочно в Киеве сейчас за это платят?

Если бы это было адекватно для джунов(а в комментах уточнено что трейни), то достаточно на сыр за 500

По-моему, это «Java Trainee» называется,
поправьте, если ошибаюсь...

Ваша формулировка вернее будет. Спасибо что поправили)

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

Рекомендую использовать Spring/(MVC, Data)/(JPA/Hibernate)/MySQL/ на бекэнде, на фронтенде Bootstrap + jQuery. Займет это примерно человекомесяц вместе с изучением всего этого барахла. И надо чтобы собиралось все это Maven’ом.

В результате освоишь —
1) Автоматизацию сборки и деплоймент проекта на Tomcat.
2) Работу с СУБД, ORM.
3) Разработку UI на базовом уровне.
4) Полнотекстовый поиск в базе данных, что такое индексы, джойны.

Спасибо большое) Сейчас как раз MVC начал осваивать. Буду дерзать!

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

А еще похожих векторов развития можете дать?
Буду благодарен.

А что у них сервер-сайд на джаве? :)
Да и я серьезно спрашивал, а то пока что каша в головне, хочется дельного совета от знающих людей :)

Он на kPHP. Но тебя это не должно волновать, т.к. ты собрался писать это на джавоньке. Как раз и научишься основным моментам: МВЦ, проектирование бд и работа с ОРМ, урл маппинг, загрузка файлов, валидация форм, аякс, рбак/лдап, интернационализация.

Совет хороший, но trainee эту задачу не потянет, разве что junior, причем не самый захудалый.

Ну так за месяц-другой трейни подтянется до уверенного джуниора и сможет найти работу сразу за 600-800 баксов. При это чувствуя себя очень уверенно на собеседовании.
Особенно это актуально для студентов, им ведь никуда не надо торопиться.

Егор, вы либо гений либо оптимист.
Месяц-другой trainee только постигают азы реального стека технологии, с удивлением открывая для себя Maven, Gradle, Jenkins, JIRA (буээээ) и прочие вещи, а в некоторых фирмах обучение длиться 3-4 месяца и это не прихоть, после этого еще 5-6 месяцев проектов, иными словами пессимистический срок «пророста» джуна = 10 месяцев, но уж никак не 1-2, тут я никак не могу согласиться.

Впрочем, ждем «success story» от trainee, нигде не работавших, но написавших вышеописанное задание, тогда с меня бутылка Hennessy.

Для Егора разумеется, trainee и так обретет (если обретет) бесценный опыт.

Может быть я и погорячился, но думаю что если есть человек который объяснит что делать, то трейни сможет запедалить хотя бы функциональность не выходящую за рамки CRUD. Если он конечно не в шараге учился, а в хорошем университете вроде КПИ.

Задание достойное любого программиста, не только trainee, поскольку каждую из задач можно реализовать либо костылями и Blog-driven-development-ом, либо мастерски.
P.S. 70% моих знакомых миддлов и 30% senior-ов не напишут это задание, ссылаясь на свою занятость и фантастическую крутость, но в реальная причина состоит в недостатке опыта и знаний технологий и своей колоссальной лени, появившейся от лет, проведенных за двиганьем кнопочек, пиксел-хантинга, лайканьем котиков и прочих радостей бодишопов.

В общем нужно всегда уметь заставить себя и пидалить что-то такое даже senior-ам и техлидам.

Підписатись на коментарі