코딩 프로젝트 주제 추천 - koding peulojegteu juje chucheon

이 포스트는 10 Great Programming Projects to Improve Your Resume and Learn to Program 를 번역한 번역본 입니다. 조금 번역이 어색하더라도 너그럽게 봐주심 감사하겠습니다.

혹시 회사에서 미국 사업을 진행 하시는 분들 중에 데이터 사이언사이언스 나 네트워크 쪽으로 컨설팅이 필요하신 분들은 여기 사이트를 클릭해서 한번 봐주시면 될 것 같습니다.

‘프로젝트할 만한 좋은 아이디어가 없나?’

는 프로그램은 배울 때 나오는 보편적인 질문 중에 하나 입니다.

‘체스게임이나 CLI를 만들어봐’

같은 대답은 위 질문에 대한 보편적인 대답이고 그리 이상한 답은 아니지요.

그런데 체스게임이나 CLI를 포함한 예들은 지금 시장에서는 그리 적합하지 않습니다. 요즘 소프트웨어의 상당부분은 Saas(Software as a service)나 웹앱* 입니다. 즉, 온라인으로 프로그래밍을 하는 방법을 알아야 합니다.

(웹앱: 브라우저를 통해 이용 할 수 있는 소프트웨어)

(Saas: 별도의 설치 없이 클라우드에 설치되어있는 소프트웨어를 인터넷을 통해 제공받는 서비스)

웹사이트나 앱을 예로 들자면, 하나의 웹사이트나 앱을 만들기 위해서는

유저도 있어야 되고…

서버도 필요하고…

로그인 인증도 해야하고…

유저 정보를 저장할 데이터베이스도 필요합니다…

한 마디로 해야 할게 많지요.

이렇게 부분은 tic-tac-toe 게임이나 체스 게임에서는 필요하지 않았던 기술들을 요구합니다.

이런 기술들은 큰 회사들이 주로 이용하는 AWS나 유사한 기술로도 관리가 가능합니다. 즉, 이력서 관리나 기술면접을, 또는 개발자 스킬업을 위해서는 자신에게 유용하거나 해당 산업이 주로 사용하는 기술들에 자기 자신을 노출 시켜야 하는 노력이 필요합니다.

<팁: 쬐끔 난이도 있는 프로젝트를 선택했다면, 다 만들려고 하지 말고, 만들고 싶은 기능들을 하나씩 만들려고 하세요. 한번에 다 만드는 건 빡십니다. 웹 앱을 예로 들면 로그인 페이지부터 만드시거나 랜딩 페이지부터 만들어 보세요. 다 만들려고 하면 도중에 포기 할 수도 있어요.>

밑에서 부터 시작될 내용은 10가지 프로젝트를 분야 또는 주제 별로 나뉘어서 그에 대한 팁을 말하고 있습니다.

3줄 요약

  1. 프로젝트가 화려하고 대단 할 필요는 없다.
  2. 기능은 하나씩 하나씩 만들어라. 그리고 기능을 뻗어 날 수 있을 때 까지 확장해보자!
  3. 실생활에서 100% 쓸 수 있을 정도는 아니지만 그래도 어느 정도 실용적인 프로젝트를 선택하자.

엔터테인먼트

  1. 자동화를 이용한 웹 크롤러

프로젝트를 추천해주는 글에서 보이는 공통점 중 하나는 프로그래머 또는 공부를 하시는 분들이 충분히 흥미를 느껴 지속성을 유지되는 프로젝트를 말하거나, 알려주지는 않는다는 것 입니다. 웹 스크래퍼(한국에서는 웹 크롤러로 불린다고 합니다.)를 많은 사람들이 예로 듭니다. 대부분의 경우는 how to 웹크롤링 에서 끝이 납니다. 물론 이것도 좋지만, 만들어서 데이터를 가져오기는 하는데.. 그 다음은요?

단순히 데이터를 가져오는 거에서 그치지 말고, 그 데이터를 사용하는 웹사이트를 만들어 보시는 건 어떨까요. 화려할 필요도 없고, 페이지가 많을 필요도 없습니다. 데이터를 가져와서, 제목도 가져와 보고, 글 내용도 쬐끔 가져오고, 그걸로 포스트를 만들어서 웹사이트 상에 뿌리는 것 까지… 거기에 정~말 약간의 css까지 추가 되면 최고일거 같습니다.이런게 실제로 프로젝트들은 당신의 실력을 보여줄 수 있는 간단하지만 인상깊은 프로젝트입니다.

위 방법을 통해 어느 정도 자신감이 붙었다면, 이번에는 쪼금 만 더 크게 보자구요.

예를 들면, 크롤링 프로세스를 어떻게 자동화를 할지, 데이터베이스에 저장/관리하고, 웹사이트를 만들고 어떤 포스트를 가져올지에 대한 것 말이지요. 이렇게 까지 하면 이 프로젝트는 유의미한 결과물로 탄생하게 됩니다.

그리고 실 결과물, 또는 유의미하지 못한 프로젝트는 존재 이유 없이 단순한 웹 크롤러가 되기 쉽습니다.

