티스토리 뷰

2019/11/16 토요일 오늘 열린 Devfest 2019 on Campus 이화여대 후기를 적어볼까 한다. 

 

 



우선, Timetable에서 나의 관심사는 Track B(빠르고 지속적으로 성장하는 방법) + Track C(오픈소스 참여 일지) + Track A(웹초보도 할 수 있는 WebVR/AR) + Track A(의식적인 연습으로 TDD, 리팩토링, 클린코드 연습하기) + Track A(GCP) 이었다. 

 

<<Track A - 빠르고 지속적으로 성장하는 방법 (Las/Buzzvil)>>

📌  첫 번째 세션은 가는 길에 길을 잃어 세션 시작 시간보다 10분 늦게 들었다. 연사자 분은 굉장히 공대생스러운(체크 남방) 모습이었는데, 뭔지 모를 고수의 향기가 풍겼다. 

 

 강의의 내용은 지속적인 성장방법, 예를 들어 반복적인 프로그래밍 연습 + 피드백을 받는 것이라는 내용이었다. 

사실 내용만 놓고 보면 평범한 조언 형식의 강연이었는데, 문제는 연사자가 고등학생이라는 것. 여기서 나는 1차 충격을 받았고, 더 큰 충격은 현재 회사에서 일을 하고 있다는 것이었다. 
 굉장히 흥미롭고, 기술적인 내용의 강연은 아니었지만 나이가 어림에도 불구하고 도전을 두려워하지 않고, 일단 부딪혀본다는 점이 인상깊었다. 

 

 

 


 

 

 

