좋은 개발자와 엔지니어어는 무엇일까요? 이 주제는 매우 추상적일 수 있지만, 제가 생각하는 가장 중요한 요소를 공유하고자 합니다. 물론, 이는 개인적인 견해일 수 있으며 저와 다른 의견이 있을 수 있습니다. 왜냐하면 이 질문에 대한 절대적인 정답은 없기 때문입니다. 그럼에도 불구하고, 제 생각을 글로 정리하고 읽어보면 평소에 생각하지 않았던, 당연하게 여겼던 것들에 대한 것을 다시한번 생각할 수 있고, 개발자로서 성장할 수 있는 계기가 될 수 있다고 생각합니다.
문제 해결 능력
1. 빠르고 정확한 문제 해결
: 개발자는 문제를 신속하게 파악하고 어떤 것이 최선의 해결책인지 알아 내는것이 중요합니다.
2. 문제를 작게 분석하는 사고력
: 복잡한 문제를 작은 단위로 분해하고 해결 방법을 찾을 수 있는 능력이 필요합니다.
3. 긴급도와 영향도에 따른 우선순위 설정
: 문제의 긴급도와 영향력을 고려하여 해결해야 할 순서를 정하는 능력이 중요합니다. 이건 개발뿐 아니라 모든 일에서 적용되는 것 중요한 요소 입니다
4. 결정 능력 - 장단점을 고려한 결정 능력:
: 다양한 선택지 중에서 장단점을 고려하여 최적의 결정을 내릴 수 있어야 합니다. 예를들어 어떤 라이브러리를 사용할지, 아니면 직접 개발할지 등등 인력, 시간, 프로젝트의 상황 등등 다양한 조건을 고려해야 합니다
커뮤니케이션 능력
1. 효율적인 커뮤니케이션
: 아이디어와 기술 디테일을 명확하게 전달하고 다른 사람들의 의견을 이해하며 소통할 수 있어야 합니다. 일을 진행할 때 이 일을 왜 하는지 이유를 알고 추후 목적이나 방향성을 알면 이해하기 쉬워집니다
2. 낮은 커뮤니케이션 비용
: 효과적인 커뮤니케이션을 위해 비용을 최소화하고 효율적인 도구와 방법을 활용해야 합니다.
3. 메모 습관을 통한 정보 기록 및 공유
: 중요한 정보를 기록하고 공유함으로써 팀원들과의 원활한 소통과 지식 공유를 도모해야 합니다. 항상 모르는 사람도 어느정도 알 수 있도록 하면 좋습니다.
기술 지식 능력
1. 컴퓨터의 깊은 이해
: 하드웨어와 소프트웨어의 동작 원리를 이해하고 문제 발생 시 빠르게 대응할 수 있어야 합니다. 기본적인 이해가 있어야지 추후 어려운 문제에 대한 해결이 쉽습니다.
2. 소프트웨어 라이프 사이클 경험
: 소프트웨어 개발 과정 전반에 대한 이해와 경험이 필요합니다. 디버깅과 오류의 이해도를 높혀 막히는 상황을 빠르게 해결할 수 있습니다.
3. 다양한 프로그래밍 언어에 대한 숙련도
: 다양한 언어를 자유롭게 다룰 수 있다면 각 언어의 특성에 맞추어 효율적인 언어를 작성할 수 있고, 개발 도구에 대한 제한 없이 효율적인 개발을 할 수 있습니다
적응과 꾸준히 학습하는 마인드셋
1. 적응과 꾸준한 학습 마인드셋
: 빠르게 변화하는 기술 환경에 적응하고 지속적인 학습과 개발 마인드셋을 가져야 합니다.
2. 실패로부터의 배움과 경험 공유를 통한 개인 성장
: 실패를 통해 교훈을 얻고 다른 사람들과 경험을 공유하여 개인적인 성장을 이루어야 합니다. 처음부터 성공하는 경우는 10번중 1번일 정도로 실패라는 것에 익숙해져야 합니다
3. 다른 사람들로부터의 배움, 특히 한 단계 앞서있는 사람들과의 정기적인 1:1 멘토링
: 더 높은 수준의 전문 지식과 통찰력을 얻기 위해 정기적인 멘토링을 통해 다른 사람들로부터 배울 수 있습니다.
4. 튜토리얼을 통한 실제 경험과 문서 읽기보다 실습 위주의 학습
: 실제 프로젝트나 튜토리얼을 통해 실습을 많이 진행하고 경험을 쌓는 것이 중요합니다. 성향 차이일 수 있겠지만 실제로 사용해봐야지 이해도를 확실히 높힐 수 있고, 더 재밌게 할 수 있습니다
이상 개발자와 엔지니어에 대해 생각해보았습니다.
우리는 오랜 시간 동안 일을 하게 되므로 이러한 방향성을 잡는 것이 중요하다고 생각합니다.
각자 생각하는 이상적인 개발자와 엔지니어가 되시기를 바라겠습니다
감사합니다
'컴퓨터 지식' 카테고리의 다른 글
시스템 성능 관리란? (0) | 2019.01.13 |
---|---|
시스템 유지 보수 및 관리란? (0) | 2019.01.12 |
[소프트웨어공학] 점진적 모델(Incremental model) 이란? (0) | 2019.01.06 |
[소프트웨어공학] 폭포수 모델(waterfall model) 이란? (1) | 2019.01.03 |
[컴파일러설계] Yacc를 이용한 C 어휘분석기 구현 (1) | 2018.12.09 |