본문 바로가기

Dev. 개발 이야기

[개발을 시작]할 때 알면 좋은 것들

출처 : [개발을 시작]할 때 알면 좋은 것들


[개발을 시작]할 때 알면 좋은 것들

미국에서 공부하고 있는 고등학교 후배로부터

“프로그래밍을 더 깊게 배워보고 싶은데 어떻게 하면 좋을지…”

라는 질문을 듣고 작성한 글입니다.

그 친구는 여름방학 때 한국에서 인턴을 하고 싶다고 했습니다.

그래서 저 질문에 답하기 위해, 제가 개인적으로 1년이 조금 넘는 시간 동안, 개발에 집중하면서 경험한 내용을 간략히 정리합니다. Node.js 를 다루는 백엔드 개발자를 목표로 공부했기 때문에, 어쩌면 누군가에게는 맞지 않을 수도 있습니다(감안해주세요)

먼저, 개발을 시작하는 사람에게 “무슨 언어를 마스터해야겠다” 혹은 “이 강의를 끝까지 100% 수강해야겠다”라는 것보다 더 중요한 마인드셋이 있습니다. 주변에서 끊임없이 들어왔고, 저역시도 그게 맞다고 결론내렸습니다.

그것은 바로

하나를 완성시켜 Publish 해보는 것

뭐, “완성”의 기준도, “publish”의 기준도 개인마다 다를 수 있습니다. 하지만, 구글 플레이스토어나 애플 앱스토어에 실제로 앱을 올리거나, 실제로 도메인을 구입하고, DNS 서버를 활용해서 웹서비스를 만들거나, 아니면 적어도 깃헙에 코드를 올려서 다른 사람들과 공유할 수 있도록 하는 것은 정말 중요한 것 같습니다.

다시 말해, 어떤 책을 끝내고, 강의를 완료하는 것보다 만들고 싶은 서비스, 앱, 혹은 프로그램을 결정하고 끝까지 우당탕탕 만들어보는 것이 정말 중요합니다.

그 우당탕탕에서 갈리는 것 같습니다.

이제 index.html 그만 만들고 hello world 그만 찍고, 무엇인가 만들어보세요. 완성을 하면서 구글링을 하고, 필요한 라이브러리를 찾아보고, 온라인 커뮤니티 혹은 stackoverflow에 질문도 올려보면서 내 기술을 만들어가야 합니다.

(그렇다고 하여 자료구조와 알고리즘, 운영체제와 네트워크를 공부하는, 기본기를 다지는 작업이 중요하지 않다고 주장하는 것은 아닙니다. 우당탕탕을 하다보면 아! 이제는 내가 이것을 해야 진정으로 스킬업을 하겠구나 하는 시점이 반드시 온다고 생각합니다. 내가 만든 API서버가 어떻게 HTTP통신하는지, 리버스프록시, 웹캐시가 무엇인지, 메모리누수는 무엇인지 등등)

그럼 이제, 무엇을 만들어야 할 텐데 무엇을 만들면 좋을까요?

-> 네 그것은 이글을 읽는 당신의 흥미와 관심에 달렸습니다. 꼭 대단할 필요가 없습니다. 먹는 것을 좋아한다면 내가 다니는 맛집 사이트를 만들어도 좋고, 야구를 좋아한다면, 각 구단별 선수들의 수치를 알려주는(나아가서는 분석하고 예측해주는) 서비스를 만들어도 좋습니다.

그럼 이제, 어떻게 만들죠?

-> 제가 공부한 그대로 적어드리겠습니다. 별점은 도움이 된 정도입니다

  1. 오프라인: 국비지원 HTML, CSS, JS, jQuery ★★☆☆☆
  2. 온라인: 코드라이언: Ruby, RoR(Ruby On Rails), AWS, Vi ★★★★★
  3. 온라인: Codecademy Python★★★☆☆
  4. 온라인: Teamtreehouse fullstack javascript: Javascript ★★★★☆
  5. 책: 모던웹을위한 Javascript & jQuery ★★★★☆
  6. 자격증: 정보처리기사 ★★★★★
  7. 학점은행제(컴퓨터공학): 자료구조, 알고리즘, 운영체제, 네트워크, 데이터베이스, 이산수학 ★★★★★
  8. 오프라인: 멋쟁이사자처럼: Ruby, RoR, jQuery, HTML, CSS ★★★★☆
  9. 책: 웹을 지탱하는 기술 ★★★★★ = 절판ㅠ 도서관에서 보세요.
  10. 책: Headfirst SQL ★★★★★
  11. 온라인: 포프TV ★★★★☆
  12. 스터디: SQL, Node기초, Node심화 ★★★★★ = 구글 행아웃 스터디
  13. 온라인: 생활코딩: AWS, Node.js ★★★★☆
  14. 온라인: 티아카데미 온라인강의: SQL, Node.js, MongoDB ★★★☆☆
  15. 해커톤: 이메일 문장 도우미, 디어(Dear): 어플 ★★★★★
  16. 오프라인: 티아카데미 전문가과정: Node.js, MongoDB, AWS ★★★★★
  17. 프로젝트: 사진작가/모델 앱, 모카(MOCA): 어플, 발표자료, ★★★★★
  18. 온라인: Udemy: SQL, Node.js ★★★☆☆ = $10할인 자주해요!
  19. 해커톤: 패션블로그큐레이션 앱, 패션사이다: 시연영상 ★★★★★
  20. 책: 자바스크립트 자료구조와 알고리즘 ★★★★☆
  21. 책: HTTP 완벽가이드 ★★★★★
  22. 프리랜서: Udemy: Python, Flask ★★★★☆

