Daily/Code Fest

DevFest on Campus 2019 - 기획단의 후기! | DevFest on Campus 2019 - A Review from the Planning Team!

1. 인트로2019년 11월 16일 DevFest on Campus 2019가 드디어 끝났다!!!! https://festa.io/events/654/ DevFest on Campus 2019 | Festa!Festa에서 당신이 찾는 이벤트를 만나보세요.festa.ioGDG Campus에서 DSC Korea로 먼저 요청이 오면서 행사 규모가 점점 커졌던 행사였습니다. 초반만 해도 200을 생각했었는데, 판이 점점 커져서 약 500명 정도의 인원이 DevFest on Campus로 모였습니다 DSC Lead님들 GDG Campus Organizer분들 모두 고생했던 행사였던 만큼 강의 퀄리티, 행사 만족도 모두 높았던 행사여서 개인적으로도 앞으로 어떤 활동을 해야 할지 느끼는 바가 많았습니다. 발표자와 ..

DevFest on Campus 2019 - 기획단의 후기! | DevFest on Campus 2019 - A Review from the Planning Team!

728x90

1. 인트로

2019년 11월 16일 DevFest on Campus 2019가 드디어 끝났다!!!! 

 

https://festa.io/events/654/

 

DevFest on Campus 2019 | Festa!

Festa에서 당신이 찾는 이벤트를 만나보세요.

festa.io

GDG Campus에서 DSC Korea로 먼저 요청이 오면서 행사 규모가 점점 커졌던 행사였습니다. 초반만 해도 200을 생각했었는데, 판이 점점 커져서 약 500명 정도의 인원이 DevFest on Campus로 모였습니다

 

DSC Lead님들 GDG Campus Organizer분들 모두 고생했던 행사였던 만큼 강의 퀄리티, 행사 만족도 모두 높았던 행사여서 개인적으로도 앞으로 어떤 활동을 해야 할지 느끼는 바가 많았습니다. 발표자와 장소 쪽을 맡으면서 고생도 많았지만, 그래도 이번 기회에 좋은 사람들을 알게 되고 스스로도 성장할 수 있는 기회였어서 제 기회를 제가 만든 기분?!  행복하네요★

 

2. 장소 - 이화여대 아산공학관

이번 DevFest on Campus의 장소는 이화여대로 결정이 되었습니다

초기 기획을 할 때 Campus라는 특성에 맞게 대학교 대관을 알아보다가 교수님이 긍정적으로 답변해주셔서 저희학교로 결정이 났는데요

이번 대관, 이화여대 후원으로 진행하면서 주관 대표라는 명목으로 교수님, 학과사무실, 소프트웨어 중심대학 사무실, 여러 학교 부처에도 전화를 돌리면서 엄청 귀찮게 했었는데요. 학교 선생님들 네 접니다.. 학교 선생님들 이제 끝났으니 귀찮은 학생이었던 저를 당분간 안 보셔도 됩니다!!ㅋㅋㅋㅠ

현수막 때문에 전날 갑자기 업체 부르고 난리였는데 흑흑...

 

장소를 저희학교로 하다 보니 책임감이 생기면서 힘들었는데, 그래도 마지막이 좋으니까 다 좋았던 기억으로 남더라고요. 무엇보다도 교수님 소프트웨어 중심대학 선생님과 더 끈끈한 관계를 맺게 되어서 이화여대 컴퓨터공학과 내에 DSC Ewha의 입지를 키울 수 있는 기회로 만들어서 Lead로서 의미 있던 행사였습니다 :)

 

3. 세미나 - 발표자 초청

발표자에 정말 엄청난 분들이 많았는데, 청중으로 갔어도 엄청 좋았을 것 같아요. 행사 신경쓰고, 왔다 갔다 하다 보니 저는 유경수 님의 웹 초보도 할 수 있는 WebVR/AR with aframe, 박재성 님의 의식적인 연습으로 TDD, 리팩토링, 클린 코드 연습하기 세션밖에 못 들어서 아쉬웠습니다ㅠㅠ

 

포토존에서 찰칵!! 찰칵!! 머리띠 관종 트랙 A 담당자

발표자 담당을 맡으면서 메일을 엄청 보냈는데요 다들 친절하게 피드백주셔서 너무 감사했습니다

직접 만나서 얘기도 많이 하고싶었는데 트랙 A에서 계속 담당해서 있다 보니 그럴 기회가 없었네요ㅠㅠ

그리고 세션을 듣다보니, 한 번쯤은 저도 발표자로 나서고 싶더라고요! 꼭 다음에는!!!ㅎㅎ

 

3-1. 유경수 - 웹초보도 할 수 있는 Web VR/AR with aframe

작년에 이화여대 게임동아리 King에서 cardboard VR 방탈출 게임을 개발했던 기억 때문에 열심히 들었던 세션이었는데, 와 진짜 재밌었습니다!! 유니티로 VR요소 하나하나 스크립팅하고, 위치에 재질에 이벤트 클릭 raycast 하나하나 개발해서 결과물을 만들었을 때가 생각났네요. 그런데 웹이라니! 그것도 HTML과 비슷한 방식으로 만들어진다니!! 웹을 좋아하는  저에게 딱이었습니다.

 

만약 이 세션을 먼저 알았으면 졸프로 Web VR/AR을 했을지도 몰라요...ㅠㅠ 

여느때와 같이 세션 필기 노트입니다! 그런데 오늘은 세션 정리도 해보려고 해요 궁금한 분들은 클릭!!!

 

더보기

●  민정 피셜 색깔

VR : 존재하지 않는 가상공간 
AR : 증강현실
{VR AR} = XR

보통은 Unity나 Unreal 엔진을 이용해 C#이나 C++로 개발을 하지만, 유경수 님은 웹 개발자로 시작했기에 조금 거부감이 느껴졌다. > 그렇게 발견한 게 Javascript API

 

Javascript API는 브라우저를 통해 XR을 구현할 수 있었다. (웹 개발자들은 친숙한 JS!!)

> 근데 위기 공부하니까 deprecate 되었다 함

> 알고 보니 Javscript API -> Web XR로 용어를 변경

 

Aframe = Web XR Device API + Three.js (렌더링)

 

Aframe의 장점

1. visual Inspector (Unity의 Scene window와 비슷한 개념인 듯!)
   모델을 마우스로 줄이거나 크게 할 수 있다! (경수님은 이전에 숫자 하나하나 대입하면서 비교했다 한다.)

2. 렌더링이 자동으로 된다!

    Entity Component Architecture

3. 무엇보다 코드가 HTML과 비슷하게 이루어져 있다!

   마치 부트스트랩 쓰는 것처럼 속성을 지정해줘서 반가웠다

4. Modeling 적용 가능

코드를 보면 Cube와 같은 간단한 컴포넌트만 가능한가? NO

3D 모델러가 작업한 결과물도 HTML 태그 형식으로 만들 수 있다 : Gltf 파일을 지원한다

이때 Animation도 적용이 가능하며, Animation은 3D 모델 자체가 가진 Animation과 JS에서 조작하는 것 둘 다 가능하다.

 

Aframe의 단점

1. 고사양(100MB도 안된다)이면 구동이 어렵다.

2. 공간 배치가 어렵다 > solution : visual inspector

 

Aframe으로 JSON파일에서 자동 모델링하기 - Event로의 상호작용

Entity : Componet의 집합 (Vue js의 템플릿 구조와 비슷했음)

Component를 어떻게 섞냐에 따라 요소 1개 1개가 그려진다. > DOM 구조가 아니라 컴포넌트 단위로 렌더 되는 듯

이때 Entity는 HTML 태그 형식으로 그대로 표현이 가능하다! : 진짜 Vue js <template> 이거 같았음

JS에서도 마찬가지로 getDocumentId() 등의 HTML 표현이 가능하기 때문에, 이벤트를 넣는 것 역시 가능하다. (click 이벤트 시 텍스트 작성 등등의 이벤트, or xyz값을 수치로 받아서 event 구현!) 

JS를 사용해서 이벤트 구현이 가능하니 Unity처럼 총알이 타 다다다 발사되는 것도 구현이 가능!!

 

경수님은 학교 축제 소개 페이지를 만드셨다 하셨음!

AR은 Location Based AR과 Marker Based AR이 있었다 : Marker를 이용해서 부스의 스탬프를 구현!

이때 Marker방식은 특이한 게 QR과 Marker 둘 다 준비해야 한다는 점!

 

AR과 HTML의 호환으로 컴포넌트 재사용성 good 그러나 내가 정리한 단점 외에도 단점이 뚜렷하다 

(경수님 ppt에 적혀있는데 안 적음 가장 기억나는 건 무조건 https로 해야 해서 SSL을 붙여야 한다는 점)

 

마무리

추가로 Aframe을 사용하더라도 기본적인 3D에 대한 이해가 필요하다!

그렇지만 HTML 포맷의 AR/VR이기 때문에 빠르게 습득해서 구현하고 싶다면 추천!!

 

--개인적으로 드린 질문--

 

Q. 슬라이드 지나간 사진 중에 VR 장비를 찬 걸 보았다 혹시 오큘러스 빌드가 되는 것인가?

