개발자는 기획자가 제안한 내용을 구현하는 역할을 합니다. 하지만 단순히 기획자가 시키는 대로 만들기만 해서는 안 됩니다. 어떤 목적으로 개발을 요청하는지 이해해야 좋은 결과를 낼 수 있습니다.
예를 들어, 게임에서 유저의 점수를 나열하여 보여주는 기능을 만들어달라는 요청이 있다고 가정해봅시다. 가장 빠른 소팅 알고리즘을 사용하면 될까요? 가장 빠른 소팅 알고리즘이 무엇일까요? 상황에 따라 다릅니다. 퀵소트나 머지소트 같은 알고리즘이 일반적으로 빠르다고 알려져 있지만, 소팅의 목적이 게임에서 실시간으로 1등을 보여주는 것이라면 소팅이 필요 없을 수도 있습니다. 실시간으로 1등을 보여줘야 하는 경우와 일 단위로 1등을 보여줘야 하는 경우, 그리고 실시간으로 나의 랭킹을 보여줘야 하는 경우와 일 단위로 나의 랭킹을 보여줘야 하는 경우, 각각의 기술적 요구 사항은 다릅니다.
실시간으로 나의 랭킹이 정확할 필요가 없다면, 시간 단위, 분 단위로 캡쳐된 데이터를 소팅해서 보여주면 됩니다. 미리 캡쳐된 랭킹 안에서 내 현재 점수가 몇 등인지 정도만 측정하면 되는 것입니다. 이러한 기술들은 대단히 복잡한 것이 아닙니다. 각각의 상황에 맞게 필요한 기술이 다를 뿐입니다.
하지만 이러한 기술을 단순히 생각 없이 소팅 알고리즘을 사용하게 되면 문제가 발생할 수 있습니다. 제대로 표기되지 않거나, 소팅하는 데 CPU를 너무 많이 사용해서 게임이 느려질 수 있습니다.
서비스에서 초고도 기술을 사용할 일은 거의 없습니다. 직접 구현할 일은 더욱 드뭅니다. 적절한 기술을 선택하여 사용하는 것이 중요합니다. 여기서 중요한 것은 그 '적절함'입니다.
적절한 기술을 결정하려면 기술적인 내용만으로는 불가능합니다. 기획 의도를 이해해야 적절한 선택이 가능합니다. 유저의 점수를 어떻게, 어떤 시점에 보여주고 싶은지 알아야 적절히 개발할 수 있습니다.
개발자 연차가 올라갈수록 회의가 많아지는 이유도 여기에 있습니다. 어떤 선택을 할지가 개발에 큰 영향을 미치기 때문입니다. 단순히 '내 개발만 잘하면 된다'는 생각은 틀렸습니다. 개발자는 기획을 이해하고, 상황에 맞는 적절한 기술을 선택할 줄 알아야 합니다. 그래야만 효율적이고 성능 좋은 서비스를 제공할 수 있습니다.
이런 이유로 개발자가 기획을 알아야 합니다. 선택의 중요성을 알고, 그에 맞는 적절한 기술을 선택하는 능력이 개발자에게 요구됩니다. AI 기술의 발전으로 인해 단순 개발 비용은 점점 하락하고 있습니다. 그만큼 선택의 중요성은 더 커지고 있습니다. 인간은 선택을 하고, 구현은 AI가 할 수 있는 시대가 오고 있습니다. 어떤 선택이 좋은지 알려면 내가 당장 하는 개발뿐만 아니라 더 많은 상황에 대해 알아야 할 것입니다.