*여기에는 적혀 있지 않지만, 오프라인 세미나, 컨퍼런스, 그리고 커뮤니티 모임도 기회가 되면 많이 나가려고 했습니다.

보시면 아시겠지만, 별점을 5개로 한 것들, 저에게 엄청난 깨달음과 동시에 성장의 기회를 주었던 것들입니다. 프로젝트(무엇인가 만드는 것)는 언제나 별 5개입니다. 그리고 명저들도요. 특히 8번, 9번의 책들을 읽으며 웹기술과 DB 근간에 대해 알 수 있었고 저에게는 그것이 너무나도 중요한 배움입니다. 물론, 정보처리기사도 마찬가지이고요(누군가는 전공자한테 기사는 당연한 것 아니냐~라고 이야기하지만, 태도의 차이인 것 같습니다)

코드라이언으로 개발을 시작하면서 MVC 패턴이 가장 두드러지고, 또 DB 쿼리를 고민하지 덜 해도 되는 Ruby, RoR 을 경험한 것은 행운이었습니다. 또AWS 기술들을 경험할 수 있었던 것은 행운이었던 것 같습니다. 물론, 검은 터미널 화면에 vim 을사용하면서 오타도 많이 내고, 버그를 고치는데 정말 많은 시간을 사용했지만요.

그리고 12번의 티아카데미에서 안드로이드 개발자와 디자이너, 그리고 기획자와 3개월동안 씨름하며 하나의 완성도 있는 앱을 출시하는 것은 정말 값진 경험이었습니다. 다양한 모듈을 검토하고 적용해보고, 그리고 기술적 과제들을 극복해 나가면서 글로 설명할 수 없는 경험을 했습니다. 멋쟁이사자처럼에서는 의지부족으로 결과물을 내지 못했지만, 티아카데미에서는 나름 완성도 있게 만들어서 정말 좋았습니다. 꼭 추천입니다. (해커톤도요!)

요즘은 코드스테이츠패스트캠퍼스스쿨, 그리고 코드스쿼드라는 교육기관에서 잘 가르친다고 들었습니다. 하지만, 누군가에게는 적지 않게 부담되는 금액이라는 사실은 부인할 수 없는 것 같습니다. 하지만, 또 값어치를 하는 부분들을 부인할 수 없기에, 각자의 상황에 맞게 잘 판단하시면 좋겠습니다. 저도 취업을 준비하는 입장이었다면, 코드스쿼드를 고려해보았을 것 같습니다. NHN NEXT 교수님들로부터 배우고 싶네요ㅠ

처음 개발을 시작하면, 가장 슬픈 것이 하나 있습니다.

“내가 무엇을 모르는지 모른다는 것입니다"

네, 정말 슬프고 좌절스러운 것이지요. 하지만, 계속해서 물어보세요. 지인에게, 친구에게, 교수님에게, 혹은 커뮤니티의 다른 사람에게. 그러면 도움을 줄 것입니다. 하나하나 배워가면서 성취해가고, 그 성취를 기반으로 다음 단계로 도달하는 것이라고 저는 결론내렸습니다.

저도 그렇게 했습니다. 아는 개발자 형에게 찾아가서 커피 한 잔 하면서 중요한 라이브러리 이름 하나 듣고, 개념 하나 듣고, 집에 와서 찾아보며 우당탕탕하고, 컨퍼런스에 참여해서 발표자 이메일 주소 적어다가 집에와서 연락해서 사무실에 찾아가서 이야기하고, 내가 만든 것 보여주면서 부족한 개념들, 더 공부해야하는 것들 듣고, 또 발전해나가고. 정말 하나도 모르지만 elasticsearch 정기모임에 나가서 발표 듣고, 찾아 보고(내 실력으로 할 수 없는 것이어서 그때는 좌절했지만요).

모르겠습니다.

누군가에게는 맞고, 누군가에게는 틀릴 수도 있다는 생각. 상대적이다라는 생각이 제 머릿속을 가득 채우지만, 그냥 한 명이라도 그래, 그렇구나 라는 생각을 하면서 그렇게 한 발자국 내딛으면 좋겠습니다.

그럼 화이팅하십시오. 잘 할 수 있을 것입니다. 잘 할 것이라고 믿습니다.

인내심과 꾸준함이 당신을 정말로, 진실로 다음단계로 가져다 줄 것입니다.

마지막으로 제가 정말 두근두근거리는 마음으로 컨퍼런스 발표자분께 연락해서 만나뵙고, 긴 시간은 아니었지만, 또 결의를 다지고, 많이 배웠던 순간을 기억하며 마칩니다.

playnode 가 끝나고, 용기를 내어 발표자분을 만났다.

아는 개발자형이 저에게 도움을 주었던 것처럼, 누군가가 도움이 필요하다면, 조금의 도움이 되고 싶습니다. 용기 가지고, 연락주시면 감사하겠습니다. -> syhong0714@gmail.com