A. 그건 그냥 cardboard 장비였다. 웹에서 cardboard 모드로 설정한 후, 카드보드용 VR 장비를 낀 것!

 

Q. Raycast 구현 쪽이 궁금하다. 유니티에서는 일정 반경 안에 들었을 때 Raycast를 통한 클릭이 가능하게 활성화되는데, 아까 좌표 얘기를 하신 얘기를 생각했을 때 설마 xyz 좌표를 하나하나 설정하면서 비교하는걸 Raycast로 대체하는 건가?

A. 아니다 Raycast 기능도 제공을 하고 있다!! 처음에 xyz좌표 하나하나 지정해야 하는 줄 알았는데 아니었다!

세션을 정리하고 보니 엄청 뿌듯하네요!! 해커톤이나 프런트엔드 중심 토이 프로젝트를 하게 되면 Aframe의 사용도 고려해봐야겠습니다! 아니면 DSC관련 프로젝트로 하나 혼자 만들어버리거나

 

3-2. 박재성 - 의식적인 연습으로 TDD, 리팩토링, 클린 코드 연습하기

발표자분들을 섭외하면서 아무래도 스프링 공부를 하고 클린코드 테스트 코드 공부를 하다 보니 정말 정말로!! 뵙고 싶었던 자바지기님인 박재성 님께 개인적으로 요청을 드렸는데 흔쾌히 수락해주시고, 재성님의 세미나를 들을 수 있어서 자기 계발에 정말로 큰 도움이 되었습니다 :)

처음에 의식적인 연습에 대해 말씀하실 때 음,, 추상적이라고 생각했는데 뒤로 가면 갈수록 더 상세히 구체적으로 공부 방법론을 제시해주는 게 너무 도움이 되었습니다.

 

아무래도 코드를 하다 보면 내 코드가 정말 깔끔한가?라는 생각이 들 때가 많아요. 그리고 대부분이 구현만 되는 코드를 짜면 되지라고 생각을 하는데 재성님이 대학생들에게 그런 방식의 공부가 정말 옳은가?라는 메시지를 주고 떠나신 것 같아서 , 참여자분들에게, 이화여대 학생들에게, 저에게 정말로 좋았던 세미나였습니다.

 

세션 정리 내용입니다!! 궁금하다면 클릭!! 아니 꼭 클릭!! 진짜 너무 좋았던 세미나라 공유하고 싶네요

더보기

●  민정 피셜 색깔

"요즘 개발자의 수요가 증가합니다. 그러나 학생들은 취업난, 회사는 개발자 인력부족 문제는 무엇일까요?"

회사에서 원하는 개발자

1) 클린 코드로 유지보수가 좋은 코드를 짜는 개발자 (여기서 클린 코드란 TDD 리팩토링에 중점)

2) 협업능력이 좋은 개발자

3) 주도적으로 문제를 찾고 근본적 문제를 해결하는 개발자

 

의식적인 연습이란?

[재성님 강조 부분]

1) 컴포트 존을 벗어나라 (편한 상태를 깨트리고 더 어려운 걸 도전하기!)

2) 명확하고 구체적인 목표 세우기

3) 피드백 주기 (내 생각엔 코드 리뷰 이야기인 것 같다)

[ppt 글씨 부분]

4) 효과적인 훈련기법이 수립된 기술을 연마한다.

5) 개인이 온전히 집중하고 '의식적'으로 행동한다

6) 효과적인 심적 표상을 만들어내는 한편 심적 표상에 의존한다

7) 기존에 습득한 기술의 특정 부분을 집중적으로 개선함으로써 발전시키고 수정하는 과정을 수반한다.

1. 단위 테스트

나의 API를 테스트한다 : 내 API가 Input Output에 따라 명확한 코드로 이루어져 있는 잘 동작하는 코드인가?

- 자바 String 클래스의 다양한 메서드를 사용해보고 단위 테스트로 확인한다.

- 자바 ArrayList에 데이터를 추가, 수정, 삭제한다.

단위 테스트가 잘 짜여 있다면 API의 사용법을 익힐 수 있다.

 

단위 테스트를 해야 하는 것

내가 구현하는 메서드 중 Input과 Output이 명확한 클래스나 메소드

> 대학생 눈높이 : 알고리즘!!

알고리즘을 학습할 때 알고리즘의 구현을 단위 테스트로 검증해본다!

Input, Output이 명확해서 단위 테스트를 연습하는데 효과적이다.

2. TDD

1. 회사 프로젝트 말고 토이 프로젝트를 활용하기
2. 웹 모바일 UI나 DB에 의존관계가 없는 요구사항으로 연습한다 > 순수 Java Project 말씀하시는 듯

Test를 짠다 > 이후에 해당하는 메서드를 만든다!! (production 코드를 나중에 만든다)

TDD는 복잡도가 너무 높은 건 좋지 않다!

3. 리팩토링 연습

3-1. 메서드 분리

이때 중요한 건 테스트 코드는 변경하지 말고 테스트 대상 코드(프로덕션 코드)를 개선하는 것!!

어디서부터 해야 할지 막막하다!

 

메서드 분리의 중요점 : 메서드가 1가지 역할만 하게 하는 게 좋다 (추상적, 정성적인 기준)

 > 정량적이고 측정 가능한 방법으로!!

 

[예시 : 문자열 덧셈기]

 

정량적인 방법 수치화

1. 인덴트 즉 들여 쓰기는 1단계만 한다 -> 이를 위해 메서드를 분리하게 된다. (대표적으로는 for안의 if문)

2. else를 쓰지 않는다 -> return을 사용해서 if만을 사용한다.

3. 메서드가 한 가지 일만 하도록 구현한다 -> parsing로직과 sum로직을 분리하셨음!

4. 로컬 변수가 정말 필요할까? -> 줄이는 것도 효과적이다! 

 

compose method 패턴

메서드(함수)의 의도가 잘 드러나도록 동등한 수준의 작업을 여러 개로 나눈다.

즉, 추상화 레벨을 똑같이 한다!

이때 외부 개발자는 public만 본다. public을 봤을 때 직관적으로 읽히면 ㅇㅋ! : 프로그램 로직 한눈에 볼 수 있다.

return sum(toInt(split(text))) : text를 split 해서 int로 바꾸고 sum 한다! 

 

리팩토링 관점

- 클린 코드를 만드는 경험이 중요한 것!

- 기능을 변경하지 않고 코드의 구조만 바뀌는 것이다

- 리팩토링 후 테스트가 너무 힘들다 : but 테스트 코드가 있으면 빠른 피드백이 가능하다 (fast 핑퐁!)

 

의식적인 공부 : 한 번에 모든 원칙보단 한번에 한 가지 명확하고 구체적인 목표 가지기!

ex ) 메서드의 라인수 줄이기 15 -> 10 

 

3-2. 클래스 분리

예외사항 throw 관련 클래스 분리

모든 원시 값과 문자열을 포장한다!

 

클래스 분리를 위한 원칙

1. 일급 컬렉션

2. 3개 이상의 인스턴스 변수 가진 클래스 쓰지 않기

 

3-3. 의존 관계 추가를 통한 난이도 높이기

웹, 모바일, UI, DB와 같은 의존관계를 추가한다.

이때! 테스트하기 쉬운 것과 어려운 것을 불리하는 역량 즉 센스가 있어야 한다!

 

3-4. 더 어려운 단계

1. 컴파일 에러 최소화 하기

2. ATDD기반으로 응용 애플리케이션 개발하기

3. 레거시 애플리케이션에 테스트 코드 추가하기 (제일 어렵다)

 

--개인적으로 물어본 질문--

 

Q. 게터, 세터를 쓰지 말라고 하셨는데 게터는 쓸 수도 있지 않은가? 그래서 저는 lombok의 @Data를 경계하라는 의미를 내 포한 건가?라는 생각이 들었다

A. 재성님이 구현한 로또게임 코드를 보여주심!

게터 세터를 쓰지 말라는 것은 A라는 클래스의 기능은 A클래스 안의 메서드로 해결하길 권장한다는 점에서 이야기한 것이다! 만약 게터를 쓴다면 A클래스 안에서 해결해야 하는 기능을 B클래스에서 getter로 불러와서 고치고 검증하는 코드가 될 것이다.

모든 원시 값을 포장하라고 했던 거 기억나는가? 로또 번호는 Integer이지만 번호를 가리키는 LottoNumber라는 클래스를 만들고, 해당 클래스 안에서 1~45까지의 숫자인지 검증하는 로직 등 정말 LottoNumber라고 확신할 수 있는 객체를 만드는 게 질문의 대답이 될 것 같다.

 

Q. 클린 코드 공부를 하다 보니까 나도 모르게 알고리즘 짤 때 Enum을 사용하고 그 안에 Abstract method를 구현하기도 하고, 알고리즘 짜다가 갑자기 변수명을 고민하고, 변수명이 길어지는 이상한 짓을 하고 있다. 조언 부탁드린다.

