오늘 한일

- 반복주기를 활용 한 ATDD 연습

  • 결론적으로 ATDD 연습 자체는 실패했다. 원인은 로그인 유무에 따른 분기가 되는 곳들로 어쩌다 보니 ATDD가 아닌 다른 공부(?)를 하고 말았다.

  • 방법이 없는 건 아니었지만 BasicAuth를 활용해 보고 싶어서 이리저리 고민했지만 결국 성공 하진 못했다.

  • 그러다 포비가 제공 한 테스트 코드들이 제대로 돌아가기 위해 필요한 부분들을 분석해 보게 됐다.

- 일단 알아낸 것들

  • Aspect (아마도…)

    aspect

    @Pointcut에 등록한 경로에 있는 public 메서드들은 doLogging(ProceedingJoinPoint pjp) 메서드 내부에서 실행되며 pjp에 현재 실행되어야 할 메서드에 대한 정보가 담겨 있다.

  • ControllerAdvice

    controllerAdvice

    정확한 타이밍은 모르겠지만(이름에 힌트가 다 있는 것 같지만..) @Exceptionhandler로 등록 해둔 예외 발생 시 @ResponseStatus의 값이 Response의 Status가 된다.

  • handlerInterceptor

    handlerInterceptor

    preHandle(), postHandle(), afterCompletion(), afterConcurrentHandlingStarteddl() 이 존재하며 Object handler에는 현재 수행되어야 할 handler가 담겨 있으며 위의 Pointcut보다 바깥쪽(?)에서 동작한다.

    interceptorRegistry

    위처럼 단순히 빈 등록만 하면 되는 게 아니라 registry에 추가도 해야 한다.

  • Resolver

    resolver

    supportsParameter()가 참이면 resolverArgument()를 수행하며, preHandle 다음 Aspect 이전에 동작한다. 다른 것들은 이름에서 어떠한 특징이 있는지 느낌이 오는데 얘만 잘 안 온다.

  • 그러나…
    어디까지나 포비가 구현해 놓은 코드와 로그를 찍어보며 분석해본 내용일 뿐 인터넷 검색조차 안 하고 한 분석이라 깊이도 없지만 틀릴 확률도 높다. 일단은 수박의 겉핥기만 한 수준이다.


오늘 느낀점

  • ATDD를 연습해보려다가 삼천포로 빠져 버렸다. BasicAuth를 활용해보는 것이 포비 코드 중 일부만 옮겨 오면 될 줄 알았는데 단박에 실패. 조금만 신경 써서 필요한 것들 옮기면 되겠지 했는데 또 실패. 에라 모르겠다는 심정으로 거의 다 옮기다시피 했는데 또 실패….(패지키 이름 등 조금 다른 부분이 있었다)

    그렇게 수 시간을 날려 먹고 오늘 뭐 했나 싶은 생각이 들어 결국 포비의 프로젝트를 이용하여 실습을 조금 진행하다가 카페에서 집에 왔다. 근데 아무리 생각해도 “그게 지금 내가 실패할 정도의 어려운 내용인가?”라는 생각이 자꾸 들어서 에라 모르겠다는 심정으로 어떻게 돌아가는 건지 뜯어보기 시작했다. 결론적으로 확실히 알진 못해도 어떤 식으로 사용하는 건지 느낌은 받은 것 같다. 또한, 며칠 전 Spring DI에 대한 질답 시간에 알게 된 내용들 덕도 본 것 같다.

    이젠 제대로 알려고 하면 검색해보면 될 것 같긴 한데 현재 코드들이 어떻게 돌아가고(순서적인 처리 및 어떻게 연결되어 있는지) 있는지 궁금했던 거라 일단 오늘은 이선에서 만족하고 차후 오늘 본 내용들이 필요하고, 공부해야 할 상황이 오면 오늘의 삽질(?)이 많은 도움이 될 것 같다.

  • 잘 짠 코드인지 아닌지 상관없이 해당 코드가 어떻게 돌아가는지 파악하는 게 즐거운 편인 것 같다. 특히 버그나 에러를 내고 있는 부분을 찾고 수정하는 게 나름 게임의 도전과제를 달성하는 것 같은 기분도 나고 승부욕이 드는 거는 것 같다. (그런 의미에서 내 코드가 아닌 남의 코드가 더 스트레스도 안받고…ㅋㅋ)


내일 할일

  • 정작 중요한 trello의 UML, ERD 작성이 미루어 졌다 이건 진짜 끝내자.(가능하면 하고 자자)

  • 내일은 trello에만 집중

오늘 한일

- 반복주기를 활용 한 ATDD 연습

  • 화이트 코스 때부터 반복적으로 만들어 본 반복 주기(유저, 게시글, 댓글 기능이 있는 간단한 웹 애플리케이션) 라면 전체적인 요구 사항을 알기 때문에 ATDD 연습으로 적합할 것 같아 연습 시작

  • 포비의 코드 없이 시작하려다가 Request, Response를 어떻게 만들고 무엇을 확인해야 할지 등 시작 자체를 못해서 일단 포비의 테스트 코드를 이용

  • 당장은 ATDD라기보다는 인수 테스트(일단 한글이 편하므로 인수 테스트라 부르도록 하겠다)를 하기 위해 필요한 기술들을 익히는 느낌으로 진행 중

  • User가 관련된 부분은 포비의 테스트 코드를 이용하고 있지만 차후 게시글, 댓글 부분은 직접 작성해 보도록 하자 (단, 게시글까지는 확실히 진행할 것이지만 댓글까지 진행할지는 미지수)

  • 내가 진행하고 있는 작업의 진척도를 볼 수 있다.(또한 무엇들을 만들어야 하는지도 알 수 있다)

    테스트

    login_Form이 왜 이렇게 오래 걸리나 싶었는데 현재 상태에선 첫번째 테스트 코드는 서버가 켜지는 시간까지 포함된다.

- 토글 스위치를 구했다!!

  • 이런걸 구했다.
    토글스위치

    구한 이유는

    쓸모없는

    요거!!

    저번 코드스쿼드 메이커 강의에 참석했다가 쓸모없는 기계 영상을 봤는데 생각 보다 간단한 구조일 것 같아 찾아보니 확실히 간단하다. 급 만들어 보고 싶어졌다.

    케이스 및 스위치를 밀 밀대(?) 빼고, 나머지 재료는 다 있으니 삘(?) 받을 때 작업해봐야겠다.

- 블로그 내에 버그 발견

  • 단순 미구현 부분이 아닌 제대로 된 버그로 모바일에서 볼 때 검색 버튼이 계속 따라다닌다.

