Написал игру на Java в 14 лет.

Предыстория
В младших классах я очень любил компьютерные игры. Со временем у меня все больше и больше появлялось желание
создать что-то свое. Я узнал об одной очень интересной профессии — Программист. Программист, в моем понимании творец, писатель в своем роде, он может создать что захочет, написав строчки кода. Я сразу же загорелся желанием стать им. К тому же, зарплата у программистов довольно высокая.
Начало
Первым, как я считал «языком программирования» для меня стал html. Я изучил его примерно за несколько недель. Дальше css, и тут меня занесло в этот неизведанный мир… Я начал верстать простые страницы, делать прототипы сайтов, сидел на разных форумах, в общем мне все это безумно нравилось.
Как я познакомился с Java
У меня был выбор, идти дальше изучать веб, или пойти в ПО программирование. Я выбрал ПО. Начал искать курсы облазил весь гугл и нашел JavaRush. Очень зацепили фишки, что курс построен в виде игры, и что во время обучения присутствует юмор. Примерно за месяц прошел первые 10 уровней. Потом нужно было покупать подписку, но я так и не решился. К следующему НГ я понял, что нужно что-то менять, и купил долгожданную подписку. С этого момента я решил серьезно заниматься. На данный момент мне 14 лет, я достиг 27 уровня. Недавно захотелось написать что-то самому, с нуля. И у меня это получилось. Я написал игру GetFoodGame. Для запуска дважды кликните по файлу GetFoodGame.jar. Идея такова: сверху падают фрукты а игрок, управляю вазой с помощью стрелочек (Влево, Вправо) ловит их. Когда вы не смогли поймать 2 фрукта, появляется окошко, с надписью что вы проиграли. По моему мнению, реализовал я не очень хорошо (мягко говоря) слишком много костылей. Буду рад конструктивной критике ;) Всем хорошего настроения, и успехов !)
  • ,

Достойный и красивый код

Раздел с примерами как не следует писать программный код есть, так может следует иметь тему на форуме и с диаметрально противоположными примерами? Догадываюсь, что понятия «достойно и красиво» весьма субъективны, ну так дружелюбно и без насмешек ведь вполне можно обходиться с коллегами по изучению java-премудростей, не так ли, друзья?!
Идея родилась вчера, когда в комментариях к заданиям в новой версии javarush обнаружил для себя два познавательных и изящных кода (жаль, что авторам в тех разделах нельзя было «плюсануть» — создатели javarush эту возможность не предоставили). А если взять примеры из изобразительного искусства, музыки, литературы, то обучение строится на достойных примерах для подражания. Не встречалось что-то обучение мастерству на примерах китча, безвкусицы, пошлости. Даже в строгой шахматной аннотации используется восклицательный знак, когда следует неочевидный и весьма эффектный ход… В общем, я за подборку достойных и красивых примеров для подражания и в java-программировании.

P.S.
Созвучная некоторым изложенным мыслям статья: «Что такое красивый код, и как его писать?»
  • ,

Как стать Java программистом, не сойти с ума от кучи информации, полюбить программирование и жить нормальной счастливой жизнью?

Всем привет, меня зовут Лена, и я хочу стать программистом Java. Это решение я приняла в декабре 2015. Я ничего не знала о программировании, даже, как переменную объявить хоть в каком-нибудь языке программирования. У меня не было знакомых программистов, я не работала в ИТ компании, в общем ничего, что могло бы хоть как-то мне помочь. Это не история успеха, где в конце концов я устроилась на работу младшим программистом с прекрасными перспективами, нет. Я до сих пор учусь, и далеко не всё получается гладко. В интернете полно вдохновляющих постов – «программировать может каждый», «старики за год становились прекрасными программистами» и т.д. Всё легко, весело и приятно. Я не знаю, кто пишет эти посты, но они меня, наивную женщину, вдохновили. Я решила, что всё будет действительно просто и безболезненно. Тем более мне всего 25 лет, не преклонный возраст для программирования.