A. 그걸 의식적으로 연습해라!!! 그건 당연히 분리해야 하는 영역이다! 좋은 개발 습관이지만 취업에는 치명적이니 꼭 분리해야 한다!! 근데 정말 좋은 자세이다. 내가 추천하는 건 의식적으로 목표를 잡을 때 
1단계 정말 빠르게! 알고리즘만 생각해서 풀기 > 2단계 그렇게 짠 알고리즘을 리팩토링 해서 클린 코드로 바꾸기!

이렇게 공부한다면 본인의 실력에 도움이 될 것이다.

특히 요즘 클린코드 테스트 코드와 관련해서 있던 고민(알고리즘과 관련)을 재성님 옆에 붙어서 귀찮게 질문을 드렸는데 '의식적인 연습'이란 가르침 너무 감사했습니다!! 

 

4. 후원사 부스

후원사 부스가 들어가니 원래는 저의 학업 공간이었던 학교가 정말 행사장이 된 분위기가 들더군요.

그리고 오랜만에 보는 반가운 얼굴들 때문에 기억에 남습니다.

 

수철님이 먼저 나서서 후원해주시겠다고 얘기해주신 이노베이션 아카데미, 딱 지금 1년 전 스마일게이트 윈터 데브 캠프로 인연을 맺었는데 오랜만에 봐서 너무 좋았던 스마일게이트 식구분들!! 그리고 오픈 핵, 중국 해커톤 멘토로 항상 저한테 많은 도움을 주시는 Common Computer 민현 님까지 후원도 해주시고 너무 감사했습니다 :)

 

스마일게이트 서버 개발 캠프를 문의하느라 학생들이 몰려있었는데, 면접관 두분이 직접 상담을 해주고 계시니까 역시 학생들의 입장에서 생각해주시는 캠프장님의 모습이 멋졌습니다!! 혹시 서버개발캠프 관련 여쭤보고 있으신 점 있으면 연락 주세요. 선착순으로 스마일게이트 블루투스 키보드 이벤트도 진행했는데 저희 DSC Ewha 멤버 중 한 분도 알차게 가져가셨어요!!ㅋㅋ

 

그리고 WTM!! WTM은 따로 글을 쓰고 싶은 게 있어서 오늘은 패스~!

 

그리고 이노베이션 아카데미는 워후... 안 그래도 5000명 돌파했다는 소식에 놀랐는데, 지나다니면서도 학생들이 나 원래 이거 지원하려고 했는데! 이런 말을 지나가면서 스쳐들으니까 확실히 홍보를 엄청 잘하셨구나 싶었습니다!

 

그리고 커먼 컴퓨터 부스!! 아니ㅋㅋㅋ 오픈핵 때문에 커먼컴퓨터 가방부터 굿즈 스티커 다 있는데 직원분들이 또 가져가라고 더 챙겨주시고 AFAN 유저라고 하니까 invest도 해주시더라고요!

AFAN은 커먼 컴퓨터에서 만든 리워드형 SNS입니다. Invest와 Crush On을 이용해서 유저들끼리 서로의 포스팅에 가치를 매기고 내가 invest 한 사람이 AFAN을 이용한 광고 등으로 수익을 얻을 경우엔 나는 가치 있는 사람에게 invest 했다는 value가 있어서 일정 수익을 같이 얻을 수 있습니다! 

https://apps.apple.com/kr/app/afan/id1434385630

 

‎aFan

‎* 팬들을 위한 새로운 소셜 미디어 내가 좋아하는 크리에이터와 친구들에게 쉽게 다가가 보세요. * 단순 팔로잉을 넘어 팬이 되어보세요! 누구나 내가 좋아하는 크리에이터의 팬이 될 수 있습니다. 가장 먼저 팬이 되어 창작자를 성장시켜주세요. 때로는 크러쉬온 기능을 통해 포스트에 하트를 보내주세요! * 나의 팬들만을 위한 크러쉬온 크러쉬온을 통해 팬들에게 받은 사랑을 아낌없이 돌려주세요. aFan - 팬과 크리에이터가 함께 성장하는 플랫폼

apps.apple.com

5. DevFest on Campus 굿즈

크으 후원사 부스의 스티커부터 짱짱한 Devfest 스탭 후드, 반팔, 배지, 목도리~! 아주 짱짱해요!! 특히 우리 스티커에 있는 코린이 너무 귀엽지 않나요! 굿즈 열심히 제작해주신 두리님께 감사를ㅎㅎㅎ

6. 코드 랩 & 액티비티

사실 코드 랩을 많이 못갔어요 세션장에만 있다보니까 스태프분들 놔두고 혼자 코드랩을 할 수가 없어서..ㅠㅠ 

코드랩 콘텐츠 기획은 대학생 관련 행사라면 하나 정도는 있으면 좋겠다는 생각이 들었습니다. 얼마 전에 DSC Ewha에서 했던 코드 랩도 반응이 좋았고, 또 열어달라는 요청이 있었거든요.

처음에 GDG Campus랑 DSC랑 회의할 때 대학생들이 생각보다 코딩하는걸 막막해하고, 직접 구현해보는 시간을 가져봤으면 좋겠다는 말을 했었는데 이렇게 현실화가 되었습니다!! 다들 만족하셨겠죠?

 

이대 무선랜 문제가 있었다 들었는데,, 어음,, 학교 측에서 대규모 다운로드가 힘들 수 있다고 사전에 말씀하셨고 토요일이라 증설을 못하는 상황이었습니다ㅠㅠ 불편했을 텐데 현장 분들이 잘 해결해주셨을 거라 생각합니다..!

 

그리고 액티비티!! 크으 한결님이 나만의 시간표 만들기 웹을 직접 만들어 주셨어요! 저도 하고 싶었는데 아쉽네요

 

7. DSC와 GDG Campus

사실 DevFest의 가장 큰 장점은 여러 사람들을 만날 수 있는 거라고 생각합니다. 이번 행사에서 그동안 저는 DSC Lead 님들 그리고 DSC Ewha만 만났었는데, 다른 학교 DSC 멤버분들도 만날 수 있어서 좋았습니다.

사진도 왕창 찍고 친해지고! 이번 DevFest를 기념하면서 잘 마무리했습니다!

 

무엇보다도 GDG Campus 오거나이저 분들 우리 DSC Lead분들 다들 너무 고생했고, 스태프, 코드 랩 튜터 참가자 홍보까지 이화여대 안에서 DSC 활동을 활발하게 해주는 우리 DSC Ewha 멤버들에게도 감사했습니다.

 

항상 열일하는 DSC Lead들!!! 그래서 우리 제주도 날짜 언제임
♥DSC EWHA♥
Track A 사람들과 GDG!!! 3번째 사진ㅋㅋㅋ 몸으로 말해요 DSC GDG!!
마지막으로 단체사진

8. 이화여대 내 반응

처음에는 사실 걱정이 앞섰습니다. 저희 학교에서 주최를 하면 벗들에게 도움이 되는 부분이고 정말 좋은 행사지만, 혹시라도 문제가 생기면 앞장서서 책임을 져야 했으니까요.

그런데 행사를 마치고, 에브리타임에 들어갔는데 DevFest관련 글이 하나 있더라고요

그거보고 사실 눈물이 핑돌았어요ㅋㅋㅋ 

 

엄청 동기부여가 됐다고 했다는 글이었는데, 댓글에서 현업에서 오래 일한 베테랑 발표자분들도 좋았지만 현재 학부생인데 커리어 탄탄히 쌓은 분을 보고 용기를 얻고 전공 공부를 더 열심히 해야겠다고 결심하는 내용이었습니다

그러면서 아래 댓글에 DSC 아니었으면 이 행사 주최도 못했을 텐데 학교에서 열어줘서 고맙다는 댓글 때문에 힘나더라고요. 

 

대학교 새내기 20살 때부터 멋사로 개발을 시작하면서, 사실 주변에 학점을 챙기는 친구는 많았지만, 같이 콘퍼런스를 간다거나 해커톤을 같이 나가는 친구가 없어서 항상 고민이었습니다. 그런데 저 글을 보니 DSC 활동을 학교 내에 개발을 좋아하는 벗들을 더 많이 이끌어 내고 서로 협업할 메이트를 찾는 활동으로 만들면 좋겠다는 생각이 들었습니다.

 

특히나 이번 행사 참여자 성비가 1:1이었대요. 사실 오픈 핵, 멋사, junction x seoul 어느 행사나 해커톤을 가도 여성 개발자는 소수였고, 발표자도 마찬가지였어요. 그래서 그런지 이번 DevFest가 저에게 엄청 크게 다가왔네요

 

9. 마무리

열심히 홍보를 했더니 지인분들이 많이 와주시고, 발표자로도 나서 주셨는데 생각만큼 많이 못 챙겨드린 것 같아서 죄송했습니다. 오픈 핵 사람들하고도 멋사 언니들하고도 사진 찍고 오랜만에 얘기도 하고 싶었는데 아쉬워요. 

 

다음 DSC 활동도 으쌰 으쌰 하겠습니다!

장장 2개월간의 DevFest 기획단 후기 끝!!!!

이제 기획단 아니야 다시 개발자로 돌아갈래! 당장 이번 주 네이버 핵 데이 어쩌지...

 

 

 

 

1. Intro

On November 16, 2019, DevFest on Campus 2019 finally came to an end!!!! 

 