오늘 느낀점

  • 어제 통합 테스트와 인수 테스트에 대한 구분을 JK를 통해 배워서 구분이 된다고 생각했는데

    @Test
    public void createForm() {
      ResponseEntity<String> response = template().getForEntity("/users/form", String.class);
      assertThat(response.getStatusCode(), is(HttpStatus.OK));
    }
    

    사용자가 회원 가입 페이지를 요청할 경우 해당 페이지를 보여주는 위와 같은 단순한 테스트의 경우 코드만 놓고 보면 통합 테스트인지, 인수 테스트인지 감이 덜 온다. (내가 이 테스트 코드를 작성 한 이유는 인수 테스트 범주 같지만 작성된 코드는 통합 테스트 같다는 느낌이 든다)

    일단 그걸 구분 짓는 시험을 볼 것도 아니기 때문에 엄격한 구분을 지을 생각은 없지만 앞으로 ATDD를 하려면 적절한 인수 테스트를 설계해야 할 테니 조금씩은 의문을 갖고 고민을 해 볼 만한 것 같다.
    (혹은 요구 명세나 설계 명세를 보게 되는 경험들을 쌓다 보면 자연스럽게 알게 될 수도 있으니 미루는 것도 나쁘진 않을 것 같다.)

  • ATDD를 연습해보려다 준비 단계에서부터 생각 보다 오랜 시간이 걸리기도 했다. 또한, 아직은 제대로 된 인수 테스트를 하는 것 같진 않다. 그래도 못하기 때문에 잘 하기 위해 하는 연습이기도 하고 일단 잘 하려는 것보단 ATDD가 무엇인지 체험하는 형태 및 인수 테스트를 위해 필요한 것들을 사용하는 법을 익히도록 하자.

  • 아직 많이 부족하여 느리게 진행이 되고 있지만 ATDD를 통해 개발을 해보니 이전에 하던 방식과는 전혀 색다른 경험을 하는 것 같다. 너무 편하다!! 일단 브라우저를 킬 필요가 없다. 비록 초록 불이 뜨는 걸 본 다음 실제 동작하는지 직접 확인을 해보긴 했지만, 어디까지나 최종 테스트로서 딱 한 번만 수행했다. 또한 하나의 인수 테스트가 완료될 때까지 이클립스를 떠날 필요가 없었다.

    이로 인해 테스트를 위해 브라우저를 키는 동작이 사라지므로 개발의 흐름이 끊기는 일이 사라졌다!!! 단순히 흐름이 끊기지 않는 정도가 아니라 내가 개발하고 있는 서버 단의 작업에만 집중을 할 수 있는 환경을 제공해 주는 것 같다. 정말 좋은 것 같다.

    귀찮은 수동 테스트를 안 할 수 있는 것도 정말 큰 이득이지만 개인적으로 가장 좋은 점은 작업의 흐름이 끊기지 않고 내가 집중해야 할 것에만 집중할 수 있다는 점이 좋은 것 같다.

  • 블로그 내에 미구현된 것이나, 활용하지 않고 있는 기능들이 있었는데 일단 블로그 자체보다는 기록을 남기는 공간으로서 의미가 더 컸던지라 다른 할 것들도 많기에 작업을 할 생각조차 안 했는데 구현을 마쳤던 검색 기능에 대한 버그를 최근에 알게 되었다.

    심지어 그냥 넘어갈까 싶었는데 무려 그 마음을 먹은 다음날 JK가 버그 신고를 해주셨다. 미구현 된 거야 개발이 완료 안 된 거지만 구현이 되었는데 잘못된 건 잘 못 된 거니까 조만간 고쳐야겠다.

  • ATDD을 연습하는 게 익숙지 않다 보니 생각 보다 늦고, 재미도 있다 보니까 trello에 대한 UML, ERD 작성은 뒷전으로 두고 하나도 안 했다….. 다음 주부터 제대로 시작하려면 내일은 꼭 해야겠다.


내일 할일

  • trello에 대한 UML, ERD 작성

  • ATDD 연습

04~05일 한일

- 트렐로 시작 전 객체에 대한 UML, ERD 그려보기

  • 이틀에 걸쳐 TIL을 작성하게 된 원인으로 UML, ERD에 잘 못 알고 접근하다 첫날 삽질 함…

