제가 저번 글에서 다음과 같이 말한적이 있습니다.

https://masiljangajji-coding.tistory.com/66

 

클린코드&테스트 - 추상과 구체

요즘은 코드를 잘 짠다 = 읽기가 좋다 = 가독성 있다 , 라는 말을 많이 하는 것 같습니다.저 또한 매우 동의하는 말인데요 하지만 개인적으로 "가독성 있다"라는 말 또한 추상적인 개념이라 생각

masiljangajji-coding.tistory.com

 

이러한 말을 한 이유는 클린코드, SOLID , DDD , TDD.... 등등의 것들은 전부 생산성을 위한 것이거든요
아~ 이렇게하면 생산성이 늘어나던데? 좋던데?와 같은 말인것이죠 , 또 그들은 일종의 "상품"으로서 작용되는 부분도 있습니다.
TDD라는 용어가 만들어지기 전까지는 Test코드를 작성을 안했을까요?? 그렇진 않을 것 입니다.


그저 테스트와 관련한 여러가지 산재돼있는 개념을 TDD라는 명칭으로 묶어 만든 일종의 "상품"이라고 생각합니다.
또 이런것들은 전부 생산성을 늘리는 Best Practice중 하나다 라고 볼 수 있습니다.


따라서 우리는 이것을 일종의 원칙이나 법처럼 적용시켜 개발할 이유는 없다고 생각합니다.
당장 내일 새로운 기능을 배포를 해야하는 상황에서 "클린코드를 위해서 리팩토링을 10시간 하겠습니다" 이런 말을 한다면
아마 팀장님한테 혼나겠죠


다른 예시로 "클린코드를 지향하니까 주석은 안답니다"같은 말씀을 하시는 분들이 계십니다.
근데 주석을 안단다고 진짜 코드가 클린해지나요? 조금 의문인 부분도 있거든요

 

강의에서도 비슷한 말을 합니다. "무조건"이 아니라는 것이죠
개인적으로는 "이런식으로 하면 좋던데??" 정도로 받아들이는 것이 가장 좋지 않을까 생각합니다.

 

객체를 만들 때 1개의 관심사로 책임이 정의돼있는지 확인하는 것은 굉장히 중요합니다.
저는 개인적으로는 "객체"라는 표현보다는 "타입"이라는 표현을 더 좋아합니다.


클래스를 만든다는 것과 타입을 만든다는 것은 동일한 것인데 어감에서 오는 차이가 크다고 생각하거든요
타입에 대해 말하는 것이 훨씬 더 명확하게 의도가 전달된다 생각합니다.
이 타입이 가져야 할 역할은 무엇이지? , 이 타입으로 나는 무엇을 하고싶지? , 이 타입이 해야만 하는 일은 뭐지? 와 같이 말이죠


int라는 타입을 생각해 봤을 때 마땅히 숫자형 데이터가 해야할 무언가가 떠오르지 않나요?
int 객체라고 하면 그런 부분에서 직관성이 떨어진다 생각합니다.

 

"setter를 자제하자" 이건 사실 당연한데요 setter로 열려있는 경우에는 누구나 해당 값을 임의로 변경할 수 있기 때문에
최대한 지양하는 것이 좋습니다.

특히 dto같은 경우에는 setter가 더욱 필요 없는데 사용자가 준 값을 내가 임의로 바꿀일이 많지는 않거든요
하지만 재밌는점은 "getter도 사용하지말자"입니다.

사실 getter의 경우에는 그냥 lombok으로 달아놓고 자유롭게 쓰거든요
setter의 경우만 고민을 합니다. 근데 getter도 사용하지말자? 이건 좀 재밌게 느껴졌습니다.


예시를 보면 바로 알 수 있는 부분인데요 1번코드와 2번코드 무엇이 더 직관적인가요?
당연히 2번코드지 않나 생각합니다.


또 관련된 설명을 하면서 이것이 person이라는 객체를 존중하지 않는 폭력적인 코드라는 설명하시는데
이 부분이 가장 흥미있고 재밌었습니다.


쉽게 말하면 객체는 캡슐화돼있는 것인데 getter를 남발하면 캡슐화를 왜 하냐?
getter를 쓸수도 있지만 안쓸수도 있지 않을까?? 라는 것 이죠

참 중요한 걸 얻고 가는데요

