신입 WPF 개발자 진로 조언 부탁드립니다..!

이런 부분들이 바로 양면성이라는 부분인데, 한분야의 전문가가 되어서 흔하게 빠지는 착각 또는 오류입니다.

소프트웨어가 그만큼 전문성이 없다면 네카라쿠배같은 용어는 왜 생겼으며, 대 웹서비스의 시대로 엄청나게 전문화된 패턴과 아키텍쳐들이 나올 이유가 없답니다.

많은 레거시 아저씨들, 코딩을 오래전에 놓으신 분들이 아직도 .NET Java Python 이런거를 들먹이면, 그거 C언어 로 다 되는거 아니야? 라고도 하시면서 소프트웨어 업계끼리도 서로 무시하는 게 요즘 시대입니다.

이전 글에서 '기술의 대체’에 대해서 쓰기도 했지만, 제가 알기론 Java C#과같은 관리형 언어가 나오면서 이전 기술들인 C++, C 이런 언어를 쓰셨던 선배들도 우리 C# 안배우면 대체되는 거 아닌가? 이렇게 생각하셨을 것도 같아요.

물론 C와 C++의 수요가 감소했을 겁니다. 그러나 고유한 영역은 분명히 존재하고 오히려 그 언어들이 점점 해당 비즈니스로 특화되면서 전문 영역이 생기기도 합니다. 대체되지 않았습니다. 하지만 요즘 거~의 안 쓰이는 GW Basic같은 고대의 언어는 있겠죠.

막말로 그렇게 하드웨어가 잘나가면 왜 외국계 소프트웨어 기업들이 유명하고 하드웨어 기업은 덜 유명할까요? 조금씩만 관점을 바꿔서 생각하는 메타인지만 있어도 그런 인지 오류는 덜할 것 같습니다. 안타깝네요.

경험이 없다면 그렇게 착각하기 쉽습니다. 수많은 테크 대기업 개발자들과 협업하고 하나의 서비스를 분할하여 유지보수 하기 위한 수많은 노력들을 무시하는 행위입니다.

하드웨어는 설계도를 만들고 공장에 발주가 들어가서 양산이 시작되면 그 제품에 대한 대비를 하고 양산하기 때문에 막대한 비용이 들어가는 지라 설계도를 만드는 그 순간까지만 여러 부서들과 싸웁니다. 그렇기 때문에 여러 이론과 설계를 머리속으로 해보고 최대한 시뮬레이션을 해서 양산했을 때 오차가, 손해가 없게 개발하는 것입니다. 양산이 시작되면 바꾸기가 힘들기 때문이죠. 이것이 하드웨어의 개발 특성입니다. 분명한 것은 이것은 특성이며 무시당할 요소는 아닙니다.

하지만 소프트웨어는 다릅니다. 데이터의 흐름에 따른 비즈니스는 언제든 변화하고 발전하고 퇴보할 수 있기 때문에 설계도, 기획서를 가지고 소프트웨어라는 제품을 만들고 시작하지만, 유저수가 달라질 수 있기 때문에 하드웨어랑 다르게 변화에 유연하게 개발 해야하며 그에 맞는 여러 패턴들이 존재합니다.

그렇기 때문에 소프트웨어에 대해서 하드웨어처럼 변경에 불리하게 코드를 작성하는 개발자들이 시장에서 도태되는 것입니다. 물론 1인 사업을 하며 본인이 익숙하게 개발하기 위해 코드를 일부러 그렇게 했다면 그것은 나름의 최적화이기 때문에 이해받을 수 있겠지만 소프트웨어란 얼마나 거대해질지 모르기 때문에 기본적으로 구역을 나눠서 인터페이스만 제공하고 ‘여기서부터 여기까지만 내가 가진 오너십이야’ 라고 하는 경우가 많습니다. 소프트웨어 개발자는 제품이나 서비스 규모에 따라 다르겠지만 약간이라도 규모가 커지면 혼자서 다 못하고 협업을 반드시 해야 합니다. 그러면서 기술적으로도 협업 기술이 필요하고 (하드스킬), 사람과 사람사이에 소통비용을 줄이기 위해 어떻게 커뮤니케이션을 해야하는지 소프트스킬 을 따로 익히는 전문가도 있습니다.

소프트웨어…코드란 비즈니스와 맞닿아 있는 제품 그 자체이고 그래서 개발자들이 효과적인 코드에 욕심내는 것입니다. 이런 부분들을 이해하시고 나중에는 친척분께 설명해주실 수 있으면 좋겠네요.

2개의 좋아요