지금까지 프로그래머는 프로그래밍 능력. 스킬이 중요시되었다.
코드를 얼마나 유연하게. 견고하게. 잘 읽히게. 깔끔하게 만드냐.
어떤 문제가 있을때 어떤 기술을 사용하는게 좋을지 판단하고, 그 기술을 얼마나 잘 이해하고 있냐.
무슨 기술들을 알고 있고 써봤고, 얼마나 이해하고 있냐.
얼마나 협업을 잘하냐. 얼마나 커뮤니케이션이 잘되냐.
정도가 지금 개발자의 능력을 판단하는 척도이다.
내 개인적인 생각으로 앞으로 약 10년 정도 지나면 개발자는
1. 특정상황에 어떤 기술을 써야하는지 고민할 필요가 없어질 듯 하다.
이유1: 수많은 사례로 인해 Best Practice 를 정확히 알 수 있고, 인공지능을 통해서 자동으로 선택할 수 있게 된다.
이유2: 점점 업무가 분업화.세분화가 되고, 세분화된 각 분야의 전문기업, 전문가가 생긴다. 특정 상황에 어떤 기술을 써야하는지에 대한 판단은 이들의 몫이 될 것이다.
2. 특정 기술의 내부가 어떻게 이뤄졌고 어떻게 동작하는지 알아야될 필요가 없어질 듯 하다.
이유: 개발을 하는건 사람이기 때문에 점점더 간편한걸 추구하게 되어있다. 이해하기 어렵고 복잡한 내부구조를 전혀 몰라도 되도록 앞으로 점점 바뀔것이다. 그런걸 몰라도 발생할 수 있는 모든 예외 상황에 대해 마우스 클릭 몇번으로 모두 해결 가능하거나 무엇이 문제인지 즉시 인식 가능하도록 바뀔 것이다.
3. 코드를 유연하게. 견고하게. 잘 읽히게. 깔끔하게 만들려고 노력하지 않아도 될 듯 하다.
이유: 위에서도 잠깐 언급했지만 개발은 점점 더 간편하게 바뀔 수 밖에 없다. 어쩌면 지금처럼 코딩을 직접 하는게 아니라, 브라우저 또는 특정 툴에서 마우스클릭만으로 개발할 수 있도록 바뀔수도 있겠고 좀 더 극단적으로 생각해보면 비즈니스를 AI 에 학습시키고나서 만들어달라고 하면 자동으로 만들어 질 수도 있다.
유연하고, 견고하고, 잘읽히고, 깔끔하게 만들려는 이유는 소프트웨어는 자꾸 바뀌고 진화해야하기 때문에 코드를 계속 수정해야하는데 코드를 자주 수정하려면 잘 읽혀야하고 뭔가를 수정하기 쉬워야하며 수정했을 때 다른 부분에 영향이 덜 미쳐야하며 테스트하기 쉬워야하기 때문이다. 결국 사람이 보고 고쳐야하는데 고치려고 하면 쉽게 망가지거나 어디를 고쳐야할지 잘 모르기 때문에 이런 문제를 해결하기 위해서다. 그런데 소프트웨어의 개발과 수정을 사람이 직접 하지 않는다면 이런것들은 다 의미가 없어진다.
앞으로 점점 더 중요해질 개발자의 능력은 업무에 대한 도메인 지식이 아닐까.. 생각해본다.
개발자는 개발능력이나 스킬보다 비즈니스 도메인에 대한 이해도가 높아야한다.
기술,스킬이야 앞으로 얼마든지 대체가 가능하지만 사람이 만들어낸 비즈니스는 사람이 정확히 이해해야한다.
사람이 만들어낸 비즈니스는 고유한 것이다. 비슷비슷한것 같지만 다들 추구하는 바가 조금씩 다르고 그 조금씩 다른 부분이 바로 각 기업이 내세우는 차별성, 특징, 장점, 핵심일 것이다.
이 핵심은 사람이 정확히 이해해야한다. 이렇게 정확히 이해한 도메인 지식으로 학습모델을 만들어 A.I 에 학습시켜야 하지 않을까.. 하는 생각이다.
기술이란게 결국 사람이 좀 더 풍요로워지기 위한것이며 도메인 지식에 대한 이해도가 높아야한다는 것은 결국 고객의 니즈를 정확히 파악해야한다는 것이다.