"캡슐화돼있는 데이터를 바깥에서 알고있다고 생각하지 말아라"
"우리는 알고있지만 바깥에있는 객체도 알고있을거라 생각하지마"
이것이 캡슐화의 전부인 것 같습니다.

"주니어를 위한 면접질문" 같은 곳에 가면 꼭 등장하는 SOLID입니다.

매우 간단한 코드로도 SOLID를 표현 가능하다 생각하는데요

public class ChefService {

    private final Chef chef; // Interface Chef라는 타입이 해야할 역할을 정의한 Specification

    public ChefService(Chef chef) { // subTyping 이용 , Chef타입의 서브타입을 주입 가능
        this.chef = chef;           // 나는 Korean,American 선택해서 넣을 수 있음
    }                               // 후에 다른 Chef가 추가되어도 생성할때 넣는 인자만 변경하면 됨 OCP , DIP 

    public void makeFood(){
        chef.cook(); // korean,american의 코드가 변경되도 ChefService가 신경 쓸 부분은 아님
        // cook이라는 행위를 Chef에 정의해 둠으로써 통일화된 추상화를 제공함
        // Korean,American의 cook메서드의 내부 구현이 바뀌어도 신경 안써도 됨

    }

}

이 코드로 SOLID의 모든 것을 표현 가능합니다.

DIP = 의존성 역전 원칙 -> 추상화에 의존해라
Chef라는 추상화 정도가 높은 Interface 타입을 받음으로써 ChefService는 추상화에 의존하고있습니다.

그로인해 각각의 Chef를 하나의 모듈처럼 사용가능합니다.
Korean을 넣었다가...American넣었다가... 아니면 다른 Chef을 만들어 주입해도 문제가없습니다.
따라서 OCP 원칙을 지키는 길이기도 합니다.

OCP = 개방 폐쇠원칙 -> 확장은 열려 있고 수정은 닫혀 있다.
Chef 타입 1000개 만들어서 사용해도 생성자 주입할때 들어가는 코드만 변경해주면 문제없음.

public interface Chef {

    void cook(); // 요리하세요
}
public class AmericanChef implements Chef{
    @Override
    public void cook() {
        // 양식요리
    }
}
public class KoreanChef implements Chef{
    @Override
    public void cook() {
        // 한식요리
    }
}

LSP = 리스코프 치환 원칙 -> Super Type이 정의한 근본적인 역할을 따라야 한다.
SuperType인 Chef에 cook이라는 기능이 명시돼 있습니다.
마땅히 요리하는 행위를 생각하겠죠??


근런데 갑자기 KoreanChef의 cook() 메서드를 음식을 먹는 기능으로 변경한다고 해보겠습니다.
이러면 위에서 정의내린 Chef타입의 근본적인 기능이 변경되는 것 입니다.
하지만 우리의 코드는 SuperType이 정의한 "요리" 행위를 잘 하는것으로 보이니 LSP를 지키는 것으로 보입니다.


ISP , SRP = 인터페이스 분리 원칙 , 단일 책임 원칙 -> 하나의 책임만 가져라 
Chef는 요리하는 행위만 신경쓰면 됩니다. 그것이 Chef이라는 타입이 해야할 책임입니다.


그런데 갑자기 Chef에게 drive() 기능을 주면 어떤가요? 요리사라는 타입이 해야할 일인가요??
이경우 SRP가 깨진다고 볼 수 있습니다. ISP도 일맥상통한다 생각합니다.


SOLID 개념은 각각의 것들이 유기적으로 결합되어 있어 SOLID중에 3가지만 만족한다, 4가지만 만족한다, 이런 건 없다고 생각합니다.
하나가 안지켜지면 전체적으로 안지켜지고 하나만 잘 지켜도 전체적으로 완성이되는 개념이라 봅니다.

 

마지막으로 간단하게 코드를 변경해 보았는데요
개인적으로는, [직관적인 코드 = 읽기 쉬운 코드 = 좋은 코드 = 클린코드] 라는 생각이 있습니다.
그래서 사람에게 말하는듯이 이름을 작성하는 것을 좋아합니다.

특히 boolean 타입의 경우에는 isXXX~ 식으로 많이 작성하는 것 같습니다.

public boolean validateOrder(Order order) {
    if (order.getItems().size() == 0) {
        log.info("주문 항목이 없습니다.");
        return false;
    } else {
        if (order.getTotalPrice() > 0) {
            if (!order.hasCustomerInfo()) {
                log.info("사용자 정보가 없습니다.");
                return false;
            } else {
                return true;
            }
        } else if (!(order.getTotalPrice() > 0)) {
            log.info("올바르지 않은 총 가격입니다.");
            return false;
        }
    }
    return true;
}

