협상과 리더십은 습득하기 어려운 스킬이다.
유능한 아키텍트가 되려면 오랜 기간에 걸쳐 학습, 실습, 그리고 산 지식
을 체득해야 한다.
이 능력이 중요한 이유는 소프트웨어 아키텍트가 내리는 거의 모든 결정이 곳곳에선 거친 도전과 반대에 부딪히기 때문이다.
협상은 소프트웨어 아키텍트가 지녀야 할 가장 중요한 스킬 중 하나이다.
유능한 소프트웨어 아키텍트는 사내 정치를 잘 이해하고 강력한 협상 및 조정 능력을 발휘하며, 모든 이해관계자들이 동의하는 해법을 찾는 과정에서 맞닥뜨리는 숱한 의견 차이를 극복할 것이다.
소프트웨어 아키텍트는 개발팀을 이끌고 아키텍처를 구현하는 리더이다.
유능한 아키텍트가 되는 50% 정도는 효과적인 대인 관계 스킬, 조정 능력, 리더십에 있다고 생각합니다.
이 절에서는 유능한 소프트웨어 아키텍트로서 개발팀을 이끌어가는 데 기억해야 할 몇 가지 중요한 리더십 스킬을 소개한다.
개발자는 나방이 불빛에 끌리듯 복잡한 것에 이끌린다. 결과는 대부분 똑같다.
우발성 복잡성을 방지하는 가장 좋은 방법은 아키텍처 4C를 따르는 것이다.
커뮤니케이션, 협동, 명료함, 간결함을 실천하는 것
유능한 소프트웨어 아키텍트는 실용적이면서 동시에 비전을 가져야 한다.
이것은 말보다 실천이 쉽지 않아 매우 높은 수준의 성숙도와 꾸준한 연습을 필요로 한다.
비전을 가진다: 상상력이나 지혜를 발휘하여 미래를 떠올리거나 계획한다.
즉, 비전을 가진다는 것은 어떤 문제를 전략적 사고 방식으로 접근한다는 뜻이다.
실용적이다: 이론적으로만 생각하지 않고 실제에 근거한 방식으로, 분별 있게, 현실적으로 일처리한다.
아키텍트는 비전을 가져야 하지만 현실적인 솔루션을 적용해야 한다.
- 예산 제약 등의 비용 요소
- 시간 제약 등의 시간 요소
- 개발팀의 스킬 세트 및 수준
- 아키텍처 결정에 관한 트레이드오프와 의미
- 제안된 아키텍처 설계 또는 솔루션의 기술적인 한계
아키텍트로서 존중받으려면 실용적인 것과 비전을 가지는 것의 균형을 잘 맞추는 게 중요하다.
비즈니스 이해관계자는 갖가지 제약 조건에 적합한, 비전이 가미된 솔루션을 높이 평가하고, 개발자는 구현 관점에서 솔루션이 실용적이라는 사실에 더 후한 점수를 줄 것이다.
계급이 아닌 모법을 보여 리드하라
사람들을 이끌 때 계급과 직책은 별로 의미가 없다.
문제가 무엇이든지 결국 사람이 문제
기본적으로 존경심을 자아내고 팀을 이끌어 가는 것은 인간 관계 기술이다.
"~해야합니다.", "당신이 해야할 일은 ~"식의 말투는 자신의 의견을 강요하는 것으로 협업 자체를 중단 시켜버린다.
사실 이건 협업이 아니라 일방적인 통보일뿐이다.
"~를 고려해보신적 있나요?", "~는 어떨까요?"같은 표현에 주목한다.
질문을 던짐으로 개발자나 클라이언트에게 제어권을 내주고 아키텍트와 개발자가 함께 솔루션을 만들어가는 협업 대화가 이어진다.
이런 분위기를 조성하려면 구사하는 어법이 매우매우 중요하다.
아키텍트와 개발팀의 상호 존중 및 건전한 관계를 형성하는 또 다른 기술은 이름을 부르는 것이다.
이름을 부르며 악수를 하면서 눈을 맞추는 것은 기본적인 신뢰를 쌓는 방법이다.
브라운 백 미팅
아키텍트의 캘린더는 대부분 회의로 가득 차 있다.
그렇다면 언제 개발팀과 만나 협의하고 안내하고, 멘토링을 해야할까?
안타깝지만 IT세계에서 회의는 필요악이다. 회의는 항상, 그리고 자주 일어나기 마련이다.
유능한 소프트웨어 아키텍트로서 성공하는 핵심 포인트 중 하나는, 개발팀에 더 많은 시간을 할애하는 것이다.
회의 시간을 스스로 제어하여 시간을 낭비하지말고 개발팀과 시간을 보내야 한다.
협상과 리더십 팁은 소프트웨어 아키텍트가 개발팀과 그 밖의 이해관계자들과 더 나은 협력 관계를 구축하는 데 큰 도움이 될 것이다.
유능한 소프트웨어 아키텍트가 되려면 반드시 갖추어야 할 필요 기술이자, 효과적인 리더가 되는 첫 여정을 시작하기 좋은 팁이다.
성공의 공식에서 가장 중요한 한 가지 성분은 다른 사람들과 잘 지내는 방법을 아는 것이다.
마찬가지로 실리콘 밸리의 팀장들
의 의사소통 방법이라든지 리더십에 관한 내용이 많았다.
자신만의 신뢰관계를 형성하기 위한 스킬이 있나요?