https://festa.io/events/654/

 

DevFest on Campus 2019 | Festa!

Find the events you're looking for on Festa.

festa.io

It started with GDG Campus reaching out to DSC Korea first, and the event kept growing bigger and bigger. In the beginning, we were thinking around 200 people, but it snowballed and about 500 people gathered for DevFest on Campus.

 

Since all the DSC Leads and GDG Campus Organizers worked so hard on this event, both the session quality and overall satisfaction were really high. Personally, it gave me a lot to think about in terms of what kind of activities I should pursue going forward. I had a tough time handling the speakers and venue, but through it all, I got to meet great people and it was a chance for me to grow — like I created my own opportunity?! I'm happy★

 

2. Venue - Ewha Womans University Asan Engineering Building

The venue for this DevFest on Campus was decided to be Ewha Womans University.

During the initial planning, we were looking into university venues to match the "Campus" theme, and our professor responded positively, so we ended up going with our school.

While organizing the venue booking and Ewha sponsorship, I called professors, department offices, the Software-Centered University office, and various school departments under the title of "lead organizer" — I must've been such a nuisance. Dear school staff, yes it's me.. Now that it's all over, you won't have to deal with this annoying student for a while!! lol 😭

We had to call the banner company last minute the day before — it was chaos...

 

Having the event at our school came with a lot of pressure and it was tough, but since it ended well, it all turned into good memories. Above all, I was able to build a closer relationship with the professor and the Software-Centered University staff, which became an opportunity to strengthen DSC Ewha's presence within the Ewha Computer Science department — so as a Lead, it was a truly meaningful event :)

 

3. Seminars - Inviting Speakers

We had so many amazing speakers — I think it would've been fantastic even just attending as an audience member. I was busy managing the event and running back and forth, so I could only attend Kyungsoo Yoo's "Web VR/AR with aframe Even for Web Beginners" and Jaesung Park's "Practicing TDD, Refactoring, and Clean Code Through Deliberate Practice" sessions, which was a bummer ㅠㅠ

 

Snap snap at the photo zone!! The attention-loving headband-wearing Track A manager

As the person in charge of speakers, I sent out a ton of emails, and everyone was so kind with their feedback — I'm really grateful.

I wanted to meet them in person and chat more, but I was stuck managing Track A the whole time so I didn't get the chance ㅠㅠ

And after listening to the sessions, I really wanted to be a speaker myself someday! Definitely next time!! haha

 

3-1. Kyungsoo Yoo - Web VR/AR with aframe Even for Web Beginners

I paid extra attention to this session because I had memories of developing a cardboard VR escape room game at Ewha's gaming club "King" the year before — and wow, it was really fun!! It reminded me of when I was scripting every VR element one by one in Unity, setting up materials, event click raycasts, and building the final product piece by piece. But on the web! And it's built in a way similar to HTML!! It was perfect for someone like me who loves web development.

 

If I had known about this session earlier, I might have done Web VR/AR for my graduation project... ㅠㅠ 

As always, here are my session notes! But today I'm also going to try summarizing the session — click if you're curious!!!

 

더보기

●  Minjeong's personal color-coded notes

VR: A virtual space that doesn't exist 
AR: Augmented Reality
{VR AR} = XR

Normally you'd develop with C# or C++ using Unity or Unreal engine, but since Kyungsoo started as a web developer, he felt a bit of resistance. > That's how he discovered the Javascript API.

 

The Javascript API allowed implementing XR through the browser. (JS, which web developers are familiar with!!)

> But then — crisis — he found out it was deprecated.

> Turns out Javascript API -> the term was just changed to Web XR.

 

Aframe = Web XR Device API + Three.js (rendering)

 

Advantages of Aframe

1. Visual Inspector (Seems similar to Unity's Scene window!)
   You can resize models with your mouse! (Kyungsoo said he used to plug in numbers one by one to compare before.)

2. Rendering happens automatically!

    Entity Component Architecture

3. Best of all, the code structure is similar to HTML!

   It felt familiar, like using Bootstrap where you just specify attributes.

4. Supports 3D Modeling

Looking at the code, can you only use simple components like Cube? NO

You can also use 3D modeler output in HTML tag format: it supports Gltf files.

Animations can also be applied — both the 3D model's built-in animations and JS-controlled animations are possible.

 

Disadvantages of Aframe

1. High-spec content (even under 100MB) can be difficult to run.

2. Spatial arrangement is difficult > solution: Visual Inspector

 

Auto-modeling from JSON files with Aframe - Interaction through Events

Entity: A collection of Components (Felt similar to Vue.js template structure)

Depending on how you mix Components, each element is drawn. > It seems to render in component units rather than DOM structure.

Entities can be expressed directly in HTML tag format!: It really looked like Vue.js <template>

In JS as well, HTML expressions like getDocumentId() are possible, so adding events is also doable. (Events like writing text on click, or implementing events by receiving xyz values as numbers!) 

Since you can implement events using JS, you can even build things like bullets firing rat-a-tat-tat like in Unity!!

 

Kyungsoo said he built a school festival introduction page!

For AR, there was Location Based AR and Marker Based AR: He used markers to implement booth stamps!

The interesting thing about the Marker approach is that you need to prepare both a QR code and a Marker!

 

The compatibility between AR and HTML means great component reusability, but there are clear disadvantages beyond what I've noted.

(They were listed in Kyungsoo's slides but I didn't write them down — the most memorable one is that it must use HTTPS, so you need to set up SSL.)

 

Wrap-up

Additionally, even when using Aframe, a basic understanding of 3D is necessary!

But since it's AR/VR in HTML format, it's recommended if you want to pick it up quickly and build something!!

 

--Personal question I asked--

 

Q. In one of the slides that went by, I saw someone wearing VR equipment — does it support Oculus builds?

A. That was just a cardboard device. You set it to cardboard mode on the web, then put on the cardboard VR headset!

 

Q. I'm curious about the Raycast implementation. In Unity, clicking is enabled through Raycast when you're within a certain radius — considering what you said earlier about coordinates, does that mean you replace manually setting and comparing xyz coordinates with Raycast?

A. No, Raycast functionality is provided as well!! At first I thought you'd have to set xyz coordinates one by one, but that wasn't the case!

After summarizing the session, I feel so proud!! If I ever do a hackathon or a frontend-focused toy project, I should definitely consider using Aframe! Or maybe I'll just build one on my own as a DSC-related project.

 

3-2. Jaesung Park - Practicing TDD, Refactoring, and Clean Code Through Deliberate Practice

While recruiting speakers, since I'd been studying Spring and clean code and test code, I really, truly!! wanted to meet Javajigi (Jaesung Park), so I personally reached out to him. He gladly accepted, and being able to attend his seminar was a huge help for my personal development :)

At first, when he talked about deliberate practice, I thought hmm, that's pretty abstract — but as the talk went on, he provided increasingly detailed and specific study methodologies, which was super helpful.

 

When you code, you often wonder "is my code really clean?" And most people think "as long as it works, that's fine" — but I feel like Jaesung left college students with the message of "is that approach to studying really the right one?" It was a truly great seminar for the attendees, for Ewha students, and for me personally.

 

Here's the session summary!! Click if you're curious!! No, you MUST click!! This seminar was so good that I just have to share it.

더보기

●  Minjeong's personal color-coded notes

"The demand for developers is increasing these days. But students face job shortages, and companies face developer shortages — what's the problem?"

What companies want in a developer

1) A developer who writes clean, maintainable code (Here, clean code focuses on TDD and refactoring)

2) A developer with good collaboration skills

3) A developer who proactively identifies problems and solves root causes

 

What is Deliberate Practice?

[Points Jaesung emphasized]

1) Get out of your comfort zone (Break out of what's comfortable and challenge yourself with harder things!)

2) Set clear and specific goals

3) Provide feedback (I think this is about code reviews)

[From the slides]

4) Practice skills for which effective training techniques have been established.

5) The individual focuses fully and acts 'deliberately.'

6) Creates effective mental representations while relying on them.

7) Involves the process of advancing and modifying by intensively improving specific aspects of previously acquired skills.

1. Unit Testing

Test your own API: Is my API well-functioning code with clear input/output?

- Try out various methods of Java's String class and verify them with unit tests.

- Add, modify, and delete data in Java ArrayList.

If unit tests are well-written, you can learn how to use the API.

 

What should be unit tested

Classes or methods with clear Input and Output among the methods you implement

> For college students: Algorithms!!

When learning algorithms, verify your algorithm implementation with unit tests!

Since input and output are clear, it's effective for practicing unit testing.

2. TDD

1. Use toy projects, not company projects.
2. Practice with requirements that have no dependencies on web, mobile UI, or DB > I think he means pure Java projects.

Write the test first > then create the corresponding method!! (Production code comes later.)

TDD isn't great when complexity is too high!

3. Refactoring Practice

3-1. Method Separation

The important thing here is: don't change the test code — improve the target code (production code)!!

Where do I even start? It feels overwhelming!

 

Key point of method separation: It's best if a method does only one thing (abstract, qualitative criteria)

 > Use quantitative and measurable approaches!!

 

[Example: String Calculator]

 

Quantitative approach

