2019 QI IoT Summer Project

2019. 10. 14. 02:30활동/내 이야기

7월 4일 ~ 8월 13일 까지. U C SanDiego에서. QI 7th.

lajolla shore 에서. 내가 가장 맘에 드는 단체사진. Mike 친구들과 QI 학생들과 험께. 2째주 금요일 저녁이였던걸로 기억함.
Final Presentation
1등 팀 상

총 6주 동안

나는 이 프로젝트를 위해.

1,600줄 이상의 PHP 코드와 1,000줄 이상의 Javascript 코드를 작성했고,

적어도 300시간 이상을 코딩에 할애하였으며,

총 26명의 친구와 함께 하였고,

그중 5명과 한 팀이 되었으며.

3명의 instructor,

2명의 TA,

1명의 박사님과 함께 프로젝트를 진행하였고,

1등 팀으로 교육 과정을 수료하였다.

놀기도 열심히 놀았고, 코딩도 정말 열심히 했다.

 

6주 동안 미국에서 틈틈이 글을 작성해서 블로그에 포스팅하겠다는 다짐과는 달리 포스팅 몇 개 이후에는 마지막 후기를 쓰게 되었다. 학교에 제출하는 보고서도 써야 했기 때문에 블로그 포스팅할 시간이 그렇게 많지 않았다. 6주 동안 생활을 뒤집어 보면서 한번 써보겠다.

 

 

 

처음 여기에 와서 PHP 공부를 시작했을 때, 나는 PHP에 대한 지식이 전무했다. Slim Framework라는 것도 처음 들어 보았고, 이전에 Spring을 공부하면서 MVC 패턴을 공부했던 것이 조금이나마 도움이 되었다.

 

박사님이 말씀하셨듯이, 그리고 한국에서 교수님들이 말씀하셨듯이, 구글 서치를 잘 사용을 해야 좋은 개발자가 된다는 말을 여기서 다시 한번 뼈저리게 느꼈다. 어떤 에러들, 혹은 내가 모르는 것들은 전부 구글 안에 있었다. 또 우리가 구글에 검색할 때는 어떤 키워드를 가지고 검색할 때가 많다. 예를 들어 우리는 검색할 때 네이버에 "어떻게 하면 PHP에서 JS로 데이터를 전송할 수 있나요?" 이렇게 검색하지 않는다. 단지 "PHP에서 JS로 데이터를 넘기는 방법" 이런 식으로 검색한다. 내 생각이지만, 한국어를 사용한 검색은 영어보다 한참 모자란다. 구글 서치 엔진에서 한국어를 지원해주는 방식(?)에는 한계(?)가 있는 것 같다. 이런 것들을 영어로 정말 아무렇게 검색해도 내가 원하는 대답이 쉽게 나왔다. 앞으로 구글 검색은 영어로 하는 거로.

 

말이 옆으로 센 거 같은데, 내가 말하고 싶은 건 6주 동안 지내면서 어떤 점이 어려웠고, 어떻게 극복했으며, 어떤 점이 좋았는지에 대한 것이다.

 

먼저 어려웠던 점이라고 하면

 

  1. 영어 회화, Weekly Presentation
  2. 처음 접하는 분야
    1. PHP, Slim, Server, JavaScript, JQuery,
    2. Flowchart, Procedure, SystemArchitecture, ReferenceModel

크게 이 2가지를 뽑을 수 있을 것 같다. 먼저 영어 회화에 관해서 이야기를 해보자.

 

 

🌏 영어를 못하는데 해외연수를 간다?

 

내 토익 성적은 좋지 않다. 반타작도 못 친다. 이 프로그램을 지원할 때도 영어에 대한 자신감이나 실력이 떨어져서 일부러 토익 성적을 제출하지 않았다. 그래서 나는 처음부터 "난 영어를 잘 못 한다" 라는 고정관념이 박혀있었던 것 같다.

 

