미리보기
기본 정보
동료 학습으로 지식을 흡수하여 내것으로 만드는 개발자 이건우 입니다.
교육
42서울
사설 교육 | C/C++기반 소프트웨어 교육
2022.11. ~ 현재 | 재학 중
기술 스택
Git, GitHub, C, C++, Docker, tcpsocket, 한글, PostgreSQL, Notion, Figma
자기소개
성장과정
- 수동적으로 재미없이 지내온 10대, 20대 초반
10대와 20대 초반을 수동적이고 재미없게 보냈습니다. 대학에 진학할 때도 성적에 맞춰 등록금이 저렴한 곳을 선택했고, 해양대학교에 입학했습니다.
2학년 때 장학금과 호기심에 해군 ROTC에 지원해 2년간 단기복무하고 중위로 전역했지만, 정작 제가 원하는 꿈과 비전은 없었습니다.
- 해군장교 시절 배운 점
해군 시절에도 성실히 임했지만, 제 적성에 맞지 않는다는 생각이 항상 있었습니다.
하지만 맡은 일은 1인분 이상 해내는 마인드로 열심히 했고, 행정업무를 주로 담당하며 문서작성 능력과 업무 프로세스를 익혔습니다. 이러한 경험은 향후 개발 프로젝트에서 문서작업과 프로세스 관리 능력으로 이어질 것입니다.
- 제대로 된 진로탐색
전역 후 백수가 되어서야 본격적으로 진로를 탐색했습니다.
영상편집 능력으로 유튜브 영상을 만들며 '조코딩' 채널을 통해 코딩에 관심을 갖게 되었고, 웹개발에 재미를 느꼈습니다.
이에 프로그래밍 적성을 확인하고자 국비지원 교육기관 '42서울'에 도전했습니다.
- 42서울 도전
'42서울'은 교육비까지 2년간 지원되는 프로그램이라 경쟁률이 높았습니다.
입학 전 '라피신' 과정에서 동료들과 함께 리눅스, C언어 과제를 해결하며 프로그래밍에 대한 열정을 키웠고,
두 번째 도전에 성공해 8기로 입학했습니다. 이를 계기로 프로그래밍에 대한 확신이 생겼습니다.
- 42서울 본과정 멤버 달성(24년 4월)
본과정에서는 약 1년 반 동안 C/C++언어와 자료구조를 배웠습니다.
특히 4번의 팀프로젝트를 수행하며 협업능력을 기를 수 있었습니다.
최근 '멤버' 자격을 얻어 42서울에 영구 출입이 가능해져 계속 공부할 수 있게 되었습니다.
이제 프로그래밍이 제 적성에 맞는다는 확신이 들어 취업을 준비 중입니다. 지금까지 쌓은 협업과 문서작성 능력을 살려 기업에 기여하고 싶습니다.
강점 및 약점
- 강점 : 열린 소통으로 프로젝트 성공 이끌기
4인 팀 프로젝트에서 웹 게임 개발을 할 때의 일입니다. 요구사항은 단순한 퐁게임이었지만,
저는 2:2 팀플레이, 아이템 추가 등 다양한 기능을 제안해 재미있는 게임을 만들고 싶었습니다.
하지만 팀원들은 필수요소만 개발하려 했습니다. 저는 팀원들을 설득하기 위해 먼저 달달한 분위기를 조성했고,
아이디어를 부담 없이 들어볼 것을 요청했습니다.
그리고 이러한 기능을 추가하면 진짜 게임을 즐길 수 있지 않겠냐고 제안했습니다.
결과적으로 2:2 팀플레이를 제외한 제안 사항들이 수용되어 더욱 재미있는 게임을 만들 수 있었습니다.
이처럼 열린 마인드와 원활한 의사소통으로 프로젝트의 성공을 이끌어낼 수 있었습니다.
- 약점 : 팀원 개인 간 갈등 및 회피
같은 백엔드 팀원 A와 원활한 의사소통에 어려움이 있었습니다.
A가 제 의견을 계속 무시하는 태도를 보여 저를 불편하게 했습니다.
새로운 기술을 배우며 서로 의견을 나누어야 했지만, 프로젝트 3주차가 되자 더는 A에게 질문하거나 의견 내기가 힘들었습니다.
팀프로젝트를 중단해야 할 지경에 이르렀습니다. 평소 제가 불편한 상황을 잘 회피하는 성향이어서 이러한 갈등상황을 피하고 싶었기 때문입니다.
- 약점 극복 노력
여자친구의 조언을 받아 A와 진솔한 대화를 하기로 결심했습니다.
팀프로젝트를 중단할지, 아니면 대화로 오해를 풀고 재개할지 결정해야 했습니다.
평소 같았으면 회피했을 불편한 대화지만, 이번만큼은 A와의 관계 정립을 위해 필요하다고 생각했습니다.
대화 결과 A는 본인의 그런 성격을 인정하고 사과했고, 저 역시 A에 대한 오해를 풀 수 있었습니다.
서로를 이해하는 과정을 거쳐 관계가 개선되었고, 2달간의 팀프로젝트를 무사히 완수할 수 있었습니다.
이 경험을 통해 갈등상황 회피 약점을 극복할 수 있었습니다.
게임 개발관련 경험
- 42서울 과제를 통해 흥미를 느낀 게임 프로그래밍
C언어로 시작하여 C++ 언어까지 과제 형식의 프로젝트를 수행하면서 자료구조와 프로그래밍 언어에 대해 많이 배웠습니다.
특히 2D/3D 게임 형식의 그래픽 과제를 진행하면서 게임 프로그래밍에 흥미를 가지게 되었습니다.
대부분의 사람들이 그래픽 자체에만 집중했지만, 저는 '게임처럼 만들어보자'라는 생각으로 다양한 게임 요소를 직접 구현해 보았습니다
- 팀과제로 배운 웹소켓 프로그래밍
웹 개발 과제를 통해 웹소켓 프로그래밍을 배우게 되었습니다.
백엔드와 프론트엔드 간의 양방향 통신으로 게임 정보를 실시간 업데이트할 수 있었고,
이를 통해 게임이 진행되는 과정을 이해하게 되었습니다.
- C/C++/소켓프로그래밍/멀티스래딩을 활용한 개인프로젝트 시작
이러한 경험을 바탕으로 C/C++와 소켓 프로그래밍, 멀티스레딩을 활용하여 개인 프로젝트로 퐁(Pong) 게임 개발을 시작했습니다.- 소켓프로그래밍
서버-클라이언트 구조로 프로젝트를 구성했는데, 소켓 프로그래밍을 사용하여 서버와 클라이언트 간 통신을 구현했습니다.
서버에서는 IP와 포트로 프로그램을 실행하고, 클라이언트가 해당 주소로 접속하는 방식입니다. - 멀티스래딩
- 서버
서버의 메인 스레드는 클라이언트의 접속과 대화를 처리하고, 2명 이상의 클라이언트가 접속하면 이들을 매칭하여 별도의 스레드에서 게임 로직을 처리합니다.
소켓 통신을 통해 패들, 공, 목숨 등의 게임 정보를 서버에서 클라이언트로 전송합니다. - 클라이언트
클라이언트 측에서는 서버의 IP/포트 주소로 접속하여 CLI 환경에서 대화를 나눌 수 있으며,
게임 매칭에 성공하면 서버에서 전송된 정보를 바탕으로 OpenGL을 사용하여 게임 화면을 구성합니다.
키보드 이벤트를 통해 게임을 진행하게 되며, 패들 방향 변경 시 해당 정보를 서버로 전송합니다.
- 서버
- 소켓프로그래밍
프로젝트
pong(Linux & MacOS 멀티플레이 게임)
42서울
2024.04. ~ 진행 중
- 사용 언어 : C/C++
- 사용 기술: 소켓프로그래밍/멀티스래딩
: 소켓 프로그래밍을 사용하여 서버와 클라이언트 간 통신을 구현했습니다.
서버에서는 IP와 포트로 프로그램을 실행하고, 클라이언트가 해당 주소로 접속하는 방식입니다.
- 아키텍처 : 서버 - 클라이언트
- 서버
서버의 메인 스레드는 클라이언트의 접속과 대화를 처리하고, 2명 이상의 클라이언트가 접속하면 이들을 매칭하여 별도의 스레드에서 게임 로직을 처리합니다. 소켓 통신을 통해 패들, 공, 목숨 등의 게임 정보를 서버에서 클라이언트로 전송합니다.
- 클라이언트
클라이언트 측에서는 서버의 IP/포트 주소로 접속하여 CLI 환경에서 대화를 나눌 수 있으며, 게임 매칭에 성공하면 서버에서 전송된 정보를 바탕으로 OpenGL을 사용하여 게임 화면을 구성합니다. 키보드 이벤트를 통해 게임을 진행하게 되며, 패들 방향 변경 시 해당 정보를 서버로 전송합니다.
- 서버