일반적으로 생각하는 개발 능력은 코딩을 잘하는 것, 시스템 구조를 설계하는 것 정도가 있을텐데
사실 가장 중요한건 "요구사항을 제대로 구현해내는 능력" 입니다
요구사항을 제대로 구현한다는건 시킨대로 하라는게 아니고
요구사항 속에 숨겨진 진짜 요구사항을 캐치해낸 후, 그것을 요구자에게 이해시키고 함께 완성시켜야한다는 의미입니다
좀 웃긴 이야기지만, 요구한 사람은 일반적으로 자기가 뭘 원하는지 잘 모릅니다
두루뭉술한 문서를 가져와서 만들어달라고 하는데요
개발자는 그걸 그대로 받아들이면 안되고 요구자가 달성하고 싶은 목표를 먼저 알아내야합니다
그 다음에는 목표를 달성하기 위해 이게 왜 필요한지를 알아내야합니다
보통은 듣다 보면 논리적으로 허점이 많습니다
개발자는 이 논리적 허점들을 지적하고 함께 메꿔나가야합니다
이런 과정을 거치지 않는다면 결과물이 구린건 당연하고, 정돈되지 않은 요구사항이 정돈되지 않은 코드로 표출됩니다
정돈되지 않은 코드는 맥락이 없으므로 패턴화 시키기도 어렵고 유지보수도 어렵고 버그도 내포하기 쉽습니다
(패턴화 해도 개억지패턴화 됩니다)
ps1. 이런 과정을 통해 기획서를 갈아엎은 경험이 상당히 많습니다
ps2. 일반적인 기획자는 전문화 된 사람이 아니라서 무작정 믿으면 안됩니다
데이터도 모르고 디자인도 모릅니다
그냥 일반 사용자에 비해 비슷한 서비스를 훨씬 더 많이 써봤고 리서치해봤다 정도이고
뇌피셜을 기반으로 통계 마사지를 수행한 후 방향을 잡는다 정도입니다
(그래서인지 갑자기 근거도 없이 방향을 바꾸기도 함)
ps3. 여기서 요구되는게 인싸력입니다. 수많은 논의를 거쳐야 하는데, 말도 제대로 못하고 배려심도 없으면 골치아파집니다
요구사항에 논리가 없는데 코드에 논리가 존재하는건 불가능합니다
맞말인데 하나가 빠진 것 같습니다 그 기획을 갈아엎을 수 있을 정도로 지식에 빈틈이 없고 논리적이어야 한다는 사실... 대단한 것 같습니다! - dc App
고민을 자주 깊게 하다보면 논리적인 사람이 되는 것 같습니다
ㅇㄱㄹㅇ 개발자가 초기 기획서 그대로 구현해줘야 하는 사람들이 있는데.. 보통은 전혀 아니고 기획자는 더 모르는 사람들임. 내 맘을 나도 몰라. 딱 이런 느낌이니까 계속 개발 내용을 자주 공유하고 커뮤니케이션하면서 수정하는 게 문제가 덜 생기는 제일 좋은 방법임.