나는 영어로 대화를 해, 본적도 없고 영어 공부를 따로 해본 적도 없기 때문에 이 프로그램에 지원하게 되었다. 좀 아이러니하다고 느껴지지만, 어떤 일을 처음 시작할 때 나는 동기부여가 중요하다고 생각한다. 그래서 이 프로그램에 합격하고 나서 영어 회화 능력을 조금이나마 늘리기 위해 미드를 보면서 영어에 대한 두려움들을 떨치고 말하기 연습을 시작했다. 주변 사람들은 "그렇게 해서 늘겠냐."라고 말했지만 이 정도 라도 하지 않았으면 정말 힘들었을 것 같다.

 

이제 미국에 도착해서 실제로 영어를 사용하면서 느낀 점은 생각보다 그렇게 어렵지 않다는 점이다.

 

이 부분은 오로지 내 생각만을 풀어쓰도록 하겠다. 영어 문법이 우리나라와 상반된다는 점은 옛날부터 들어왔을 것이다. 그렇기 때문에 그러한 점이 우리에게는 큰 부담감이 되었을 수도 있지만, 한국어는 도치법이 상당히 발달되어 있기 때문에 별문제가 되지 않는 것 같다. 실제로 영어를 사용하기 전에는 몰랐지만, 그냥 한국어를 뒤집은 순서에 그에 맞는 영어 단어를 맞춰서 쓰면, 말이 통하더라. 머릿속에서 문장을 만들고 그 문장에 따라서 영어 단어를 배치하면 한 문장이 되는 신기한 경험을 할 수 있었다.

 

그리고 영어 실력을 늘리기 위해서는 자신감이 제일 중요하다고 생각한다. 생각해보면, 외국인이 한국어 하면서 어눌하게 우리에게 말을 걸어온다면 적어도 나는, 이상하게 생각하지 않을 것이다.

우리나라 사람도 아니고 다른 나라 사람이 어눌하게 우리나라 말을 한다는 것 자체만으로 신기하게 바라볼 수 있다. 외국인들도 똑같은 입장이다. 우리가 어느 정도 끼워 맞추기 식으로 영어를 한다고 해서 이상하게 생각하지는 않을 것이다.

난 이렇게 믿고 그냥 영어를 뱉었다. 이렇게 내뱉다 보면 어느 정도 영어로 말하는 데 익숙해지고 한국어로 생각 -> 영어 문법으로 바꿔서 말하는 과정이 좀 더 빨라질 수 있었다.

또 영어 실력을 향상하는 데는 weekly presentation의 역할도 정말 컸다. 나는 내 파트를 영어로 발표했는데, 1, 2 주차까지는 어느 정도 대본을 써서 발표했지만, 그 이후는 프리토킹으로 발표했다.

이렇게 발표하는 게 나에게는 정말 큰 도움이 되었다. 이 모든 게 쌓이고 쌓여서 마지막 발표를 잘 끝낼 수 있었다.

 

영어로 말하는 데 토익 성적은 중요하지 않았다. 제일 중요한 건 자신감이었다. 출국 전 이 프로그램을 지원했을 때 목표중 한 가지가 영어에 대한 흥미 가지기였는데, 이 목표는 정말 완벽하게 이룬 것 같다. 토익이 아닌 영어에 흥미를 느끼게 되었고, 왜 영어가 필요한지 경험을 토대로 알 수 있었다.

 

 

다음은 처음 접하는 분야 (PHP, Slim, Server, JavaScript, JQuery, Flowchart, Procedure)에 대해 말해보겠다.

📖 front, back 개발을 같이 진행하게 되다.

 

나는 원래 백엔드 개발 파트였다. 그런데 프론트 개발자 자리에 센서 파트를 담당하려고 했던 전자공학과 친구가 오게 되었다.

 

프로젝트 인원 맞추기 문제(한국에서 애초에 맞춰서 뽑았으면 더 좋았을 텐데 말이다) 때문에 어쩔 수 없이 그랬지만 그 친구도 원하는 파트가 있을 텐데 아쉬웠었다고 한다.

 

그래서 웹 개발을 총괄하고 front, back 을 같이 개발하게 되었다. front 개발 담당 친구는 back 부분을 같이 공부하며 개발하기로 했다.

