Coding Girl Image.

Як стати Java програмістом

10.01.2019. Володимир Деркач

Привіт! Я часто чую питання - "як стати програмістом" або "як вивчити програмування самостійно".
В загальних рисах все дуже просто:

  1. Вчимо програмування
  2. Проходимо співбесіду
  3. Ви програміст
Але як завжди, диявол ховається в деталях. Постараюся описати цей процес більш детально.

Консольні програми

Для початку необхідно навчитися писати прості консольні програми.
Ви стикнетесь з наступними темами та задачами:

  1. Встановити весь необхідний софт для роботи і налаштувати його.
  2. Запустити вашу першу HelloWorld програму.
  3. Зрозуміти, що таке змінні і типи даних. Все на практиці!
  4. Освоїти умовні оператори. Такі як if.
  5. Розібратися з циклами. В тому числі вкладеними.
  6. Далі масиви.
  7. Методи. Передача параметрів.
  8. Тут бажано розв'язати досить велику кількість задач, щоб відчувати себе комфортно з вивченим матеріалом. Можна розглянути наступні теми задач: рекурсія, зв'язані списки, бінарний пошук, сортування, і тд.
Дуже рекомендую читати книгу. Можна зайти на Amazon і подивитися яка найпопулярніша книга для початківців.
Особисто я рекомендую "Core Java" від Хортсмана.

Є маса безкоштовних ресурсів для практики:

Скільки займе цей етап по часу?
Складно сказати. Залежить від вашої попередньої підготовки. Від 1 до 3 місяців. Якщо ви студент технічного університету чи були таким, вам до 30, то у вас все буде відбуватися швидко. Якщо ви людина дуже емоційна, попередній досвід не технічний, вам більше 40 - може розтягнутися до півроку. Але знову - це все дуже і дуже індивідуально!

Об'єкти. Поліморфізм. Наслідування. місяць

Об'єктно-Орієнтоване Програмування. Часто воно пов'язане з філософськими, абстрактними речами. І тому дається для розуміння не швидко. Проте його розуміння критично необхідне:

  1. Об'єкти vs класи. Статичні поля і методи.
  2. Методи. Конструктори. Перезапис і перевантаження методів.
  3. Наслідування. final.
  4. Інтерфейси. Поліморфізм. Абстрактні класи.
  5. Області видимості. Інкапсуляція.
  6. Анонімні, внутрішні класи. Лямбди.

JDK 1.5 місяця

Разом з компілятором і віртуальною машиною у нас є пакет готових класів, для вирішення задач широкого спектра. В Java це називається JDK. Варто вивчити наступні пакети:

  1. Input/Output Stream
  2. Collections
  3. Multithreading

Maven. Git. JUnit тиждень

Поступово треба перейти до проектів, які складаються з десятків класів. Для компіляції та збору проекту нам знадобиться спеціальна програма Maven.

Великі проекти частіше пишуться в команді, тому варто освоїти систему контролю версій коду Git.

Використовуючи JUnit ми зможемо протестувати й переконатися, що наша програма працює коректно.

Web технології. HTTP. Сервлети 2-3 місяці

Веб проекти це те поле де Java зайняла передову позицію. І саме тут її основне застосування.

  1. Протокол HTTP. Методи GET, POST, відмінності. Status Code. Content-Type.
  2. HttpServlet. Життєвий цикл сервлета. Чому сервлет має бути без стану (stateless)?
  3. HTML форми.
  4. Template engines.
  5. Аутентифікація через Cookies. HttpFilter.
  6. Реалізація шаблона Front Servlet.
  7. Написання невеликого MVC фреймворка. Робота з Анотаціями. Це додасть розуміння як працюють всі інші фреймворки.
  8. Написати невеликий проект. Наприклад, інтернет-магазин.

Бази даних. SQL. JDBC 1.5 місяця

  1. Встановлення бази. Створення користувача, схеми.
  2. Базові теоретичні знання про таблиці, індекси, view, foreign keys, ddl/dml запити, тригери, процедури.
  3. Запити: select + where, select + having + groupby, select + join inner/left/right/full, union, minus, вкладений select.
  4. insert, update, delete.
  5. Транзакції. Теоретичне розуміння рівнів ізоляцій.
  6. CAP теорема.
  7. JDBC: Розібратися з Connection, Statement, ResultSet. Statement vs PreparedStatement.
  8. Створення транзакцій через JDBC.
  9. Написання простого ORM фреймворка.

Spring 2 місяці

  1. Шаблон Dependency Injection. Spring IoC. Dynamic Proxy.
  2. Spring MVC/Web.
  3. Spring Security.
  4. Spring Boot.
  5. REST

Hibernate 1.5 місяця

  1. Базова конфігурація, анотації.
  2. hql, Criteria, named query, native query.
  3. Сесія. Стани сутності.
  4. Менеджмент транзакцій.
  5. Рівні кеша.
  6. Варіанти мапінга ієрархії об'єктів на таблиці.
  7. Оптимістичні блокування. Анотація @Version.

Може досить?

Це далеко не повний список технологій, що використовуються на реальних проектах. Вимоги до кандидатів у різних компаній сильно відрізняються. Можна продовжувати далі і вчитися, практично до безкінечності. Але я вважаю, що після всього вищеописаного можна перейти до пошуку вакансій. А своє подальше навчання можна продовжити на проекті.

Співбесіди 2 місяці

Пам'ятайте кількість спроб у вас дуже обмежена. Бажано готуватися ретельно до кожного інтерв'ю і не профукати шанс.

  1. Написання резюме. Тут є дуже багато нюансів. Обов'язково покажіть ваше резюме знайомому ІТ-нику, а краще трьом.
  2. Повторення теорії. Часті питання.
  3. Процес співбесід. Виконуйте роботу над помилками після заваленої співбесіди.

Чи можна освоїти самостійно?

Звісно можна. Вся література доступна в Інтернеті. Але це довше і тяжче ніж з наставником. Ви ризикуєте застряти зі складною проблемою наодинці, заблукати в лісі технологій, втратити мотивацію. З тренером швидше, а результат більш передбачуваний.

Лишилися питання?

Просто напишіть мені volodymyr.v.derkach@gmail.com. З радістю відповім на всі питання.