[회고록] Introduction - 나의 지난 커리어

김희정·2024년 1월 8일
0

회고록

목록 보기
1/3

💎 들어가며

회고록 시리즈에서는 주니어 개발자로서 일하면서 있었던 경험에 대해 정리해보고자 합니다.

본격적으로 회고록 포스팅에 앞서 이번 포스팅에서는 저의 개발 철학과 지난 커리어에 대해 정리하고 작성하는 시간을 가져보기로 했습니다😊


💕 개발자란

개발자

  • 프로그램을 만드는 사람
  • 문제를 해결해나가는 직무

개발자란 다른 말로 프로그래머입니다. 프로그래머란 의미 그대로 해석하면 프로그램을 만드는 사람입니다.

어떤 언어를 가즈고 만드느냐에 따라 기술 스택이 변하지만 본질은 어떤 기술이든지 프로그램을 만드는 것입니다.


좀더 원론적으로 프로그래머 직무에 대해 고찰해보면, 프로그래머는 문제를 해결해나가는 직무입니다.

모든 프로그램에는 목적(문제)이 있습니다. 이러한 목적을 달성하기 위해 프로그램을 만드는 것입니다.

저는 이러한 문제들을 해결하기 위해 다양한 기술을 필요에 맞게 선택해서 사용할 수 있는 개발자가 되는 것이 저의 직업적 최종 목표입니다.


🎈 나의 커리어

1) 중소기업에서 사원에서 대리까지

컴퓨터공학과를 졸업하고 바로 취업시장에 뛰어들었습니다. 하지만 전공자 출신이라는 타이틀과는 달리 몇 개월동안 대기업 취업 준비하다가 큰 좌절을 겪고, 그해 하반기에 중소기업에 취직하였습니다.

취업은 끝이 아닌 시작

하지만, 취업은 끝이 아닌 시작이란 말이 있죠.

입사 후에는 사수가 없었고, 신입 개발자 3명이서 한 파트로 프로젝트에 도입되었습니다. 하지만 사수 없이 일해야된다는 압박감에 같이 입사했던 동료 개발자 1명은 한달 뒤 퇴사하는 결론에 이르렀습니다.

요약하자면, 신입 둘이서 프로젝트 완수를 해야됐던 상황


동료 개발자의 퇴사

하지만 동료 개발자의 퇴사가 저에게는 큰 트리거가 되었습니다. 내가 퇴사하지 않는 이상 겪어야 될 문제라고 인식했고, 힘들다는 감정을 배제하며 목표를 달성하기 위해 더욱 더 매진하게 되었습니다.

그 결과 첫 프로젝트에 성공적으로 완수하였고, 그 완수 경험이 새로운 프로젝트의 밑거름이 되었습니다.

프로젝트들을 완수하며

프로그램을 개발한 경험이 차곡차곡 쌓이면서 기존 기술에 대한 이해도가 상승하였고, 새로운 기술을 적용할 여유가 생겨 차근차근 공부하고, 적용하고, 수정해나가며 프로그램들을 완성해나갔습니다.


솔루션 회사

다행이었던 것은 SI 회사가 아닌 솔루션 회사였던 점이었습니다. 솔루션 회사인 만큼 데드라인에 대한 압박감이 비교적 덜했고, 솔루션 회사에 사수가 없는 것이 더해져 기술에 대한 제한이 없었습니다.

즉, 내가 원하면 기술을 조금씩 바꿔도 되는 것이었습니다. (어차피 책임져야 할 당사자기에..)


2) 사수 없는 신입이 어떻게 성장할 수 있었는가

"사수 없는 신입이 어떻게 성장할 수 있었는가" 후임들에게 가장 많이 들었던 질문이었던 것 같습니다.

프로젝트 코드를 보면서

지난 프로젝트 코드를 사수 삼아

아무리 뛰어난 신입이라도 한번도 경험해보지 않은 것을 할 수 있는 신입은 없습니다.

저는 지난 프로젝트 코드들을 보고 하나의 프로그램을 새롭게 만들어보았습니다. 개발 환경을 세팅하는 방법부터 구현해보면서 지난 프로젝트 기술 스택을 익혔습니다.

기술 스택을 익힌 후에는 지난 프로젝트에서 아쉬운 점들을 발전해나가는 형태로 새 프로젝트를 진행했습니다.