На волне оптимизма я купила курсы мобильного разработчика на Geekbrains и начала проходить 1 курс Java для новичков. Этот курс состоит из 8 вебинаров (2 раза в неделю) и маленьких домашних заданий после каждого. Затем идет 2 курс. В общей сложности обучение длится 2-3 месяца, и, вуаля! – ты программист. Но тут происходит столкновение с реальностью.

Перед курсом тебя не предупреждают, что больше половины из сказанного преподавателем ты не поймешь, и это непонятности будут расти снежным комом. Тебе не говорят, что для того, чтобы понять суть следующего урока, тебе нужно прочитать всё, что ты найдешь по теме, посмотреть все видео и поспрашивать знатоков. А еще тебе не говорят, что вместе с тобой на курсе будут учиться далеко не новички в программировании, люди с высшим образованием, с реальным опытом, которые буду активно участвовать в общении на вебинаре и задавать умные вопросы, а ты их даже не поймешь. В общем, ты начинаешь думать, что с тобой что-то не так, программирование не для тебя, у тебя ничего не выйдет, ты тупой и неспособный. Хотя, по сути дело лишь в разнице часов, потраченных на изучение. Кому-то нужно больше времени, кому-то меньше. Но, если честно, то это и не важно. Если ты хочешь программировать, никто не сможет тебя остановить! Конечно, от курсов я получила пользу: мой нулевой уровень в программировании стал выше, но не так сильно, как я рассчитывала.

После двух курсов я решила почитать книги по программированию. Все рекомендовали Шилдта и Эккеля, но я начала читать, и мне стало невыносимо скучно. Я решила попробовать Java Rush, тем более, что первые 10 уровней там бесплатные. Меня подкупило то, что они делают акцент на реальные задачи. Наконец, хоть что-то приближенное к тому, что нужно будет делать на работе!!! Мне понравился их подход – не нудно, шутки какие-то шутили по ходу дела, в начале каждого уровня мотивирующая лекция о том, как круто быть программистом. Курс прямо учит наслаждаться программированием. Я активно занималась по нему, но так как я работаю, всё равно получалось слишком медленно. Затем я нашла новые рекомендации по книгам – Хорстманн и Head First Java. Это очень крутые книжки!!! Хорстманн пишет довольно ясно, а Head First Java я просто обожаю – она веселая, понятно написанная, с использованием разных подходов, например, картинок, для лучшего усвоения информации. Её можно читать даже просто так, для поднятия настроения + она написана на довольно простом английском, а значит можно еще и язык подтянуть, что немаловажно!

И вот начинаются просветы, когда сложную задачу ты смог решить с первого раза или когда плагин к IDEA установил (я всё-таки девочка, и с установкой программ у меня проблемы). Когда до тебя, наконец, доходит, как создавать и использовать объекты. Это прекрасное время подъема. Но ты идешь дальше по Java Rush и постепенно читаешь литературу по теме, смотришь видео. Когда где-то тормозишь, то начинаешь смотреть Info JavaRush, даже регистрируешься там, чтобы когда-нибудь задать умный или не очень вопрос. С каждым разом темы становятся сложнее. HashMap вообще меня убил – я 4 дня не могла понять как работает итератор, со static мы долго находили общий язык, а StackTrace – это вообще одна большая радость! Мотивация падает, а ты продолжаешь один в этом всем вариться. На работу или даже на стажировку тебя никто не возьмет, ведь нужно знать как минимум Java Core, а до его знания ой как далеко. Я не имею понятия, как работать с входящими и исходящими потоками. Я не знаю, что такое сериализация, многопоточность, вывод на консоль. До сих пор не понимаю, что такое интерфейс. О фреймворках и Java EE вообще молчу, хотя эти знания будут вообще не лишними на собеседовании. И еще периодически бывают такие моменты, когда ты думаешь, что хоть что-то знаешь, например, как инициализировать строку в Java. Вроде это уже пройденный этап, но потом неожиданно узнаешь, что у String есть очень много полезных методов, например, toCharArray(), toUpperCase(), compareTo(). И тут приходит понимание: ты знаешь только верхушку айсберга, а не знаешь гораздо больше.