읽기쉽게 , 내가 생각하는 clean code로 변경

    public boolean validateOrder(Order order) {

        if (order.isEmpty()) {
            log.info("주문 항목이 없습니다.");
            return false;
        }

        if (order.isTotalPriceNegative()) {
            log.info("올바르지 않은 총 가격입니다.");
            return false;
        }

        if (order.isCustomerInfoMissing()) {
            log.info("사용자 정보가 없습니다.");
            return false;
        }

        return true;
    }

'클린코드' 카테고리의 다른 글

그래서 클린코드가 뭐냐  (2) 2024.10.06
클린코드&테스트 - 추상과 구체  (2) 2024.10.01


요즘은 코드를 잘 짠다 = 읽기가 좋다 = 가독성 있다 , 라는 말을 많이 하는 것 같습니다.

저 또한 매우 동의하는 말인데요 하지만 개인적으로 "가독성 있다"라는 말 또한 추상적인 개념이라 생각합니다.
가독성 있는게 좋아? , 그럼 어떤 코드가 가독성 있는건데? 라는 질문을 받게 되는 것이죠

그래서 우리는 "가독성 있는 것"에 대한 기준이 필요한데 저에게는 "직관적이냐" 입니다.

다음은 제가 좋아하는 3-Tier Architecture인데요 이것을 처음 봤을 때 느낀것은 정말 직관적이다 였습니다.

계층과 책임이 너무 명확히 나눠져있어서 누가 봐도 이해가 가능한, 이런게 "직관적이다" 라고 생각하고
이런 직관적임을 코드레벨까지 성공적으로 가져 왔을 때 곧 읽기좋은 코드가 된다 생각합니다.

 

 

 


저는 추상화를 이렇게 정의합니다,  무언가를 간추린다.
무언가를 간추린다면 전부 추상화에 해당하며 적용되는 범위또한 굉장히 넓다 생각합니다. 

예를 들어 우리가 "탈 것"이라는 인터페이스를 만든다면 이는 추상화 정도가 굉장히 높은 타입을 설계하는 것과 동일 하거든요
"탈 것"이라는 타입은 추상화 정도가 너무 높아 , 구체화가 없고 단순히 명시만 돼있는 Specification의 역할만 하는 것이죠.

단순히 말하면 야 너는 어떻게 하는지는 너 마음인데 , 가속이랑 감속은 가능해야 한다? 같은 것이죠 
따라서 구체화된 코드 없이 메서드의 Spec만 명시합니다.

"탈 것"을 구현한 "자동차"라는 타입을 만들고 이에 대한 api를 제공한다면 이 또한 추상화입니다.
api라는 통로를 이용해 외부에서 이 자동차라는 타입이 어떻게 설계되고 내부적으로 어떻게 동작하는지를 몰라도 
사용할 수 있게 됐기 때문입니다.

우리가 docker run 명령어를 사용했을때 내부적으로 어떻게 동작하는지 정확한 이해와 함께 쓴다고 생각하진 않습니다.
아 이 명령어는 = 이 api는 이런 동작을 하는 구나~ 정도의 이해만 가지고 있는 것이죠 

이렇게 api는 외부에서 접근 가능한 일종의 추상계층으로서 역할을 하게 됩니다.

저는 정보를 숨기는 것 , 절차를 간추리는 것 , 데이터를 간추리는 것.... 이 모든 것이 추상화의 영역이라 생각합니다.

마침 1년 전쯤에 추상화에 대한 글을 작성한 적이 있는데요 많이 부족한 글이지만 첨부해봅니다.

 

Abstraction(추상화) 기본 개념 - 1편

Abstraction(추상화)란? 자바에서는 추상클래스 , 추상메서드 , 추상화 등 "추상"이라는 말이 자주 쓰입니다. 그렇다면 추상화란 무엇일까요? 추상화는 프로그래밍에서 매우 중요한 개념 중 하나이

masiljangajji-coding.tistory.com

 

 

 

제가 이번 세션에서 가장 인상깊게 들었던 부분은 추상화 레벨인데요 


같은 세계에서는 추상화의 정도가 같아야 한다. 라는 의미입니다.
와 이건 정말 생각하지 못했던 부분이라 놀랐는데요 

