1. Долгое раздумывание и бездействие
Как и в любом деле, если будете долго думать и размышлять (начинать или не начинать, а что будет потом, а все ли получится, а что скажут другие), то всё так и останется на абстрактном уровне.
Конечно же, бывает, что необходимо предварительное ознакомление (например, изучение инструкции перед разминированием бомбы), но в случае языков программирования — не нужно сильно уделять этому внимание. Так, Вы топчетесь на месте, оглядываясь по сторонам, чтобы удостовериться, что вы ни один такой, хотя на самом деле вы со всеми вместе идете назад.
2. Внутренняя установка, что у меня ничего не получится. Java — это сложно, он необъятный.
Настоящих лидеров никогда не останавливало слово “сложно”. Если вы будете убегать от этого слова к другим словам (“легко”, “быстро”, “без проблем”) — то можете не начинать изучать Java. Покажите мне человека, который знает все аспекты языка и умеет применять все его современные технологии на практике — и я оболью его бензином и сожгу, потому что посчитаю его нечистой силой, которая существовать на земле не может.
Если вы думаете, что для изучения Java вам потребуется несколько жизней – вы правы. На самом деле вы будете изучать только несколько интересных вам направлений, и этого вам хватит как говорится “за глаза”. На этом можно построить успешную карьеру, на этом можно зарабатывать хорошие деньги. Этим можно наслаждаться и получать от этого кайф.
Нет в Java ничего такого сложного, чего нельзя было бы понять. Главное — двигаться от простого к сложному, а не от сложного к сложному.
3. Боязнь совершать ошибки.
Поначалу Вы думаете, что все должно работать идеально и с первого раза. Любая ошибка для вас фатальна. Вы боитесь ошибок как огня, думаете, что если вы ошибаетесь — то у вас не хватает мозгов на написание правильного кода и вам нечего делать в программировании. Конечно же, это не так. Не ошибается только тот, кто ничего не делает. (Не допускает ошибок тот программист, который не программирует).
Об ошибках и неудачах уже так много сказано различными гуру личностного роста, что мне добавить нечего. Все, что они говорят — полностью подходит и для роста в изучении Java. Не бойтесь ошибок! Это ваши помощники! Это ваш опыт! По началу ошибки будут сами вас находить. Главное — это ваше отношение к ним. Томас Уотсон, один из основателей IBM, сказал примерно следующее: “Кто совершит в этом месяце больше всех ошибок, тому увеличиваю зарплату”.
4. Забегание вперед без изучения предыдущих основ.
Возможно вы где-то услышали, что сейчас J2EE используется на всех крупных проектах, а на J2SE программируют только древние люди. И кинулись изучать J2EE в то время, когда еще плохо ознакомились с J2SE. Вам кажется J2EE намного круче, а J2SE никому не нужен, поэтому можно через него перепрыгнуть. Многие новички обожгли на этой свои руки (в том числе и я) пытаясь изучить Java нахрапом.
Во — первых, при таком подходе вы в скором времени понимаете, что нужно вернуться назад, в исходную точку и практически начать все сначала, потому что нет базы, фундамента. Но уже более обдуманно, а не как до этого. Так теряется драгоценное время. Если вы не знаете, для чего нужны интерфейсы и абстрактные классы, но уже хотите программировать ejb компоненты, то это мало к чему приведет. Будет больше каши в голове и как следствие — разочарование и отсутствие энтузиазма. Бессмысленное копирование рабочего кода без понимания как он работает — верный путь к пробелам в знаниях и как причина – не профпригодности, которая выявляется на первом же серьёзном собеседовании.
5. Программирование не объектно-ориентированном стиле.
Если в институтской программе вы познакомились с visual basic или delphi, то наверно помните как приятно на них программировать — кинул кнопку, написал для нее код и готово. Вы помните как быстро делали все институтские задачки — покидал кнопки, навешал на каждую из них нужные функции — автомат на экзамен обеспечен.
В Java такой подход оборачиваются неприятностями, потому что неумение в целом организовать архитектуру программы за счет использования принципов объектно-ориентированного программирования — ещё одна дорога для вашей программы на кладбище похороненных программ. Есть такие программисты — их называют “программисты на уровне кнопок”.
Так вот, работодатели боятся их больше всего, потому что они быстрее всех могут запутать большую систему, что неизменно приведет к лишним затратам. Попробуйте написать систему, состоящую из более 10 000 строчек кода, в “студенческом стиле” — просто навешиванием действий на кнопки. Вас стошнит. А потом чтобы изменить какой-нибудь функционал — стошнит ещё раз.
Другое дело если использованы принципы ООП. Вы знаете, что и как с чем связано, кто за какую работу отвечает. Нужно что-то изменить — берете и меняете, попутно зная, как это повлияет на другие объекты. Для меня это была одна из самых сложных проблем при переходе от университетских задач – к жизненным. Приучиться сначала думать, как все это будет работать между собой, какие объекты нужно создать, куда разместить и пр.
Потом уже начинать писать код. Если бы новичков каждый раз били по рукам, когда они пытаются программировать не в ООП стиле все новички остались бы преподавать в университете, потому что там за такое гладят по головке и ставят наивысшие оценки (работает — и ладно).
6. Отсутствие практики
Есть такой жизненный закон — что не развивается, то отмирает. Есть либо развитие, либо деградация. Золотой середины вы здесь не найдете. Это вам опять же скажет любой гуру личностного роста. Но не все принимают этот факт в силу своих убеждений и принципов. Ходите заниматься в спортзал — мышцы развиваются. Не ходите — дрябнут.
Бегаете по утрам -укрепляете здоровье, не бегаете — теряете здоровье. Так же и в программировании: нет практики, начинают отмирать и дряхлеть ваши программистские качества, теряются наработанные навыки. Даже если вы тоннами изучаете теорию, но не пытаетесь практиковать прочитанное — это ни к чему не приведет. Есть много людей, которые в теории знают Java наверно даже лучше Джеймса Гослинга, создателя этого языка. Но не могут написать ни одной мало-мальской программы. (У нас были такие преподаватели в университете)
7. Скачивание и накопление информации “про запас”.
Я думаю этой проблемой страдают более 90% людей, изучающих какую либо информацию. Это касается не только новичков и не только программирования.
Очень трудно избавиться от этой проблемы, на уровне инстинкта мы качаем и качаем нужную и ненужную информацию с целью изучения ее “потом, когда будет побольше времени”.
Со временем вы начинаете замечать, что не только на жестком диске куда-то девается свободное место, но и в вашей голове — вроде столько информации скачал, а в голове пусто, или наоборот, все свободное место занято и в голову больше не лезет. Наступает своеобразный ступор.
8. Желание доходить до всего самостоятельно.
Кто-то скажет, что это только в плюс. Но бывает так, что уходит слишком много времени. Либо находите решение не такое хорошее, хотя вам могли подсказать идеальное, самое лучшее менно для вашей проблемы и впоследствии вы уже схожую проблему решали бы сами, быстро и качественно. Когда вы некоторое время не можете решить проблему, полностью изматываетесь, уже начинаете думать, что смысл вашей жизни — в решении этой проблемы — вот тогда наступает “тупик”.
Настроение в это время скверное, ни с кем не охота разговаривать, веселые и жизнерадостные лица вызывают в вас раздражение. Кажется — весь мир над вами издевается. Так оно и есть. Потому что весь мир — это вы и есть, вы издеваетесь над собой, пытаясь решить проблему самостоятельно, какой бы сложной она не была, ваше внутренне эго полностью контролирует ваше сознание.
9. В противоположность предыдущему пункту — желание все всегда спрашивать у других
Если Вы не хотите думать самостоятельно, постоянно по любому поводу обращаетесь к другим людям с просьбой о помощи, если, увидев вас в коридоре, коллеги стремятся поскорее свернуть, чтобы не наткнуться на ваши расспросы — вы долго не протянете в мире программирования, поскольку около 80% задач в нем приходится решать самостоятельно.
Конечно поначалу у вас будет куча вопросов, разгрести которую вам скорее всего помогут ваши друзья или коллеги. Но не думайте, что они будут вести вас за ручку до конца жизни и решать все ваши проблемы — иждивенцев никто не любит.
10. Неиспользование всего спектра доступной информации и обучения.
Когда вы начинаете изучать Java, вам, скорее всего, понадобятся видео инструкции, как запустить первую программу, как установить jvm и т.д. На них вы быстрее обучитесь основам, чем если бы вы читали текст без картинок и по словам пытались определить действия автора. Также часто бывает, когда обычные текстовые примеры лучше любого видео покажут и расскажут, как можно решить проблему.
Т.е. в зависимости от цели и аудитории тот или иной вид подачи материала способствует его лучшему усвоению. Таким образом, изучая материалы, которые вы не можете понять из-за отсутствия в них наглядности — вы очень скоро теряете интерес к изучению вообще.