(의견 : 물론 단순한 웹 크롤러도 의미는 지니지만 좀만 더 프로젝트의 가치를 더하자는 말인것 같습니다. 그냥 라면 보다는 라면 + 파 + 계란이 더 맛있는것 처럼 아닐까요..? )

게다가, 웹사이트가 유명해 질지도 모르자나요? 그러니 꼭 실제 존재가치가 있는 제품을 만들어보세요!

2. Meetup과 Eventbrite api를 이용한 이벤트 알림 시스템

콘서트나 쇼, 개발 관련 무료 컨퍼런스를 찾았는데 이미 끝났거나, 까먹은 예매를 못한 경험이 있으실 겁니다.

그럴때 Meetup이나 Eventbrite 라는 API를 사용해서 이벤트 키워드를 등록해서 알람이 오게 하는 걸 만들면 어떨까요? 두개다 비슷할 거 같은데, 어찌 되었든 나만의 시스템을 만드는 건 언제나 옳습니다 >.<

커스터마이징을 통해 당신이 원하는 대로 구축을 하거나, 아니면 다른 사람들도 사용 할 수 있게끔 웹사이트로 만들어 보세요. Meetup이나 Eventbrite를 통해 둘의 API를 이용해 볼 수도 있는 것도 장점이고, 이 둘을 비교해 볼 수도 있습니다. 그리고 이러한 경험을 통해 혹시 이 둘중 어떤걸 사용해야 되냐고 회사에서 누군가가 물어봤을때 어떤게 되고 안되는지 미리 파악 할 수도 있습니다.

3. A 9GAG copy cat(9GAG: 미국 웃긴 짤들이나 사진들 올리는 웹사이트)

프로젝트를 항상 새로운걸로 만들 이유는 없습니다.

일반적인 웹사이트(로그인, 사진업로드, 피드)처럼 간단한 프로젝트도 기초를 다지는데 좋습니다. 그리고 이 프로젝트에서 팔로잉 기능이나 좋아요, 또는 검색 기능같이 색다른 기능들을 추가해 보세요. 검색기능은 특히 머신 러닝이나 추천 시스템을 배우는데 좋습니다.

알려진 웹사이트를 클론코딩하는 것도 훌륭하지요.

사실 클론코딩은 리버스-엔지니어링(웹사이트를 분석해서 어떻게 기능들이 구현 되었는지를 역으로 발견하는 것)을 해야 되기 때문에 정말 좋습니다. 그리고 개발자는 다른 사람들이 작성한 코드를 유지보수 해야 되기 때문에 그 사람이 코드를 작성한 이유를 알아야 되기 때문에 리버스-엔지니어링은 참 최애입니다 ><

(저도 클론 코딩을 통해 공부를 하고 있는데 진짜 좋은것 같습니다. 실력을 명확하게 보여주고 또 실력 향상에도 정말 좋은 방법입니다. 근데 시장에 나와있는 앱/웹의 모든 기능을 구현하는건 시간이 너무 많이 걸리기에 기능 중에 하나를 구현하는게 시간 대비 효율성이 가장 좋은것 같습니다!! )

Retail Type Sites (쿠팡, 당근마켓 같은 웹/앱)

4. 선물 추천 웹사이트/앱

친구나 연인에게 줄 선물을 고르는 게 힘들었던 경험이 있으실 텐데, 이 불편함을 해결해줄 사이트를 만들어 보는 건 어떨 까요?

이런 사이트는 또 대부분 회원가입도 해야 되잖아요? ^^

그러면 또 다시 인증도 구현해야되고, 데이터베이스 연동을 포함한 다양한 기능을 구현해야 합니다.

그리고 이렇게 물건을 사고 파는 웹사이트 형식의 프로젝트는 필요하다면 아마존 API를 연동 할 수도 있습니다. 아마존 API를 사용하면서 얻게 되는 이점은 해당 API 사용방법을 포함한 다양한 API 문서들을 읽는데 좀 더 익숙해지고,

만약에… 웹사이트가 잘되면, 돈도 벌 수 도 있습니다!

또 이러한 프로젝트는 기초적인 머신 러닝 모델을 만들어 볼 수 있는 기회가 되기도 합니다. 추천 시스템을 만들 때 퀴즈를 통해 가장 적합한 선물을 추천 할 수도 있고, 사람들의 클릭과 응답률을 통해 머신 러닝 모델을 학습시킵니다.

5. 물물교환 사이트

헬로마켓, 중고나라, 당근마켓 같은 웹사이트나 앱을 만든다고 생각해 봅시다.

이런 사이트는 금전이 오고 가는 웹/앱 이지만 금전이 오고 가는게 아닌 고객 사이에 물건만 오고 가는 웹사이트를 만들어 보시는 건 어떨까요.

그런데 중요한 포인트는 이런 컨셉의 프로젝트는 쬐끔 생각을 깊게 해봐야 될 기능들이 있고, 이런 기능은 그냥 냅다 들이댄다고 완성되지 않습니다 ㅜㅜ