개발할 파트가 뻥튀기가 되다 보니 남들보다 훨씬 더 많은 시간을 투자해야 했고 더 열심히 했어야 했다. 덕분에 배우는 것도 많고 좋은 경험이 되었다.

무엇보다 열심히 한 만큼 결과가 좋아서 제일 기뻤다.

웹 개발을 어떻게 하게 되었는지 말해보도록 하겠다.

18년 여름에 스터디 형식으로 Spring Framework를 공부한 적이 있었다. 이때 나는 Framework가 무엇인지, MVC 패턴이 무엇인지, 또 어떻게 Spring Framework를 사용하는지 공부했었는데, 어떻게 사용하는지는 기억이 나지 않지만, 디자인 패턴이 어떤 것인지, 그중에서 MVC 패턴은 어떤 식으로 동작하는지, 그리고 Framework 대한 정의를 공부하면서 개발 패턴에 대한 느낌을 어느 정도 잡았었다.

이 project 에서는 Slim Framework를 공부하면서 MVC 패턴을 사용해서 실질적으로 개발을 해보고 Controller, View, Model의 관계를 더 정확하게 이해할 수 있었다.

또 Server를 사용해서 안드로이드와 통신하고, 웹 페이지와 통신하면서 데이터들이 transfer 되는 과정을 이해할 수 있었고, Front-end에서 JavascriptJQuery를 처음 사용해보았다. 처음에 이질감이 상당했지만 어느 정도 적응이 되고 난 후에는 다른 프로그래밍 언어와 크게 다르지 않았다.

 

여담으로, PHPJavascript, jQuery를 사용하면서 느낀 점이 있는데, 내가 지금까지 접해본 프로그래밍 언어는 java, c, c ++, c#, python 이렇게 있다. python을 제외하고, 다른 언어들은 체계적이고 정석처럼 딱딱딱 들어맞는 느낌이었고, python은 개발자의 생각을 읽기라도 한 듯이, 필요한 기능들을 쉽게 풀어쓴 느낌이었다.

이번에 처음 접한 PHP는 뭔가 좀 흐물흐물한 느낌이라고 할까? 그리고 Javascript는 지저분한 느낌이었고 jQueryJavascript보다 깔끔하고 간편한 느낌이었다... 내 느낌일 뿐이다. 언어가 뭐가 중요하겠는가 그 언어를 사용해서 어떻게 코딩하느냐가 중요하지.

사실 내가 Front-end개발을 처음 해보고 javascript처음 해보기 때문에 코드가 지저분해서 그렇게 느낀 것 같다.

 

그래서?

내 생각엔. 어떤 걸 처음 접했는지는 중요하지 않은 것 같다. 처음 접했을 때 당사자가 어떤 식으로 반응하는지가 가장 중요하다. "이거 처음이니까 못해도 괜찮아"라는 생각은 당사자가 아니라 주위 사람이 해야 하는 생각이다. 당사자는 "난 이거 처음이니까 구글도 더 많이 찾아보고, 시간 투자를 좀 많이 해야겠다"라는 생각을 하는 게 맞는 생각이다. 적어도 나는 그렇다.

한정된 시간 속에서, 처음 접하는 기술을 사용하여 Minimum 요구사항을 만족시키는 건 쉬운 일이 아니었기 때문에 오기가 생겨서 더 열심히 했다. 남들보다 조금 더 앞에 있을 수 있었던 건, 남들보다 시간을 더 많이 투자했기 때문이다.

당연한 사실이지만 난 여기서 뼈저리게 느낄 수 있었다. 어릴 때부터 나는 시간은 조금 투자하고, 큰 효과가 나길 기대했지만, 그 분야에 있어서 타고나지 않는 이상 힘들다. 이런 당연한 사실들을 지금 깨우칠 수 있어서 얼마나 다행인지 모른다. 개발에서 시간 투자란 많은 시도와 구글링이라고 볼 수 있다.

