들어가기 앞서
우테코 레벨 1,2 기간 동안 개발 외적으로 배운 이것저것을 까먹기 전에 작성해보려고 한다.
최근 4개월을 돌아보려고 하니 호흡이 길어서 여러 글로 나누려고 한다.
나는 회고를 잘하는 사람은 아니지만 일단 써본다. 나도 갓생 살거야.
책을 많이 읽는다고 실력 있는 개발자일까?
처음에는 책에서 좋다고 하는 것들을 무작정 미션에 적용했다. 그리고 리뷰어님한테 “나 멋있죠?”라고 외쳤었다. 하나도 멋있지 않다. 단순히 책을 많이 읽는다고 실력 있는 개발자가 되기 어렵다. 의식적으로 노력해야한다. 우선 실력있는 개발자에 대한 기준들을 정해봤다.
- 트레이드오프를 고려해 소프트웨어를 만들어 낼 수 있다.(적정 엔지니어링)
- 최소한의 리소스로 최대한의 효과를 낼 수 있다.
- 코드에 의도를 담을 줄 안다.
- 자신의 생각을 다른 사람에게 정확하게 설명할 수 있는 능력이 있다.
- 다른 사람의 생각이 옳다면 고집을 부리지 않고 피드백을 적극적으로 수용한다.
- 배운 내용을 적재적소에 사용할 수 있다.
그리고 이곳에서 시간을 보내는 동안 연습 목표를 정했다. 현재 주어진 상황에서 최적의 결과를 만들어내는 것이다. 경험이 부족한 나에게 많이 어려운 목표이다. 레벨 2에서는 오버엔지니어링이라고 리뷰어님에게 혼나기도 했다. 더욱 주의해야겠다.
기본기가 중요하다.
건축공학은 엔지니어가 설계 문서를 만든다. 그리고 이러한 설계 문서의 결과는 건축물이다. 소프트웨어공학도 마찬가지로 설계 문서를 만들지만 이는 UML이 아니다. 이것은 코드다. 코드라는 설계 문서의 결과는 실행 파일이나 프로세스다. 그렇다면 코드를 잘 짜는 것이 소프트웨어 엔지니어의 기본기가 아닐까 생각했다. (코드를 화려하게 잘 짜는 것이 중요하다는 것이 아니다. 중요한 것은 아래와 같다고 생각한다.)
- 코드를 읽을 독자를 고려한다.
- 코드가 사용자에게 가치를 제공한다.
- 빠르게 변화하는 요구사항에 대응이 가능하다. (너무 과한 확장성은 또 경계해 볼 필요가..)
나를 위한 코드가 아닌 동료와 사용자를 위한 코드를 작성한다.
프로젝트는 많이 해왔다. 그때 나는 어떤 모습이었을까? 동료와 사용자를 고려하지 않고 오로지 나를 위한 코드를 작성했다. 이렇게 작성하면 내 포트폴리오에 쓸게 많아지겠다는 생각이 머릿속을 지배했었다. 한때는 소프트웨어에 멋있는 개념들을 덕지덕지 바르고 내 소프트웨어는 향기롭다고 느꼈다. 돌이켜보면, 동료와 소프트웨어 그리고 사용자에게 미안한 생각이 든다.
프로젝트에 들어가서는 동료와 사용자를 우선으로 생각하는 크루가 되고 싶다. 그런데 만약, 동료가 과거의 나처럼 자신만의 코드를 작성하면 나는 어떻게 해야 할지는 모르겠다. 이게 요즘 가장 큰 고민이다. 말려야 할지, 아니면 지지해야 할지 모르겠다. (내가 감히..?라는 생각이 들기도 하다.)
의도와 일관성 중 좋은 선택을 하자.
이건 약간 뒷고기인데 기억하고 싶어서 적어본다. 프로그램을 작성할 때는 코드마다 의도와 근거를 담으려고 노력했다. 그런데 의도를 담는 것이 항상 좋은 것은 아니라고 느꼈다. 왜냐하면 코드에 의도를 담는다면 동료가 의도를 파악해야 하는 비용이 든다. 오히려, 의도 없이 일관적인 코드가 프로젝트에서 도움이 될 수도 있다.
회사에 돈 벌어다 주는 개발자가 된다.
위에서 이것저것 감성 터지는 말들을 작성해 봤다. 물론 이러한 생각을 가져보는 것도 좋은 일이라고 생각한다. 하지만, 적나라하게 말해보자면 결국 중요한 것은 돈이다. 회사는 돈을 번다. 회사의 구성원도 돈을 번다. 자바 언어는 돈을 버는 언어이다. 말하고 싶은 것은 회사에 돈 벌어다 줄 수 있는 사람이 되는 게 목표라는 것이다. 그게 프로가 아닐까? (아 근데 코딩만 잘하면 돈을 잘 벌까?)
'생각 메모' 카테고리의 다른 글
2023 (6) | 2024.01.04 |
---|---|
기업형 IT 연합 동아리 YAPP에 합류하기까지 여정과 포부 (0) | 2022.10.19 |
IT 서비스 개발 모임, 프로그라피 7기 회고 (4) | 2022.10.17 |