К чему я это всё пишу? Поделитесь, всё действительно так? Нужно просто заткнуться и усиленно день и ночь учить Java, смотреть видео, читать книги, решать задачи, сколько влезет. И после нескольких месяцев такого отшельничества жизнь войдет в нормальное русло: ты устроишься на работу, опять начнешь общаться с другими людьми, будешь больше практиковаться, а не изучать абсолютно новые темы каждый день, появится уверенность в своих мозгах и так далее. Или есть какой-то вариант жить по-человечески уже сейчас, когда твоих знаний еще не хватает, чтобы решить хоть сколько-нибудь отвечающую требованиям реального мира задачу?

У меня куплена годовая подписка на Java Rush и курс мобильного разработчика на GeekBrains, но это разные направления. Java Rush потом может предложить платную стажировку, но это вэб. GeekBrains — это android, objective c, swift. Чтобы дойти до стажировки на Java Rush нужен 30 уровень, а у меня как бы 10! Набор начнется только в ноябре, так как август я уже пропускаю! На стажировке будет отлично – там другие люди, сроки, наставник, когда я вместе с кем-то занимаюсь, у меня больше мотивации и соревновательного духа что ли. Но это значит, что 20 уровней нужно пройти самостоятельно и еще 4 месяца тусить одной! На GeekBrains я могу начать изучать тот же Android в августе, но я не уверена, что это моё. Меня больше тянет к вэб, но всё таки думаю над этим вариантом (это старт через месяц и там люди).

Напишите, кто на опыте, что бы вы сделали на моем месте? Спасибо!

Подбор сайтов для оттачивания навыков в программировании

  1. Codewars
  2. Codewars — отличный сервис для закрепления навыков программирования на Ruby, JavaScript, Java, Python, Clojure, CoffeeScript, C#, Haskell. Представлены как алгоритмические задачи, так и практические задачи, связанные с шаблонами проектирования. После каждой решенной задачи вы можете посмотреть на другие решения, рассортированные по рейтингу в зависимости от их красоты и использования лучших практик в программировании.
  3. Leetcode
  4. Leetcode — сайт с алгоритмическими задачками для подготовки к техническим собеседованиям в такие крупные фирмы, как Google и Facebook. Возле каждой задачи есть обсуждение, в котором так или иначе может фигурировать решение к этой задаче. Можно использовать различные языки программирования: C, C++, Java, Python, C#, JavaScript, Ruby, Bash.
  5. Programming Praxis
  6. Programming Praxis — блог, включающий целый ряд интересных задач, решения которых можно проверить на нескольких языках программирования.
  7. TopCoder
  8. TopCoder — активное сообщество программистов, которые любят решать головоломки. Много активных соревнований, некоторые из них включают денежные призы.
  9. C Puzzles
  10. C Puzzles предоставляет вам головоломки по программированию, характерные для языка Си (со всеми его причудами). Поскольку многие языки являются Си-подобными или напрямую выведенными из него, даже если вы не знаете язык Си как свой родной, велика вероятность, что вы поймете эти головоломки.
  11. Project Euler
  12. Цитата с главной страницы: «Project Euler — ряд бросающих вызов математических/программистских задач, которые предполагают наличие математической интуиции для их решения». Ресурс включает в себя как относительно простенькие, так и по-настоящему сложные задачки.
  13. Codeforces
  14. Полноценный русскоязычный аналог уже упомянутого Topcoder.
  15. Сборник задач от CppStudio
  16. Задачки в основном на проверку знаний С++, однако реализуемы и на других языках программирования.
  17. Timus Online Judge
  18. Timus Online Judge — это крупнейший в России архив задач по программированию с автоматической проверяющей системой. Основной источник задач для архива — соревнования Уральского федерального университета, Чемпионаты Урала, Уральские четвертьфиналы ACM ICPC, Петрозаводские сборы по программированию.

