일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 파이썬 프로그래머스
- 파이썬 릿코드
- leetcode 풀기
- 코틀린기초
- LeetCode
- leetcode풀기
- 파이썬 알고리즘
- 릿코드 풀기
- python zip_longest
- 파이썬릿코드풀기
- 파이썬알고리즘풀기
- python xor
- 파이썬알고리즘
- 릿코드 파이썬
- leetcode풀이
- python 알고리즘
- 릿코드
- python priority queue
- python sorted
- 릿코드풀이
- 상가수익률계산기
- python 릿코드
- 파이썬릿코드
- 파이썬 알고리즘 풀기
- binary search
- python Leetcode
- 릿코드풀기
- 잇츠디모
- 알고리즘풀이
- 알고리즘풀기
- Today
- Total
소프트웨어에 대한 모든 것
[설계] 소프트웨어 아키텍처 (S/W 리더가 되기 위한 12가지 스킬) 본문
본 글은 Software architects: 12 hard and soft skills needed to become a leader를 기반으로 작성되었습니다.
Software Architect는 무엇인가?
소프트웨어 아키텍처는 높은 수준의 설계를 디자인하고 기술 표준을 구성합니다. 여기에는 소프트웨어 tools, 소프트웨어 코딩 표준 또는 플랫폼이 포함될 수 있습니다. 효과적인 의사결정을 내리기 위해서는 소프트웨어 아키텍처 폭 넓고 깊이 있는 기술 지식이 필요합니다. 그들은 또한 프로젝트와 사람을 관리할 수 있는 소프트 스킬이 있어야 합니다.
Software Archtect: 필요한 hard 스킬
프로젝트마다 다른 기술 지식이 필요하기 때문에 모든 상황에 적용 가능한 정의를 내릴 수 없습니다. 그렇지만 몇몇 스킬은 프로젝트에 상관없이 필수족으로 필요한 것이 있습니다.
- Unified Modeling Language(UML) 종종 필수 요구 사항으로 나열됩니다. 복잡한 아키텍처를 도표화하는데 익숙해야 합니다.
- 장기적인 목표를 전략적으로 지원하기 위해 비즈니스에 필수적인 하나 이상의 프로그래밍 언어에 대한 깊은 지식을 갖춰야 합니다.
- 협업적이고 민첩한 방식으로 소프트웨어 개발 관행을 관리합니다. 이는 종종 DevOps에 대한 깊은 친숙도를 의미합니다. 이를 위해서 효율적인 DevOps 환경 생성과 같은 하드 스킬과 개발팀과 운영팀이 잘 협업하도록 하는 소프트 스킬이 필요합니다.
Software Architect: 필요한 soft 스킬
그러나 기술만큼 중요한 것은 성과를 주도하고 성공적인 프로젝트를 위해 팀원들을 한데 모을 수 있는 '소프트' 기술이라고 합니다.
- 리더십 - 프로젝트 개발을 감독하고 설계 표준을 충족하기 위해 개발자 팀을 조정하려면 상당한 리더십이 필요합니다. 소프트웨어 아키텍처는 프로젝트의 요구 사항과 팀의 요구 사항을 적절히 조정할 수 있어야 합니다.
- 문제 해결 및 갈등 해결 - 프로젝트에 들어가는 모든 요소를 관리하고 조정하려면 기술에 대한 문제 해결, 사람에 대한 갈등 해결 기술이 필요합니다.
- 커뮤니케이션 - 커뮤니케이션은 모든 리더십 위치의 핵심 요소입니다. 팀을 최대한 활용하려면 소프트웨어 아키텍처가 미션, 데드라인 및 기대치를 명확하게 설명해야 합니다.
- 코칭 및 영감 - 기대(or 결과)가 충족되지 않으면 리더는 팀 구성원이 목표를 달성하도록 코칭하고 영감을 제공해야 합니다.
- 조직(Organization) - 소프트웨어 아키텍처는 개발 로드맵을 설정하므로 조직화하는 것이 중요합니다. 종종 대규모의 복잡한 UML 다이어그램이 필요하며, 이를 위해서는 체계적이고 조직적인 사고방식이 필요합니다.
- 우선순위 지정 - 소프트웨어 아키텍처는 작업의 우선순위를 빠르게 지정하고 제품 개발 전반에 거쳐 팀원에 업무 할당을 효과적으로 지정해야 합니다.
- 세심함 사고(detailed thinking) - 모든 개발 프로젝트에는 올바르게 관리해야 하는 상당한 수의 세부 사항이 있습니다. 이를 위해서는 프로젝트 코드가 목표를 충족하는지 확인하기 위해서는 세부 사항에 극도의 주의가 필요합니다.
- 창의적 사고 - 소프트웨어 설계자는 장애물에 관계없이 프로젝트 성공을 위해 팀을 앞으로 나아가게 해야 합니다. 이를 위해서는 창의적으로 생각하여 문제를 해결할 수 있는 대안적 솔루션이나 창의적인 방법을 찾는 능력이 필요합니다.
종종 과소평가되는 또 다른 필수 기술은 협상 기술입니다. 프로젝트가 계속 발전함에 따라 소프트웨어 설계자는 항상 누군가와 협상을 해야 합니다. 기한 내에 작업을 완료할 수 없다고 생각하는 개발자와 일정을 협상하거나 이해 관계자에게 기능 추가 및 비용 간의 trade-off를 이해하도록 하는 것일 수 있습니다. 훌륭한 소프트웨어 아키텍처는 훌륭한 협상가입니다.
어떻게 Software Architect가 되는가?
당신이 현재 역할에서 소프트웨어 아키텍처의 위치로 전환하려는 경우 지금 수행해야 하는 몇 가지 주요 작업이 있습니다.
- 기술 능력 확장 - 소프트웨어 아키텍처는 풀 스택 개발자입니다. 여러 프로그래밍 언어에 대한 광범위한 경험이 필요합니다. 주로 한 분야에서 경험을 쌓았다면 다른 분야를 배워야 합니다.
- 프로젝트와 사람을 관리해야 합니다. 현재 업무에서 추가 책임을 맡을 수 있는 기회를 찾으세요.
- 멘토 찾기 - 존경하고 원하는 직업을 가진 사람을 찾아 코칭을 요청하세요. 올바른 멘토는 목표를 달성하는 데 도움이 될 수 있으며 평생 든든한 자원이 될 수 있습니다.
- 지속적인 교육 - 필요한 기술을 강화하기 위해 외부 교육을 받는 것을 고려하고 취업을 지원할 때 자신의 사례를 강화할 인증을 찾으세요.
소프트웨어 아키텍처 역할로 이동할 수 있는 가장 좋은 기회는 현재 조직 내부일 가능성이 큽니다. 관리자에게 자신의 욕구를 알리고 그들과 함께 자신을 증명할 기회를 찾는 것의 힘을 간과하지 마세요.