DevFest on Campus 2019 - 기획단의 후기! | DevFest on Campus 2019 - A Review from the Planning Team!
1. 인트로

2019년 11월 16일 DevFest on Campus 2019가 드디어 끝났다!!!!
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에서 계속 담당해서 있다 보니 그럴 기회가 없었네요ㅠㅠ
그리고 세션을 듣다보니, 한 번쯤은 저도 발표자로 나서고 싶더라고요! 꼭 다음에는!!!ㅎㅎ
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 멤버들에게도 감사했습니다.









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!!!!
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 😭

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 ㅠㅠ


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.









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