이런 피드백을 한번쯤은 들어보셨을 겁니다.

"메서드 여러개로 분리해라" 

이유는 간단한데요 거대한 기능을 하나의 메서드로만 관리하면 너무 많은 책임을 갖게 됩니다.
기능이 고도화 될 수록 메서드는 더욱 거대해지고 이는 직관적으로 표현하기가 어려짐을 의미합니다.

따라서... 책임의 분리 -> 직관적인 표현 + 유지보수의 편의성을 위해 메서드를 분리 하는 것인데요

하지만 "그럼 정말 모든 메서드를 기능별로 하나하나씩 쪼개서 최대한 작은 단위로 만들어야 하나?" 라는 질문을 한다면  
저는 아니요 라는 답변을 할 것입니다.

여러 행위를 한다 해도 그것이 하나의 주제와 문맥으로 설명 가능하다면 하나로 만들어도 된다 생각합니다.

왜냐하면 메서드가 많아지는 것도 직관적인 것과는 거리가 멀어지기 때문입니다.
메서드를 분리한다는 것은 결국 코드의 양이 늘어난다는 것이며 누군가가 내 코드를 다룰 때 찾아봐야 하는 부분 또한 늘어납니다.
따라서 마냥 쪼개는 것이 좋다고는 생각 안합니다.
 


그리고 이런 고민은 커밋을 할때도 똑같이 발생 하는데요
커밋도 한번에 많은 양을 올리지 마라 , 쪼개서 하나의 단위씩 올려야 좋다. 라고 말하곤 합니다.
그럼 정말 하나의 코드 변경 = 1커밋 이여야 할까? , 만약 우리가 리펙토링을 통해서 이름을 변경했다고 했을 때
A이름변경 , B이름변경 , C이름변경 ......... 이렇게 이름변경에 관한 커밋을 수십개씩 쪼개놓았다면 어떨까요?

코드를 리뷰하려고 봤는데 커밋이 수십개씩 쌓여있으면 리뷰하기가 겁나는 경험이 있으실 겁니다.
설령 그것이 큰 내용이 없는 코드라 할지라도 너무 잘게 쪼개져있으면 집중력있게 리뷰하는 것은 어려워 집니다.
중요한 변경사항이 아니라면 차라리 묶어서 표현하는게 좋지 않을까요? User 관련 객체 이름변경.. 등으로

 

이렇게 되면 머리가 아파집니다. 무작정 쪼갤수도 , 무작정 합칠수도 없다면 무엇을 기준으로 쪼개고 합쳐야 하나?? 라는 것이죠
이 추상화 레벨에 대한 것은 판단에 대한 하나의 기준이 될 수 있다 생각합니다.

-> 지금 얘가 가지고 있는 추상화 레벨의 정도가 주변의 것들과는 조금 다른거 같은데??
-> 위에는 전부 강하게 추상화하여 구체화를 숨기고 명시적으로 어떤 기능을 할 것임만을 말했는데 갑자기 구체화가 등장하네??
-> 아 이거는 메서드 분리 해야겠다

와 같은 흐름을 통하는 것이죠 , 이 부분에 대해서는 기존에 생각했던 것이 아니라 참 인상깊은 부분이였습니다.

'클린코드' 카테고리의 다른 글

그래서 클린코드가 뭐냐  (2) 2024.10.06
클린코드&테스트 - 객체지향과 SOLID  (2) 2024.10.03

구름톤 Univ에서 제공하는 온보딩 세미나에 다녀왔습니다.

이번 세미나에서는 다음의 발표 세션과 연합 해커톤인 "단풍톤" 일정에 대한 발표가 있었는데요,

기획/개발 파트에 대한 세션을 따로 두어 발표자와 위치가 전부 나누어져 있어
조금 더 핏하게 들을 수 있었습니다.

아무래도 구름톤 Univ의 핵심은 단풍톤 이기 때문에 해커톤과 관련된 내용들이 많았는데요

특히 MVP를 만들어나가는 과정에 대한 내용이 참 좋더라구요 
애자일하게 개발하자! 라고 말하며 문서에 의존적으로 개발하고있지 않았나 생각하게 되는 부분이 있었습니다.

그리고 이건 너무 귀여워서 찍었습니다.

