[24.05.20] 내일배움캠프 24일차 JAVA TIL - 협업

2024. 5. 20. 14:06T.I.L

오늘 한 일

  • Web 강의 수강 - 협업(박진상 튜터님), 디버깅(김순철 튜터)
  • 스프링 기본 2주차 강의 수강

 

 


협업의 중요성

당연한 얘기겠지만, 기업의 목적은 이윤 추구이다. 

팀 단위로 업무를 수행하는 것이 훨씬 효율적이기 때문에 협업또한 중요하다.

협업을 통해 얻는 시너지가 무엇인가?

잘하는 개발자와 못하는 개발자가 있다면 잘하는 개발자가 지식 공유를 통하여 지휘할 수 있다.

처음에는 잘하는 개발자 1명이 모든 업무를 수행하는 것이 가장 빠르겠지만, 장기적인 관점으로 봤을 때에는 팀 자체의 퀄리티를 높일 수 있다.

협업을 효율적으로 했다는 점을 어필하기 위해, 수치로 기재하는게 굉장히 중요하다.

수치로 기재하기 위해서는 협업 툴을 사용하면 좋다.

 

자체 Q&A 

Q1. 지식 공유가 어렵습니다.

- 옆사람과 사담으로 기술 얘기를 하거나 친밀감을 형성하며 서로에 익숙해지면 좋습니다.

 

Q2. 협업을 했지만 기술적으로 제가 많이 부족했습니다.

- 협업에서 어필 할 수 있는 점은 기술 뿐만이 아닙니다. 기획을 탄탄히 하기 위해 어떤 명세서를 작성했고, 팀원에게 걸맞는 업무를 분배하기 위해 관심있게 들여다 봤다는 점도 충분히 어필될 수 있습니다.

 


IOC , DI

: 객체 지향의 SOLID 원칙 그리고 GoF의 디자인 패턴과 같은 설계 원칙 및 디자인 패턴

IOC : 설계 원칙 , DI : 디자인 패턴

 

IOC : ex) 김치볶음밥을 만들기 위한 원칙 (양,신선도, 비율 등 규칙 )

DI : ex) 김치볶음밥의 레시피 (각 절차의 순서 및 공정)

 

의존성이란?

우리가 다리를 다쳤을 때 "목발"에 의존하면 목발에 의존성을 두고 있다고 할 수 있다.

강한 결합이란? 코드를 수정하려면 무조건 바뀌어야 하는 코드

다형성 적용을 통해 의존성이 없도록 구현할 수 있다.

public class Consumer {

    void eat(Food food) {
        food.eat();
    }

    public static void main(String[] args) {
        Consumer consumer = new Consumer();
        consumer.eat(new Chicken());
        consumer.eat(new Pizza());
    }
}

interface Food {
    void eat();
}

class Chicken implements Food{
    @Override
    public void eat() {
        System.out.println("치킨을 먹는다.");
    }
}

class Pizza implements Food{
    @Override
    public void eat() {
        System.out.println("피자를 먹는다.");
    }
}

이런식으로 매개변수에 인터페이스 구현체를 넣어두고 원하는 기능을 꺼내올 수 있다.

 

의존성 주입

필드 주입 / 메서드 주입 / 생성자 주입