Программирование – тяжёлая работа или лёгкий способ срубить денег?

Хорошая мотивирующая (или наоборот?) статья.
Выложил, что бы побольше людей ее прочитало. Автор не против. :)


! Статья про enterprise :) Не android.

Как стать Java разработчиком?

1. Нужно ли это Мне?

Видимо, самый важный пункт. В связи с экономическим кризисом, многие люди пытаются найти способ обеспечить себя финансово. А тут появляется “IT”, в котором все получают много денег за то, что могут написать 10 строк кода. К тому же, “программирование – это легко”.

К сожалению, это не так. Как бы не пытались основатели различных курсов объяснить, что любой может стать разработчиком за 3 месяца, это не так.

В первую очередь, необходимо помнить, что разработчик программного обеспечения – это инженер. Поэтому и требования соответствующие.

Во-вторых нужно понимать, что именно представляет из себя работа программиста? Прежде всего – это перманентное решение проблем. У Вас не будет момента, когда все проблемы будут решены. Это процесс постоянный. Во-вторых – это огромное количество рутинной работы, выполнять которую по 3-4 часа в день без любви к делу, если не невожможно, то уж точно требует огромного усилия над собой.

Итак, если Вы чувствуете, что разработка программного обеспечения – это то, чем бы вы хотели заниматься более 40% времени своей жизни, то идём дальше.

2. Что именно необходимо для того, чтобы называться Java-разработчиком?

Для того, чтобы Вы с гордостью могли назвать Себя Java Developer с больше буквы “J” необходимо иметь, хотя бы, общее понимание следующих вещей:

Синтаксис языка, а именно – Java Core;
Основы Объекто-ориентированного программирования;
Основы баз данных (SQL);
JDBC;
Servlets + JSP;
ORM (например, Hibernate);
Любой популярный Web – Framework (например, Spring);
HTML, CSS, JavaScript;
VCS (GIT, SVM или подобное).
Теперь, пройдёмся по пунктам:


Java Core

Сюда входит знание и понимание иерархии классов в Java, методы класса Object и, конечно Collection Framework. Какие интерфейсы, кто и кого имплементирует и т.д.

Вот эту картинку, java-разработчик должен нарисовать в 3 утра под арт-обстрелом:



В изучении Java Core помогут такие книги, как:

Java 8. Полное руководство (Шилтд)
Философия Java (Эккель)
И конечно же, никуда не деться от

Java Platform API Specification

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

ООП

От новичка не требуется больше, чем знание и понимание трёх принципов ООП (некоторые считают, что их 4, но тут уж как попадёте и это не так существенно).

Умение на практическом примере объяснить каждый из них.

Основы баз данных и SQL

MySQL 5.0 (Виктор Гольцман)

Эта книга легко и доступно объясняет базовые понятия с илюстрацей примеров и пошаговыми инструкциями.

JDBC

Кроме понимания того, что такое база данных, необходимо понимать, как Ваше Java приложение с ней взаимодейтсвует.

JDBC 4.1 Specification наиболее полно раскрывает все особенности работы JDBC.

Servlets + JSP

В книгах по Шилтда и Эккель Servlet-ы описываются “вскольз”, для более глубокого понимания, что же это такое необходимо изучить что-то по-серьёзнее.

Java Servlet Specification
и
JavaServer Pages Specification
Эти две спецификации дают исчерпывающее понимание тих технологий.

Как JDBC, так и Servlets используются разработчиками в повседневной работе только в редких случаях. Но они лежат в основе всех популярных Framework-ов и понимание того, как эти framework-и утроены “внутри” поможет Вам избежать очень многих глупых ошибок, которые допускают те, кто изучал только framework-и.

Hibernate

Книга, которая является гордостью мира Java – это Java Persistence with Hibernate.

