Какой у вас опыт работы в IT и коммерческой разработке на Java?

Ответ

Общий опыт в IT — около 5 лет. Из них 3 года коммерческой разработки на Java.

Карьерный путь:

  1. Начал с фриланса и pet-проектов.
  2. Перешел в продуктовую компанию, где работаю по сей день.

Основной стек и опыт:

  • Бэкенд: Java, Spring Boot, микросервисная архитектура.
  • Инфраструктура: Облачные решения (AWS/GCP), контейнеризация.
  • Базы данных: SQL (PostgreSQL, MySQL) и NoSQL (Redis, MongoDB).

Пример кода (Spring Boot сервис):

@Service
public class UserService {
    private final UserRepository userRepo;

    @Autowired
    public UserService(UserRepository userRepo) {
        this.userRepo = userRepo;
    }

    @Transactional
    public User createUser(UserDto dto) {
        // Валидация DTO может быть добавлена здесь или с помощью аннотаций
        User user = new User();
        user.setEmail(dto.getEmail());
        // ... установка других полей
        return userRepo.save(user);
    }
}

Почему Dependency Injection (через конструктор) важен: Это упрощает тестирование (можно легко передать mock-объект) и делает зависимости явными, что соответствует принципам clean code.

Ответ 18+ 🔞

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

Начинал, как все порядочные люди, — с фриланса. Потом, видимо, мозги прорезались, и вкатился в нормальную продуктовую контору. Там и застрял, потому что, блядь, оказалось, что когда тебе не надо самому выбивать бабки с клиентов-распиздяев, — жить можно.

Чем руки пачкаю? Ну, Java, само собой, Spring Boot — без этого нихуя. Всё по-взрослому: микросервисы, которые иногда дружат, а иногда так друг другу ебальники набивают, что диву даёшься. Облака — AWS или GCP, смотря куда начальство пальцем ткнёт. Базы — и SQL (PostgreSQL, MySQL), и NoSQL (Redis, MongoDB), потому что под задачу, ёпта.

Вот, смотри, кусок кода, который я хоть сейчас в продакшен пихну. Сервис для создания юзеров:

@Service
public class UserService {
    private final UserRepository userRepo;

    @Autowired
    public UserService(UserRepository userRepo) {
        this.userRepo = userRepo;
    }

    @Transactional
    public User createUser(UserDto dto) {
        // Валидация DTO может быть добавлена здесь или с помощью аннотаций
        User user = new User();
        user.setEmail(dto.getEmail());
        // ... установка других полей
        return userRepo.save(user);
    }
}

Видишь эту конструкцию? private final и инжект через конструктор? Это не просто так, это, блядь, святое. Почему? Да потому что тестировать эту хрень потом — одно удовольствие. Подсунул мок репозитория — и проверяй, что хочешь. И вообще, все зависимости как на ладони, никаких скрытых сюрпризов. Чистый код, ёбана! А то бывает так напишут — потом разгребай, волосы дыбом.