우아한테크러닝 4기 "나만의 노션 만들기(feat.시니어봇)" 1차시

danna-lee·2021년 6월 1일
15
post-thumbnail

우아한 테크러닝 4기가 출발했습니다!
우아한형제들의 우아한테크에서 하는 리액트, 타입스크립트 관련 교육인데, 운이 좋게도 제가 참여할 수 있게 되었습니다.

오늘은 처음 보는 시간이라 아이스브레이킹, Q&A와 아래 질문 4개를 답하며 진행이 되었습니다.

아래는 제가 첫 차시를 들으며 간단히 정리한 내용입니다.
누락된 부분도 많을 거라 댓글로 적어주시면 추가해보겠습니다!


1. 시니어가 왜 필요할까?


주니어 개발자들은 경주마 같다 → 앞만 보면서 열심히 달려간다 (에너지와 힘은 넘치지만 주변을 잘 보지 못 한다) 그래서 그 주니어 개발자들에게 길을 알려주는 게 시니어 개발자라고 생각한다.

시니어 개발자는 주니어가 보지 못 하는 것을 봐주고 적재적소에 적용할 수 있도록 안내해준다.


2. 실무적 코드란 무엇인가?


이 부분은 월급 받고 코드를 짜보지 않은 사람들이 가지고 있는 막연한 두려움인 것 같다.
'실무'라는 단어에서 오는 두려움, 환상.

근데 제가 보는 개발자들은 다 구글링 해서 공식 문서 보고 다 코드를 짜는데, 그 코드가 얼마나 다를까요?

의견: 요구 사항을 만족하는 기능을 구현하는 게 실무적 코드라고 생각. 문법 같은 것들은 어떻게 사용하든 크게 문제는 없지만, (구현하는 사람의 생각과 철학이 코드 안에 담겨있기 때문에) 근본적으로 요구사항을 만족하고 여기에 덧붙여 품질 관련한 부분을 고려할 수도 있을 것 같다.
→ 반문: 요구하는 것을 구현하는 건 요구 사항을 구현하는 거라 당연한 것처럼 보이는데.
→ 답변: 요구 사항을 구현한다는 것 자체가 기능을 구현하는 것이고, 그 기능을 구현하는 데에는 다양한 방법이 있다.
→ 다른 해법으로 같은 목표를 이뤄나가는 것. 가령 리액트 개발자면 리액트 방식으로 해법을 제시할 것이고, 뷰 개발자면 뷰 방식으로 해법을 제시할 거싱다.

의견(신입 1개월차): 실무적 코드를 알게된 건 디자인 패턴을 배우며 새로운 세상을 보는 느낌을 받았다. 객체 지향적인 구조를 가지고 있고, 객체들 사이에서 상호작용하는 코드들을 보며 이게 실무적인 코드구나를 느꼈다. 혼자서 프로젝트로 여기저기 이력서를 넣을 때는 자신의 코드가 그래도 이게 실무에서 먹히지 않을까 생각을 했는데, 직장에 와보니까 세상은 넓고 난 우물 안 개구리였구나를 느끼게 되었던 것 같다. 그래서 신입의 관점에서 실무적인 코드란 객체지향적이고 디자인 패턴에 충실한 코드라고 생각한다.
→ 의견 정리: 컴포넌트화 잘 된 코드를 보고 감명을 받으신 것 같아요.
→ 아무래도 협업 관점에서 많은 것을 느꼈습니다. 남이 보기 좋은 코드를 만드는 게 협업에서 중요하다. 마치 누군가와 약속을 한 것처럼 여기에 이게 나오고 저기에 저게 나오는 코드의 흐름이 중요해 보인다.

의견: 가독성, 유지보수성. 계속 개발되는 코드이다 보니까 새로운 사람이 왔을 때 그 사람이 잘 읽을 수 있어야 하고, 요구사항이라는 게 계속 변하는 거다 보니까 새로운 요구사항이 왔을 때 변화할 수 있는지, 폐기하고 새로 적어야 하는지를 고민해야 한다.

의견: 유연함이 있는 코드를 잘 짜는 게 실무적이고 시니어적인 능력이다. 개발하다 보면 배포 하루 전 날에 바꾸면 좋겠는 부분을 얘기해주는 경우가 있어 처음 개발할 때는 이걸 하나하나 뜯어서 고쳤었다. 이걸 어떻게 모듈화를 하는지가 감각과 기술이 생기더라. 코드 상의 아름다움을 추구하는 게 비즈니스와 무조건적으로 연관되어 있지는 않다고 생각해서 어느 정도 선에서 끊어야 할지 고민해야 한다.