Многие разработчики, которые используют другие технологии (в частности C#), читают эту книгу для того, чтобы глубже понять что такое ORM и какие проблемы оно решает.

Если Вы умеете созлать отношения one-to-one, one-to-many и many-to-one и написать простой запрос на HQL – ваших знаний хватит для уровня новичка.

Web – Framework (например, Spring)

После того, как освоено всё, что есть выше можно уже замахнуться на Spring. Для начала написать простое CRUD приложение, а потом узнать, что такое Spring Pet Clinic. Теперь Ваших знаний будет достаточно для того, чтобы с пониманием происходящего создавать более-менее пристойное приложение, которое ходит в базу данных, что-то там делает и т.д. и т.п.

Поздравляю, теперь Вы можете написать то, что можно уже и “потрогать” и показать.

Через 5-6 месяцев, Вы захотите удалить этот код и сделать так, чтобы никто не знал, что именно Вы его автор, но пока это хорошо :)

HTML, CSS, JavaScript

Здесь всё просто и не интересно. Обычная вёрстка, которая для back-end разработчика не представляет особго интереса. Это хлеб front-end-щиков.

Но базовое понимание всего этого быть должно.

HTML Academy

HTML Book

Основы JavaScript

Этого Вам хватит с головой.

VCS

Любой проект, в котором работает больше 0 разработчиков не делается без СКВ (системы контроля версий). GIT – наиболее удобная и часто применяемая, конкурирует с ней SVN. Будете знать одну из них – и будет Вам счастье.

По итогу модно сказать, что порого входа в Java крайне высок. Количество необходимых знаний для того, чтобы устроиться на работу или начать писать более-менее солидные приложения просто огромно. Но на выходе получаете просто невероятные перспективы.

Важно понимать, что спрос на новичков крайне низкий, несмотря на все попытки показать, что программистов не хватает. Не хватает высококвалифицированных разработчиков с опытом работы от 3-х лет, а новичков с избытком.

Для того, чтобы зацепиться и “войти в IT” Вам поможет адский труд в течение от 6 месяцев до 1 года. Но если это Ваше и Вы готовы для этого вложить такое количество усилий, то дерзайте.

Удачи Вам!

От себя хотел бы добавить, что реально для изучения java core ничего лучше javarush, по-крайней мере в рунете — нет. ИМХО.

Всем удачи еще раз.


Статья: proselyte.net/how-to-become-java-developer/
Автор: proselyte.net/faq/
  • ,

7 советов на пути от хорошего программиста к великому

Великие программисты являются таковыми не потому, что умеют писать идеальный код. В них есть нечто большее, например, дополнительные навыки, знания, особенности характера. Способов как этого добиться – множество. Мы же подобрали 7 основных советов для вас.

от хорошего программиста к великому
  • ,

Путь программиста.. Интриги, скандалы, расследования.

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

Короче, если без пафоса: а программисты вообще меняют свою специализацию/профессию коренным образом? Например: был программистом стал комбайнером или плотником, а может пошел пылесосы Кирби продавать, или стал депутатом с расширенным мандатом, ну и т.п. А может начал кодить, поработал и понял, что лучше дальше буду таксовать. Что-то у меня в памяти нет таких отпечатков. Поделитесь своим опытом, тайными знаниями, или на крайняк СОБР'ом (слышал одна бабка рассказывала).

P/S… Предлагаю считать (условно) программистов, менеджеров IT-проектов, архитекторов и сис.админов объектами одного класса. Будем учитывать более коренные изменения.
Если все же прецедент имеется, поделитесь хотя бы догадки, почему такое решение было принято, что послужило поводом?

Как говорится:
public static void main(String[] args) {
// Поехали
}

com.javarush.test.level06.lesson11.bonus02;

