본문 바로가기
Essay/Human

소프트웨어 엔지니어가 인문학을 알아야 하는 이유

by RIEM 2023. 9. 26.
728x90

분야에서 다루는 주제

  • 컴퓨터 공학은 알고리즘, 데이터 구조, 운영체제에 관한 분야
  • 프로그래밍은 컴퓨터 공학을 구현하는 것
  • 소프트웨어 엔지니어링은 소프트웨어로 문제를 해결하는 것
  • Liberal arts는 문제를 분석하고, 다른 선택지를 평가하고, 해결책을 엔지니어링하기 위해 필요한 기술을 배울 수 있는 분야

Liberal Arts란

  • 사회의 자유인으로 성공적으로 기능하기 위한 기술을 제공하는 분야
  • 비판적으로 사고하고, 명확히 커뮤니케이션하며,복잡한 문제를 분석하고 풀고, 물리 세계를 이해하고, 지속적으로 학습하는 것을 준비하는 역향을 길러준다
  • 이를 통해 타인과 협업하고, 미래의 문제들을 스스로 해결할 수 있게 한다

Software Engineer에게 Liberal Arts가 필요한 이유

  • Liberal arts에서 얻을 수 있는 비판적으로 생각하고 복잡한 문제를 분석하고, 해결하는 능력이 도움되기 때문

언어의 중요성, 그리고 뮤지컬과 연극 등 공연의 기능

  • 제한된 시간 내 스토리를 말하고, 감정을 전하며, 관객이 생각하도록 함
  • 프로그래머는 시인처럼 명확한 언어를 통해 컴퓨터에게 명령함

관객에 대한 이해

  • 개발자는 두 관객을 위해 글을 쓴다. 컴파일러와 다른 개발자
  • Domain-Driven Design으로부터 온 개념 ubiquitous language 은 특정 맥락 안에서 용어를 명백히 정의함으로서 커뮤니케이션을 돕는 것을 의미
  • 당신의 ubiquitous language에서 단어와 구절이 당신의 맥락 밖에서 다른 의미를 가질 수 있으나, 관객의 폭이 좁으면 큰 문제는 아니다
  • DDD에서는 native data type보다는 value type을 사용할 것을 추천한다. 예를 들어, 단순 string, integer보다는 AccountNumber로 전달하는 것을 명확한 커뮤니케이션에 도움이 된다

모든 문제는 커뮤니케이션 문제

  • Waterfall 프로젝트는 커뮤니케이션의 이산적이고 중요한 부분들을 기반으로 한 방식
  • 반대로 Agile 방식은 작은 것을 자주 만들고, 커뮤니케이션의 작은 부분에 집중하는 방식. 구성원이 무엇이 논의되고, 정의되고, 문제가 무엇인지 함께 파악하고 해결하기가 좋다

인간 커뮤니케이션 다음 모델 소프트웨어 커뮤니케이션

  • liberal arts에서 배우는 커뮤니케이션 방법론 지식을 소프트웨어 엔지니어 분야를 이해하는 데 활용 가능
  • 분산형 시스템을 아키텍처 차원이 아니라 사람들이 어떻게 소통하는 지 관점에서 보길 권함
  • 인간이 휴대폰과 전화로 실시간 통화하거나 1:1로 통화하는 것, 이메일 보내는 것 등을 비동기 처리 또는 분산형 커뮤니케이션 패턴으로 이해할 수 있다
  • 스타벅스 주문 예시
    • 주문 : 주문이 정확한 메시지(in the ubiquitous language)로 번역(through an anti-corruption layer)
    • 준비 : 주문이 종이 컵에 기재(transport layer)
    • 전달 : 커피가 준비되면 이름을 부르고(raising an event), 손님은 카운터에서 컵을 가져간다(reacting to the event)
  • 주요 소프트웨어 패턴
    • CQRS(Command Query Responsibility Segregation) : 쿼리 요청하면 정보를 받는 패턴
    • Event-Driven Architecture
    • Reactive programming

공감의 중요성

  • humanities를 공부하면 세상이 감각할 수 있는 것 보다 얼마나 복잡한 것인지 배움
  • 환경, 위치, 배경 등으로 인한 관점이 조금만 달라도 결과물은 크게 달라짐
  • Agaile Manifest를 한 문장으로 줄이면 '공감을 연습하기'
    • 개인과 소통을 프로세스와 도구보다 더 선호
    • 계약 협상보다 고객 협업은 이해 공유와 공감을 만드는 것이기 때문

비판적 사고와 문제 해결 능력

  • 과학적 방법론의 핵심
    • 가설을 만들고
    • 실험을 통해 가설을 테스트하고
    • 데이터를 분석하고
    • 결론 도출

Lifelong learning

  • Liberal arts는 광대한 정보가 있고 이 안에 배울 수 있음을 알게 해줌
  • Liberal arts는 넓은 지식을 활용하여 새롭고 낯선 주제를 분석하는 것을 도와줌

Reference

728x90

'Essay > Human' 카테고리의 다른 글

Technological innovation history  (0) 2023.11.17

댓글