라이프사이클을 생각하는 코드가 실무적인 코드가 아닌가 생각한다. 모든 코드에는 생명력이 있다. 1년 있다 사라지든, 10년 있다 사라지든. 내가 짠 코드를 남이 볼 수도 있고, 내가 고치게 될 수도 있다.그걸 기본적으로 맥락상 고려하고 작성하는 코드가 실무적 코드가 아닐까 생각한다. 가독성, 유연성이 필요한 이유는 나 혼자 사장, 개발, 기획을 다 하는 게 아니라 협업과 넓은 시간대에서 작업해야 하기 때문에 많은 것을 고려해야 하는 것이다. testable한 코드를 짜려고 하는 이유도 이거고, 원칙을 지키려 하는 이유도 이것 때문일 것이다. 엔지니어링과 비즈니스의 밸런스를 누군가가 계속해서 맞춰주면 좋을 것.

의견(대학생): 실무적 코드에 대한 환상이 있는 대학생입니다. 주변 실무자 분들이 하는 말을 점점 못 알아듣게 되더라고요. 대학생들과 많은 프로젝트를 하고 있는데, 그 프로젝트로 만족되지 않는 무언가가 있음을 느꼈다. 회사라는 것은 한정된 자원 속에서 회사가 정해놓은 목표를 달성하려고 효율성을 높인다든지, 서비스를 사용하는 사용자 수에 따라 최적화를 한다든지 하는 코드를 쫓기듯이 만들어내는 것처럼 보인다. 하지만 회사가 아닌 곳에서 프로젝트를 하다 보니 그런 한계가 없었고, 이상적인 코드를 작성하고 맥락이 없는 듯한 모습이 보인다. 대세니까, 해보고 싶은 기술이라 해보는 게 아닐까 하는 생각을 하게 됐다.
→ 첨언: 회사에서의 목적을 이루기 위한 프로젝트, 그 프로젝트를 달성하기 위한 코드라는 맥락이 자연스럽게 생길 수밖에 없잖아요. 그걸 인위적으로 만들 수 있는가? 대학생들이 프로젝트를 하면서? 내가 사용해보고자 하는 기술을 해보는 거 자체가 맥락이 될 수 있다고 생각한다. 팀은 하나의 목적을 가지고 있다 보니 teamwork을 만들기 위해서 굉장히 많은 시간을 들인다. 각자가 하나의 목표에 대해 동일한 생각을 갖게 되도록 팀빌딩에 공을 들인다. 이 부분을 인지하고 학생들끼리 프로젝트를 할 때도 이런 쪽에 시간을 투자해보는 게 어떨까 생각합니다.


3. Hands On은 누가 잘하는가? (하루에 다루는 코드량)


핸즈온은 당연히 시간을 많이 들이는 사람이 잘 한다라고 생각한다. 날이 서있는 것들 참 좋은 것 같아요. 커피 내리는 것도 참 좋아하는데, 그것도 일정한 패턴이 있더라고요. 패턴과 순서. 그래서 많이 하면 점점 빨라지던데, 다시 안 하면 느려지고.

속도가 빠른 게 능사가 아니지만, 무의식적으로 하는 좋은 행동이 많아지면 의식적으로 해야 하는 행동에 더 많은 시간을 쏟을 수 있으니까, 내가 하는 일에 잘 담금질이 되어 있는 게 중요한 것 같아요.

그런 맥락에서 왕성하게 개발할 시기인 주니어, 10년차 미만이 정말 잘 합니다.

왕성하게 개발하고 있는 분들이 의견을 자유롭게 낼 수 있는 조직이 좋은 조직의 터전이라 생각됩니다. 시니어가 개발은 안 하면서 맨날 내 코드 보면서 이건 이래서 안 돼, 저건 저래서 안 돼 하면 그런 조직은 좋은 개발 문화를 가졌다고 할 수는 없을 것 같아요. 그런 부분이 잘 소통이 되고 거리낌 없이 얘기할 수 있는 것, 올라온 주제 가지고 같은 선상에서 여러 관점에서 토론해보고 결정할 수 있는 조직이 좋은 조직이 아닌가 생각이 듭니다.


4. (막연히) 개발을 잘한다는 것은 뭘까?


1달 동안 꾸준히 대화를 나눠봅시다.