Привет всем. Помогите, пожалуйстая прога, не могу пройти тестированиевание ((


package com.javarush.test.level06.lesson11.bonus02;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/* Нужно добавить в программу новую функциональность
Задача: У каждой кошки есть имя и кошка-мама. Создать класс, который бы описывал данную ситуацию. Создать два объекта: кошку-дочь и кошку-маму. Вывести их на экран.
Новая задача: У каждой кошки есть имя, кошка-папа и кошка-мама. Изменить класс Cat так, чтобы он мог описать данную ситуацию.
Создать 6 объектов: маму, папу, сына, дочь, бабушку(мамина мама) и дедушку(папин папа).
Вывести их всех на экран в порядке: дедушка, бабушка, папа, мама, сын, дочь.

Пример ввода:
дедушка Вася
бабушка Мурка
папа Котофей
мама Василиса
сын Мурчик
дочь Пушинка

Пример вывода:
Cat name is дедушка Вася, no mother, no father
Cat name is бабушка Мурка, no mother, no father
Cat name is папа Котофей, no mother, father is дедушка Вася
Cat name is мама Василиса, mother is бабушка Мурка, no father
Cat name is сын Мурчик, mother is мама Василиса, father is папа Котофей
Cat name is дочь Пушинка, mother is мама Василиса, father is папа Котофей
*/

public class Solution
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));


        String grand_father = reader.readLine();
        Cat catGrand_father = new Cat(grand_father);

        String grand_mother = reader.readLine();
        Cat catGrand_mother = new Cat(grand_mother);


        String father = reader.readLine();
        Cat catFather = new Cat(father, null, catGrand_father, 1);

        String mother = reader.readLine();
        Cat catMother = new Cat(mother, catGrand_mother, null, 2);

        String son = reader.readLine();
        Cat catSon = new Cat(son, catMother, catFather, 3);

        String girl = reader.readLine();
        Cat catGirl = new Cat(girl, catMother, catFather, 4);

        System.out.println(catGrand_father);
        System.out.println(catGrand_mother);
        System.out.println(catFather);
        System.out.println(catMother);
        System.out.println(catSon);
        System.out.println(catGirl);
    }

    public static class Cat
    {
        private String name;
        private Cat parent;
        private Cat father;
        private Cat grand_mother;
        private String name_son;
        private String name_girl;


        Cat(String name)
        {
            this.name = name;
        }


        Cat(String name, Cat catMother, Cat catFather, int y)
        {
            if (y == 1)
            {
                this.name = name;
                this.father = catFather;
            }
            else if (y==2)
            {
                this.name = name;
                this.parent = catMother;
            }

            else if (y==3)
            {
                this.name_son = name;
                this.parent = catMother;
                this.father = catFather;
            }
            else
                this.name_girl = name;
                this.parent = catMother;
                this.father = catFather;
        }



        @Override
        public String toString()
        {
            if ((parent == null)&&(father == null)&&(name_son==null))
                return "Cat name is " + name + ", no mother" + ", no father ";
            else if ((parent == null)&&(grand_mother == null)&&(name_son==null))
                return "Cat name is " + name + ", no mother" + ", father is " + father.name;
            else if ((name_son==null)&&(name_girl==null))
                return "Cat name is " + name + ", mother is " + parent.name + ", no father";
            else if (name_girl==null)
                return "Cat name is " + name_son + ", mother is " + parent.name + ", father is " + father.name;
            else
                return "Cat name is " + name_girl + ", mother is " + parent.name + ", father is " + father.name;
        }
    }

}
  • ,

Нужна помощь по алгоритмам

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

Роль математики в программировании

Хотелось бы услышать мнения о важности знания математики для программистов.

На каком уровне. Базовые знания дискретной для составления алгоритмов или всё таки весь курс математического анализа?
В каких конкретно задачах используется математика. Только для составления алгоритмов и структур данных или ещё где то?
Должен ли в фирме сложными алгоритмами заниматься человек, специализирующийся на них или каждый программист должен разбуди его среди ночи уметь выводить сложные теоремы?
Или вообще математика это удел специалистов по Data Mining и Computer Science?

В общем прошу высказаться гуру и не только. Чем больше мнений — тем лучше.