개발이 갖는 의미
JAVA를 배워 메모장으로 코드를 작성해 콘솔에서 처음 실행했을 때의 기억이 납니다. 단순히 변수 값을 출력해주는 코드였지만 큰 성취감을 느꼈습니다. 반도체 칩으로 구성된 컴퓨터의 프로그램이 가지는 동작원리 역시 처음에는 상상하기 어려운 것이었습니다. 하지만 '디지털 논리회로'와 같은 방송통신대학 교재를 구입해서 보거나, Okky에서 추천하는 책들을 틈틈이 보았던 일은 ‘개발’을 배우는데 큰 도움이 되었습니다. 이후 패스트 캠퍼스 스쿨에서 컴퓨터공학 기초과정을 들었던 것 역시 ‘개발’을 구체화 해준 계기가 되었습니다.
코딩 스킬을 익히는 것도 재미있지만, 현재로서는 작동원리를 이해하거나 알고리즘을 개선하고 리팩토링하며 프로그램을 만드는 것이 더 즐겁습니다. 따라서 인터넷으로 수강 가능한 4년제 컴퓨터과학 전공을 신청해두었습니다. 자연스럽게 오프라인에서의 삶도 개발을 중심으로 변하고 있습니다. 프로그래밍 학습뿐만 아니라 세미나나 행사에 적극적으로 참여하고 있습니다. 컴퓨터 부품이나 어플리케이션 구입은 지출의 최우선순위가 되었습니다. 실력 향상을 위해 1일 1커밋과 같은 개인적 목표를 실천하고자 노력 중입니다.
웹 프로그래밍이란 것은 현실세계와 대응하는 작은 세계를 만드는 느낌입니다. 제가 정의한 모델들이 어떤 속성을 갖고, 어떤 식으로 상호작용 할 것인지 구상해 봅니다. 예상한 대로의 결과가 나올 때의 쾌감은 그동안의 어떤 성취감보다 큽니다. 발전된 실력으로 현업에 적용시킨 개발 실력의 결과물이 어떨지 기대됩니다.
웹개발에 입문하기 - 프로젝트 경험
JAVA를 배우며 프로그래밍 공부를 시작했습니다. '객체지향 언어'는 낯선 개념이었지만 도전의식을 갖게 해주었습니다. 2개월간 배운 JAVA에 익숙해지기 위해 안드로이드 모바일 어플리케이션 두개를 만들었습니다. 게임엔진을 사용하지 않고 JAVA로만 코딩하면서 힘들었지만, 클래스 상속과 같은 개념들을 연습해 볼 수 있는 프로젝트였습니다. 또한 작은 프로젝트였지만 개발을 통해서 사회문제 해결에 일조하는 방향을 찾게된 것도 큰 의미로 다가왔습니다.
이후 Javascript와 JQuery, AJAX를 공부해서 웹 프로젝트를 시작했습니다. 사용자가 웹사이트에 대한 리뷰를 남기고 그것을 수집해서 보여주는 프로젝트였습니다. 조원들과 분담해서 MVC패턴대로 뷰와 모델, 컨트롤러를 다 구현해야 했는데, 사용자 인증부분을 맡게되면서 소셜 로그인과 토큰인증, 웹 브라우저 스토리지 등을 더 공부했습니다. 처음 시작할때는 사용자 인증 정보가 어떻게 검증되고 전달되는지 감이 안왔지만, 쿠키와 세션 그리고 토큰 검증을 공부하고 MS-SQL과 apache를 이용해 웹 서버를 구축하고 사용자 인증과 서버에서 데이터를 전달받도록 구현하는게 어렵지만 즐거웠습니다. 이 프로젝트를 진행하면서 네트워크에 대한 감을 조금씩 잡을 수 있었습니다. 또한 백엔드와 프론트엔드를 동시에 구현해보면서, 사용자 입장에서 직접 보이지는 않지만 핵심적인 부분을 담당하고 있는 백엔드 프로그래밍에 더 흥미를 느낀다는 것을 알았습니다.
패스트캠퍼스에서 개발을 배우며 알게된 모습 - 장점
새로운 기술의 습득이 빠른 것이 장점입니다. 패스트캠퍼스 웹 프로그래밍 스쿨 과정을 수강하며 '웹 크롤링'이라는 개념을 알게 되었습니다. 웹상에서 모은 정보를 마크다운 양식으로 정리하는 과제를 수행한 적 있습니다. 저는 공룡 백과사전을 마크다운 파일로 옮기고 싶었습니다. 방대한 분량의 공룡 백과사전을 옮기기 위해서는 어떤 방식이 효율적일까 고민해 보았습니다. 때마침 웹 크롤러를 만들어 마크다운 파일로 출력해보자는 생각이 떠올랐습니다. 아직 파이썬을 배우지 않은 상황이었기 때문에, 기존에 배웠던 JAVA를 활용해 만들기 시작했습니다.
검색을 통해 파이썬의 BeautifulSoup처럼 웹 크롤링을 위한 라이브러리로 JSoup라는 것이 있다는 것을 알게 되었고, 스쿨 첫 주에 배웠던 HTML 문서 구조와 CSS 선택자를 활용해 네이버 공룡 백과사전 페이지를 크롤링하는 코드를 짤 수 있었습니다. JSoup을 이용해서 만든 크롤러를 이용해 마크다운 문서를 출력하며 스쿨과정의 초반에 배운 HTML 웹 문서구조, CSS 선택자의 내용, 그리고 마크다운 문서의 작성법을 복습할 수 있었습니다. 또한, 앞으로 배울 웹 크롤링 개념도 예습해 볼 수 있었습니다. 제한된 시간 내에 JSoup에 대한 문서를 찾아보며 만들었기 때문에 완벽하게 완성된 프로그램은 아니었지만, 웹 크롤링에 대한 충분한 이해를 낳은 과정이었습니다. 이어서 파이썬을 통해 웹 크롤러를 만들고, TDD를 통한 개발방법을 학습하며 기존에 제가 만들었던 JSoup을 이용한 웹 크롤러와 비교해 개선방향을 잡을 수 있었습니다.
평소의 모습 - 개발이외의 관심사
취미로 제과를 합니다. 처음에는 레시피에 정해진 규칙을 정량적으로 준수하면 예상했던 결과물이 완성되는 점이 매력적이었습니다. 제과에 어느정도 익숙해 진 뒤에는 먹는 사람을 위해 레시피를 변형 하는데서 재미를 느꼈습니다. 재료를 다루는데 숙달되고 레시피의 원리를 이해한 뒤에는 원하는 결과물이 나오도록 레시피에 나온 재료의 조합을 개선할 수 있었기때문입니다.
채식주의자용 케익을 만들어 달라는 제안을 받았을때도 기존의 채식주의자용 레시피가 다양하지 않고, 맛을 내기에는 식감이 좋지않다는 점에서 흥미를 느꼈습니다. 선물받을 사람의 취향에 맞춰서 식감을 개선하기 위해 재료를 바꿔서 만들었는데, 특히 기존의 채식주의자용 레시피 대로 엄격하게 식물성 재료를 유지하면서 식감을 개선한점이 좋은 평가를 받았습니다. 그래서 카페에서 일하는 분에게 판매 제안도 받게 되었습니다. 레시피를 준수하며 결과물을 만들되, 대상을 고려한 재료의 선택과 개선을 했던 점에서 재미도 느끼고 좋은 결과를 얻었습니다.
개발자로서 지향하는 모습
휴학 중에 장애인 활동보조 아르바이트를 했던 적이 있습니다. 그때 눈길을 끌었던 것은 제가 만나본 장애인들은 모두 IT기술에 관심이 많았다는 것 이었습니다. 저와 오래 계셨던 한 분에게 정치외교학을 전공한다고 했을 때 '집밖으로 나가기 힘든 내게는 대통령보다 빌 게이츠가 해준 것이 더 많다'고 말했던 것이 기억에 남았습니다. 이후 개발에 흥미를 느껴 공부할수록 제도가 변하기 전에 생활의 불편함을 먼저 덜어줄 수 있는 것은 기술이라는 확신이 강해졌습니다.
얼마전에 Thorn이라는 아동 성폭력 예방을 위한 소프트웨어를 만드는 단체를 소개하는 영상을 보게되었습니다. 개발하는 것 자체로도 재미있고 보람되지만, 그 결과물이 세상의 부조리한 문제를 해결하는데 도움이 된다면 더욱 보람있을 것 같습니다. 실력있는 개발자가 되고 싶은 이유 중 한가지이기도 합니다. 단순히 개발을 하는 것이 삶에 활력을 주고 재미있다는 것도 개발자가 되어 개발을 평생 하고 싶은 이유지만, 개발은 제가 세상에 더욱 도움이 되는 사람이 되게 해주는 플랫폼이 되기도 한다고 생각합니다.
연결된 Behance 계정이 없습니다.
연결된 Dribbble 계정이 없습니다.
연결된 GitHub 계정이 없습니다.
연결된 Bitbucket 계정이 없습니다.