Life/Writing

[THINK] Good Developers VS Bad Developers

아즈샤 2019. 6. 12. 15:35
반응형

미디엄 글 Good Developers VS Bad Developers 를 보고 느낀 점을 정리한 글입니다.

Codementor 광고하기 위해 쓴 글인 것 같지만.. 그래도 저에게는 많이 찔리는게 있어 정리해보았습니다.

Bad Developers

1. 카우보이 코더

- 코드를 매우 빨리 작성합니다.

평균적인 개발자보다 훨씬 빠르게 새로운 기능을 만들 수 있으며, 코드를 모르는 사람들은 이러한 빠른 코드 작성자가 멋지다고 생각 할 것입니다. (이는 카우보이의 자존심을 더욱 부추깁니다.)

그러나 이러한 카우보이는 향후 유지보수 가능성을 염두에 두지 않고 코딩합니다. 어느것이든지..

 

- 지저분하고 읽을 수 없는 코드 (스파케티 코드)

신속하게 구축 된 프로젝트의 코드 디자인은 완전히 혼란 스럽습니다. 이러한 프로젝트는 유지관리하기 힘듭니다.

이는 카우보이와 작업해야하는 불행한 사람이 있을 경우, 전체 팀의 생산성이 크게 저하됩니다.

 

- 버그, 어디서나 버그

프로젝트가 점점 커지고 복잡해지고 있는데 코드가 여전이 스파게티 소스라면, 폭발하기 위해 기다리는 똑딱거리는 폭탄일뿐입니다. 최악의 경우 돌일 킬 수 없는 심각한 문제를 일으킬 수 있습니다.

게다가 스파게티 소스는 확장할 수 없습니다. 어러한 코드에 확장을 한다는 것은 지뢰밭을 걷는 것과 다름없습니다.

프로젝트 수정 역시 불가능해지며, 오히려 카우보이는 버그를 신속하게 수정하여 더 많은 버그를 생성합니다. (그들은 마치 바쁜 것처럼 느껴지지만..)

 

- 오만함

이 카우보이가 초보 개발자의 경우 잘 모르기 때문에, 얼마든지 품질에 대한 자부심을 가진 숙련된 시니어 개발자의 조언을 받으면 쉽게 고칠 수 있습니다.

하지만 주위에 있는 개발자가 똑같이 나쁘거나 평범한 개발자라면, 그들은 카우보이가 좋은 것이라는 망상에 빠지게 됩니다.

 

실수에 대한 책임을 기꺼이 감내하고, 실수로 배우는 개발자은 나쁜 개발자가 아닙니다.

개발자를 나쁘게 만드는 가장 중요한 속성은 이러한 망상에서 나오는 오만함입니다.

 

나쁜 개발자들은 자신의 코드가 완벽하다고 생각하며, 오히려 코드를 이해하지 못하는 개발자나 고객을 비난합니다. 

이러한 오만한 개발자들은 다른사람들이 지능 측면에서 자신보다 아래에 있다고 생각합니다. 최악의 경우 자신이 저지른 것들을 인정하지 않기 때문에 실수를 받아들이거나 실수를 통해 배우려하지 않습니다.

 

2. 평범한(간신히 적당한) 개발자

- 관심 없음

개발에 대한 관심이 부족한 개발자입니다. 그들은 코딩에 대한 열정/관심이 없으며 신기술을 익히는데 시간이 걸리거나 사실상 변화가 불가능합니다.

평범한 개발자는 카우보이 만큼 파괴적이는 않지만 좋은 결과물을 가져오는 경우가 없고, 솔루션은 항상 좋은 개발자보다 나쁩니다.

이러한 평범한 개발자는 기껏해야 결승점까지 겨우 나아 갈 수 있습니다.

 

3. 결론

개발자를 나쁘게 만드는 핵심은 더 나은 프로그래머가 되고 싶다는 욕구 부족입니다. 나쁜 프로그래머들은 현재의 상황에 만족하고 편안합니다. 더 나쁜 것은 카우보이와 평범한 개발자들은 보통 이런 것들을 자각하지 못합니다.

또한 코드가 작동하는 방법에 대한 호기심이 부족하기 때문에, 사용하는 언어 / 도구 / 라이브러리에 대한 피상적인 이해를하게 됩니다.

 

Good Developers

- 항상 더 나은 개발자가 될 것이라는 인식

- 실수를 통해 배울 뿐 아니라 실수에 대한 책임감을 느끼는 인식

- 읽기 쉽고 구조화 된 코드 작성

- 쉽게 디버깅 할 수 있는 솔리드 코드 디자인

- 코드가 어떻게 작동하는지 이해하려고 노력합니다.

- 팀 내 다른사람들과 의사 소통 / 협조

- 비평과 다양한 접근법에 개방

- 새로운 기술을 배우는데 전념

- 문제 해결을 좋아함

 

이후 자세한 내용은 생략한다.

(원본 본문은 https://medium.com/@CodementorIO/good-developers-vs-bad-developers-fe9d2d6b582b 참고)

 

Good Developers vs Bad Developers

There’s a saying that “a great programmer can be 10 times as good as a mediocre one”.

medium.com

 

반성

- 저도.. 그랬습니다.. 버그가 나오면 당황하다가 얼른 실수를 만회하려고 빠르게 버그를 수정하는데 집중했습니다.

카우보이 개발자 처럼 빠르게 버그를 수정하면, '아 역시 나는 개발이 천직이야' 라고 생각한 적도 있었습니다. (내가.. 내가 카우보이라니...!)

그러나 버그를 고치면서 코드 수정할때 전체적인 구조를 생각해본 적은 많이 적었던 것 같습니다. 대부분 버그는 생각 못한 케이스를 대응하지 못해서 발생하는 경우가 있는데, 그런 케이스를 생각하지 못한 이유, 근원적인 문제를 생각해봐야 하는데, 그냥 놓친 케이스만 추가하는 나의 모습을 깨닫게 되었습니다. (아마 그렇게 붙혀논 코드는 유지보수하기 힘들어지겠지..)

거디가 빠르게 버그를 고치면 주위의 사람들이 좋아하기에 나도 모르게 '속도'에만 신경을 쓰고 있지 않았는지 반성이 됩니다.

 

- 다행이 개발실력이 부족한 것을 알아 오만함은 없지만, 평범한 개발자에 머무르고 싶던 것도 반성이됩니다.

좀 더 좋은 코드, 좋은 아키텍쳐를 생각하기보다는, '지금도 충분히 잘 돌아가는데 리스크를 감수하고 구지 바꿀 필요가 있을까?' 라는 생각을 하면서 개발을 했던 나를 반성한다. "자기가 사용하는 도구, 라이브러리에 피상적인 이해를 한다..." 너무나 나에게 찔리는 말이었습니다.

 

변즉생 불변즉사 라는 말이 있다. 개발자에게 가장 어울리는 말이 아닌가 싶습니다.

이번 포스팅으로 좀 더 개발에 대한 열정을 가지고, 코드를 좀 더 세심히 보고, 항상 더 나은 개발자가 되도록 노력해야 할 것 같습니다.

반응형