1. Keep indentation to only 1 level -> This forces you to separate methods. (A classic example is an if inside a for loop.)

2. Don't use else -> Use return so you only need if statements.

3. Make methods do only one thing -> He separated the parsing logic from the sum logic!

4. Do you really need local variables? -> Reducing them is also effective! 

 

Compose Method Pattern

Break down a method (function) into multiple tasks at the same level of abstraction so the intent is clear.

In other words, keep the abstraction levels equal!

External developers only see the public methods. If it reads intuitively when looking at the public method, that's good!: You can see the program logic at a glance.

return sum(toInt(split(text))) : Split the text, convert to int, and sum! 

 

Refactoring Perspective

- The experience of creating clean code is what matters!

- Only the code structure changes, not the functionality.

- Testing after refactoring is really tough: but with test code, fast feedback is possible (fast ping-pong!)

 

Deliberate study: Rather than all principles at once, have one clear and specific goal at a time!

ex) Reduce method line count from 15 -> 10 

 

3-2. Class Separation

Class separation for exception throw handling

Wrap all primitive values and strings!

 

Principles for class separation

1. First-class collections

2. Don't use classes with more than 3 instance variables

 

3-3. Increasing Difficulty by Adding Dependencies

Add dependencies like web, mobile, UI, and DB.

The key here! You need the sense — the ability to distinguish what's easy to test from what's hard to test!

 

3-4. Even More Advanced Levels

1. Minimize compile errors

2. Develop applications based on ATDD

3. Adding test code to legacy applications (the hardest)

 

--Personal questions I asked--

 

Q. You said not to use getters and setters, but aren't there cases where getters are fine? So I was thinking, did you mean something like "be cautious of Lombok's @Data"?

A. Jaesung showed us his Lotto game code!

The point about not using getters and setters is that class A's functionality should be handled within class A's own methods! If you use a getter, you'd end up pulling data from class A into class B via getter, then fixing and validating it there.

Remember when he said to wrap all primitive values? A lotto number is an Integer, but you create a class called LottoNumber, and within that class you put validation logic like checking if the number is between 1 and 45 — creating an object you can truly be confident is a LottoNumber. I think that answers your question.

 

Q. While studying clean code, I find myself unconsciously using Enums with abstract methods when writing algorithms, and I suddenly start agonizing over variable names, and the names keep getting longer — I'm doing these weird things. Any advice?

A. Practice that deliberately!!! That's absolutely something you should separate! It's a good development habit, but it can be fatal for job interviews, so you definitely need to separate the two!! But it really is a great attitude. What I recommend is setting deliberate goals: 
Step 1: Solve it really fast! Focus only on the algorithm > Step 2: Refactor that algorithm into clean code!

Studying this way will help improve your skills.

Especially regarding the concerns I'd been having about clean code and test code (related to algorithms), I stuck by Jaesung's side and pestered him with questions — I'm so grateful for the lesson on 'deliberate practice'!! 

 

4. Sponsor Booths

Once the sponsor booths were set up, my school — which is normally just where I study — really felt like an actual event venue.

It's also memorable because I got to see so many familiar faces I hadn't seen in a while.

 

Innovation Academy, where Sucheol stepped up and offered to sponsor us first; the Smilegate folks, who I first connected with exactly a year ago through the Smilegate Winter Dev Camp — it was so great to see them again after so long!! And Minhyun from Common Computer, who always helps me out so much as a mentor at Open Hack and China hackathons — thank you so much for sponsoring as well :)

 

Students were crowding around to ask about the Smilegate Server Development Camp, and the two interviewers were personally giving consultations — it was really cool to see the camp director always thinking from the students' perspective!! If you have any questions about the Server Dev Camp, feel free to reach out. They also had a first-come-first-served Smilegate Bluetooth keyboard giveaway, and one of our DSC Ewha members snagged one too!! lol

 

And then WTM!! I have something separate I want to write about WTM, so I'll skip it for today~!

 

And Innovation Academy was like... wow. I was already surprised to hear they'd surpassed 5,000 applicants, and as I walked around, I kept overhearing students say things like "I was actually planning to apply for this!" So they clearly did an amazing job with promotion!

 

And the Common Computer booth!! Seriously lol, I already had all the Common Computer bags and sticker goodies from Open Hack, but the staff kept giving me more stuff, and when I said I was an AFAN user, they even gave me an invest!

AFAN is a reward-based SNS made by Common Computer. Using Invest and Crush On, users can assign value to each other's posts, and if someone I invested in earns revenue through AFAN ads and such, I get a share of the profits because I had the value of having invested in a worthy person! 

https://apps.apple.com/kr/app/afan/id1434385630

 

‎aFan

‎* A new social media for fans — easily connect with your favorite creators and friends. * Go beyond just following — become a fan! Anyone can become a fan of their favorite creator. Be the first to become a fan and help creators grow. Sometimes, send hearts to posts through the Crush On feature! * Crush On just for my fans — give back the love you've received from fans generously through Crush On. aFan — a platform where fans and creators grow together

apps.apple.com

5. DevFest on Campus Goodies

Heck yeah — from sponsor booth stickers to the awesome DevFest staff hoodies, t-shirts, badges, and scarves~! Everything was top-notch!! Especially, isn't the little Korin character on our stickers just the cutest? Big thanks to Duri for working so hard on the merch!! haha

6. Codelabs & Activities

To be honest, I couldn't attend many codelabs. Since I was stationed at the session hall the whole time, I couldn't just leave the staff behind and go do a codelab by myself..ㅠㅠ 

I thought that if it's a university-related event, having at least one codelab content would be great. The codelab we held at DSC Ewha recently got great responses, and there were requests to hold another one.

When we first had meetings with GDG Campus and DSC, I mentioned that university students find coding more daunting than expected and that it'd be nice to give them hands-on implementation time — and it actually came to life!! I hope everyone was satisfied!

 

I heard there were issues with Ewha's Wi-Fi.. um.. the school had warned us in advance that large-scale downloads might be difficult, and since it was a Saturday, they couldn't add more capacity ㅠㅠ It must have been inconvenient, but I trust the on-site team handled it well..!

 

And the activities!! Hangyeol personally built a "Create Your Own Schedule" web app! I wanted to try it too — what a shame I couldn't.

 

7. DSC and GDG Campus

Honestly, I think the biggest advantage of DevFest is getting to meet so many people. At this event, I had previously only met the DSC Leads and DSC Ewha members, but it was great to also meet DSC members from other universities.

We took tons of photos and got to know each other! We wrapped things up nicely while celebrating this DevFest!

 

Above all, huge shoutout to the GDG Campus organizers and all our DSC Leads for working so hard, and I'm grateful to our DSC Ewha members for actively contributing within Ewha — from staffing and codelab tutoring to participant outreach.

 

DSC Leads always working hard!!! So when are we going to Jeju?
♥DSC EWHA♥
Track A crew and GDG!!! The 3rd photo lol — charades spelling out DSC GDG!!
And finally, the group photo

8. Reactions at Ewha Womans University

At first, I was honestly more worried than anything. Hosting it at our school would benefit our fellow students and it was truly a great event, but if anything went wrong, I'd have to take responsibility.

But after the event ended, I checked Everytime and found a post about DevFest.

I actually teared up a little when I saw it lol 

 

The post said it was incredibly motivating. In the comments, people wrote that while the veteran speakers with years of industry experience were great, seeing a current undergrad who'd built a solid career gave them courage and made them determined to study their major harder.

And then there was a comment below saying that this event wouldn't have been possible without DSC, and thanking the school for hosting it — that really gave me energy. 

 

Ever since I started coding through LikeLion as a 20-year-old college freshman, I had plenty of friends who focused on their GPA, but I never had friends to go to conferences with or participate in hackathons together, and that always bothered me. But seeing that post made me think it'd be great to turn DSC activities into something that draws out more dev-loving students on campus and helps them find collaborators to work with.

 

Especially since I heard the gender ratio of attendees at this event was 1:1. Whether it was Open Hack, LikeLion, Junction X Seoul, or any other event or hackathon, female developers were always a minority — and the same went for speakers. So this DevFest really hit differently for me.

 

9. Wrapping Up

Thanks to all the promotion, a lot of people I know came out and even volunteered as speakers, but I feel bad that I couldn't take better care of everyone. I wish I could've taken photos and caught up with the Open Hack crew and my LikeLion seniors. 

 

I'll keep pushing forward with our next DSC activities!

And that's a wrap on the 2-month-long DevFest planning team review!!!!

I'm done being on the planning team — I want to go back to being a developer! But what am I going to do about Naver Hack Day this week...

 

 

 

 

댓글

Comments

Daily/Code Fest

2019 오픈핵 후기 | 2019 OpenHack Review

