아무것도 아닌 개발자가 두는 훈수

강모민·2023년 10월 24일
1

이 주제는 희망님의 글을 보고 생각나서 적어보는 것이다.
따라하려는 것이 아닌 그저 이런 방식도 있다고 전하는 것이다.
지극히 개인적인 견해이고 정답은 아님으로 참고만 하길 바란다.

솔직히 후배들을 보고 답답해서 하고싶은 말을 풀어놓은 것이긴 하지만,,,

개발 공부는 어떻게 시작해야 할까?

솔직히 그리 어려운 답을 할 것도 없다.

무엇을 하고 싶은지 정하는게 우선이다.
개발을 왜 공부하려는지 모르면 개발자들도 추천해 줄 수 있는 것이 한정적이다.

예를 들어 IoT를 하고싶다? C언어, 웹을 만들고 싶다? html, css, javascript, OS를 만들고 싶다? C++ 등 분야마다 추천할만한 언어와 공부법이 다 다르다.

난 가고싶은 분야가 없는데?

그럼 분야를 못 정하면 뭘 해야하는걸까?
솔직히 나도 모르겠다. 추천할만한 수준이 되는 것도 아니다.
하지만 개인적으로는 아무거나 해보는게 정답 같다.
웹 개발도 찍먹해보고, 앱, 게임, AI 등 찍먹을 해보고 취향을 찾는 것이 중요한 것 같다.

뭐든 열심히.

다만 찍먹한다고 "난 이길로 갈 생각은 아니니까 적당히 하면 충분해! 놀아야지~" 이런 마인드로 공부해선 안된다. 만약 추후에 그 길이 맘에 든다면? 논 시간이 아까울 것이다.
물론 그 길로 안가면 시간 낭비라 생각할 수도 있다.
확률적으로 보면 그 길을 안갈 확률이 더 높은 건 맞으니까.
하지만 모든 경험은 도움이 된다.

필자의 경우 프로젝트를 진행할 때 기획을 하고 UX/UI에 관여하며, 프론트 개발을 도와주는 백엔드 개발자였다.
이게 뭔 소린가 싶을 수 있는데, 그냥 디자인, 기획, 프론트, 백 다 했다고 생각하자.

프로젝트에 멘토님이 붙을 때면 기획, 디자인, 프론트, 백 모두 피드백을 주신다.
물론 난 모두 참여를 했기에 전체적으로 다 듣는다.
그렇다면 이 때 받은 피드백이 쓸모가 없을까?
절대 아니다.

새로운 사람을 만났을 떄.
발표를 할 때.
팀원간 소통을 할 때.
새로운 아이디어를 낼 때.

이 이외에도 많은 곳에서 유용하게 썼다.

다시 말해 찍먹이라도 열심히 하면 나중에 가서 쓸 곳은 간접적으로든 집적적으로든 분명히 존재한다.
물론 놀지말고 공부만 하라는 것도 아니다. 짧은 시간을 쓰더라도 열심히 하라는 말이다.

꾸준함.

제일 중요하다고 여기는 부분이다.
느려도 좋고 빨라도 좋다.
뛰어난 천재여도 좋고 떨어진 둔재여도 좋다.
하지만 꾸준하지 못해선 안된다.

난 꾸준함이 공부의 생명이라 본다.
1년 365일 매일 하라는 것도 아니다. (솔직히 이래 하면 갓생이지..)
그냥 2주 이상 쉬지 말자는 것이다. 하루에 3시간을 놀든 10시간을 놀든 단 1편의 강의라도 볼 수는 있는 것 아닌가? 혼자 하는 것이 힘들다면 함께 하면 된다.
스터디를 모으든, 친구를 꼬드기든.
남의 시선을 이용할 수도 있다.
SNS에 "하루마다 강의 1편 이상 안본거 처음 말한사람 만원 드림" 이라는 내용을 기재한다고 하자.
만원이 아까워서라도 공부를 할 것 이다.
꼭 돈을 걸 필요도 없다. 그저 남에게 보여진다는 것 하나만으로도 압박이 될 수 있다.

어떻게 공부함?

필자가 웹 쪽을 공부하고 있기에 타 분야는 다를 수 있다.

백문이 불여일타

백번 묻는 것 보다 한번 쳐보는게 낫다.