저도 언젠가 전지전능 백엔드 개발자가 되고싶네요..
프론트엔드 하시는 분들은 전반적으로 백엔드 보다 훨씬 딱딱한 느낌이 덜한거 같아요 
저도 백엔드 개발자지만 백엔드 하시는 분들은 뭔가.... 좀... 그런 느낌이 있거든요 

 

NHN 견학, INFCON 2024, Univ 세미나, 그 외 기타 동아리나 학교에서의 명사 초청 등 이러한 활동들의 경험이 꽤나 쌓였는데요

느끼는 점은 관련된 경험이 쌓일수록 또 저 스스로가 성장할수록 더 많은 것을 보고 느낄 수 있는 것 같습니다.
세션 전체에서 인사이트를 얻어갈 순 없지만, 하나의 세션에서라도 무언가 얻어가는 게 있다면 충분한 가치를 한다고 생각합니다.

이번 세미나는 굉장히 만족스러웠습니다. 개인적으로는 INFCON보다 더 만족스러웠는데요, 사실 INFCON의 내용들은 제가 완벽히 이해하기에는 어려운 부분이 있었습니다.

무언가 인사이트를 얻어가기보다는, "와, 저 사람 정말 대단하다" 이런 느낌이었던 것 같아요.
물론 그들과 함께하며 언젠가 그들의 동료로서 같이 서겠다는 마음은 얻어갈 수 있었지만요.

단풍톤 이전에 세종대 Univ와 건국대 Univ와의 연합 해커톤이 계획되어 있는데요, 잘할 수 있을까? 라는 걱정이 들기도 하고
동시에 설레는 느낌도 있습니다. 하지만 역시 이리저리 구르고 고생하는 게, 돌이켜보면 가장 성장할 수 있는 기회가 많은 것 같습니다.

하반기의 목표는 최대한 많은 경험을 해보자였습니다.
그러다 보니 버겁게 느껴지는 부분도 있지만 항상 그 속에서 즐거움과 행복을 느끼려고 노력하는 것 같습니다.
모두 파이팅.

'회고 > 활동' 카테고리의 다른 글

SIPE 3기 합격 후기  (4) 2024.10.14
데브코스 커리어 TALK 후기  (2) 2024.10.14
제 11회 대한민국 SW융합 해커톤 본선 후기  (4) 2024.08.28
[INFCON] 2024 후기  (4) 2024.08.03
[kakao x goorm] 구름톤 Univ 3기 합격 회고  (1) 2024.07.29

최근 해커톤 일정을 소화했습니다.

첫 해커톤이기도 했고, 총상금 5,100만 원의 규모인 큰 대회였기 때문에 상당히 떨리는 마음으로 진행했는데요.

예선의 경우에는 참가 신청서 및 PPT 발표 영상 제출을 요구했습니다. 여기서 통과하면 본선에 진출하는 구조였습니다.

하지만 아쉽게도 수상은 하지 못했습니다.
본선을 진행하면서 느낀 점이 있는데요, 바로 "올바른 도메인의 이해"입니다.

저는 해커톤이 개발을 하는 대회라고 생각했습니다.
아니, 이름에 "해커"가 있는데 당연히 개발하는 거 아닌가?라는 생각이었죠.

그래서 기술적인 부분들에 대해 고민했던 점이 많습니다.
얼마나 많은 부분을 구현하느냐에 초점을 두고 진행하였는데,

해커톤이라는 도메인 안에서는 얼마나 구현되었느냐, 기술적으로 우수하냐보다는
앞으로 "구현될 프로젝트의 기획"을 보는 것 같습니다.

개발 기간 3일일 때 알아야 했는데, 깨닫지 못한 부분이죠.

실질적으로 개발을 하는 시간보다는 기획을 보강하고 발표 포맷을 준비하는 데 더욱 많은 시간을 써야 했다고 생각합니다.

또 한 가지 미안한 마음이 드는 것은 본선 발표에서 우리 팀이 준비한 것을 제대로 설명하지 못했다는 점입니다.

사실 이 부분이 가장 마음에 걸립니다. 발표를 맡은 책임을 다하지 못했다는 생각이 듭니다.

상당히 미안하고 자책도 하고... 그런 상황인데, 팀원들은 최선을 다했으니 괜찮다고 말해주지만
미안한 마음은 어쩔 수 없네요.

제가 더 잘했으면 수상도 가능했을 것 같은데 많이 아쉽습니다.

그리고 당연한 이야기지만, 잠은 얼마 못 잤습니다.
많이 힘들어요.