첫 블로그 포스팅이네요. 이번에 저한테 의미 있었던 해커톤인 오픈 핵에 갔다 오고 나서 많은 개발자 분들이 블로그를 하시는 걸 보고 생각만 하고 있던 기술 블로그를 시작하려고 합니다. 오픈 핵은 소프트웨어 중심대학으로 지정된 각 대학에서 대표로 선정된 약 4명의 학생들이 모여서 한 해커톤입니다! 오픈 핵 지원서 쓸 때만 해도 시험기간이라서 학교 가면서 지하철에서 30분 동안 후다닥 기존 포트폴리오 복붙 했는데 붙을 줄이야!! 학과 사무실에서 오픈 핵 참가자라고 연락 왔을 때 종강하고 개발 공부 좀 하다가 가야지 했는데, 종강하고 번아웃 와서 개발을 아무것도 못하고 있었어요. 근데 오픈 핵 갔다 오고 좋은 사람들도 많이 만나고 좋은 영향을 정말 많이 받아서 다시 개발자로서 버닝 하려고 합니다! 후기 시작하..

2019 오픈핵 후기 | 2019 OpenHack Review

728x90

첫 블로그 포스팅이네요. 이번에 저한테 의미 있었던 해커톤인 오픈 핵에 갔다 오고 나서 많은 개발자 분들이 블로그를 하시는 걸 보고 생각만 하고 있던 기술 블로그를 시작하려고 합니다.

 

오픈 핵은 소프트웨어 중심대학으로 지정된 각 대학에서 대표로 선정된 약 4명의 학생들이 모여서 한 해커톤입니다!

 

오픈 핵 지원서 쓸 때만 해도 시험기간이라서 학교 가면서 지하철에서 30분 동안 후다닥 기존 포트폴리오 복붙 했는데 붙을 줄이야!! 학과 사무실에서 오픈 핵 참가자라고 연락 왔을 때 종강하고 개발 공부 좀 하다가 가야지 했는데, 종강하고 번아웃 와서 개발을 아무것도 못하고 있었어요. 근데 오픈 핵 갔다 오고 좋은 사람들도 많이 만나고 좋은 영향을 정말 많이 받아서 다시 개발자로서 버닝 하려고 합니다!

 

후기 시작하겠습니다!

 

 

정말 본인 위주의 후기입니다.

 


 

첫째 날

- 개발 세미나

- 자기소개

- 아이디어 피칭

- 팀빌딩

- 개발

 

둘째 날

- 개발 개발 개발

- 멘털 케어엔 멘토 테이블로

 

셋째 날

- 개발

- 발표

- 수상

- 네트워킹


첫째 날

오픈 핵 일정 확인

오픈핵 일정표

 

오픈 핵은 익산 웨스턴 라이프 호텔에서 진행되었습니다.

 

저희 학교 같은 경우는 이화 개발자들끼리 모두 같은 ktx 호차를 끊어줘서 다 같이 이동했습니다. 같이 밥 먹고 종강한 얘기나 교수님 얘기하면서 조금 친해진 것 같습니다. 다 같이 사진 찰칵!! 제일 상태 좋을 때 찍어야 된다고 하고 찍었어요ㅎㅎ

 

들어가자마자 주는 받은 굿즈!!! 진짜ㅠㅠㅠ 행복했어요!!! 그동안 갔다 온 해커톤 명찰을 모두 갖고 있는데, 오픈 핵은 굿즈까지 완벽해요!! 특히 저 배지들은 진짜 너무 귀여워서 주섬주섬!!


개발 세미나

굿즈 받고 저는 3층에서 ai, 개발, openSW 특강을 들었습니다. 사실 저는 그동안 프로젝트하면서 github랑은 좀 많이 친해져서 다른 세션을 들으려고 3층에 올라온 건데 정말 좋았습니다!!

 

1. ai 세미나

사실 AI나 블록체인 쪽 보다는 웹 개발에 더 많이 관심이 있어서, 사실 잘 모르던 분야인데 발표자 분께서 질문도 잘 받아주셔서 너무 감사했습니다! 지금 강연 때 봤던 필기 보니까 음,, 역시 생소한 단어네요!!
mortal, contract의 개념에 대해서 설명해 주신 게 기억에 남는데, 외부에서 ai에 접근할지, 안 할지 영화 예시를 들어주시면서 설명해주셨습니다.

 

2. Docker + Cloud 서버 개발 세미나

이 세미나가 개인적으로 저한테 너무 도움이 된 세미나였습니다. 
사실 그동안 docker환경이나, nginx 말고 다른 aws 로드 밸런서에 대해서 궁금했는데, 개발의 전체적인 과정이나 코드를 강연자 님이 처음부터 시현해주셔서 감을 잡은 것 같은 느낌이 들었습니다. 
ppt에서 각 코드의 흐름을 하나하나 필기했는데요 제가 기억나는 전체적인 흐름은

 

AWS 서버 생성

 - AWS EC2 생성, SSH 서버 연결

DOCKER 설치 (doker hub 원격 서버 이용)

 - IMAGE 생성 (github과 비슷한 느낌?)

   > (github repository - docker hub repository)

   > (source code - image(container) : 서버 환경 저장)

도메인 연결 (AWS route)

ELB 생성 (로드밸런서)

 - 이전에 ELB용 보안 그룹 생성하기

 - ELB 생성 후 EC2에 추가

 

가장 기억에 남는 건 docker 명령어가 흘러가는 과정을 다 보여주신 거였는데, 해커톤에서 docker를 공부하려다가 시간이 부족해서 미루고만 있었는데 AWS랑 연계해서 배포 개념을 훑어준 게 저한테 너무 큰 자산이었달까! 꼭 블로그에 공부해서 포스팅하고 말겠습니다!!

 

3. 오픈 소스 세미나

오픈 소스 세미나 같은 경우 한글시계 개발자님께서 진행해주셨습니다. 와 이전에 써 보고 나서 대단한 분이라 생각했는데 저보다 한 살 어린 분이라 진짜 놀랐습니다. 역시 컴공판 재능충들이 넘치는 곳!!

 

강연자 님이 말한 것 중에 오픈소스의 장점으로

1. 문제제기

2. 기능 개선 요청

3. 코드 품질 강화

4. 프로그램 배포 간편

 

이렇게 네 개가 있었는데 제가 질문했던 것들은 2개였습니다.

 

Q. 프로그램 배포가 간편한 거면 github에 exe파일을 공개하시는 것 같은데 브랜치 전략을 어떤 걸 사용하시나요

 

A. git flow를 사용합니다. (야호 제가 아는 개념) feature브랜치로 기능별로 구현하고, 각 feature 브랜치의 내용을 develop 브랜치에 반영, 그리고 master 브랜치에 실제 서비스를 배포하는 형식으로 하고 있습니다.

 

Q. 오픈 소스 프로젝트의 경우엔 내 주 언어(java)가 아닌 언어도 사용하고 여러 개의 언어가 얽혀있는데 어떻게 코드를 해석하시나요?

 

A. 대부분의 오픈 소스 프로젝트가 규모가 큰 프로젝트(chrom, android 등)가 많아서 여러 언어가 섞여있긴 해요. 그래서 저는 어느 언어든 main 함수와 같은 역할을 하는 게 있잖아요?! main 함수부터 보고 따라갑니다! 이해 못해도 좋아요!

특히 두 번째 질문에 대한 답변이 저한테 유익했던 시간이었습니다.

 


자기소개

세미나가 끝나고 자기소개를 진행했는데 참가자, 멘토님, 운영진님 까지 모두 200명 가까이 되는 사람들이 모두 소개하는 자리를 가졌습니다. 간단하게 학교, 자신의 기술 스택, 오픈 핵에 오게 된 소감을 발표했습니다.

 

네. 롤 API로 재밌는 서비스 만들고 싶다고 한 게 접니다ㅋㅋㅋ

개인적으로 항상 롤 API가 되게 다양하고 문서가 갖춰져 있다고 생각해서 그 자리에서 말했는데 말을 뱉고 나서 바로 api문서 찾아보니까 spring으로 개발하지 않는 이상 다른 프레임워크 학습곡선 때문에 클라이언트한테 api 넘겨주는 시간이 오래 걸릴 것 같아서 접었습니다! 헤헤


아이디 피칭

드디어 아이디어 피칭!!

한 명 한 명 나와서 아이디어를 발표하는 시간을 가졌습니다! 사실 배지가 탐나서 나갈까 했다가 제가 맘에 드는 아이디어 (저희 팀 알고리더!!!)가 나와서 혹시라도!!! 선택될까 봐 가만히 있었어요.

 

그중에도 확실히 기억에 남는 건 성관련 서비스 기획하신 분!! 진행자님의 짓궂은 멘트에도 굴하지 않고 만들어 낸 게 개인적으로 멋있는 분이었습니다!


팀빌딩

아이디어 피칭 후, 벽에 붙어있는 아이디어의 소개에 스티커를 붙여서 스티커를 많이 받은 순으로 최종 아이디어를 선정했습니다. 그렇게 최종 선정된 아이디어의 PM들은 각자 자신의 아이디어 종이를 붙이고 돌아다니면서 개발자님을 구하는 신기한 광경이 나왔습니다!

저희 팀은 AlgoReader! 백준 알고리즘 아이디를 입력하면, 유저가 푼 문제를 분류해서 시각화해서 알려주는 아이디어였습니다. 저는 저희 PM님한테 스티커 3개 몰빵 했다고 어필했습니다!


개발 시작

백엔드 2 + 프런트엔드 2 + 디자인 1 이렇게 5명이서 개발을 시작했습니다!