- Spring DI에 대한 QnA 시간

  • ApplicationContext에 등록할 AppConfig 클래스에서

    @Bean
    public DataSource dataSource() {
      BasicDataSource ds = new BasicDataSource();
      ds.setDriverClassName(DB_DRIVER);
      ds.setUrl(DB_URL);
      ds.setUsername(DB_USERNAME);
      ds.setPassword(DB_PW);
      return ds;
    }
    @Bean
    public JdbcTemplate jdbcTemplate(DataSource dataSource) {
      System.out.println("jtjtjtjtjtj");
      return new JdbcTemplate(dataSource);
    }
    

    Controller, Service, Repository 객체 외에 위처럼 @Bean으로 Spring 빈 컨테이너의 빈으로 등록하면 생기는 이점으로 간편히 내가 원하는 JdbcTemplate를 바꿔 등록하는 것만으로 손쉽게 다른 Jdbc를 사용할 수 있다.

  • applicationContext를 이용하면 bean factory를 사용할 때와 다른 점은 이벤트를 지원한다는 것인데 자바스크립트의 리스너와 비슷하게 특정 동작이 실행되면 그에 따른 후속 동작을 설정할 수 있다. (관련 키워드 : 트리거, 리스너, 콜백, 옵저버 패턴)

  • 빈 컨테이너의 생명 주기는
    ServletRegistration.Dynamic dispatcher = servletContext.addServlet("next", new DispatcherServlet(webContext));
    

    보시다시피 서블릿과 같이 한다.

  • Bean Initialize와 Destroy : 빈이 생성되고 소멸(?) 될 때 자동적으로 수행 시켜야 할 초기화, 제거 작업들을 구현할 수 있다.

  • 특정 Interface를 구현해 Initialize와 Destroy 작업을 구현할 수 있다.

    • XML 설정 파일은 init-method, destroy-method를 지정해 Initialize와 Destroy 작업 메소드를 지정

    • 메소드 레벨 @PostConstuct, @PreDestroy 애노테이션을 통해 Initialize와 Destroy 작업 메소드를 지정

  • 빈 컨테이너를 이용하는 경우

    public class AnswerDao {
    	private static AnswerDao answerDao;
    
    	private AnswerDao() {}
    
    	public static AnswerDao getInstance() {
    		if (answerDao == null) {
    			answerDao = new AnswerDao();
    		}
    		return answerDao;
    	}
    

    위와 같이 static 인스턴스 하나를 통해 싱글톤을 유지하는 것이 아니라 빈 컨테이너에 일반적인 인스턴스 하나를 저장해 둔다.

    차후 빈 컨테이너를 통해 해당 빈을 이용하면 계속 같은 인스턴스를 받게 된다.

- Java static의 공유 범위

Java static의 공유 범위는 Classloader 기준이다.

  • Tomcat7의 Classloader 구조도
    Classloader

    톰켓은 각 Web Application마다 classloader를 따로 사용

  • 메모리에 불려 오는 순서

    Bootstrap -> System -> Common -> Webapp1, Webapp2
    

    이 순서로 해당 static 인스턴스를들이 메모리에 적재되기 때문에 차후에 불려오는 곳에선 이미 존재하는 static 인스턴스를들을 참조 가능하다.

    즉, Common에 static으로 선언되면 Webapp1과 Webapp2가 동일한 인스턴스를 참조한다. (출처)

- ATDD 강의

atdd

VModel

아주 당연하게 설명하면 TDD가 단위 테스트부터 시작하듯이 인수 테스트부터 시작하면서 개발

  • 통합 테스트 (출처)

    • 모듈을 통합하는 과정에서 수행 되는 테스트
    • 모듈 간의 상호 작용이 올바르게 되는지를 검사하는 테스트
    • 통합 테스트에서 오류가 발생 되는 경우
      • 개별적인 모듈에 대한 테스트가 불충분하여 오류가 발생
      • 제한된 상황만을 고려하여 작성한 테스트 스텁으로 인해, 실제 모듈과 통합 하는 과정에서 오류가 발생
      • 전역 변수 등으로 인해 모듈간의 예기치 못한 상호 작용이 발생하여 오류 발생
  • 인수 테스트

    • 사용자 입장에서, 실제 사용자 환경에서 테스트를 수행
    • 인수 기준을 만족하는 가를 검사하는 것이 주요 목적

04~05일 느낀점

  • UML, ERD에 대해 아예 잘못 접근하는 바람에 4일 작업 한건 다 날리다시피 했는데… 그래도 오늘은 ERD에 대한 큰 그림은 어느 정도 끝난 것 같다.(그러나 영 불안하다..) 일단 UML도 작업해 본 다음 제대로 그려보자.

  • Spring DI에 대한 QnA 시간을 가졌는데 요즘 머리가 굳은 느낌이었는데 포비가 답변을 유도하는 과정에서 오랜만에 두뇌 활동을 제대로 한 것 같다. 그 감각을 제대로 유지해 두 자. 아, 빈 컨테이너에 대해 확신도 못 가지고, 개념도 제대로 세우지 못하고 있었는데 QnA 시간을 통해 제대로 알아 둘 수 있게 된 것 같아 다행이다. (질답 시간에 제대로 이해 못한 개념이 있는데, 오늘은 잠 좀 푹 자고 좀 더 정신이 맑은 상태서 더 생각해보자)

  • Classloader 관련해서 static 인스턴스의 참조 가능 영역을 위에 참조한 그림 상에서 위에 위치하는 것을 상위 클래스라고 아예 거꾸로 생각하는 바람에 이해가 안 됐는데 그 부분을 포비가 교정을 해주셔서 제대로 이해하고 넘어 가게 됐다. 해당 부분을 질문할까 말까 하다가 물어봤는데 안 했으면 큰일 날뻔했다. 해당 자료를 준 브라이언한테도 감사하다. static인 경우와 빈 컨테이너로 관리할 때의 차이에 대해 어렴풋이 생각하던 개념을 정리할 수 있었다.

  • ATDD에 대해 배웠는데 저녁에 해당 내용 좀 보다가 잠시 아밍과 대화 중 통합 테스트와 인수테스트의 차이점에 대해 구분이 잘 안돼서 고민 하다가, 야근 중이시던 JK한테 문의! V 모델을 통해 설명을 해주셨는데

  • 원래 주말에 자꾸 잊어버려 가는 레벨 4를 복습해보려 했는데 ATDD가 재밌어 보인다. 이미 자주 해본 반복 주기 내용을 ATDD로 개발을 해보면 좋은 연습이 될 것 같다. 흐음… 좀 더 급한 건 복습인데 주말에 아마도 ATDD 연습을 할 확률이 높을 것 같다.


내일 할일

  • trello에 대한 UML, ERD 작성

  • ATDD 연습 혹은 레벨 4 복습 시작

  • Spring DI에 대한 복습

02~03일 한일

- 2017년 회고록 작성

- Spring DI 실습

  • QnaService, QuestionDao, Question을 애노테이션을 이용하여 Spring 빈 컨테이너로 관리

- 주석의 새로운 기능 발견(사실 저번 주에 발견)

  • 저번 주에 DI 프레임워크 실습을 하면서

    주석_효과

    이런 형태로 한글로 된 포비가 작성한 것 같은 설명이 메소드 위로 마우스를 올려 났을 때 발견!

    어떻게 한 걸까 궁금해서 보니

    내부

    아래 드래그 된 곳처럼 /** 형태로 시작하는 주석일 경우 해당 기능이 작동하는 걸 발견.
    실제로 위에 예제에 보이는 것처럼 나도 사용을 해보니 잘 나온다.

    /** */ 형태의 주석은 JavaDoc 주석이라고 해서 자바의 문서를 만들 때 사용한다고 한다.


02~03일 느낀점

  • 회고록 작성을 원래는 31일까지 작성하려다가 생각보다 밀려버렸다. 1일 새벽에 작성하면서 할까 말까 계속 고민하다가 한번 해봤다. 고민의 큰 이유 중 하나는 글을 잘 쓰고 싶은데 너무 횡설수설에 쓸데없는 감정이 많이 들어간다는 점이었다. 과연 이런 글을 싸이월드도 아닌데 공개적인 곳에 올려도 될 것인가란 고민. 그러다 지금은 창피한 글들이지만 그런 식으로 머뭇 거리면 글 쓰는 법도 성장을 못 할 것 같기에 계속 작성했다.

    사실 새벽 4시쯤 절반 정도 작성했는데 피곤해서 자고 일어나서 다음날마저 해야겠다는 생각에 일단 누웠는데 아무리 생각해도 지금 안 하고 미루면 포기할 것 같은 기분이 들었다. 결국 그렇게 강행군… 약간 창피한 글이 작성된 것 같아 포비한테 검토해 주실 수 없을지 부탁드렸다가(로컬 상에서 검토를 받을까 싶었다) 다 작성하고 나니 그게 더 창피한 것 같아 결국엔 그냥 올렸다.

    그냥 많이 쓴다고 늘 것 같진 않기에 차차 글 작성 요령도 고민해보고 연구해 봐야겠다.

  • Spring DI 실습이 생각 보다 오래 걸렸다. 사실 해당 실습을 시작하기 전까진 금방 될 줄 알았는데 진짜 오래 걸렸다. 내용을 봤을 때 대충 이 실습이 무엇을 하는 건지는 알겠는데 정작 해 보려고 하니까 쉽게 안됐다.

    보통 무언가 안될 때 어느 부분이 막혔는지 의심이 되는 부분이 있는데 이번 같은 경우는 그냥 대책도 없이 멍~ 한 느낌으로 무엇을 해야 할지 감이 안 잡혔다. 개인적으로 이런 경우 집중이 안 된다…. 그러다 보니 오래 걸렸다. 인터넷을 찾아봐도 생각보다 머릿속에 덜 들어오고…

    대강 이 내용들이 스프링의 빈 컨테이너에 빈으로 등록하고 그 빈을 이용하여 객체들을 생성해 준다는 내용이란 건 알겠었다. 그래서 “어차피 주 실습 내용도 아니고, 설정하는 부분들이고, 이런 방식들로 저걸 해주겠지”란 상태로 넘어갈까란 유혹이 됐다. 사실 그러려고도 했다. 근데 그러려고 할수록 계속 찝찝한 기분이 뒤따라 그러지 못했다.

    결국 자바 웹 개발 워크북에 관련된 내용이 있어 해당 내용들을 참고하여 공부하고 겨우 성공해냈다. 성공하고 나니 Config 파일에서 @Bean으로 빈 등록, @Autowired, @Resource로 의존성 주입… 왜 이렇게 헤맸나 생각보다 간단한 내용이었다. 일단 밤늦게 성공해서 설정하는 방법들을 익혔지 전체적인 큰 그림은 다시 한번 확인해 봐야겠다.

    만약 해결을 안 하고 트렐로를 시작했으면 계속 신경 쓰였을 텐데 시간은 늦어졌지만 해결해서 마음은 개운해진 것 같다.


내일 할일

  • trello - 객체를 뽑아 보자. 어떤 식으로 실습을 할지 좀 더 구체적으로 생각해 보자

회고록을 작성할까 생각만 하고 있다가 Joshua님의 회고를 보고 나도 작성 해보자 마음 먹었다.

2017년 가시적인 결과물

  1. 리눅스 마스터 2급

  2. 정보처리기사

  3. 헌혈 100회 달성

2017년에 스스로 열심히 살아왔다고 생각을 한다. 그렇지만 작년 한해 무엇을 했냐는 질문을 받았을 때 객관적으로 증명을 할 수 있는 것들은 이게 끝일 것이다.

그렇다면 2017년도에 정말 무엇들을 했는지 한번 돌아 보자

1년


(굵은 글씨만 봐도 된다)

1월 - 임베디드 분야로 국비지원 학원 수료

  • 총 6개월 과정으로 3개월 이론, 3개월 프로젝트 과정이였다.

    • 이론 과정
      • C언어
      • 자료구조
      • 리눅스 시스템 프로그래밍
      • 리눅스 네트워크 프로그래밍
      • ARM(라즈베리파이….)
    • 프로젝트 과정 담당 역활
      • openCV를(파이썬) 이용한 영상 처리
      • TCP/IP 소켓, 시리얼 통신

    프로젝트 주 담당 영역이 영상처리였는데 보다시피 이론 과정과 상관없는 영역이다. 국비 지원을 통해 프로그래밍을 공부하면서 예전부터 관심이 있었던 영상처리 분야를 한번 해보고 싶었다. 해당 프로젝트 기간 때 안 해보면 임베디드 분야로 취직하면 해볼 기회가 없어서 욕심내서 도전해봤었다. 사실 국비 과정을 받으면서도 하드웨어가 결합된 분야가 아닌 좀 더 순수 소프트웨어 분야로 전향(?)을 할까 많은 고민을 했었는데 당시에는 결정을 못 지었다.

    덤으로 프로젝트를 위해 조금이지만 공부했었던 파이썬을 한두 번씩 유용하게 써먹는 것 같아 보람은 있다.(차후에 이런 것도 만들었다)

2월 - MCU 스터디, 이력서 지원 시작

  • 펌웨어 분야로 취직을 해야겠다는 생각을 가졌는데 학원에서는 mcu에 대한 실습이 부족했었다. 그래서 일부 수료생들을 모아 ATmega328에 대한 스터디를 진행했다.

  • 월 말에 이력서를 넣기 시작했다.

3월 - MCU 스터디, 리눅스마스터 2급 취득, 웹 혹은 모바일 개발자가 되기로 결심

  • Coretax-M3 스터디 진행

  • 학원서 리눅스를 공부했던 경험을 살려 시험을 봤었는데 3회분에 기출문제를 풀고 붙었던 걸로 기억한다.

  • 월 말에 한 회사에 합격을 했다. 그러나 이전부터 임베디드 분야로 취직을 하는 것에 대한 많은 고민이 있었다.

    전자 쪽 전공을 했으니 스스로를 아는지라 냉정히 말해서 하드웨어 분야는 적성도, 호감도 적었다. 그러나 국비 과정을 통해 경험한 소프트웨어 분야는 생각보다 적성에 맞았다. 또한 재미도 있었다. 어떻게 보면 고민할 것도 없지만 문제는 취업 준비기간이 늘어난다는 것이었다.

    취업에 대한 불안감 때문에 또 다른 준비를 해야겠다는 결심을 못하고 붙은 회사에 가야겠다고 생각했다. 그런데 흔한 면접 질문인 미래의 나를 생각해보았다. 해당 분야의 일을 1년 혹은 2년은 고민 없이 열심히 할 수 있을 것 같았다. 3년, 5년 후엔 아무런 열정 없이 단순히 돈을 벌기 위한 삶을 살 것 같았다. 그리고 지금의 선택을 후회할 것 같았다. 그런 생각에 다다르자 고민이 끝났고 결심이 섰다. 합격한 회사를 가야겠다는 결심이 역설적으로 안 가야겠다는 결정으로 이어졌다.

4월 - 정보처리기사 필기 준비

  • 여러 고민 끝에 분야는 백엔드, 학원은 코드스쿼드라는 결정을 내렸다. 학원 측에 문의하니 7월에 화이트 코스가 열린다 하여 그 사이 정보처리기사를 따보자고 마음먹었다.

  • 만약에 정보처리기사를 공부했는데 자격증을 못 따면 해당 공부를 한 기간이 아무것도 안한 공백이 될 수도 있다는 생각에 확실히 따고자 4월 내내 집중하여 공부를 했다.

5월 - 정보처리기사 필기/실기 준비 및 생활 코딩 강의 시청

  • 필기시험 전까진 필기 공부만 하고 필기 결과가 나오기 전까진 생활코딩의 웹 애플리케이션 만들기를 봤다.

  • 필기 합격 발표 이후 실기 공부를 시작했다.

6월 - 정보처리기사 실기 준비, 자바 공부 시작

  • 5월 18일 필기 합격 발표, 실기 시험일 6월 25일로 한 달간 실기 공부를 했다. 그 과정에서 DB 부분은 앞으로 웹 공부를 하게 되면 필요할 부분이라 판단되어 생활코딩에서 MySQL강의를 보고 실기 문제집에 있는 예시들을 직접 테이블로 구현해 가면서 공부를 했다.

  • 25일에 시험을 보고 집 가는 길에 서점을 들려 자바 기본서를 구매하여 집에 들어갔다. 당시 꼭 합격을 하고자 빡세게 공부를 했던지라 너무 지쳐서 이틀을 쉬고 28일부터 자바 책을 보기 시작했다.
    실기에 간혹 나오는 자바 문제는 public static void main(String[] args){} 이것만 외우고 내부 내용은 C언어에 맞춰서 공부했다.

  • 주관식으로 바뀌고 나서 합격률이 17%라는데 가장 큰 원인은 업무 프로세스 분야에 나오는 용어들이 문제인 것 같다. 나도 이 때문에 못 딸뻔했다.

7월 - 자바 공부, 모각코 참여, 화이트코스 시작

  • 구매한 기본서를 기반으로 자바 공부 시작, 객체지향은 처음이라 초기에는 클래스를 C언어의 구조체와 비슷한 무언가라고 생각하면서 공부를 했다.

  • 코드스쿼드에서 진행하는 모각코에 참여하여 과정에 대한 궁금증, 자바 공부에 대한 도움을 받았다. 추가로 백엔드, 프론트엔드에 대한 개념이 제대로 없어 무엇을 공부할지 고민이 되어 질문을 하니 당시의 박재성 마스터께서 “도스 창 같은 것에서 작업하는 게 적성에 맞는 것 같으면 백엔드를 하면 된다.”라고 하셨던 기억이 난다. (그런데 생각보다 터미널에서 작업할 일이 적다. 사기당한 것 같다?!)

  • 코드스쿼드 화이트 과정의 레벨 테스트 통과 후, 과정 시작 전 추천 공부 목록에 있던 웹 애플리케이션 만들기, HTML,CSS 개발을 위한 핵심 가이드, 자바스크립트에 대한 공부를 하고 7월 31일 화이트 코스가 시작됐다.

8월 - 화이트 코스(자바 백엔드)

  • 스프링의 존재조차 모르고 단순히 자바 문법만 조금 아는 상태로 들어가서 정말 많은 것들을 배웠다. 사실 8월 초까지는 백엔드 개발이란 게 TCP/IP 소켓부터 직접 구현해 나가는 것인 줄 알았다…

9월 - 화이트 코스 종료 및 복습

  • 9월 8일에 화이트 코스가 끝마쳤던 걸로 기억한다. 이후 자바 웹 개발 워크북을 이용한 공부 및 화이트 코스 때 공부한 내용들을 복습했다.

10월 - 16일 마스터즈 코스 시작, 객체지향 프로그래밍 공부

  • 16일 이전까진 지속적으로 화이트 코스 복습 및 마스터즈 코스에 대한 레벨 테스트를 진행했다.

  • 새로운 과정이 시작되고 스스로 자바 실력에 대한 부족함을 느껴서 바로 웹이 아닌 자바 공부를 더 하고 싶었다. 정확히는 객체지향적인 프로그래밍을 좀 더 연습하고 싶었다. 그렇게 총 5가지 레벨 중 자바에만 집중할 수 있는 레벨 2를 진행하였다. (아직도 부족하지만 당시의 결정이 참 잘한 선택이었던 것 같다)

11월 - 자바스크립트 공부, 웹 백엔드 공부

  • 레벨 2를 종료 후 레벨 4를 시작하기 전에 웹 작업을 할 때 자바스크립트로 인해 진행이 막히는 경우가 있어 일주일 간 자바스크립트를 공부했다. 목표는 원활한 DOM 조작 및 AJAX (내 경우 레벨 2는 뒷부분부터 시작하였고, 레벨 3각 없는 이유는 화이트 과정 때와 중복된다)

12월 - 웹 백엔드 공부

  • 프레임워크의 기능들을 직접 구현해 보며 Spring에 대한 공부

  • 웹에 대한 공부인 레벨 4를 시작하기 전 객체지향이 무엇인지 공부를 더 해야 하는 게 아닌가 고민을 했는데, 결국 프레임워크를 만든다는 것 자체가 객체지향에 대해 공부를 필요로 한다는 걸 알게 됐다.

  • 좀 더 자세한 내용들은 자바 웹 프로그래밍 Next Step라는 책에 있는 내용들을 학습한다고 생각하면 된다.

그외 - 지킬 블로그, TIL 작성

  • TIL(이라고 쓰고 일기라고 읽는다) 위주라 문제지만 8월 말부터 1일 1커밋을 하는 중이다. 위에서 언급한 내용들의 하루하루에 대한 내용들은 블로그를 통해 볼 수 있다.

    커밋

    1일 1커밋 이전 이력이 없는 이유는 깃을 사용하게 된지 얼마 안 되기도 했고, 이전부터 주로 사용하는 아이디도 바꾸고 싶었기 때문에 이김에 새로운 계정을 만들고 실행을 했다.

    이전아이디

  • 블로그에 기술적인 내용도 담고 싶었지만 제대로 실천을 못하고 있다.

  • 블로그와 TIL을 작성하는 건 초보몽키님과 당시 화이트 과정 때 블로그를 운영하시던 분들에게 자극을 받아 시작했다.

그외 2 - 세미나, 컨퍼런스 참여

  • AWS 서버리스(Serverless) 워크샵 시리즈 2017 1차, 2차

    • 당시엔 워크샵 내용을 따라 하기 바빠 제대로 된 학습이 안됐지만 최소한 aws에 대한 막연한 두려움은 사라졌다는 점에서 좋은 경험이 됐다.
  • W3C HTML5 Conference 2017

    • 웹 표준이 어떻게 만들어지는지 책을 통해서만 보다가 실제 관계자(?)들을 통해 듣게 되면서 웹 표준이 정의되기까지의 고군분투를 알게 되어 흥미로웠다. 웹 표준에 대한 시각이 바뀐 느낌이다.
  • DeveLOVE2017

    • 여러 개발자들을 만나볼 수 있는 좋은 자리였다. 이런 자리가 처음이라 좀 더 많은 사람들이랑 얘기를 못해봐서 아쉬운데 다음번에도 참석을 할 것 같다.

어쩌다 보니 달별로 무엇을 했는지 구분이 잘 되게 지낸 것 같다. 사실 가장 위에서 언급한 가시적인 결과물보다 더욱 중요한 일은 백엔드 공부를 시작 한 것이다.

여기엔 세 가지 중요한 점이 있다. 왜 백엔드이고, 코드 스쿼드냐는 점이다. 그리고 그전에 왜 임베디드냐는 점이다.

임베디드

2017년 회고록이지만 2016년까지 올라가게 된다. 일단 내 전공은 전자과(정확히는 조금 다르지만)로 16년 2월 졸업을 하게 됐다. 당시 자연스럽게 서류 광탈들을 겪으며 6월 말에 이르러서는 모든 지원에 탈락을 하게 된다.(당시의 좌절감과 절박함은 아직도 잊지 못한다…)

그렇게 어떻게 할까란 대책을 세우던 도중 국비지원이란 것을 알게 되고 주변에 국비를 다닌 친구를 통해 정보를 모았다. 일단 전공을 살린 전자과 쪽에 해당하는 과정은 없었다. 그러던 중 임베디드라는 것을 보게 됐다. 전공이랑 연관도 있고, 대학 1학년 때 교양필수로 비주얼 베이직과 C언어 수업을 들었을 때 나름 재미도 느꼈었고 과에서 소프트웨어 수업이 더 없었던 게 아쉽기도 했다.(당시의 난 아쉬워만 하고 혼자 공부해 볼 생각은 안 했다)

프로그래밍을 공부하면서, 일찍 자신이 좋아하는 것을 찾아 공부하던 형처럼 나도 그러고 싶었는데 이거다 싶었다. 그렇게 2016년 8월부터 임베디드 과정으로 국비지원 학원을 다니게 되었고, 처음으로 공부에 재미를 느끼고 공부란 것을 제대로 해본 것 같다. 그러나 한두 번씩 발목을 잡는 게 있었는데 회로 설계 및 하드웨어적인 요소였다. 시스템 프로그래밍조차 재미를 느꼈지만 정작 내 전공 분야엔 지속적으로 흥미가 안 갔다. 그러다 보니 이론 강의 기간부터 임베디드가 아닌 순수 프로그래밍 분야를 공부하고 싶다는 생각을 조금씩 했다. 그 결과 프로젝트 때도 하드웨어가 아닌 소프트웨어 분야를 담당했다.

국비 과정을 정말 열심히 했지만 3월 최종 합격 한 곳은 한군데 밖엔 없는데 그 이유는 내가 지속적으로 재미를 붙이고 일을 하고 싶어 회로 설계 혹은 해석을 요구하는 곳들은 빼고 나니 C언어만 아는 상태로 지원할 수 있는 곳이 굉장히 적었다. 한 곳에 합격한 이후엔 위에서 말한 것처럼 과연 내가 이 분야에서 5년 뒤에도 재미를 느낄까란 질문에 확실히 아니란 대답이 나왔기 때문이다.

코드스쿼드와 백엔드

3월에 임베디드가 아닌 모바일(안드로이드) 혹은 웹을 공부하기로 마음먹고 학원을 알아보던 도중 코드스쿼드를 알게 되었다. 코드스쿼드엔 안드로이드 과정이 없는 관계로 백엔드 혹은 프론트엔드를 공부하기로 결정했었다.

국비 학원을 다니면서 강사님은 좋았지만 학원의 학생들을 바라보는 관점에 엄청난 불신을 가지게 됐다. 특히나 과정 중간 우울증을 겪는 학생들이 있었는데 당시 학원이 취한 태도는 썩 좋지 못했다. 학생을 학생으로 보지 않는다고 느꼈다. 그게 너무 심했다.

국비를 다니던 도중 컨퍼런스를 참여했던 적이 있었는데 거기서 정호영 마스터를 봤었다. 강연의 내용은 대강 ‘나 자신이 중요하다’란 자존감에 대한 주제의 발표였다. 당시 “sudo rm -rf /를 해도 서버가 죽지 내가 죽는 게 아니다.”란 얘기도 했던 걸로 기억한다. 개인적으로도 인상이 깊었고 위에서 언급했던 친구들에겐 더욱 큰 도움이 되었다.

공부는 스스로 하는 게 중요하다고 생각했다. 내가 국비가 끝나고 또 한 번 학원을 찾은 이유는 제대로 된 방향으로, 좀 더 빠르게 학습을 하고 싶어서였다. 당시의 봤던 정호영 마스터라면 같이 하시는 다른 마스터들도 좋은 분들일 거라고 생각됐고 그런 코드스쿼드라면 내가 필요로 한 방향성을 제시해 줄 수 있을 것이라고 생각했다.

모바일과 웹에 대한 결정은 둘 다 해보지 못했기 때문에 동전의 홀짝을 맞추는 게임처럼 결과를 보기 전까진 알 수 없는 것이고, 둘 다 관심이 갔다. 그래서 일단 학원에 맞췄다. 이후 프론트/백엔드에 대해선 모각코에서 박재성 마스터와의 대화를 통해 결정을 했고 화이트 과정을 진행하며 좀 더 고민하기로 했고 프론트보단 백엔드에 더 큰 매력을 느꼈다.


잘한 것들

1. 자바, 백엔드를 선택 한 것

  • 일단 재밌고 스스로 잘하고 싶은 욕심이 난다. 이전에 가졌던 5년, 10년 후의 내 모습이 계속 재미를 느끼며 개발을 할 것 같고, 정말 그러기를 바란다.

2. 코드스쿼드를 선택 한 것

  • 기술을 배우는 것에 대한 것만 생각을 하고 왔는데 단순히 기술뿐만이 아닌 스스로가 어떤 개발자가 돼야겠다는 생각을 가지게 해준다. 아직은 추상적인 그 목표를 조금씩 구체화해 나가고 싶다.

3. 나만의 규칙을 가지고 만든 공부하는 버릇

  • 스터디를 진행 한 2, 3월을 제외해도 몇 가지 규칙을 가지고 공부를 진행했었다. 일단 코드 스쿼드를 다니기 전 정한 규칙은

    첫째, 2~3시에 카페를 가서 8~10시까지 공부를 한다.

    2시에 집을 나서기 직전 그 시간에 밥을 먹고 나면 어두워질 때까지 공부를 할 수 있어서 하루 종일 공부를 했다는 성취감을 느낄 수 있었다. 또, 집이 아닌 카페를 간 이유는 쉬는 공간과 공부하는 공간을 분리하고 싶었다.

    둘째, 공부에 집중이 안 돼도 8시 전까진 집을 안 간다.

    최소 카페에 있는 시간인 6시간 동안 공부를 아무리 안 해도 2시간은 책을 본다. 아무리 적어도 집에서 편히 0시간 공부하는 것보다 많은 공부를 하게 된다.

    셋째, 공부를 안 할 때는 이어폰으로 노래를 안 듣는다.

    약간은 다르지만 운동선수들의 루틴처럼 이어폰을 꽂으면 “이제 공부에 집중하자”라는 신호를 스스로한테 줬다.

    넷째, 특별한 약속이 없으면 매일 간다.

    코드스쿼드를 다니면서 정한 규칙

    첫째, 약속이 없으면 매일 10시까지 공부하고 간다.

    둘째, 약속이 있어도 6시 이후로 나간다.

    학원이 자신의 공부를 스스로 하는 분위기다 보니 일이 있으면 일찍 귀가를 할 수도 있다. 그래도 개인적으로는 6시 이전에 가는 일은 삼갔다. 어차피 친구들은 내가 없는 시간 동안도 잘 놀고 있는다.

    셋째, 최소 하루 전날 정해진 약속이 아니면 참석하지 않는다.(이전부터 그날 볼지 아닐지 애매한 약속은 예외)

    이걸 정말 중요하게 여겼는데 이유는 당일 갑자기 생긴 약속이 있으면 그날 공부를 제대로 마무리하지 못한 채로 끝내기 때문이다. 최소 하루 전날 약속이 정해져 있다면 다음날 공부를 얼마나 할지 계획하고 마무리할 수 있다.

    넷째, 평일에 하는 게 편한 개인적인 일은 수요일 낮을 이용한다.

    학원이 수요일은 자유로운 일들을 할 수 있는(?) 시간을 보장한다. 그래서 as 센터 방문 등 주말도 가능하지만 평일 낮에 하면 더 수월하게 할 수 있는 일들은 수요일을 활용했다. 단, 공부를 쉬는 날은 아니므로 볼 일들이 끝나면 늦게라도 공부를 했다.

    사실 규칙들 자체는 중요하지 않다. 애초에 이렇게 체계적으로 작성해서 지키고 있던 것들은 아니고 스스로 생각하고 지키고 있던 내용들이다. 핵심은 꾸준히 공부를 해왔다는 것이고 그 덕에 오랜 시간 공부를 하는 것이 힘들게 느껴지지 않게 됐다는 것이다.

4. TIL 작성

  • 몇 개의 TIL들을 읽어 보면 알겠지만 내가 느낀 고민과 불안감들이 많이 나와있다. 이렇다 보니 TIL이라기보다는 정말 일기에 가깝다. 거기다 1일 1커밋이 코드가 아닌 대부분 TIL을 통해 이루어진다는 점에서도 찝찝함을 느껴서 이것을 작성하는 게 맞는지 고민이 됐다.

    그래도 아직은 계속 유지하기로 결정한 이유는 고민들을 글로 작성하면서 고민이 구체화하 되고 그 과정을 통해서 스스로 생각을 해보는 시간을 가지게 되어 일부는 자연스럽게 해결이 되었다. 위에서 공부를 꾸준히 하고 있다고 했는데 아무 고민 없이 공부를 하고 있는 건 아니다. 그런 고민과 불안감들을 일정 부분 컨트롤할 수 있게 된다는 점에서 그날그날 느낀 내 감정들도 작성을 하는 중이다.

    게다가 수년 후 내가 지칠 때 지금의 노력하고 고민했던 기록들을 보면서 기운을 내고 계속 공부를 하는 동기부여가 되길 바라는 마음도 가지고 있다.

    1일 1커밋 부분은 contributions만 보면 TIL을 제외한 작업이 없다시피 한데 코드스쿼드의 과정을 진행하면서 branch를 나누면서 작업을 하다 보니 반영이 안되는 점도 있다. (default branch를 바꿔주면 되긴 하지만 이러면 정말 contributions을 위한 커밋을 하는 것 같아 말기로 했다)

    꾸준히 무언가 하는 게 쉬운 일은 아니라고 생각한다. 지금 TIL 작성을 멈추고 언젠가 새로 매일 코드를 작성하여 1일 1커밋을 하는 것보다. 차후에 TIL 작성 대신 코드를 매일 작성하는 작업으로 변경하는 게 더 쉬울 것 같다고 생각된다. 그래서 일단은 매일 무언가를 하는 버릇으로 유지하려고 한다.


나만의 학습 방법

  • 일단 코드스쿼드라는 학원을 통해 학습 과정을 진행하고 있으므로 해당 과정을 따르며 현재 진행하는 요구 사항이 무엇을 학습하기 바라는 건지 파악하며 진행한다.

    아무래도 전공자에 비해 경험이 부족하다. 그에 따른 격차를 줄이기 위해 내가 이번에 받은 요구 사항에서 얻어 가야 할 내용들을 모두 학습 함으로 적은 경험을 하더라고 밀도 있는 경험을 하기 위해 노력한다.

  • 과정을 진행하면서 추가로 학습하고 싶은 내용들이 있다면 잠시 과정을 멈추고 해당 분야를 학습한다. 예를 들면 자바스크립트를 통한 DOM 조작, 성공과 실패를 결정하는 1%의 네트워크 원리 등등

  • 인터넷에 좋은 자료들도 많지만 책을 통한 학습을 등한시하지 않는다. 부분적인 지식을 채울 때는 인터넷이 더 효율적이지만 긴 호흡을 가지고 봐야 하거나 기초적인 내용들은 전체적인 내용을 볼 수 있는 책 혹은 인프런, 생활코딩 같은 매체를 이용한 후 인터넷을 통해 추가적인 공부를 한다.


아쉬운 점들

1. 블로그

  • 만들어 놓은 블로그가 TIL만을 위한, 단순히 기록만 쌓이고 있는 블로그가 되다시피 한 이유 중 하나가 공부한 내용들을 정리해서 올리지 않고 있는 점이 크다. 공부한 내용들을 정리해서 올리면서 블로그 내에 정보도 채우고 학습한 내용들에 대한 복습을 하도록 해야겠다는 생각은 있지만 그 시간에 공부를 좀 더 할 수도 있다는 생각도 들어 쉽게 실천은 못했다.

  • 작성된 글 외적으로도 테마 적용 후 손봐야 할 작업들을 마무리하지 않았다. 예를 들면 프로필 작성, 사이드 바, 테마의 기본 글 등 몇 가지 손봐야 할 부분들이 있다.

2. 복습을 제대로 못하고 있다.

  • 여러 과제를 진행하며 중복된 내용들은 반복적으로 학습을 하나 이전에 학습한 내용에 대해선 반복이 안되고 있다 보니 조금씩 잊히고 있다는 느낌을 받는다.

3. 일찍 자질 못한다.

  • 일단 밤 10시까지 공부를 하고 오기도 하고 휴식을 하는 공간과 공부를 하는 공간을 분리하고 싶어서 가능하면 집에 와서는 공부를 안 한다는 원칙을 가지고 있다. 다만 새벽 2시 이후로는 추가적으로 공부를 하는 경우도 있고 아니라도 일찍 자지 못하고 있다.

    대학 시절부터 조용하기도 하고 그 특유의 분위기 때문에 새벽에 집중이 잘 된다. 그러다 보니 공부를 떠나서 늦게까지 안 자는 습성이 생긴 것 같다. 그래서 최근에 스마트워치를 차고 자면서 수면시간을 기록하고 있는데 평균 수면시간이 4~5시간이다. 오후에 그렇게 피로감이 없어 문제는 없지만 굳이 이 정도만 자야 할 필요가 없는 상황이라 일찍 자는 버릇을 들여야겠다.

4. 글을 잘 작성 하고 싶다.

  • 많이 작성하다 보면 늘겠지 생각했는데 제자리인 것 같다. 아무래도 똑같은 형식을 단순 반복하기 때문인 것 같다.

5. 아직은 어설픈 부분들이 있다.

  • 개념은 알아도 용어를 모르거나 발음법을 정확히 모르는 경우.
  • 의외로 git에서 충돌이 안 일어나서(?!) 충돌 시 해결 방법이 익숙지 않다.
  • 통일되지 못한 커밋 메시지.

6. 기술서를 제외한 독서는 많이 못하고 있다.

  • 기술서는 한달에 한두권씩 읽은것 같은데 개인적으로 읽으려고 산 책들은 한권 정도밖엔 못본거 같다.

공부를 하는 것에 대한 마음가짐

공부를 하면서 가장 중요하게 생각한 세 가지가 있다.

덴마

(출처, 부분이긴 하지만 웹툰을 캡처한 부분이 걸리는데 혹시 문제가 된다면 알려주시길 바랍니다.)

남들보다 더 잘하려고 고민하지 마라.
“지금의 나”보다 잘 하려고 애쓰는게 더 중요하다.
-윌리엄 포크너-

첫 번째나 두 번째는 결국 주변이 아닌 자신에 집중해서 노력을 하자는 것이다. 한 번도 다른 사람들한테 안 흔들렸던 건 아니지만 결국엔 남이 아닌 나 자신에 집중을 했다.

세 번째로 예전에 봤던 인터뷰 기사 내용이다.

게임을 하느냐 안하느냐가 중요한 게 아니라, 공부를 하느냐 안하느냐가 성적에 가장 중요하다.

내가 당일 약속은 참석하지 않기로 결정한 이유다. 그날 계획과 달리 약속에 참석하면 그날의 공부를 다하지 못하기 때문이다. 대신 약속을 일부러 만들지 않을 뿐 적당한 주기로 약속 참석 및 취미 생활도 하면서 공부를 진행했다.

추가로 술이 약해서 그런 것도 있지만 많이 마실 것 같은 날은 약속 다음날 오전 공부 일정까지 고려했다.

문제가 되는 건 내가 공부를 해야 할 때 놀거나 쉬는 것이지 그 행위들 자체가 문제는 아니다. 도리어 적당한 주기로 스트레스를 해소해준다는 점에서 어느 정도는 필요하다고 생각된다.


스스로 경계 하고 있는 것

  • 꾸준히 공부를 하고 있다는 사실에 안주하여 자신도 모르게 나태해지는 상황

  • 쉴 땐 쉬자. 한동안 매일 공부를 하다 보니 11월 경에 학습에 대한 슬럼프를 겪어서 잠시 휴식을 취하려고 했는데 쉬는 법을 까먹었는지 제대로 쉬질 못했었다. 다시 그런 일이 없도록 하자.


친구

약속을_자주_안가는_이유.jpg,

어차피_나_없어도_잘_논다.jpg

친구

덕분에 한 달에 한번 정도 혹은 세 달에 두 번꼴로 이 만나는 것 같다. 오랜만에 봐도 오랜만이라는 말도, 잘 지내냐는 말도 없이 먹을걸 잘 사준다. (심지어 2017년도에 배틀그라운드를 딱 두 번 해봤는데 치킨도 먹게 해줬다)

덕분에 친구관계에서도 공부에 집중하기 좋은 환경을 제공받는 것 같다.


2018년 상반기 목표

  • 웹 개발을 하며 회원 가입, 글 작성 들에 대한 테스트 코드 작성에 어려움을 느껴서 TDD를 지키지 못하고 수동 테스트를 한 경우들이 많았다. 최근 Mock 테스트도 배웠으니 웹 개발에서도 TDD를 지키며 개발을 하자.

  • 아쉬운 점들에 작성 한 내용들에 대해서 개선을 하자.

  • 아직은 취업 활동을 안 하고 있지만 차후, 객체지향적인 프로그래밍, TDD, 리팩토링 등 내가 추구하는 가치가 존중받는 곳에 입사하고 싶다.


마무리

정리하고 나니 2017년의 핵심은 결국 자바와 백엔드를 공부하기로 결정 한 것이 아닌가 싶다. 그러다보니 무엇을 하였나보단 그 결정이 어떻게 나오게 되었는지에 대한 얘기와 그러다보니 2016년에 한 것들과 그에 따른 결과들을 더 많이 얘기 하게 된 것 같다.

2017년은 씨앗을 뿌리는 것과도 같은 한해 였으니 2018년은 일단 그 씨앗에서 취업이라는 새싹이 자라나고 앞으로 그 새싹을 잘 키워나가 좋은 개발자가 되가는 한해가 됐으면 좋겠다.

나처럼 코딩 공부를 시작하고 자신만의 길을 찾아가는 사람이 있다면 내가 나만의 공부 방법과 내 길을 찾아가고 있는 것처럼 글을 보시는 분들도 자신만의 공부법을 찾아가길 바란다.

(사실 무엇을 배웠는지도 작성하려고 했지만 처음 시작한 것들도 많고 너무나 많은 것들을 배웠다. 그래서 어떤 것들을 쓰고, 안 써야 할지 분간이 안돼서 일단은 “많이 배웠다”란 말로 축약하기로 했다. 대신 하나둘씩 공부했던 내용들을 정리하며 블로그에 올려야겠다.)