글은 어떻게 올리고,

최근에 올라온 글을 어떤식으로 고객들에게 노출 시키고,

어떻게 고객들이 검색해볼까? 하는 기능들을 만들어 볼 수도 있습니다

게다가 고객들이 어떻게 서로 소통하고, 물건을 교환하는 지도 생각하고 구현 해 볼 수 있습니다.

(저도 당근마켓을 클론코딩 해볼려다가 실패했습니다. 이유는 그냥 냅다 들이대다가 그 앱 전체를 다 클론한다는거 자체가 스케일이 너무 커서 포기했습니다)

당연히 실제 운영되고 있는 사이트/앱처럼 실용적이지는 않아도 되고, 스킬-업이 될 정도로만 실용적이면 됩니다.

B2B

6. 송장 추적, 계약 관리 시스템 (ERP라고 생각하시면 될 것 같습니다)

빡십니다. 계약 자체가 의미상 미묘한 차이가 있는 조항들이 많고 ERP를 구축하는 것 자체가 비즈니스가 어떻게 돌아가고 움직이는지 정확하게 알지 못하면 너무나 빡십니다 ㅜㅜ

그렇다고 시도 할 수 조차 없는건 아니지요~

이러한 프로젝트들은 핵심 부분만 간소화해서 만들어도 진짜 좋습니다. 비즈니스 프로세스를 소프트웨어로 표현하는 건 쉽지 않지만 이게 또 이 프로젝트가 충분히 도전해볼 만한 이유입니다.

다시 말하지만, 너무 복잡하게 만들지는 마세요. 기초적인 기능부터 시작하세요.

7. 업무 관리 시스템

Kanban플로우 같은 업무 관리 시스템을 만들어 보는 것도 정말 좋습니다. UI를 반응형처럼 다이나믹하게 셋업 하는데 시간이 쬐금 걸릴 수도 있습니다. 아마 여러명이 작업을 해야 되는 프로젝트 일수도 있겠네요. 누구는 프론트, 누구는 백엔드를 맡아야 할 수도 있습니다.

근데 실망하지는 마시구요! 사실 이런 프로젝트는 팀 커뮤니케이션과 팀워크 능력을 향상 시킬 좋은 기회니깐요. 디자인적으로 어떻게 움직이고 어디가 어떻게 연결될지를 체험 할 수 있는 좋은 기회입니다.

근데 이러한 프로젝트는 생각보다 힘들수 있으니 시작전 고민을 어떻게 시작 할 지 생각을 잘 해보셔야 합니다.

8. 구인구직

구인구직 프로젝트는 다양한 유저타입(회사/취업준비생)이 존재하고 디자인/기능 또한 그에 맞춰야 합니다. 왜냐면 다양한 목적을 가지고 오는 유저의 요구를 모두 만족시켜야 하니깐요. 앞서 말한 것처럼 한번에 다 하려고 하지 말고, 하나씩 진행해보세요.

9. 데이터 기반 수익 예측 웹사이트

대부분의 회사 상황에 맞는 수 많은 표준화된 데이터 집합이 이미 인터넷에 존재합니다. 그리고 이는 거래비용, 원가, 회계 등을 포함한 전반적인 회사 상황 또는 비용 산정 방식을 기반으로 합니다.

표준화된 데이터 집합의 장점은 이를 기반으로 쉽게 분석이 가능합니다. 이를 기반으로 비용을 예측하거나, 그 비용일 줄이고, 월간 거래액을 예측하는 사이트를 만들어 보시는건 어떨 까요?

이런 프로젝트를 진행할 때 주의하셔야 할 부분은 데이터 보안입니다. 물론 그 전에 표준화된 데이터를 활용하고 화면에 보여주는 걸 먼저 하는게 추천합니다. 데이터 보안은 매우 어렵습니다.

게임 아이디어

10. Snake Game(뱀 게임?? )

2000년대 초반에 폰을 가지고 있었다면 아마 Snake게임을 해봤을 겁니다. 간단한 게임이지만 원한다면 조금 난이도 있는 게임으로 바꿔 보실 수도 있습니다. 근데 그전에 아시죠? 간단하게 만들어보고 난 뒤에 진행 하는 거?? 계속 언급하고 있으니 이제 다 아실 거라 생각합니다.

이 게임을 만들려면 온라인으로 게임을 어떻게 만드는지 부터 파악해야 합니다. neon Snake by Sebastian Opperman 가셔셔 한번 보세요~ 그 후에 아이템을 사용하거나 스킬을 추가하세요.

유저가 가입하고 서버를 사용하거나 하는 웹사이트 구축 관점에서는 기술적이지 않을 수 있지만 재미있게 만들어 볼 수 있는 좋은 기회입니다. 근데 온라인으로 실행하는 방법을 알 수 있는 좋은 기회입니다.

위 언급된 리스트가 이력서 관리나 면접에 좋은 영향을 끼칠 수 있기를 바라며 긴 글 읽어주셔셔 감사합니다 !! 😄 😄