JavaRush /Java блог /Архив info.javarush /Типичные ошибки начинающих программистов
vozni4iy
20 уровень

Типичные ошибки начинающих программистов

Статья из группы Архив info.javarush
Не так давно пробовал устраиваться на работу тестировщиком Java(мой текущий уровень - 19). Получил следующий фидбек: К сожалению, есть ошибки в задании. Ниже фидбек от нашего специалиста: Неявная логика в методах Отсутствие иерархии, неумение сравнивать объекты по типу Недостаточное знакомство с базовыми вещами в Java Исользование громоздких конструкторов вида CLEANER (false, false, true, false, false, false, false) Спагетти-код там, где можно было упростить логику Соль в том, что моя программа выполняет все требования. которые были описаны в ТЗ. Для ее описания мне хватило тех знаний Java, которые на данный момент есть. Но не хватило чего-то другого. Как с этим бороться? Может, я делаю что-то не так? Мне стоит что-то перечитать или что-то сделать? Моя проблема, как и многих начинающих программистов, не в том, что я чего-то не знаю, а что не умею обращаться с тем,что знаю. Все задачи решал до этого, серьезных проблем не возникало. Если кому-то интересен мой код - https://github.com/vozni4iy/office
Комментарии (34)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
HansNoodles Уровень 31
3 июня 2016
Только практика и изучение best-practice помогут тебе понять как нужно делать так, чтобы другим было приятно читать твой код.

Рекомендую книгу «Effective Java» by Joshua Bloch. Подойдет любому программисту от начинающего до профессионала, многие перечитывают ее по несколько раз. Есть также русский перевод, но он достаточно посредственен, предпочтительно читать в оригинале.
Romab Уровень 30
26 мая 2016
Честно прочитал все комментарии в этой ветке, и что я скажу:
Это менталитет живущих в странах СНГ — это не касается только программирования, а всего — Если человек начинает что то делать, первая задача всех — опустить ниже плинтуса, ты не умеешь, ты идиот и тп и тд, т.e. не посоветовать что ты не правильно сделал, какие книги почитать и тп и тд, а сказать ты не можешь и все!!!
явный представитель kasper1987 (извини): но вопрос такой — «А сам то ты чего добился?!»
а типо ну вот с детства люди занимаются и тп и тд, не слушай, а делай и читай ты ТопикСтартер всего добьешься
Ну а в конце хороший анекдот напишу " Почему нельзя заниматься сексом на Красной Площади? Потому что каждый подойдет и даст совет, даже тот кто не разу этим не занимался"
Fry Уровень 41
25 мая 2016
От себя добавлю еще одну хорошую книгу, где описаны все рецепты.
Стив Макконнелл — Совершенный код.
Читать нужно уже в «зрелом» состоянии, минимум после окончания курса. Тогда хорошо войдет.
AndreGold Уровень 28
25 мая 2016
Мне кажется тут даже к гадалке не ходи. Только зайти на ваш GitHub, уже можно отказ писать. Нет пакетов в которых размещаются классы, соотвественно на первый взгляд не понятно, не читая Ваш код, что именно он делает. Там где не нужно наклепали Enum, зато там где аж просится, например isAdmin и т.д в классе Person не сделали через Enum явно или как static nested class/Enum

Javarush, хорошо знакомит Вас, нас, дядю Петю с core Java, но не учит программировать правильно с самого начала оставляя это под конец.

Update. Было бы неплохо увидеть ТЗ.
kasper1987 Уровень 20
25 мая 2016
Слишком наивно так полагать. В реальной жизни все иначе. Неопытный человек, очень сильно будет тормозить коллектив в целом. А нормальные компании таких не возьмут и не берут. Поэтому прежде чем принимать дают задачи, по которым можно на 90% определить уровень человека. Твоя очередная попытка увенчается успехом в какой ниьь стартапной фирме, где в основном такие же как ты, и парачка более умных, у которых мало времени будет на чтобы сидеть и учить тебя. Тебе дадут задачу, ты её должен будешь выполнить — тебе же платят?! Платят! Ты погуглишь, задаш пару глупых вопросов новому другу из компании. Тебе там там помогут. Но твой код или программа так криво написаны, что либо ты сдашься либо тебя просто вышвырнут как шавку. Твоя самооценка упадёт, и дай бог ты не здашься и как дурак попрешь в другое место устраиваться, натыкаясь на те же грабли… Не зря в обучающих книгах пишут про то, что лучше в самом начале дороги(в данном случае обучения) как можно дальше откладывать реализацию как можно дальше. Самая главная ошибка начинающих, это избытычная самооценка, думает что знает дофига, а на деле ничего!!! А от этого качество страдает!
kasper1987 Уровень 20
25 мая 2016
Зачем пытаться устраиваться на работу, без знаний достойного уровня? Неужели решил, что решив пару задач с джава раш можно попасть на работу? Бред… Читать, читать, читать и в два раза больше писать писать писать. Не удивительно, что тебе так ответили. Успехов в учёбе!
Eli_Ver Уровень 27
25 мая 2016
Ссылка не рабочая — 404 выдает
EvIv Уровень 30
25 мая 2016
Работающая программа — это полдела. Мы живем в неидеальном мире, в котором требования к программе изменяются, в котором люди болеют, увольняются, да и просто не могут сделать любую задачу в-одиночку.
Отсюда к коду предъявляются дополнительные требования: быть читаемым и поддерживаемым. То есть таким, чтобы если ты отвлечешься от программы на другие дела и вернешься к проекту через полгода, ты смог бы быстро снова войти в курс дела и продолжить работу. Чтобы если ты забелеешь или уволишься, другой программист смог быстро понять, что происходит в твоей программе и как она устроена. Чтобы ты мог писать такие классы, которыми удобно было бы пользоваться другим программистам.
Чтобы этому научиться, нужно поработать над паттернами проектирования: рекомендую книгу из серии Head First.
А еще полезно почитать Роберта Мартина «Чистый код» («Clean Code»)
Обе книги на примере Джавы показывают, как писать программы так, чтобы они, разрастаясь, не превращались в запутанный клубок.
В частности, громоздкие конструкции вида CLEANER (false, false, true, false, false, false, false) сложны в использовании, например, потому, что программист легко забудет или запутается в том, какой порядок аргументов, какой из аргументов что означает и т.п. Нужно будет открыть определение этого метода (в этом случае, видимо, конструктор енумератора) и внимательно сверять с тем, что ты передаешь ему и все равно ошибиться =)
Если при проектировании структуры программы ограничиться, например, 3-мя аргументами (специально продумать программу так, чтобы больше не было: чаще всего 1 или 2, в крайних случаях 3), то часто не придется даже вспоминать что там нужно — все будет интуитивно.
Еще поможет дойти до 20-го уровня и попрактиковаться в «больших задачах», посмотреть, как ведется проектирование и постепенное написание приложений там.
Удачи! =)