Hard skills
Python Doctest로 함수의 테스트 코드 작성하기
Python에서 Docstring은 함수, 클래스, 모듈 또는 메서드의 첫 번째 문장으로 작성되는 문자열이예요. Docstring이 작성된 해당 코드 블록의 목적이나 동작을 설명하는 데 사용되죠. docstring은 코드의 가독성과 유지 관리를 향상시키는 데 중요한 역할을 하며, 다양한 도구를 통해 자동으로 문서를 생성하는 데 활용돼요.
비주얼 스튜디오 코드처럼 Python을 지원하는 코드 에디터는 Docstring도 참고해 함수 등 객체의 설명을 표시하죠.
Python의 Doctest 기능은 doctest 모듈에서 제공하는데, Docstring에 포함된 예제들이 실제 코드와 일치하는지 검증할 수 있도록 테스팅하는 데 활용해요. Python 대화식 인터프리터(REPL)에서 Python 코드 실행을 전개하듯이 코드로 작성하지요.
저는 Python 교육을 하는 데에도 Docstring과 Doctest를 활용해요. 함수의 인터페이스를, 그리고 어떻게 사용하고 동작하는지 예시를 Doctest로 명기하여 제공하고, 학습자분이 이를 참고하여 실제 구현을 하는 거죠. 구현한 코드는 Doctest로 검증하고요. Python 입문자에겐 타입 각주(type annotation)를 사용하는 것보다는 Docstring이 더 쉽고, 테스팅하며 동작 피드백을 빠르게 받을 수 있어 좋아요.
맥OS에서 지셸(zsh, Z Shell) 시작하기
맥OS를 사용하다보면 까만 배경화면에서 글자만 흘러다니는 터미널 앱을 사용하는 경우가 있습니다. 사용해보지 않거나 익숙하지 않으면 부담스러워서 얼른 닫고 싶어지죠. 하지만 코딩을 하다보면 이런 쉘 환경을 마냥 피하기 어렵습니다. 특히 리눅스나 유닉스 계열에서는 쉘의 존재감이 큰데, GUI가 강점인 맥OS가 유닉스 계열이라 더욱 마주할 일이 많지요. 그래서 맥OS에서 셸이 익숙하지 않은 분을 위해 컨텐츠를 준비했습니다.
이 컨텐츠는 총 19편에 걸쳐 연재되었으며, 컨텐츠 안에 퀴즈도 있습니다. 셸에 익숙하지 않다면 이 기회에 익혀보세요.
Soft skills
뽑히는 개발자 포트폴리오는 어떻게 만드나요?
포트폴리오는 주제를 표현하고 서술하는 방법이 이력서와 달라요. 작업물이라는 실체가 있기 때문이죠. 그런 점에서 작품집이라는 뜻을 가진 포트폴리오는 애니메이션이나 게임 아트북에 가까워요.
포트폴리오가 그렇듯이 아트북에도 그 자체로 컨텐츠가 있어요. 하지만 본 작품을 보고 난 후에 아트북을 봐야 더 몰입하고 재밌어요. 본 작품의 이야기가 우리 머리 속에서 아트북 속 이미지를 설명하고 이어주기 때문이죠. 또한 캐릭터를 만드는 과정을 보며 본 작품 속 캐릭터의 말이나 행동을 더 이해하게 되기도 하고요. 이렇듯 이력서가 주제로 중심을 잡고 포트폴리오를 이끌어줘야 합니다.
이미지를 넣어야 한다고 말하는 게 아니에요. 아트북엔 명확한 주제와 이야기 방향이 있어요. 작품을 제작하는 중에 산출된 아트 자료라고 해서 무작정 담지 않아요. 신입 개발자 뿐만 아니라 경력자도 흔히 하는 실수는 포트폴리오에 담은 프로젝트에 대해 설명하느라 정작 자신을 설명하지 않는 거예요. 나 자신을 설명하는 건 추상적이지만, 작업물이라는 실재가 있으면 아무래도 구체적으로 표현과 설명하기 쉽기 때문일 거예요.
따라서 작업 결과물이 아닌 작업 과정을 담아야 합니다. 결과물은 같더라도 만드는 과정은 사람마다 다릅니다. 작업 과정으로 나를 설명해야 합니다.
요즘IT에 기고한 뽑히는 개발자 이력서는 어떻게 만드나요? 글의 후속편인 뽑히는 개발자 포트폴리오는 어떻게 만드나요? 기고글이 게재됐어요. 이번 편에서는 포트폴리오를 작성하는 구체적이고 실천적인 방법을 다뤘어요.
Coffee Chat
취업 못하면 길에 나앉을지도 모른다고요?
대출 문제가 발생해 6개월 안에 취업해야 하는데, 포트폴리오 준비가 안 되어 있다며 한 신입 개발자가 멘토링을 신청해왔습니다.
먼저 유남주님이 설정한 자신의 특징 세 가지는 다음과 같습니다.
- 자기 인식과 그에 따른 성장
- 능동적인 협업
- 코드 탐구와 토론
하지만, 이를 관통하는 이력서 주제가 없었어요. 다행히 이력서 주제는 빠르게 도출했는데, 그의 말대로 자기 인식을 잘했고, 자신의 특징 세 가지를 촉발한 자신의 특질을 찾은 거죠.
유남주 이력서에서 자기 소개한 영역을 핵심 요약으로 내용을 바꾸고, 기술과 역량에 대해 추상적이고 모호한 서술, 그리고 경험과 프로젝트 그 자체가 아니라 자신을 설명하도록, 즉 이력서 주제에 맞는 내용을 담기로 했습니다.
문제는 포트폴리오였습니다. 유남주님 말대로 정말 6개월 후에 대출 문제가 발생하면 골치 아프니 취업 준비에 시간 제한이 있다고 봐야 합니다. 유남주님이 이력서 주제를 무엇으로 할지 감을 잡았으니 이력서는 빠르게 정리할 겁니다. 유남주님은 포트폴리오를 보강하고 나서 취업 활동을 하려 하길래 취업 활동은 일단 시작하라고 했습니다. 이력서를 다듬는대로 바로 취업 활동을 시작하는 거죠. 그러면서 포트폴리오 작업을 병행해야지요.
유남주님은 뭔가를 만들어낼 순 있지만, 기본기는 부족했습니다. 보기에 따라서는 이상한 데서 기술을 엉뚱하게 배운 사람이라 오해를 살 것 같았죠. 자기 인식력이 좋아서 오히려 개성 넘치는(?) 코드를 작성한 건 아닐까 생각했습니다.
그래서 포트폴리오에 보강하는 방향은 성장으로 정했습니다. 큰 흐름에서 성장을 드러내기 위해 프로젝트는 세 개를 만드는데, 첫 번째 프로젝트는 2주, 두 번째 프로젝트와 세 번째 프로젝트는 4주 동안 만들기로 하고, 완료 기준은 서버에 배포해서 출시하는 것으로 설정했습니다.
- 첫 번째 프로젝트 : 구현
- 두 번째 프로젝트 : 원래 하던 것, 더 잘하기
- 세 번째 프로젝트 : 새로운 것, 도전하기
마음이 불안하고 급한 유남주님의 멘토링 이야기를 지금 만나보세요.
푸딩캠프 소식
컨퍼런스 선정 안 된 분들, 함께 언컨퍼런스 해요!
지난 뉴스레터 15편에서 푸딩캠프가 언컨퍼런스 형식으로 컨퍼런스를 열 것이라 예고하며, 함께 하실 분을 디스코드 서버(https://pudding.camp/~/cafe)로 초대했는데요. 오실 분은 어지간히 오신 것 같아서 이제 언컨퍼런스 개최에 대해 논의를 본격 시작합니다.
컨퍼런스 주제는 “학습과 성장”이며, 컨퍼런스 형식과 언컨퍼런스 형식을 섞은 형식으로 할 예정이예요. 미리 발표를 준비하는 연사자 세션과 현장에서 발제해서 발표하는 세션으로 구성하는 거죠. 재밌을 것 같지 않아요? 🤗
디스코드 서버에서는 다음과 같은 작당이 이뤄집니다.
- 발표 연사자 모집
- 행사 일정 논의
- 행사 운영진 모집
- 참가 신청
행사가 궁금하거나 관심 있으신 분은 디스코드 서버에 오세요. 발표나 운영진 참여, 행사에 대한 논의를 하지 않더라도 환영합니다.
그리고, 푸딩캠프의 디스코드 서버인 푸딩까페는 이번 행사 뿐만 아니라 학습과 성장에 대한 다양한 컨텐츠(활동)를 준비하고 있어요. 원래 푸딩캠프에서 유료로 제공하던 학습 활동을 푸딩까페 멤버에 한해 제공하는 거죠. 😶🌫️
문전성시, 푸딩캠프 커피챗
여러분들께서 관심을 가져주시고 애용해주셔서 푸딩캠프 커피챗이 평균 2주씩 예약이 꽉 찼습니다. 성원해주셔서 고맙습니다!
커피챗이 유익하다며 커피챗을 한 전체 참여자 중 20%나 되는 분들이 또 커피챗을 신청해주시기도 했어요.
- A님 : 이력서를 어떻게 쓸지 방향을 잡지 못해 막막했는데, 이제 어떻게 해야할지 길이 보여요.
- B님 : 회사 동료나 상사에게 털어놓기 어려운 고민에 대해 혹시나 하는 마음에 커피챗을 신청해봤어요. 커피챗 시간 내내 경청해주시고, 제가 상처받을 수 있는 주제에 대해서는 표현 하나 하나 조심하는 게 느껴져 저를 아껴주시는 마음이 느껴졌어요. 정말 고맙습니다!
- C님 : 대화하는 시간 내내 포인트를 잘 짚어 주시고, “이렇게 하면 좋겠다”, “이런 건 제3자로서 추상적으로 느껴지고, 마치 우리가 같은 걸 봐도 다른 감정이 드는 것처럼 내가 아는 걸 다른 사람도 알꺼라는 생각은 위험하다”와 같이 살아가면서 전반적으로 도움이 되는 얘기도 정말 많이 해주셨습니다.
커피챗에서 나눈 이야기는 새롭게 각색해 푸딩캠프에 커피챗 컨텐츠로 게재합니다. 말이 각색이지, 설정과 주제만 참고하고 나머지는 모두 창작해요.
커피챗을 한 당사자도 자신의 이야기인지 헷갈릴 거예요. 그리고 커피챗을 한 분 중 몇 분은 너무 특정되어서 컨텐츠로 다루지 않기로 결정했고요. 그러니 자신의 이야기가 노출되는 것에 대해서는 걱정하지 마세요. 🤐
의견을 남겨주세요