마지막으로 해커톤을 준비하시는 분들이 있다면,
로그인, 회원가입, 기타 차별성을 두거나 핵심이 되지 않는 로직들은 구현하지 않아도 될 것 같습니다.

저희 팀은 배포해서 CI/CD 구축도 했지만, 우리 팀을 제외하고는 그 누구도 들어가 보지 않았습니다.

그냥 발표자료에 있는 시연 영상을 만들 정도면 됩니다.

실질적으로 배포되어 서비스 가능한 상태가 아니더라도 로컬 환경에서 만들어서 프로세스가 진행되는 것처럼 만들어도 발표하고 평가받는 데 전혀 문제가 없는 것 같습니다

하지만 다른 대회의 경우에는 다를 수 있음으로 잘 판단해서 하시길 바랍니다.

그리고 시설은 기대했던것 보다 훨씬 괜찮았습니다. 샤월실도 있고 매우 만족했어요 다만 잠자는 공간이 부족해서 바닥에서 자기도하고 그랬네요

 

마지막으로 함께 본선까지 힘내준 팀 사진 올리며 마무리 하겠습니다.

팀 C.I.A 본선 사망.

인프콘 2024를 다녀왔습니다.

개발자를 준비하면서 꼭 한번쯤은 이런 활동을 해보고 싶었는데요, 마침내 달성했습니다.

저는 “동료”라는 말을 자주 쓰는데요, 일을 하는 조직이 아니더라도 특정한 생각과 경험을 공유하는 집단에 속한다면 전부 동료가 아닌가 생각합니다.

저는 아직 현업의 개발자는 아니고 어떻게 보면 학생이자 취업을 준비하는 취준생 신분이지만, 인프콘에 참여해 활동하는 순간에는 백엔드 포지션의 한 사람으로서 제가 우러러보는 그들과 동일한 경험을 하게 된다고 생각합니다.

그런 점에서 인프콘은 그들의 “동료”로서 함께할 수 있는 시간이었습니다.

또 처음이다 보니 설레는 마음도 있었고, 나만 없는 개발자스러운 티셔츠와 개발 관련 스티커들이 탐나기도 했습니다.

할 수 있는 활동은 다 해보고 싶어 기업 부스도 돌고 네트워킹 파티도 참가하고 여러 세션도 들었는데요, 인프콘이 끝난 후 느낀 점은 “다음번에는 소비자가 아닌 생산자로서 인프콘에 와보고 싶다”였습니다.

정말 단순한 활동이라 할지라도 그들의 경험을 만드는 데 있어 내가 일조할 수 있다면 그것 자체가 큰 의미라 생각하거든요.

곧 백엔드 스터디 팀장 자격으로 구름톤 유니브의 임원들과 만나는 시간을 갖는데요, 제 개인적인 바람으로는 우리만의 작은 컨퍼런스를 열어 각자 발표하고 유튜브를 통한 기록을 남기는 것을 구상 중인데, 정확히 어떻게 될지는 모르겠습니다.

오늘은 참 인상 깊은 하루였습니다.

제 맥북에는 스티커가 덕지덕지 붙여졌고 앞으로의 만남에는 기업의 로고가 박힌 티셔츠를 입고 갈 거거든요.

앞으로 이런 기회가 더욱 많아지면 좋겠습니다. 감사합니다.

구름톤 유니브에 합격했습니다.

https://9oormthon.university/

아마 “구름톤”은 많이 들어보셨을 텐데요, 한국에서 가장 유명한 해커톤이 아닌가 생각합니다.
이름에서 알 수 있듯이 구름톤 유니브는 대학생을 대상으로 해커톤을 개최하는 것을 목표로 합니다.

카카오와 구름에서 후원하는 연합 동아리이며, 기업에서 이름을 걸고 후원하는 만큼 보통의 동아리보다는 낫다고 생각됩니다. 

대학교를 기준으로 각각의 “미르미”를 모집하고 활동하는 구조라,
지원하지 않는 대학교는 참여할 방법이 없다는 조금 아쉬운 점도 존재합니다.

저 같은 경우에는 BE 포지션으로 지원했으며 1차 서류, 2차 면접 후에 최종 합격했습니다.

서류에서는 다음의 문항을 작성했으며 아마 공통된 양식으로 다른 대학교들도 비슷하지 않을까 생각합니다.

1. 본인을 소개해주세요. (700자 이내)

2. 구름톤 유니브를 통해 얻어가고 싶은 점을 알려주세요. (500자 이내)