<<Track C - 오픈소스 참여 일지(강민철 - 서울시립대학교, 멋쟁이사자처럼>>


📌
평소에 오픈소스 기여에 대한 관심도가 높았기 때문에 고민 없이 Track C로 향했다. Track C의 연사자는 현재 멋쟁이 사자처럼에서 중앙 강사로 일하고 있는 서울시립대학교 컴공과 학생이었다. 

 본인이 오픈소스에 어떤 식으로 참여했고, 거기서 겪은 실패와 실패를 극복한 후기를 강연했다. 

 

연사자님의 실패담은 이러했다.

일단 오픈소스 기여를 어디서부터 시작해야 할지를 몰랐고, 코드 기여를 통한 기능 향상 만이 기여라고 착각했었고, 본인의 코드에 대해 다른 사람과 논의를 할 줄 몰랐고, 기여할 대상을 잘못 선정했기 때문이라고 했다. 

 그래서 이 실패를 극복하기  위해 연사자가 한 활동들은 이러하다. 

  • 개인 프로젝트 집중 
  • 오픈소스 경진대회 참여
  • User로 돌아가기 - 꼼꼼한 User, 분석적인 User 
  • 코드를 분석한 나름대로의 내용을 블로그에 작성하기

🔑 여기서 꼼꼼하고 분석적인 User란?

  • Github의 유명한 오픈소스의 Tutorial, WIKI 하나하나 읽어보고 분석하기
  • 모든 Feature들을 다양한 코드를 대상으로 사용해보기
  • 버그가 생기진 않을까 고민하기 

연사자가 참여한 오픈소스 경진대회에서 크게 Usecase, Code Commit, Documentation 3가지 팀으로 나뉘어 참여했다고 한다.

🔑 여기서 연사자가 중요하다고 했던 것은 Usecase와 Documentation이다. 

  • 내가 기여하고 싶은 오픈소스를 어디에 써먹을지 고민하는 것
    --> Github WIKI : 오픈소스를 사용하는 다른 프로젝트의 예시를 볼 수 있음
  • 이것의 중요성은 누가 문서를 작성했는지 알 수 있다는 것
  • Documentation 팀은 거의 오픈소스 번역과 오타 수정이었다
    --> 이것이 중요하냐고? Yes 절대 가볍게 여길 것이 아님
    --> 개발자가 키워야 할 주요 역량 중 하나는 문서화의 중요성을 아는 것

그렇다면 어떤 오픈소스에, 무슨 수단으로 기여해야 하며, Code Commit은 어떻게 쉽게 하며 무엇을 얻어갈까? 에 대한 연사자의 생각은 이러하다. 

  • 어떤 Open Source? 
    • 가장 기여할 확률이 높고, 성장률이 높은 오픈소스에 참여하라
      --> 활발한 논의가 이뤄졌던 프로젝트 선정하기(여기서 활발한 논의란, Maintainer의 피드백이 빠른 정도이다)
    • 가장 Best는 오픈소스 대회에 참여하는 것 
  • 무슨 수단으로 기여하나?
    • Git으로 기여하라 (협업을 위한, 관리를 위한) 
    • Commit Message를 스타 개발자들은 어떻게 쓸까?
      • 굉장히 길게 쓴다 --> 왜? 중요하다고 생각하기 때문에(오픈소스는 Commit이 모여 만들어지기 때문)
      • Commit Message는 그것 자체만으로도 참여자 모두를 이해시킬 수 있어야 하기 때문에 
  • 어떻게 Code Commit을 쉽게 하는가?
    • 오픈 소스 프로젝트에 기여하려면 엄청난 실력이 필요한가? No (네니요) 
      --> 전체 코드를 다 이해할 필요는 없다. 
      --> Hint는 Issue에 있다. Issue를 해결하면서 이 오픈소스의 발전 방향과 같은 방향으로 성장하는 것이 중요.

 

그렇다면 오픈소스 기여를 통해 무엇을 얻어갈 수 있을까? 에 대한 연사자의 생각은 이러하다. 

  • 이력/경력서에 한줄 적을 수 있다. 
  • 여기에 오픈소스 대회 수상 경력이 있다면 + 한줄 더 추가! 
  • 뛰어난 개발자들의 피드백을 얻을 수 있다
  • 클린한 코드, 수준 높은 코드를 읽고 쓰며 발맞추는 훈련을 할 수 있다
  • + 금상첨화로 영어 실력까지 향상시킬 수 있다. 


🔗 연사자 이메일/깃허브 

 

이 세션을 들으면서 정말 Github에 대한 많은 공부가 필요하다는 것을 느꼈다. 현재 나는 레퍼지토리만 생성해놓고 이클립스와 깃허브 연동조차 해놓지 않은 상태다. 나도 언젠가 Github를 자유자재로 만지면서 내 잔디밭을 초록초록하게 가꾸고싶다. 우선 해야할 일은 1. 이클립스 연동 2. 그동안 공부했던 소스코드 깃허브에 Commit & Push하기 이다. 야망팅!



 


 

 

 

<<Track A - 웹초보도 할 수 있는 WebVR/AR(유경수 - (주)올드루키, 삼육대학교)>>


📌
이 세션은 멀게만 느껴졌던 AR/VR 구현을 웹 구동에 필요한 HTML, JavaScript 만으로 실현할 수 있는 A-Frame이라는 프로그램에 대해 소개하는 세션이었다. 

 VR 과 AR을 합쳐 XR로 통칭해서 부른다고 한다. 브라우저를 통해 XR 구현을 위한 기기 정보를 제공하는데 센서 정보만을 제공해서 실제 렌더링은 Three.js를 이용해 구현한다고 한다. 

 

 연사자가 AR/VR 기술 관련 회사를 창업하면서 얼마나 쉬운(?) 방법으로 프로토타입을 개발할 수 있었는지에 대한 내용이었는데 굉장히 흥미로웠다. 제목 그대로 웹초보도 구현할 수 있는 WebVR/AR이었다. 

 하지만 결국 AR/VR을 구현하려면 3D에 대한 이해가 필요하다는 점이다. 또한 당장 빠르게 구현해야 한다면 A-Frame은 좋은 선택지임에는 당연하다는 것이고, 다만 사용자의 환경(모바일, PC, 컨트롤러의 여부 등)이 다르기 때문에 구현할 수 있는 기능이 제한된다는 것이다. 

 

 

 

 


 

 

<<Track A - 의식적인 연습으로 TDD, 리팩토링, 클린코드 연습하기(박재성 - 넥스트스텝, 우아한 형제들)>>

 

📌 정말 듣고싶었던 세션이었다. 현재 내가 진행하고 있는 FIFO 스터디도 클린한 코드와 리팩토링에 대해 고민하고 있기 때문에 더 열심히 들었던 것 같다. 

 연사자는 현재 넥스트스텝이라는 코드 리뷰 중심의 재직자 교육을 담당하고 계신다 했다. 또한 SLipp 이라는 개발자 커뮤니티 운영중이라고 하니 관심있는 사람은 방문하면 좋을 것 같다.

 

🔑 Clean Code가 중요한 이유에 대해선 연사자는 이렇게 답했다. 

  • 유니콘 기업들(배달의 민족, 야놀자, 등)이 꾸준히 증가하면서 개발자 구인 증가
  • SI 진행하던 기업들이 핵심 업무에 대한 인하우스를 개발하면서 개발자 구인 증가 
  • 다른사람이 읽기 좋은 클린 코드, 유지보수 하기 좋은 코드를 구현하는 능력 
  • 다른 사람들과 원활히 소통하고, 근본적으로 문제를 해결하는 역량 
  • 자기주도적으로 문제를 찾고, 근본적으로 문제를 해결하는 역량 

🔑 그러나 모든 교육기관에서는 Clean Code에 대한 교육이 부족하다(중요한데도 불구하고) 그렇다면, 

  • 의식적인 연습으로 TDD와 리팩토링을 공부해야 한다
    • 의식적인 연습이란?
      • 테스트하기 쉬운 코드와 테스트하기 어려운 코드를 보는 눈
      • 테스트 하기 어려운 코드를 테스트 하기 쉬운 코드로 설계하는 감(sense)
  • 좀 더 효과적으로 연습할 수 있는 방법?
    • 아마추어와 프로의 결정적인 차이는
      --> 목적의식이 있는 연습에 얼마나 많은 시간을 투자했는가? 이다
    • 의식적인 연습의 7가지 원칙은 1만시간의 법칙? 이라는 책을 참고. 
  • TDD와 리팩토링 연습 단계 
    1. 단위 테스트 연습(step by step) - 자동화 된 테스트/input과 output이 명확한 클래스 메소드(보통 unit test)
      --> 알고리즘 하지마라? 보다 본인이 흥미있어 하는 것을 해라 
    2. TDD 연습 
      1. 지켜야할 원칙 - 토이 프로젝트를 활용해 연습하자 
        (현장 프로젝트는 복잡도가 높기 때문에 굉장히 어려움) 
      2. 웹, 모바일 UI나 DB에 의존관계를 가지지 않는 요구사항으로 연습해라 
      3. TDD는 순환 구조로 끊임없이 반복 됨. 
      4. 자신에게 익숙한 문제로 연습하는 것이 좋다
    3. 리팩토링 연습 
      1. 메소드 분리(가장 중요)
      2. 테스트 코드는 변경하지 말고, 테스트 대상 코드를 개선하는 연습을 해라 
      3. 한 메소드에 오직 한 단계의 들여쓰기만 한다. 
        --> if문이나 for문을 사용할 때 
        들여쓰기를 줄이는 가장 좋은 방법은 메소드를 분리하는 것이다
      4. else 예약어를 사용하지 않는다 (이 또한 메소드로 분리해라) 
      5. Method가 한 가지 일만 하는지에 대한 고민을 지속해라 
      6. 로컬변수가 정말 필요한지 생각해라(return 값으로 넣어줄 수 있다) 
      7. Compose method 패턴 적용 
        1. 메소드 하나에 때려박지 말고, 하나씩 분리해서 각각의 메소드가 하나의 기능만을 구현하도록 해라
        2. test가 리팩토링 피드백을 받는데에 가장 중요하다 
        3. 메소드의 라인수 제한을 줄여나가는 연습(15라인 --> 10라인)을 하는 것도 좋은 방법
      8. 클래스 분리 ---> 이 부분에 대한 내용은 설명 복잡도 때문에 생략 
      9. 토이 프로젝트 난이도 높이기 
        • 요구사항이 명확한 프로그램으로 연습해라 
        • 약간 복잡한 로직이 있는 프로그램(로또, 사다리타기, 볼링게임 점수 판단, 체스 게임, 지뢰 찾기 게임 등) 
        • 의존 관계 추가를 통한 난이도 높이기 
          • 웹, 모바일, UI, DB와 같은 의존관계 추가해보기 
      10. 한 단계 나아가 연습하기 
        • 컴파일 에러 최소화 하기 
        • ATDD 기반으로 응용 애플리케이션 개발해보기 
        • 레거시 애플리케이션에 테스트 코드 추가해서 리팩토링 해보기(가장 난이도가 높음 - 실제 현업에서 가장 중요한 역량 중 하나임) 
      11. 구체적인 연습 목표 찾기 
        • 소트웍스 앤솔러지 책 참고 
        • 여기서 가장 충격적이었던 것은 getter/setter를 사용하는 것이 굉장히 좋지 않다는 점이다. 
          도메인 클래스에서의 핵심 비즈니스 로직에서는 절대 쓰지 않는 것이 좋다고 한다.
          따라서 DTO에 대해 공부하라고 하셨다. 정말 잘못 배우고 있다고 생각했다. 이번 강연은 내가 아니라 학원 강사님이 들어야하는 것이 아닌가 진지하게 고민했다.. 

 

 


 

 

 

<<Track A - Google Cloud Platform 자격증 취득 후 찾아온 기회(이동민 - TmaxSoft) >>

 

 

📌  평소 cloud에 대한 관심도가 높았기에 나를 제외한 다른 친구들이 떠났음에도 불구, 자리를 지켰다. FIFO 스터디에서 한 번 Cloud Computing에 대한 조사를 진행한 적이 있다. 세미나를 다니다보면 Cloud에 대한 중요성을 많이 언급하기도 했어서 더욱 듣고 싶었던 세션이었다. 

 GCP 자격증에 대해서도 알고 있었는데 내가 참고했던 블로거가 연사자님이라는 것을 깨닫고 또 한 번 놀랐다. 

 

 

🔑 왜 굳이 GCP인가?

  • AWS 취득자가 너무 많다(누구나 다 가지고 있어 희소성이 없다) 
  • 최근에 AWS Korea Region에 큰 장애가 있었기 때문에 기업들의 신뢰가 깨진 상태이다
  • 2020년 4월 GCP 한국 Region이 오픈 예정이다
    • 구글 클라우드를 사용하고 싶은 많은 기업들이 있다
    • 전문가 수요가 늘어날 게 뻔하다 --> 하지만 전문가가 없다!
    • 구글 클라우드 아키텍쳐 전문가 양성 교육생도 모집하고 있다
    • 신입, 경력직을 뽑을 때 클라우드 자격증은 가산점을 줄 것이 뻔하다
    • 사업을 수행해야 하는 파트너사는 시장에 전문가가 없으니 전문가를 만들어서 사업을 해야하는 상황
    • 블루오션 그 자체 이다
    • 현재 GCP 자격증 소유자를 seoul로 검색하면 단 42명 뿐

 

🔑 GCP 자격증 취득 후 찾아온 기회들 

  • Cloud와 관련한 수 많은 발표 기회들 
  • 꾸준한 이직 제안 
  • 셀프 브랜딩이 필요하다(시장에 나를 알려야 한다) 
    • 브랜딩은 어떻게? 
      • 어필해야 할 2가지(특히 신입) 
        1. 기술에 대한 나의 관심과 열정 
        2. 지식을 쌓아가는 학습 스토리 + 빠른 학습 능력을 가졌는가를 보여줘야 함 
      • 클라우드는 너무나 빨리 바뀐다 --> 이러한 변화에 맞춰 학습할 수 있는 능력을 가졌는가를 보여줘야 함
      • 자격증 = 학습능력을 뜻함 
      • 기술 블로그를 시작하라 
        • 학습과정을 처음부터 기록하라(클라우드를 처음 공부하기 시작할 때) 
        • 자격증 취득 후 후기도 기록하라 
        • 성장과정을 하나의 스토리텔링으로 만들어라 
        • 커뮤니티에 적극적으로 공유하라 
          1. Google Developer Group(GDG) 
          2. 9X년생 개발자 모임 등 
            관심 분야의 기술 커뮤니티에 
      • 밋업, 컨퍼런스 발표를 두려워하지 마라 
        • 자격증 취득 후기 발표도 좋고, 관심 있는 기술을 학습해서 발표하는 것도 좋고 최대한 많은 발표를 해보는 것이 좋다 
    • 결론은 GCP 자격증의 희소성, 시장성 + 자기 브랜딩 == 좋은 기회! 

 

📌 연사자는 클라우드는 개발의 패러다임을 바꾸는 미친 기술이기 때문에 무궁무진한 개발 시장이 열릴 것이라 했다. 연사자는 GCP 학습을 주로 코세라 라는 사이트를 이용해 공부했다고 한다(영어) 스크립트를 제공하기 때문에 번역기를 돌려서 공부했다고..

 

현재 Google에 GCP 자격증을 검색하면 연사자님의 블로그가 상위 탭에 바로 노출되어 보여지는데 굉장히 본새난다. 

GCP자격증에 관심 있는 사람들은 Reo Dongmin Lee을 참고하기 바란다.

 

 

 

Contact : motop68@gmail.com (개인 이메일 주소입니다! 편하게 컨택 해주세요)

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30