여러 가지를 시도해보고 에러 코드나 모르는 부분을 빨리빨리 구글에서 찾아서 적용하는 것도 개발자의 능력 중 일부분이다. 그 능력들도 물론 시간을 많이 투자해야 향상할 수 있겠다.

 

다음은 시스템 설계 부분이다.

📑시스템 설계(Procedure, Flowchart, SystemArchitecture, ReferenceModel, DB Schema)

다음은 Procedure와 Flowchart, SystemArchitecture를 그리는 것이다. 사실 이 부분이 6주 과정에서 제일 어려웠다고 해도 과언이 아니다. 제일 어렵지만, 제일 중요한 과정이었다.

마지막 주를 제외하고는 계속 Procedure와 Flowchart를 그리고, 수정하는 데 시간을 투자했고, 각 파트 중에서 시간을 가장 많이 들여서 진행하였다. SystemArchitecture와 ReferenceModel은 내가 진행할 프로젝트의 전체적인 구조와 기능들에 대해 써내려 가면 되지만, Procedure와 Flowchart는 구체적인 흐름들을 정확히 알고 있어야 하기 때문에 작성하기가 어려웠다.

 

전체 시스템을 바라보면서 DB, Server, Android, Sensor 파트를 각각 나누어서 시스템을 설계하는 과정은 어떻게 시스템이 세부적으로 동작하는지 알려주었다.

Procedure와 Flowchart는 팀 프로젝트를 진행하는 데 유용하다고 배웠다. 정확한 흐름을 문서로 표현해서 그려놓으면 서로 간 의사소통 때문에 고생할 일도 많이 줄어들고, 중간에 프로젝트의 흐름이 흐려지는 일도 줄어들 것이다.

아직 내가 3학년이라서 안 배웠을지도 모르지만, Procedure와 Flowchart를 그려서 팀 프로젝트를 진행하는 방법은 학교에서 가르쳐 주는 것도 정말 좋은 방법이라고 생각한다.

실무뿐만 아니라, Procedure를 그림으로써 여러 파트가 어떻게 통신하는지에 대해서 감을 잡을 수 있고, 제일 최적화된 방법을 코딩을 시작하기 전에 강구할 수 있어 효과적이다.

어떤 방법을 이용해서 코딩하느냐도 중요하지만, 전체적인 흐름을 알고 프로젝트에 투입되는 것과 추상적인 생각만 가지고 프로젝트에 투입되는 것은 정말 차이가 크게 난다고 생각한다.

이번 프로젝트도 6주에 걸쳐서 진행되었는데, 차례대로 프로젝트가 원만하게 진행될 수 있었던 것은, Procedure와 Flowchart 덕분이라고 생각한다.

🚀결론? 너무 재밌었다!

6주 동안 한국에서 배울 수 없었던 많은 것들을 배웠다. 진짜 다른 사람들과 같이 모여서 하는 프로젝트들은 또다시 해보고 싶다.

혹시 누군가가 이런 기회가 있는데 새로운 환경이 두렵다고 도전하기 꺼려하고 있다면, 그건 자신을 울타리 안에 스스로 가두는 행동과 같다. 새로운 기회가 있다면 도전하고, 새로운 걸 느끼고, 그걸 바탕으로 배워나가야 한다.

혹시나 한국에서 배울 수 있었다고 하더라도, 먼 타지에서 생활하면서 배운 점들, 영어 회화 그리고 해외 문화를 체험하고 그들과 같이 생활하면서 느낀 점들, 한 부분에 몰두하면서 나를 발전시킨 부분들, 타 학교 학생들과 같이 팀을 이루어서 프로젝트를 진행하는 과정들 등등 국내에서는 느끼기 힘든 많은 부분을 배울 수 있었다. 대학생으로서 우리가 볼 수 있는 범위는 분명 한정되어 있지만, 그 범위 내에서 최대한 많은 것을 보고 느끼고 배워야지 우리가 원하는 이상에 조금 더 가까워질 수 있다.

 

항상 내가 할 수 있는 최선을 다하도록 노력하겠다.