첫날에 다 같이 닭강정 먹으면서 이야기하는데 이때만 해도 다들 세상 해맑은 성격인지 몰랐어요!! 개발하면서 너무 재밌게 개발하고, 오류가 나도 음!!! 이런 오류가 나도 이쁘게 보이는 것 같아!! 하고 칭찬해주는 다들 착한 사람들ㅜㅜ 

특히 디자이너 소현이랑 엄청 친해져서 좋았어요><

 

이후 스택을 정했는데

 

프런트엔드는 vue js백엔드django로 정했습니다!


둘째 날

개발 개발 개발!!

1. 크롤링

 

백준 알고리즘을 이용해야 했기에 백준 api를 찾아봤는데 백준 님 답변은

 

그렇지만 api가 없더군요ㅜㅜ 그래서 결국은 파이썬 beautiful soup을 이용해서 제가 크롤링을 담당하게 되었습니다.

 

그런데 개발을 하면서 확실히 안 하던 언어를 사용하다 보니 계속 오류가 뜨더라고요.

저 같은 경우 대부분의 에러가 타입 에러... 그동안 java로 개발하면 intellij에서 타입을 다 확인하고 개발을 하다 보니까 이런 경우가 없었다 보니 더 고생을 했습니다!

2. 장고!!!!

클라이언트와 통신하는 rest api 같은 경우는 장고를 이용해서 개발했습니다.

장고가 확실히 api가 빠르게 구현되긴 하지만 오히려 제가 애먹은 부분은 환경 세팅이었습니다ㅜㅜㅜ 파이썬으로 개발하는 친구가 docker를 사랑하는 이유를 알게 됐어요!

 

그렇지만 확실히 여러 프레임워크를 상주하다 보니까 이해는 빨리되는 느낌이었습니다! node.js에서의 package.json, spring의 gradle과 maven처럼 django도 requirement.txt 파일이 필요하다는 걸 알았고, django에서 DB 연동 시 migrate 하는 방식이 ruby에서 migrate 하는 방식이 비슷하다고 느꼈습니다.


멘털 케어엔 멘토 테이블로

그래서! 위에 문제들을 겪을 때! 특히 환경설정에서 애먹을 때 멘토 테이블을 갔는데 다들 너무 친절하게 같이 고민해주고 해결해주셔서 너무 감사했습니다.

 

핵 데이에서 같은 팀이었던 두진님이 gitignore 파일이 안 먹어서 (이미 올라간 파일을 ignore 하려고 해서 생긴 문제) 고민했던 문제도 해결해주셨고

 

멋쟁이 사자처럼을 같이했던 현석오빠 같은 경우는 저랑 같이 장고 코드 보면서 주변분들께 파이 참 환경설정 물어봐주는데 너무 고마웠습니다! 그리고 이때 당근 마켓 재호 오빠가 해결을 싹 해주셔서 그 이후 개발은 순탄했습니다!!ㅎㅎ

 

외 에도 자바의 requirement.txt 파일을 만들 줄 모르고 이런 모듈 설치가 안돼서 장고 실행이 안돼서 애먹을 때도 데브옵스 코리아 조철현 멘토님께서도 다 해결해주셨습니다.

 

멘토님들이 하나같이 자기들 문제처럼 코드 한줄한줄 봐주시는 모습에 감동하고 이번 해커톤에서 자바 개발자라고 자바만 파지 않고 스택을 그래도 조금씩은 넓혀봐야겠다는 생각을 하게 되었습니다.


셋째 날

개발

저 같은 경우엔, 크롤링 api 수정을 마치고 잠시 눈을 붙이러 올라갔는데 저희 프런트엔드들은 한숨도 못 잤다고 해서 미안했습니다ㅜㅜ 그래서 일어나서 밥 먹는 대로 빠르게 README.md 파일 및 서버 아키텍처 구조 작성하고 발표를 준비했습니다.


발표

각 팀에서 몇 명은 자신의 테이블에서 각종 시연 및 발표를 하고, 다른 몇 명은 다른 테이블을 돌아다니는 방식으로 발표가 진행됐습니다. 1인 3표까지 다른 팀에 투표할 수 있어서 통상적인 해커톤이랑은 심사기준부터가 달랐습니다!

개인적으로 한 명 한 명 무대 앞에서 나와서 피칭하는 방식이 아니라, 모두가 직접 시연하고 질문할 수 있는 방식이라서 더 집중되었습니다.

 

제가 개인적으로 대단하다고 생각했던 프로젝트는 15조였나 안드로이드 텍스트 에디터 라이브러리를 만들었던 팀이었습니다. 대부분의 해커톤 서비스는 일반 사용자를 겨냥한 게 많은데, 이 팀처럼 개발자를 겨냥한 서비스는 새로웠습니다!! 그래서 개인적으로 수상팀에 당연히 들 거라고 생각했어요!!

 

저희 팀도 열심히 시현했습니다!!

저희 팀 시현하다 보니까 와,,, 알고리즘 120위 대인 랭커 분도 보고 신기했습니다


수상

두구두구 그래서 저희 팀은!!

2등입니다!!!

사실 시연 때 많은 분들이 재밌어해 주셔서, 팀원들이 모두 4등 정도 기대하던 상태인데 이름이 안 불리길래 다들 체념했었습니다ㅋㅋㅋ 그래서 2등 팀에 저희가 불렸을 때 팀원들 모두 얼떨떨해하면서 갑자기 행사장에 침묵이!!!

다들 너무 기뻐하면서 기념 촬영하고!

나중에 얘기했는데 알고리더는 서버도 프런트도 조금씩 수정해서 제가 dns 배포 무조건 할 거라고 밀어붙이는 중입니다!!


네트워킹

수상이 끝나고 기념촬영 후에 저녁식사 겸 네트워킹 시간이 있었습니다. 팀원들끼리 이야기하다가, 여성 개발자분들 이야기를 들을 수 있다고 해서 저는 그 테이블에 가서 이야기를 했습니다. google 프로덕트 매니저 이해민 멘토님, MS 전미정 멘토님 이야기를 들으면서 사실 걱정이 많이 됐습니다. 멘토님들이 그동안 여성 개발자로서 고생했던 일화들이 저한테도 일어날 것 만 같았기 때문입니다. 근데 듣다 보니 멘토님들은 이런 고생에도 꿋꿋하게 자신이 하고 싶은 일, 커리어가 개발이라는 걸 알고 있고 오류를 해결하는걸 즐거워하시는 정말 코딩을 사랑하시는 분들이었습니다. 그래서 저도 앞으로 힘들겠지 하고 짐작하고 고민하는 것보단, 개발자로서 이것저것 시도하면서 이번 해커톤처럼 재밌게 코딩해야겠다고 마음을 먹게 되었습니다!


마무리

저한테 정말 기억에 많이 남는 해커톤입니다. 여기서 만난 기존에 알던 인연들도, 새로 만난 인연들도 저한테 너무 소중한 사람들이기 때문입니다. 그리고 그동안 7번 정도의 해커톤을 나갔지만, 이렇게 실제로 배포하고 싶다고 생각될 만큼 애정을 가진 프로젝트가 알고리더가 처음이었습니다!! 그리고 해커톤에서 처음 수상을 해본 거라서 저한테 뜻깊었던 것 같습니다.

top4에 들어서 8월 말에 있을 중국 해커톤에도 나가게 되었는데요, 거기서도 지금 팀원들하고 으쌰 으쌰 해서 쓸고 오겠습니다!! 후기는 여기까지 끝!

This is my very first blog post. After attending Open Hack, a hackathon that was really meaningful to me, I saw so many developers out there blogging and decided to finally start the tech blog I'd only been thinking about.

 

Open Hack is a hackathon where about 4 representative students from each university designated as a Software-Centered University come together to hack!

 

When I was writing the Open Hack application, it was exam season, so I just spent 30 minutes on the subway to school frantically copy-pasting my existing portfolio. I never thought I'd actually get in!! When the department office contacted me saying I was selected as an Open Hack participant, I thought I'd study up on development after finals and then go. But after finals, I got totally burned out and couldn't do any coding at all. Then after going to Open Hack and meeting so many great people and getting such positive inspiration, I'm ready to get fired up again as a developer!

 

Let's get this review started!

 

 

This is really a very personal review.

 


 

Day 1

- Dev seminars

- Self-introductions

- Idea pitching

- Team building

- Development

 

Day 2

- Code code code

- Mentor tables for mental care

 

Day 3

- Development

- Presentations

- Awards

- Networking


Day 1

Checking the Open Hack Schedule

Open Hack Schedule

 

Open Hack was held at the Iksan Western Life Hotel.

 

In our school's case, all the Ewha developers booked the same KTX car so we all traveled together. We ate together and chatted about finals and professors and got a bit closer. We all took a group photo!! We said we had to take it while we still looked our best haha

 

The goodies they gave us as soon as we walked in!!! I was so happy!! I've kept all the name badges from every hackathon I've attended, and Open Hack had the best swag! Especially those badges — they were so cute I just had to grab them all!!


Dev Seminars