재해석 연습

지난 코드들이 항상 올바르다고는 생각하지 않습니다. 기존 코드를 분석하면서 항상 여러가지 물음들과 함께 문제를 분석하고 재해석하는 연습을 했습니다.

  • 이걸 왜 이렇게 구현했을까? (좋은 뜻이든 나쁜 뜻이든)
  • 이렇게 구현해야될 만한 이유가 있었을까? (이걸 꼭 써야되는 이유가 있다면 써야 함)
  • 더 좋게 바꿀 수는 없을까?

나만의 코드로 재작성

재해석 연습을 통해 나만의 코드로 바꾸고, 또 나만의 코드를 만들 수 있게 되었습니다. 또한 나만의 패턴을 정의하며 규칙을 가질 수 있도록 노력했습니다.

  • 구조를 정갈하게 하자 (java 패키지, jsp 구조 등)
  • 규칙을 세우자
  • 중복되는 코드는 최소화하고, 모듈화를 하자

언제 변할 지 모르는 코드

사람은 항상 코드에 열려있어야 된다고 생각합니다.

새로운 형태의 코드는 항상 제 영감이었습니다. 다른 사람의 코드를 보고 클론 코딩하면서 패턴을 파악하고 제 것으로 만들어, 업그레이드해가는 과정에서 발전하는 것 같습니다.

새로운 패턴이나 원론을 공부하고 적용해보는 것도 하나의 방법이 되었습니다. 예를 들면 AOP를 공부하고, 코드에 AOP를 적용해보는 것. 적용함으로써 코드를 개선할 수 있고 원론에 대해 온전히 이해하고 받아들일 수 있게 되었습니다.


도전적인 목표

같은 언어로 개발하는(같은 문제를 고민해줄) 사수는 없었지만, 저에게는 항상 도전적인 과제를 내주시는 팀장님이 있었습니다.

첫 시작은 처음 투입된 프로젝트(백오피스)를 개발하는 것이었습니다. 그 외에도 작은 문제부터 큰 문제까지 지난 경력동안 겪었던 문제였습니다.

  • 백오피스 개발
  • Socket 통신
  • WebSocket 통신
  • ActiveMQ 통신
  • 반응형 웹 만들기
  • 기존 프로그램 고도화
  • 배치 프로그램 개발
  • Android, iOS 앱 개발
  • ROS Server 프로그램 개발
  • 웹서버 구축

이러한 문제들을 해결하면서 다양한 기술 스택을 경험해볼 수 있었고, 또 다양한 식견을 가질 수 있게 되었습니다.


3) 워너비 개발자

저는 다양한 기술에 얇고 넓지만, 한가지 기술에 깊이있는 개발자가 되고싶습니다.

제 블로그를 보면서 피드백을 받은적이 있는데, 프론트인지 백인지 앱인지 정해서 하라는 의견들이 있었습니다.

하지만 업무를 하다보면 자연스럽게 새로운 문제에 부딪히고, 이러한 문제를 해결하기에는 항상 같은 기술만 있는 것은 아닙니다. 또 항상 웹이라는 법도 없습니다.

도전적인 목표들만 봐도 웹 개발, 앱 개발, 서버 프로그램 개발, 웹서버 구축 등 웹 개발 뿐 아니라 서버 지식, 앱 개발, 다른 프로그램에 대한 지식 등이 필요합니다.

회사 업무 외에도 프리랜서 활동을 하면서 퍼블리셔로 활동해보고, php 개발도 경험해보면서 다양한 경험을 쌓는 것이 프로그래머에게 있어 얼마나 중요한 지 깨닫게 되었던 것 같습니다.

단순히 좋은 기업에 입사하는 것 외에 저의 목표는 다양한 기술에 대해 얕은 지식을 늘려가며 주요 스택에 대해 꾸준히 연구해나가는 것입니다.


💎 마치며

이번 포스팅에서는 저의 지난 커리어와 저의 철학에 대해 작성하는 시간을 가졌습니다. 다음 포스팅에서는 첫번째 도전 과제에 대해 포스팅해보도록 하겠습니다.

지루하고 긴글 읽어주셔서 감사합니다😍

profile
Java, Spring 기반 풀스택 개발자의 개발 블로그입니다.

0개의 댓글