3. 지원 파트로 가장 애정있게 참여했던 프로젝트와 본인의 역할을 설명해주세요. (700자 이내)

이후에 포트폴리오랑 깃허브 링크 정도를 추가했습니다. (포르폴리오는 깃허브 README에 전부 개시되어있습니다.)

면접은 30분가량이었는데, 기술적인 질문보다는 판단과 이유에 대해서 질문을 받았습니다.

구름톤 유니브는 기업에서 후원한다고 해도 결국 연합 “동아리”이기 때문에 같은 대학교의 학생이 선별하는 방식이라 특별한 준비나 긴장을 하진 않았는데, 생각보다 질문이 날카로워서 놀랐던 기억이 납니다.

가장 기억에 남는 질문은 “오버엔지니어링과 MSA 아키텍처의 도입 의의” 정도였습니다. 그래도 나름 잘 답변해서 합격하게 되었고, 백엔드 스터디 팀장으로 3기 활동을 할 것 같습니다.

얼마 전에는 판교로 통합 OT를 다녀왔는데요, 제공되는 혜택이나 인프라가 매우 훌륭하기 때문에 공고를 유심히 보시다가 한 번쯤 지원해보시길 바랍니다.

아래는 OT 당일 찍은 사진입니다.

5개월만에 글을 써봅니다.

NHN 프로젝트 과정 마무리를 기준으로 하면 3개월 정도 됐는데요

분명 꾸준히 글을 쓰고 관리하려고 생각했는데 이게 참 쉽지가 않은 것 같습니다.
그럼 그동안 무엇을 했냐??...

놀았습니다.

좀 더 자세히 말하면.. 여행가고 게임하고 운동 했습니다.

항상 운동에 대한 열정이 있었는데 3개월 동안 정말 미친사람처럼 여한없이 한 것 같아요
또 글을 올리지 않는데도 불구하고 생각보다 많은 분들이 제 블로그를 방문해 주시더라구요

대충 계산해도 월간 200명 이상은 방문해주시는데 참 고마움을 느낍니다.
사실 글을 써도 아무도 봐주질 않으면 의미가 없다고 생각하거든요
글을 쓰는 이유 자체가 제 나름의 지식공유기 때문에 더 그런것 같습니다.

통계를 보면 NHN Academy 회고 글의 누적 조회수가 거진 2천회 정도 됩니다.
그만큼 아카데미를 지원하시려는 분들에게 도움이 됐다는 거겠죠??

또 최근에는 정보처리기사 자격증 시험을 봤습니다.
필기 합격을 해놓은 상태인데 전공자 기준으로는 짧게는 3일 길면 1주일 정도면 충분히 가능한 시험같아요

그 외에도 올해 SQLD , AWS Associate 자격증 정도를 취득하려 합니다.
취업에 필요하다고는 생각하지 않지만 정처기,SQLD 같은 경우에는 이미 갖고 있는 지식으로 충분히 취득이 가능해 보이고

AWS Associate 같은 경우는 다음에 진행할 개인 프로젝트에 AWS를 도입할 생각이기 떄문에
어차피 공부할겸 동기부여의 의미로 취득하려 해요

그리고 제가 정말 가고싶었던 INFCON 추첨에 당첨됐습니다.

시간표는 다음과 같이 작성했는데 이런 컨퍼런스는 처음이라 굉장히 설레네요

마지막으로 저는 9월에 복학하여 남은 학기를 마치고 졸업 할 것 같습니다.
내년에는 27살이 되는데 이게 마냥 적은 나이도 아니고.. 그렇다고 진짜 어른도 아니고..
참 애매한 구간인거 같네요, 저와 비슷한 나이대의 분들은 다 그렇게 느끼겠죠?

정말 두서없이 주절주절 글을 썼는데요 3개월간 정말 행복하게 푹 쉬었고 이제는 다시 달릴 떄가 오지 않았나 싶습니다.
다시 글도 열심히 써보고 , 기존의 글들도 수정하거나 보완할 생각이니 회고글 이외에도 많이 봐주시면 좋겠습니다.

감사합니다.

https://masiljangajji-coding.tistory.com/50

 

NHN Academy 4기 회고

NHN Academy(조선대) 4기 회고 여러 부트 캠프 중에 NHN Academy 관련해서는 정보가 많지 않아서 회고를 위장한 정보글을 써봅니다. 아카데미에 지원에 정보를 찾는 분들을 위해 글을 작성하는 것이며