After getting our goodies, I went up to the 3rd floor and attended sessions on AI, development, and open-source software. I actually came up to the 3rd floor to attend a different session since I was already pretty familiar with GitHub from doing projects, but the sessions were really great!!

 

1. AI Seminar

Honestly, I'm more interested in web development than AI or blockchain, so this was an unfamiliar field for me. But the speaker was so nice about taking questions, and I really appreciated that! Looking at my notes from the talk now, hmm, definitely some unfamiliar terms!!
I remember the speaker explaining the concepts of mortal and contract — they used movie examples to explain whether or not external access to AI should be allowed.

 

2. Docker + Cloud Server Development Seminar

This seminar was personally the most helpful one for me. 
I'd been curious about Docker environments and AWS load balancers beyond just nginx, and the speaker demonstrated the entire development process and code from scratch, so I felt like I finally got a grasp on it. 
I wrote down the flow of each piece of code from the slides, and the overall flow as I remember it is:

 

AWS Server Setup

 - Create AWS EC2, connect via SSH

Install DOCKER (using Docker Hub remote server)

 - Create IMAGE (similar concept to GitHub?)

   > (GitHub repository - Docker Hub repository)

   > (source code - image(container): saves server environment)

Domain connection (AWS Route)

Create ELB (Load Balancer)

 - Create a security group for ELB beforehand

 - Add ELB to EC2 after creation

 

The most memorable part was seeing the speaker walk through the entire flow of Docker commands. I'd been meaning to study Docker at hackathons but kept putting it off due to time constraints. Getting an overview of the deployment concept tied together with AWS was such a huge asset for me! I'm definitely going to study this and blog about it!!

 

3. Open Source Seminar

The open source seminar was led by the developer of the Korean Word Clock. Wow, I'd used it before and thought the creator must be incredible — then I found out they were a year younger than me and I was genuinely shocked. The CS world is overflowing with talented people!!

 

Among the things the speaker mentioned, the advantages of open source were:

1. Raising issues

2. Requesting feature improvements

3. Strengthening code quality

4. Easy program distribution

 

There were four points like this, and I asked two questions.

 

Q. If program distribution is easy, it seems like you publish exe files on GitHub — what branching strategy do you use?

 

A. I use git flow. (Yay, a concept I actually know!) I implement features on feature branches, merge each feature branch into the develop branch, and then deploy the actual service from the master branch.

 

Q. In open source projects, you often encounter languages other than your main language (Java) and multiple languages intertwined — how do you read through the code?

 

A. Most open source projects are large-scale projects (Chrome, Android, etc.) so they do mix multiple languages. So what I do is — every language has something that serves the role of a main function, right?! I start from the main function and follow along from there! It's okay even if you don't understand everything!

The answer to the second question was especially helpful for me.

 


Self-Introductions

After the seminars, we had self-introductions where nearly 200 people — participants, mentors, and organizers — all introduced themselves. Everyone briefly shared their school, tech stack, and thoughts on coming to Open Hack.

 

Yes, the one who said they wanted to build a fun service with the League of Legends API was me lol

Personally, I always thought the LoL API was really diverse and well-documented, so I mentioned it on the spot. But right after saying it, I checked the API docs and realized that unless I developed with Spring, the learning curve for other frameworks would make it take too long to pass the API to the client — so I scrapped the idea! Hehe


Idea Pitching

Finally, idea pitching time!!

Each person came up one by one to present their ideas! I was actually thinking about going up because I wanted the badge, but then an idea I really liked (our team's AlgoReader!!!) came up, so I stayed put just in case!!! I might get picked.

 

Among them, the one that definitely stood out was the person who pitched a sex-education-related service!! They pushed through despite the MC's teasing comments, and I personally thought that was really cool!


Team Building

After the idea pitching, we put stickers on the idea descriptions posted on the walls, and the ideas with the most stickers were selected as final ideas. Then the PMs of the selected ideas walked around with their idea sheets, recruiting developers — it was quite a sight!

Our team was AlgoReader! The idea was to input your Baekjoon algorithm ID and it would categorize and visualize the problems the user has solved. I made my case to our PM by telling them I put all three of my stickers on their idea!


Start of Development

We started developing with a team of 5: 2 backend + 2 frontend + 1 designer!

On the first night, we all ate dakgangjeong (sweet crispy chicken) together and chatted. At that point I had no idea everyone would turn out to be such bright and cheerful people!! While coding, we had so much fun, and even when errors popped up, someone would say "Hmm, even this error looks pretty!!" and compliment it. They were all such kind people ㅜㅜ

I especially got really close with our designer Sohyeon, which was great ><

 

After that we decided on our tech stack:

 

Frontend was Vue.js and backend was Django!


Day 2

Code Code Code!!

1. Web Scraping

 

Since we needed to use Baekjoon Online Judge, I looked for a Baekjoon API, but Baekjoon's response was:

 

But there was no API ㅜㅜ So in the end, I ended up being in charge of web scraping using Python's Beautiful Soup.

 

While developing, using a language I wasn't used to definitely led to constant errors.

In my case, most of the errors were type errors... Since I'd been developing in Java where IntelliJ checks all the types for you, I'd never run into these kinds of issues before, which made it even harder!

2. Django!!!!

For the REST API to communicate with the client, we used Django.

Django definitely makes it quick to implement APIs, but the part that actually gave me trouble was the environment setup ㅜㅜㅜ I finally understood why my friends who develop in Python love Docker!

 

But having worked with various frameworks, I felt like I picked things up pretty quickly! Just like package.json in Node.js and Gradle/Maven in Spring, I learned that Django also needs a requirements.txt file. I also noticed that the way Django handles DB migrations felt similar to how Ruby does migrations.


Mentor Tables for Mental Care

So! When I was running into those issues above! Especially when struggling with environment setup, I went to the mentor tables, and everyone was so kind — they brainstormed with me and helped me solve things. I was really grateful.

 

Doojin, who was on my team at Hack Day, helped solve the issue where the .gitignore file wasn't working (the problem was caused by trying to ignore files that were already tracked).

 

Hyunseok, who I knew from Likelion (멋쟁이 사자처럼), went around with me looking at Django code and asking people nearby about the Python environment setup — I was so thankful! And then Jaeho from Danggeun Market (Karrot) swooped in and solved everything, so development went smoothly after that!! haha

 

On top of that, when I didn't know how to create a requirements.txt file for the Java-side and couldn't install certain modules so Django wouldn't run, mentor Cho Cheolhyun from DevOps Korea solved that too.

 

Seeing how each mentor looked at our code line by line as if it were their own problem really moved me. This hackathon made me realize that just because I'm a Java developer doesn't mean I should only stick to Java — I should try to broaden my stack little by little.


Day 3

Development

In my case, I finished fixing the scraping API and went upstairs to catch some sleep, but our frontend developers said they didn't sleep at all — I felt so bad ㅜㅜ So as soon as I woke up and ate, I quickly wrote up the README.md and server architecture documentation and prepared for the presentation.


Presentations

A few members from each team stayed at their table to demo and present, while the rest walked around to visit other tables. Each person could vote for up to 3 other teams, so the judging criteria were quite different from a typical hackathon!

Personally, I found it much more engaging since it wasn't the usual format where each person pitches on stage — instead, everyone could directly interact with the demos and ask questions.

 

The project I personally thought was really impressive was from Team 15 — they built an Android text editor library. Most hackathon projects target general users, but a service targeting developers like this one was refreshing!! So I naturally expected them to be among the award winners!!

 

Our team also demoed our hearts out!!

While we were demoing, wow... we even saw someone ranked around 120th in algorithms — that was amazing!


Awards

Drumroll please... so our team!!

We got 2nd place!!!

Honestly, a lot of people seemed to enjoy our demo, so the team was expecting maybe 4th place at best. When our name wasn't called, everyone had already given up lol. So when we were called as the 2nd place team, everyone was so stunned — suddenly the whole venue went silent!!!

Everyone was so happy, and we took a commemorative photo!

We talked later and I'm currently pushing hard to make some tweaks to both the AlgoReader server and frontend so I can deploy it with a custom DNS!!


Networking

After the awards and group photo, there was a networking session over dinner. I was chatting with my teammates, but then I heard there was a table where women developers were sharing their stories, so I went over to listen. Hearing from Google Product Manager mentor Haemin Lee and Microsoft mentor Mijeong Jeon, I honestly got a bit worried. The stories of hardships they faced as women developers felt like things that could happen to me too. But as I kept listening, I realized these mentors persevered through all those difficulties, knowing that what they wanted to do — their career — was development. They genuinely enjoyed solving bugs and truly loved coding. So instead of worrying and overthinking about how hard things might be ahead, I decided to try all sorts of things as a developer and have fun coding, just like at this hackathon!


Wrapping Up

This is truly a hackathon I'll never forget. Both the people I already knew and the new connections I made here are all so precious to me. I've been to about 7 hackathons so far, but AlgoReader is the first project I've felt so attached to that I actually want to deploy it for real!! And since this was my first time ever winning an award at a hackathon, it made the experience extra meaningful.

Since we made top 4, we'll also be going to a hackathon in China at the end of August. We're going to rally together with our current teammates and bring it home!! That's a wrap on this review!

댓글

Comments