물론 이 부분은 배우는 사람의 성향을 많이 타기에 알빠노? 하고 넘겨도 좋다.
뭐가 됐든 필자의 경우엔 이론을 읽고 정리하는건 추천하지 않는다.
아니 정확하겐 읽고 정리만 하는 것을 추천하지 않는다.

이론을 알고 이해하는 것과 적용하는 것은 다른 문제이다.
또한 정말 이해한 것이 맞는지 어떻게 아는가?
이해를 못해도 만들다 보면 이해할 수 있다고 생각한다.
한번에 이해 못하면 다음 프로젝트를 하면서, 에러를 잡으면서, 다른 프로젝트를 하면서 이해할 수 있다.

오버엔지니어링

오버엔지니어링이란 현재 상황보다 오버한 스팩, 스택 등을 가정하여 개발을 진행하는 것이다.
실 서비스를 하는 상황이라면 낭비가 되나 이것이 포폴이고 공부고 연습이라면 말이 다르다.
우린 유저가 10명도 채 되지 않는 회사에서 일할 것이 아니다.
꼭 취업이 목적이 아니더라도 적은 유저가 쓰는 서비스만을 개발할 것은 아니지 않는가?
그렇기에 많은 유저가 쓸 것이란 상황을 가정하고, 많은 성능을 요구할 것이란 상황을 가정하는 등 오버하게 설계하고 개발하는 것이다.

이를 통해 file만으로 관리하는 데이터에 DB를 도입하는 등 여러가지 경험을 얻고 결과를 얻을 수 있다.

지속적인 개발

서비스를 유지보수 하자.
게시판을 만들었다면 검색을, 검색이 있다면 카테고리를 만드는 등 계속 업데이트하자.
계속해서 업데이트를 해 나가며 완성도를 높여보자.
부실한 10가지 프로젝트보다 튼실한 1가지 프로젝트가 더 많은 경험을 가져다 줄 것이다.
추가해야할 기능이 어렵다고 미루지말고 어렵기에 도전해보자.
어려운 문제를 풀기위해 더 많은 고민과 검색을 이어갈 것이고 이 과정들은 단기간에 큰 성장을 이뤄준다.

제일 좋은 것은 유저가 있는 서비스를 개발해보자.
작아도 좋다. 아이디어가 거창하거나 신박하지 않아도 좋다. 유저가 10명이 안돼도 좋다.
그저 유저의 피드백을 통해 업데이트를 하고 에러를 고치고 유지보수를 하는 등의 경험을 직접 해보자. 솔직히 쉬운 일은 아니다. 하지만 지인들에게 써달라고만 해도 된다.
이런 경험은 쉽게 할 수 있는 것이 아니다. 물론 회사에서도 이런 특별한 경험을 좀 더 가치있게 쳐주는 경우가 많다.

팀 프로젝트

혼자 하기보단 함께 해라.
개발이란건 창업을 하든 취업을 하든 함께 하기 마련이다.
개발자가 한명이라 해도 기획자, 디자이너가 있을 수 있다.
1인 풀스택 프리랜서 급이 아니라면 앵간해선 팀 프로젝트로 진행하는 경우가 태반이다.
그렇기에 우리에게 중요한건 팀 프로젝트이다.

코드를 짜는 법, 아키텍처 등에선 피드백을 받을 수도 있고, 나와는 다른 생각을 들어볼 수도 있다.
협업을 어떻게 해가는지 감을 잡을 수도 있고, 커뮤니케이션을 어떻게 해야할지 알 수 있다.
이외에도 많은 부분에서 팀 프로젝트가 소소하게든 크게든 도움이 많이 된다고 느꼈다.
제발!! 혼자 하지말고 함께 하자. 혼자만 하다 보면 혼자만의 생각에 갇히게 되거나 우물안의 개구리가 되기 십상이다.

필자만 해도 그렇다. 주변에 팀 프로젝트를 할만한 사람이나 비슷한 수준의 사람도 없다보니 느슨해지기 마련이었다. 꾸준하지 못해서 다 까먹거나 대충대충 공부하기도 했다.
하지만 컨퍼런스를 다니며 다양한 사람을 만나고 듣다보니 내 수준을 알게되고 고쳐야 할 점, 더 배워야 할 점 등을 절실하게 느꼈다.

어떻게 질문함?