masiljangajji-coding.tistory.com

작년 12월 31일 NHN Academy 관련해 회고 글을 썼었습니다.

제가 생각했던 거 보다 조회 수도 너무 잘 나오고 댓글도 많이 달려서
내 글이 많은 사람들에게 도움이 됐겠구나..라는 생각이 들어 기분이 참 좋네요

저번 회고 글은 회고를 가장한 정보글이었는데 이번에는 회고를 가장한 일기를 쓰려 합니다.

제목에서도 알 수 있지만 아카데미의 마지막 심화과정인 프로젝트 과정에 합격했습니다.
본 과정에서 팀을 이루어 함께 공부한 모든 분들이 프로젝트 과정에 같이 합격해 더욱 기쁜 마음입니다.

프로젝트의 팀원이 어떻게 매칭될지는 모르겠지만 저와 함께 공부했고 친하게 지내는 분들과 함께
과정을 수강한다는 것 자체가 저에게는 힘이 되는 것 같습니다.

예비과정부터 본 과정.. 스프링 과정.. 또 프로젝트까지
광주에서 생활하고 조선대학교를 집처럼 다닌 지 벌써 6개월이 지났네요

처음 광주로 내려와 공부를 할 때는 아무런 연고도 없이 내려와 참 외로웠던 기억이 납니다.
또 계절도 한 여름이라 몇 발작 걷는 것도 힘든데 조선대학교는 왜 이리 큰 건지..

그때 당시만 해도 본 과정 합격에 대한 확신이 없었기 때문에 방 계약을 할 수 없어
캐리어에 가방 하나 들고 모텔방에서 3주 정도를 지냈는데 그때가 가장 힘들었던 것 같습니다.

또한 과정을 진행하면서 정말 밀도 있게 개발에 대해서만 생각하고 하루건너 하루 밤새는 게 익숙해질 때쯤
개발자라는 직업에 대해서 고민하기 시작했고 당연하게만 생각했던 것에 대해 질문하게 됐습니다.

아.. 이거 개발자로 먹고사는 게 쉽지 않은 거 같은데.. 나는 진짜 개발자를 하고 싶나?
나는 개발자가 어울리는 사람인가? 나는 개발자로 평생을 먹고 살 수 있나?

그렇게 개발자에 대해 고민하고 제 나름의 답을 찾았을 때쯤부터는 단순히 취업만을 목적으로
바라보지 말고 내가 어떻게 하면 조금 더 얻어 갈 수 있고 조금 더 배울 수 있는지를 목표로 삼고
아카데미가 지원하는 과정들은 그것을 위한 수단으로 생각하게 됐습니다.

이렇게 생각하니 프로젝트 과정에 가야만 한다는 스트레스도 줄어들고 코드를 짜면서도
단순한 기능 구현에 끝나는 것이 아니라 더 좋은 방법은 없는지 고민하게 됐습니다.
아마도 이런 모습을 좋게 봐주셔서 프로젝트 과정도 합격할 수 있지 않았나 생각합니다.

어디에 취업을 하고 어떤 자격증을 따고 연봉을 얼마 받고.. 이런 것들이 목적 그 자체가 될 수도 있겠지만
저는 하나의 수단으로써 생각하기로 했습니다.

신년이 된 지 벌써 한 달이 지나 설을 앞두고 있습니다. 시간이 참 빠르게 지나간다는 생각을 자주 하게 되네요

이 글을 보시는 모든 분들이 기쁜일이 있으면 좋겠습니다.
감사합니다.

 

 

신입 개발자 취업 여정기 (feat: 가비아 인턴 합격)

들어가는 글안녕하세요 최근 정말 좋은 일이 있었는데요 백엔드 포지션으로 가비아에 합류하게 됐습니다.이번글은 합류의 과정과 제 개인적인 생각을 작성하려 합니다.서비스 회사에 가고싶다

masiljangajji-coding.tistory.com

 

 

2025년 상반기 회고 (feat: 카카오게임즈 최종탈락)

들어가는 글안녕하세요 오랜만에 글을 작성합니다.블로그를 꾸준히 이어가겠다고 다짐했는데,미디엄 기준 마지막 글 작성일이 5월, 티스토리 기준 2월인 것을 보면 반성하게도 되고돌아보면 글

masiljangajji-coding.tistory.com

 

+ Recent posts