개발자 99% 커뮤니티에서 수다 떨어요!
안녕하세요. 새로운 것에 대한 지식욕이 넘쳐 흐르는 새내기 비전공자 개발자 Apensia라고 합니다.
통계 분석과 머신러닝 쪽을 공부하고 지금은 엉뚱하게(?) 패션의류 제조업 쪽에서 일하고 있으니 솔직히 개발자라 하기에도 되게 어색하네요..
코딩 쪽으로 아주 인연이 없던 건 아니었지만 아무래도 저에게는 다소 생소한 분야였고 주위에 개발 쪽으로 조언을 해줄 수 있는 커뮤니티를 찾다가 우연히 이곳을 알게 되었습니다. 도움이 될진 모르겠지만 저와 똑같은 비전공자 출신 분들께 동병상련의 처지로서 뭔가 도움이 될 저만의 팁들을 조심스럽게 공유해보고자 이렇게 글을 써봅니다!
알파벳과 영문법을 모르는데 영어를 작문/독해를 할 수 있을까요? 저는 굳이 비유한다면 자료구조는 알파벳, 알고리즘은 영문법이라고 하고 싶습니다. 컴퓨터의 기본을 이루는 데이터를 어떤 구조로 짜야지 보다 효율적으로 다룰 수 있을까? 어떻게 하면 컴퓨터 메모리에 불필요한 과부하를 주지 않고 성능을 개선해서 웹 사이트를 좀 더 쾌적하게 만들 수 있을까? 이건 어떤 알고리즘을 사용하면 훨씬 효율적일까? 이런 일련의 생각들이 코딩을 하면서 계속적으로 들어야 하는 것 같습니다.
클론코딩을 보면서 볼 때는 진짜 손쉽게 짤 수 있겠는데 막상 IDE 화면에 덩그러니 본인 혼자만 남게 되면 머리가 백지 상태가 되는 기분. 느껴보신 적 없으신가요? 저도 처음엔 그랬었습니다. 본인 스스로 생각하는 힘을 기르지 못하다보니 자연스럽게 이런 문제에 봉착했었던 것 같아요. python을 공부하시는 분들은 아시겠지만 분명히 로직을 정확히 짰는데도 type이 달라서 원하는 값을 못 얻었다든지, 반복문 안에 반복문을 넣어서 쓸데없이 메모리를 많이 잡아먹었다든지 등... 이런 기초적인 부분도 있지만 더 나아가 능동적이고 응용력이 있는 사고를 할 수 있는 힘을 길러준다는 점에서 굉장히 중요한 부분인 것 같습니다.
이름부터 벌써 딱딱하게만 들리는 공식 문서.. 하지만 처음부터 친해져보도록 노력해보세요. 그러면 나중에 본인이 다른 무언가를 만들 때에도 훨씬 손쉽게 만들 수 있는 힘이 생깁니다.
저 같은 경우엔 노마드코더 강의로 한 번 보고 해당 내용은 반드시 제 눈으로 직접 찾아서 그 내용이 무엇인지 이해하고자 했습니다. 그리고 가능하다면 해당 기능의 소스 코드도 함께 보았구요.
예를 들어 Django의 경우 각 기능들마다 옆에 소스 코드 링크를 첨부하여 이 기능이 어떻게 해서 특정 기능을 수행하는지도 적어놓았습니다. 니코쌤이 가끔씩 이론적인 부분을 그냥 지나치지 마시고 이 소스 코드들과 함께 곁들어 본다면 훨씬 이해하기가 쉬우실 겁니다.
그리고 공식 문서에서나 강의에 찾아볼 수 없는 새로운 시도를 하다가 막히면 언제든지 구글에게 물어보세요. "Just google it"이라는 외국 형님들 말씀이 괜히 나온 게 아닐 정도로 정말이지 찾아보면 다 나옵니다...
커뮤니티에서 개발자들이 대충 링크만 띡 던져놓는 걸 보고 "참 진짜 성의없다ㅡㅡ" 라고 처음엔 이렇게 느꼈지만, 나중에 지나고보니 "와... 진짜 이런걸 어떻게 찾았지? 천사분이시다..."라고 생각하게 되더라구요. 그렇게 바뀌었다는 거는 여러분들도 조금씩 성장하고 있다는 뜻이기도 하니까요.
그리고... 아무리 개발자로도 영어 공부들은 다들 하셔야겠죠?ㅎㅎ 그런 의미에서 더욱 친해져보려고 노력해보시길 바랍니다!
클론코딩은 눈과 손만 있다면 "누구든지" 따라할 수 있습니다. 그 말인 즉슨 그 강의를 보는 "누구든지" 똑같은 방식으로 코딩을 할 수 있다는 것이죠. 하지만 이는 맛보기로는 좋을 수 있어도 본인의 실력을 기르기에는 충분치 않습니다. 고로, 남들과는 다른 코딩하는 사람으로 거듭나고 싶으시다면 사이드 프로젝트를 한 번 해보는 것을 강력히 추천드립니다.
코딩을 시작하신 분들 중에서 "살면서 이런 서비스가 있었으면... 그걸 내가 직접 만들어볼 수만 있다면..."하고 시작하신 분들이 다소 계시지 않나요? 그렇다면 이미 여러분들은 사이드 프로젝트감이 있으신겁니다! 여러분들이 사이드 프로젝트를 진행하면서 강의에 있던 기능 그대로 써보고 싶은데 웬지 모르게 안된다든지, 강의에는 없던 새로운 기능을 써보고 싶은데 잘 안 된다든지... 여러 난관에 봉착하게 되실겁니다. 그럴 때마다 본인이 어떤 부분이 아직 부족한지 셀프 점검이 되는 기회도 될 뿐더러 실제로 기능 구현을 성공하게 될 경우 그 짜릿함은 덤으로 가져가실 수 있습니다. 정말이지 이번에 개인적으로 친동생을 위해 Django로 웹 어플리케이션을 만들면서 한층 더 성장한 것을 느낄 수 있었습니다.
혹시 취업하시는 분들 중에 클론코딩 강의를 그대로 따라한 프로젝트를 포트폴리오로 넣으시는 분들은 다들 없겠죠?? 만들지 못했던 것을 솔직하게 스토리를 짜서 면접 때 말하는 것이 대충 보고 따라 만든 완성된 프로젝트보다 훨씬 더 좋은 이미지를 만들 수 있고 말할 내용이 많아질겁니다.
무엇이든지 처음부터 잘하는 사람이 어디 있나요? 하다보면 막혀서 도저히 뚫을 수 없는 문제에 도달할 때도 있습니다. 그럴 때에는 질문을 하세요. 질문하는 것은 전혀 창피한 일이 아닙니다!
하지만 질문하는 데에도 요령이 있답니다. 이는 노마드코더의 질문요령법을 잘 참고하셔서 질문을 해보도록 하세요. '굳이 저렇게까지 해야될 필요가 있나?'라고 하실 수 있겠지만, 네. 저렇게 굳이 하셔야 합니다. 답변자들은 질문자의 의도를 정확하게 파악해야 제대로 된 답변을 드릴 수 있으며 사람마다 생각하는 사고방식이 천차만별이라 답변도 무한가짓수가 나오기도 하기 때문이죠.
(가끔씩 아래처럼 똑바로 질문을 안하다가 저렇게 팩폭으로 혼나는 경우도 종종 있었답니다ㅠㅠ 괜히 질문자분께 쓸데없이 스무고개 시킨 것 같아 죄송스럽기만 하네요)
이것까지 하면 정말 베스트라고 할 수 있지만 못해도 상관은 없을듯 합니다. 바로 기술 블로그인데요. 말 그대로 개발에 관련된 모든 것들을 본인이 직접 블로그화 해보는 겁니다.
아래는 제가 직접 만들고 있는 블로그입니다.
토픽은 여러가지가 될 수가 있어요. 본인이 공부했던 걸 적을 수도 있고, 새롭게 나타나는 기술들에 대한 부분을 스터디한 걸 적을 수도 있고... 저 같은 경우엔 실제 빌드하고 있는 사이드 프로젝트를 어떤 식으로 만들어 나갔는지, 그리고 어려웠던 점은 무엇이었는지에 대해서 적어나가고 있습니다.
뭔가 뜬금없이 꼰대같은 말인가 싶기도 하실거에요. 배우는데에 있어 제가 가져야 할 태도 또한 중요하다고 생각이 들어서 적어보았습니다. 가끔씩 이유없이 코딩이 잘 안 풀릴 때도 있을겁니다. 당연하죠. 실력있는 개발자 분들도 잘 안되는 때가 있는걸요 뭐.
그럴 땐 가볍게 커피 한 잔 하시는 건 어떤가요? 아니면 잠깐 바람을 쐬도 좋구요, 맥주 한 캔 마시면서 chilling out 하는 것도 괜찮을거에요. 자꾸 안 된다고 본인을 부추기면 번아웃이 오기도 하니까요. 그리고 급할수록 돌아가라고 오히려 차분하게 고민하다 보면 문득 방안이 떠오를 때도 있을거에요. 저 같은 경우엔 차분히 꿈을 꾸고 있을 때(?) 벌떡 일어나 하더니 되더라구요 (이것이 말로만 듣던 꿈에서 코딩한다는 그건가...)
그리고 항상 겸손할 것. 그래야 내가 무엇을 모르는지 정확하게 파악할 수 있는 계기가 만들어지는 것 같아요. 내가 아는 지식도 시간이 지나면 기술이 바뀌면서 deprecated되는 경우도 있기도 하고요. 나중에 제가 실력이 쌓여서 10년차 개발자가 된다고 하더라도 후배들이 생기면 제가 오히려 역으로 배울 수 있는 자세를 갖추고자 노력을 할 것 같습니다. 분명히 그들로부터도 배울 점이 있을테니까요.
노마드 코더가 되고 싶습니다. 실력도 아직 안되는 거 알면서도 그래도 제 스스로에게 한계가 어디까지인지 시험해보고싶고 꿈을 실현하는 데에 부단히 노력하고 있습니다. 현재는 프론트엔드로 시작을 하긴 하지만 실제 사이드 프로젝트를 진행함으로서 백엔드, 서버 등 필요한 부분들을 차츰씩 배워나가며 한층 더 성장해 나갈 것을 목표로 하고 있습니다.