공부 방법은 말을 했으니 이제 디테일한 부분을 짚어 보자.

  • 선배
    제일 베스트는 선배들과 함께 공부하는 것이다.
    과제를 받고 피드백을 듣고 팀 프로젝트도 하면 좋을 것이다.
    하지만 모두가 좋은 선배가 있는 환경일 순 없다.
    좋은 선배가 있더라도 관련 분야가 아닐 수도 있다.

  • ChatGPT
    이 땐 ChatGPT를 쓰자.
    진짜 하다 못해 "정보보안 공부 어떻게 할까?" 라는 식으로 물어보기만 해도 커리큘럼을 짜준다.
    GPT에서 이미 키워드가 나왔으니 해당 키워드를 바탕으로 검색을 하든 연계 질문을 하든 하면 원하는 바를 공부할 수 있을 것 이다.

  • 오픈채팅방 / 커뮤니티
    GPT가 답변을 이상하게 하거나 부족하다 느낄 수도 있다.
    그러면 커뮤니티를 방문해봐라.
    가장 가깝게는 카카오톡의 오픈채팅방이 있다.
    거기서 원하는 분야를 검색만 해도 채팅방들이 나올 것이다.
    들어가서 정중히 물어보면 경험상 대답을 안해주는 경우는 적었다.
    (필자의 경우 GPT 등장 전엔 오픈채팅방을 애용)


    솔직히? 방법이야 원한다면 찾을 수 있다.
    선배가 없어서, 관련 분야의 지인이 없어서 공부하기 어렵다?
    이건 그저 핑계다. 필자는 IT특성화고에 재학중이지만 선배가 피드백을 주거나 친구들이 함께 공부하는 환경이 아니었다. 혼자 공부하고 혼자 찾아보고 1, 2학년일 땐 저학년이라 무시받고 3학년일 땐 학교에 남아서 공부를 안한다고 저평가 됐다. 상을 타도 뭘 해도 크게 달라지는건 없었을 정도이다.
    물론 완전 아무것도 없는 환경은 아니었을지도 모른다. 다만 이 학교를 통해 얻은 이득이 내 진로에 도움이 됐다고 말하긴 힘들다. (TMI 남발중...)

질문하는 방법.

질문은 언제 어떻게 하면 좋을까?
일단 검색을 해라. GPT도 쓰지말고 검색부터 해보자.
GPT는 좋은 툴이 맞다. 하지만 GPT를 쓰기만 해선 GPT로 원하는 답을 찾지 못할 때 어떻게 할 것인가? 또한 검색은 한번에 원하는 결과를 찾기 힘들다. 그렇게 검색 과정 속에서 관련한 여러 자료를 접할 수 있고, 예상치 못한 수확을 하는 경우도 많다.

그러니 검색을 먼저 해본다. 구글링은 쉽게 할 수 있다.
예를 들어 HTML로 비디오를 무한 반복 재생 시키고 싶은 상황이라면 그대로 "HTML로 비디오를 무한 반복 재생 시키는 법"을 영어로 번역해서 검색하기만 해도 충분하다.
에러가 난 상황이라면 에러 코멘트의 첫 줄을 복붙하는 것으로도 충분하다.

그렇게 검색을 해도해도 안된다? 이 때 GPT를 써본다.
(개인적인 경험으론 정말 오래 검색했는데 안나오면 GPT도 안나왔다)
GPT를 써봐도 안됬다면 검색중 얻은 정보들을 가지고 커뮤니티로 가서 질문을 한다.
이 때 에러가 났다면 에러 코드와 함께 질문 글을 올린다.
질문 글에 이때까지 검색해서 감을 잡거나 검색한 내용을 간략하게 요약해서 올리는 것도 좋다.
도움이 되는 내용이든 아니든 문제를 해결하려 했다는 노력이 보이기만 해도 충분하다.
다른 분야는 몰라도 IT쪽은 앵간해선 답변을 해줄 것이다.


솔직히 그냥 하소연 하듯 쓴 글이고 잘 쓴 글이라고 생각하지도 않는다.
다만 내가 후배들에게 자주 하는 잔소리가 누군가에겐 도움이 되지 않을까 하는 마음으로 적어보는 것이다.

profile
spring을 메인으로 express, go언어로 개발하는 백엔드 강모민입니다.

1개의 댓글

comment-user-thumbnail
2023년 10월 25일

정말 공감 되네요 개발을 시작하는 이들이 꼭 봤으면 좋겠네요:D

답글 달기