NextStep TDD, 클린 코드 with Java 를 시작하며

이상·2023년 4월 16일
0
post-thumbnail

ALL CODE IS GUILTY UNTIL PROBEN INNOCENT
검증되기 전까진 안전한 코드란 없다.
이미지 출처

넥스트 스탭, TDD 강의를 수강하며.

먼저 글에 들어가기 앞서,

나는 TDD 만이 해답이고 올바른 개발 습관이고, 개발에 대한 바람직한 자세라는 생각을 하고 있지는 않다.
하지만, SI 회사에서 타인의 손이 많이 탄 프로젝트를 유지보수하고, 떄로는 기능을 더하면서 문서화 된
공통의 룰도 실제로는 잘지켜지지 않을 뿐더러,
대부분의 경우 그러한 문서화도 제대로 이루어지지 않는다는 것은 굳이 언급하지 않아도 많은 이들이 알고 있는 공공연한 사실일 것이다.
대부분의 경우, 준공을 완료하는 시점에서 처음으로 개발문서를 작성한다던지 또는 개발문서는 언제든지 바뀔 수 있는
개발자를 위한 길잡이가 아닌 마무리를 위한 문서작업으로 보는것이 업계의 관행이다.
이 모든 부담은, 추후 유지보수를 하거나 운영을 하기로 한 다른 SI 회사가 떠안게 된다.

나 역시 이러한 부분이 항상 불만이었으며 갈증이 있었고, 이에 해당 과정을 수강하기로 마음먹었다.

유지보수의 중요성을 말로 설명하는 것은 누구나 쉽게 할 수 있다.
하지만 '깔끔한(clean)'소스코드를 직접 작성하며 그 중요성을 실현하는 것은 결코 쉽게 할 수 없다.
nextStep 의 강의 소개 내용 중

넥스트코드 TDD 클린코드 with Java
16기의 수업을 듣는 중, 함께 공부하는 친구들이 이 순간을 하나하나 기록하는 것이 좋을 것 같다는
추천을 들어, 위 글을 적기 시작했다.

처음 개발 공부를 시작했을 때, 도움을 주셨던 선생님께 추후의 커리어 패스에 대한 질문을 했을 때 위 수업을 추천받았던 기억이 있다. 당시에는 구현에 급급하며 남들보다 빠르게 해내는 것이 실력인 줄 알았기에 그로부터 약 2년간 더 잘하는 것이 아닌 내가 속한 분야에서 살아남는 것이 나의 목표가 되며 위 강의에 대해 잊게 되었다.

좋은 개발자가 되기 위해 고민하다.

다시 좋은 개발자가 되기 위해 크게 고민하기 시작했던 것은 1년 정도가 지나며, 전에 몸 담던 회사에서 개발팀의 리더가 됐을 때였던 것 같다. 함께 개발을 시작했던 친구들 사이에서 가장 향상심 없게 시간을 보내던 내가 느끼기엔 점점 다른 사람들과의 격차가 벌어지는 것처럼 느껴졌고, 당시만해도 그 이유를 사수가 없는데에서 찾았던 것 같다.

좋은 사수가 없는 것을 탓하지말고 좋은 사수이자 동료가 되려고 노력했었으면 어땠을까?

단순히,

else if ....
switch ...
depth{
	depth2{
    	depth3{
        	....
        }
    }
}

로 난리 부루스를 추고 있는 솔루션의 코드를 보며 (중간중간 trycatch 는 덤이었다.)
현실도피 반, 다른 곳에선 더 성장할 수 있을 거라는 마음 가짐으로 이직을 결정했다.
그리고 앞서 언급했던 친구들이 있는 회사로 거처를 옮겼다.

스스로의 나태함이 새로운 회사에선 자연히 해결될 것이라는 책임을 전가하는 믿음을 가지고.

깨달아야했던 것은, 당시 회사의 낮은 코드 퀄리티와 좋지 못한 성장환경이 아니라, 그 난잡하고 정돈안된 코드에 나도 굉장히 많은 일조를 하고 있었다는 것이었다.
프로덕션 코드의 테스트와 로깅을 sysout 으로 하고 있었던 것을 생각하면 참 소름이...

다시 한 번 nextStep 의 이름을 듣다.

이직한 곳에서도, 난 그냥 똑같은 개발자였고 달라진게 있다면 조금 더 성장하고 싶다는 생각을 하기 시작했다는 것이다.

레거시한 코드구조를 보면 뭔가 보기 어렵다. 바꾸고싶다는 욕심이 들기 시작했고, 내가 만드는 코드가 남들로 하여금 바꾸고싶다는 생각이 들지 않게, 오랫동안 남을 깔끔한 코드를 만들고 싶다는 생각이 들었다.

if(condition){
	code
    if(condition == Enum){
   		code == blahblah
	}
}

이러한 느낌의 코드를 봤을 때, 이를 바꾸고 싶다면, 이게 최선인가? 고민된다면?
그런데, 적당한 수준의 어지러운 코드가 아니라면?

try{
	if(condition){
    	String s = a.getField();
		if(s.equals("yy")){
        		z.setConclusion("s is yy");
		}
	}
    
}catch(Error e){
	e.printStackTrace();
}finally{
	x.close();
}

어디서부터 손을 대야할지 모르겠는 난잡한 코드를 보며 어지러워하면서, 내가 만드는 코드가 또 이런 코드는 아닐까 걱정하기도 하고, 개발중 java 클래스 파일을 생성하는 것에 망설임이 있고, 스스로의 코드에도 확신을 더 갖고싶은 내게 아주 적합한 교육과정이었다는 생각이 들었다.

결론

이미 2주가 지난 시점에서 시작하기 전까지의 상황을 블로그에 정리하는 것은 참 게으름의 끝이긴하지만,
이를 계기로 지금부터는 늦지 않으리라 다짐한다.

각설하고, 수강 시작전 그리고 2주가 지난 지금 나의 강의에 대한 평가는 다음과 같다.

  • 80만원이나 금액을 지불하고, 강의를 들은 것은 의지를 구매하는 방법이라고 생각한다!

강의 초반부터, 자바지기님이 배우려는 학생의 자세로 강조하는 것은 단 하나다.

자신을 믿지말고, 자신을 바꾸는 것이 아닌 둘러싼 환경을 바꿔라

스스로 채찍질 하거나 자신을 끌어보려고 했던 것은 대부분 실패하거나, 결과가 좋지 않았음에,
이번에 수강하는 내역을 꼭 정리하고 더 좋은 개발자로 스스로를 발돋움하기 위해 노력해야겠다.

먼저 강의를 수강했던 지인에게 위 책을 추천받았다. 다행히 품절되기 전에 구매할 수 있었다.
다소, 강한어투로 급진적인 내용을 띄면서도 개발에 대한 확고한 철학이 있는 이 책의 내용이 어느정도 강의의 내용을 관통하는 부분도 있다는 서평이다.

그러고보니, 읽으려고 구매해둔 책들, 공부하려고 구매한 강의중 아직 제대로 시작하지 못한 것이 수두둑 빽빽하다. (계속 미뤄왔던 것들 중 하나가 또 개발 블로그이다.)

이제 여유부리는 것은 그만하고, 하나씩 달려보자

강의 내용에 대한 상세한 리뷰나 스스로 성장해가는 모습은 다음번 포스팅부터 이어가도록 하겠다.

profile
더 잘 하고 싶은 개발자

0개의 댓글