Не так давно пробовал устраиваться на работу тестировщиком Java(мой текущий уровень - 19). Получил следующий фидбек:
К сожалению, есть ошибки в задании. Ниже фидбек от нашего специалиста:
Неявная логика в методах
Отсутствие иерархии, неумение сравнивать объекты по типу
Недостаточное знакомство с базовыми вещами в Java
Исользование громоздких конструкторов вида CLEANER (false, false, true, false, false, false, false)
Спагетти-код там, где можно было упростить логику
Соль в том, что моя программа выполняет все требования. которые были описаны в ТЗ. Для ее описания мне хватило тех знаний Java, которые на данный момент есть. Но не хватило чего-то другого. Как с этим бороться? Может, я делаю что-то не так? Мне стоит что-то перечитать или что-то сделать? Моя проблема, как и многих начинающих программистов, не в том, что я чего-то не знаю, а что не умею обращаться с тем,что знаю. Все задачи решал до этого, серьезных проблем не возникало.
Если кому-то интересен мой код - https://github.com/vozni4iy/office
vozni4iy
20 уровень
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Рекомендую книгу «Effective Java» by Joshua Bloch. Подойдет любому программисту от начинающего до профессионала, многие перечитывают ее по несколько раз. Есть также русский перевод, но он достаточно посредственен, предпочтительно читать в оригинале.
Это менталитет живущих в странах СНГ — это не касается только программирования, а всего — Если человек начинает что то делать, первая задача всех — опустить ниже плинтуса, ты не умеешь, ты идиот и тп и тд, т.e. не посоветовать что ты не правильно сделал, какие книги почитать и тп и тд, а сказать ты не можешь и все!!!
явный представитель kasper1987 (извини): но вопрос такой — «А сам то ты чего добился?!»
а типо ну вот с детства люди занимаются и тп и тд, не слушай, а делай и читай ты ТопикСтартер всего добьешься
Ну а в конце хороший анекдот напишу " Почему нельзя заниматься сексом на Красной Площади? Потому что каждый подойдет и даст совет, даже тот кто не разу этим не занимался"
Стив Макконнелл — Совершенный код.
Читать нужно уже в «зрелом» состоянии, минимум после окончания курса. Тогда хорошо войдет.
Javarush, хорошо знакомит Вас, нас, дядю Петю с core Java, но не учит программировать правильно с самого начала оставляя это под конец.
Update. Было бы неплохо увидеть ТЗ.
Отсюда к коду предъявляются дополнительные требования: быть читаемым и поддерживаемым. То есть таким, чтобы если ты отвлечешься от программы на другие дела и вернешься к проекту через полгода, ты смог бы быстро снова войти в курс дела и продолжить работу. Чтобы если ты забелеешь или уволишься, другой программист смог быстро понять, что происходит в твоей программе и как она устроена. Чтобы ты мог писать такие классы, которыми удобно было бы пользоваться другим программистам.
Чтобы этому научиться, нужно поработать над паттернами проектирования: рекомендую книгу из серии Head First.
А еще полезно почитать Роберта Мартина «Чистый код» («Clean Code»)
Обе книги на примере Джавы показывают, как писать программы так, чтобы они, разрастаясь, не превращались в запутанный клубок.
В частности, громоздкие конструкции вида CLEANER (false, false, true, false, false, false, false) сложны в использовании, например, потому, что программист легко забудет или запутается в том, какой порядок аргументов, какой из аргументов что означает и т.п. Нужно будет открыть определение этого метода (в этом случае, видимо, конструктор енумератора) и внимательно сверять с тем, что ты передаешь ему и все равно ошибиться =)
Если при проектировании структуры программы ограничиться, например, 3-мя аргументами (специально продумать программу так, чтобы больше не было: чаще всего 1 или 2, в крайних случаях 3), то часто не придется даже вспоминать что там нужно — все будет интуитивно.
Еще поможет дойти до 20-го уровня и попрактиковаться в «больших задачах», посмотреть, как ведется проектирование и постепенное написание приложений там.
Удачи! =)