+) Q&A


  1. 좀 이른 질문일 수 있지만, 프론트엔드 시니어로서, 시니어의 삶은 어떠신가요..? 개발을 주니어때만큼 많이 하시나요 아니면 관리 위주로 하시나요? 개발자의 수명에 대해서도 어떻게 생각하시는지 궁금합니다!
    → 시니어로서의 삶은 피곤하고 일이 많다. (ㅋㅋㅋ) 회사마다 다르긴 하겠지만, 현실적으로 개발을 많이 하지는 못 하는 것 같다. 많이 하고 싶은데, 함께 개발하는 팀원들한테 미안해서 개발을 많이 하지 못 한다. 개발을 하면 기능 단위로 주어진 내 역할을 해야 하는데, 회사나 조직 내에서 기대하는 역할 범위가 넓다 보니까 마일스톤을 지키기가 쉽지 않다. 그럼 어쩔 수 없이 구멍이 나고 그러면 미안한 상황이 생기게 된다. 그래서 현실적으로 많이 하지는 못 한다.

  2. 개발자를 직업으로 삼았다면 이 책만큼은 읽어봤으면 좋겠다 싶은 게 있나요?
    → 없다! 그냥 다독 했으면 좋겠다. 하나만 고를 수가 없다. 읽은 책이 수백 권인데.

  3. 프론트엔드로 커리어패스를 어떻게 나아가면 좋을지 잘 모르겠어요
    백엔드의 경우에는 데브옵스라던지 서버개발자, 인프라등 세분화가 되어 지는데, 프론트영역은 세분화가 덜 되어 있다보니, 어떻게 성장을 해야 할지 (직무적으로) 고민이 돼요
    → 굳이 오직 프론트엔드에만 집중하지 않았으면 좋겠다고 생각합니다. 백엔드의 경우에는 프론트엔드는 전혀 몰라도 돼? 하면 그건 아니라고 생각합니다. 자신의 한계점을 선명하게 짓지 않았으면 좋겠습니다. 풀스택 개발자를 지향해라, 목표해라라는 것은 아니지만, 개발자로서 공통된 영역이 있다는 것이고, 어떤 영역이든 많이 알면 알수록 좋은 거니까 주니어 개발자면 더더욱 자신의 한계를 긋지 말아라.

  4. 시니어 개발자 입장에서는 어떤 주니어 개발자를 원하시나요?
    → 배움에 의지가 있고, 성장하고 싶은 의지가 끓고, 그것도 함께 성장하고 싶은 마음을 가지고 있는 주니어 개발자를 원합니다. 개발이 너무너무 재밌는 분이면 너무 좋을 것 같습니다. 들어와서 당장 일을 했으면 좋겠는 주니어 개발자를 원하는 시니어 개발자도 있긴 한데... 세상은 넓으니까요.

  5. 엇 그럼 혹시 지금 나온 react 책 중에 추천해주실 책 있을까요? 아니면 다른 프로그래밍 책 중에서도요!
    → 딱히 없는데, 리액트의 변화 속도를 책이 따라가지 못 하고 있다는 생각이 든다.

  6. 개발문화가 좋은 회사에 가라는 조언을 많이 들었는데요. 개발문화가 좋다는 게 무엇인지, 그런 회사에 대한 정보를 어디서 구할 수 있을지 잘 모르겠습니다..!
    → 막연한 측면들이 있네요. 개발문화가 좋다는 건 뭘까요?

  7. 저는 지금 취업준비생이고, 프론트와 백엔드 각각의 포지션으로 전형을 진행중입니다. 웹을 전반적으로 다루는데에 관심이 있는데 한 분야를 선택하기가 어려워 고민입니다.
    그렇지만 일반적으로 IT 대기업에서는 제너럴리스트보다는 스페셜리스트를 선호하는 것 같습니다. 그렇다면 커리어를 쌓아나가는 방향에서는 한 분야를 선택과 집중해서 파고드는게 좀 더 적절한 방향일까요?
    → 어떤 부분에 집중해야 하지? 하는 건 많은 사람들이 하는 것. 이 질문에 대한 답은 엔지니어링 쪽으로만 생각하지 않았으면 좋겠다. 취업은 전략이기에 내가 가장 될 가능성이 높은 곳, 가장 경쟁력이 있는 사람처럼 보일 분야를 고민해보면 좋을 것 같다. 프론트엔드로 시작했다가 백엔드로 전향할 수도 있고, 다양한 게 가능하니 처음부터 엔지니어링 쪽으로 고민하지 말고 취업 자체에 포커스를 맞추면 좋겠습니다.


노션에서 보기
https://www.notion.so/1-OT-c3ba7901c3af43779ac9b6c678c94921

깃허브에서 보기
https://github.com/Daeun-Danna-Lee/WoowahanTech-Notion

관심 있을 만한 포스트

2개의 댓글

comment-user-thumbnail
2021년 6월 2일

정리 감사합니다!

답글 달기
comment-user-thumbnail
2021년 6월 6일

정리 감사합니다! 우테런 신청했지만 안타깝게 통과하지 못했는데, 간접적으로나마 경험할 수 있었습니다. 계속 찾아올게요~

답글 달기