Skip to main content
15년 전 경험담
4개월 간 야근
D-14 
사용자 교육
1개 시스템, 4개 사업부 
4개 시스템, 4개 사업부
담당자가 하는 말 
저도 왕년에 개발해 
봤는데요...
프로그램 별 거 있나 
요? 
if하고 for면 다 되죠. 
고쳐 주세요.
벚꽃 엔딩
SW에 대한 인식 
바꾸기가 쉽다!
초가집 빌딩
다차자 구글 
다차자 검색
초가집에서 빌딩으로 바꾸기 위해서 
무엇을 고쳐야 할지 명확히 보인다.
다차자에서 구글로 바꾸기 위해서 
무엇을 고쳐야 할지 명확히 보이지 않는다.
자동차 개발 과정
소프트웨어 개발 과정
설계(도면) → 제조(제품)
설계(UML) → 제조(코딩)??
소프트웨어 설계와 개발(제조)을 
분리할 수 있다? 없다?
구글 검색 
한국어 영어 
검색어 결과 건수 검색어 결과 건수 
기구 설계자 8,440 mechanical designer 368,000 
기구 개발자 8,400 mechanical developer 39,500 
하드웨어 설계자 8,190 hardware designer 295,000 
하드웨어 개발자 19,800 hardware developer 185,000 
소프트웨어 설계자 13,300 software designer 377,000 
소프트웨어 개발자 692,000 software developer 10,100,000
설계와 개발(제조)의 분리를 통한 장점 
설계 → 검증 → 제조(개발) 
제조(개발) → 검증
설계와 개발(제조)의 분리를 통한 장점 
가시성이 확보됨! 
비가역적이지 않음을 알 수 있음!
공학 = 
과학 + 기술
파이프 설계 
재료역학 
유체역학 
열역학
소프트웨어 개발 
Cohension Coupling
Architecture Patterns 
Design Patterns
Is TDD dead? 
David Heinemeier Hansson 
Martin Fowler 
Kent Beck
기술빚
프로그래밍은 일반인도 배워야 한다 
기본을 철저히 배우는 언어? 
배우기 쉬운 언어? 
C? Python?
공사와 제사 
벼락과 종치기 
종교전쟁
소프트웨어 엔지니어링 
기반 과학??
소프트웨어 엔지니어링은 
로망?? 혹은 공학??
Empirical Software Engineering 
Mining Software Repository
소프트웨어 개발이 어려운 이유 
소프트웨어 공학의 미성숙
DB팀, ASW팀 → DB, ASW구조 
서버 사이드 전문가 → 클라우드 제품 
엑셀 전문가 → 매크로 기반 엑셀
비스타 윈도우 종료 메뉴 
Switch User, Log Off, Lock, Restart, Sleep, Hibernate, Shut Down으로 7가지 
(Function키와 아이콘을 조합하면 15가지 방법)
맥 OS X 종료 메뉴
MS 조직도(발머 시절)
애플 조직도(잡스 시절)
콘웨이 법칙
소프트웨어 구조는 
조직(사람)의 구조를 반영한다
소프트웨어 개발의 난제 
1. 비가시성 
2. 소프트웨어 공학의 미성숙성 
3. 조직(사람)의 특성에 큰 영향을 받음
합당한 문제 
Righteous Problem
수학 문제 풀이
OJT 
샘플 프로그램
고약한 문제 
Wicked Problem
터널
해결책
그리고 호수
그리고 방전
누구의 문제?
1) 운전자 
2) 승객 
3) 엔지니어 
4) 경찰관 
5) 주지사 
6) 답없음 
7) 6)번까지 답없음
어떤 문제가 고약한 문제가 되는 경우
1. 누구의 문제냐에 따라서 그 해법이 달라 
짐 
2. 비가시성(해결과정이 명확하지 않고) 
3. 도구가 불안전할 때 
(소프트웨어 엔지니어링의 한계)
소프트웨어는 전형적인 고약한 문제
고약한 문제(소프트웨어 난제)를 
해결하는 방법 
프로세스?
고약한 문제(소프트웨어 난제)를 
해결하는 방법 
프로세스?
프로세스 3요소 
사람, 도구, 절차
ISO/TS16949 
ISO26262 
CMMI 
PMBOK
정해진 업무, 
반복적인 업무엔 
프로세스가 효과적일 수도 있다.
사일로 
프로세스의 실패
구멍난 프로세스 
예외가 필요한 프로세스 
꽉 막힌 프로세스
프로세스 무용론???
프로세스를 
보완하는 그 무엇
사회 초년생일 때 경험담
시간 단축을 위한 지름길 
화단 화단 화단 화단 
화단 
빌딩 
주차장(퇴근 버 
스)
우리에 갇힌 원숭이 다섯 마리
기둥 위에 바나나 
올라가면 물대포
한 마리를 바꾸면?
모두 물대포를 맞지 않은 원숭이들로 
채워진다면?
문화란 무엇인가? 
절차, 매뉴얼, 규율, 당위를 모두 압도함
프로세스는 모두 동일하다 
문화에서 답을 찾다
위대한 개발문화란? 
소프트웨어의 난제를 잘 다루는 것 
어떻게? 조직적으로
그렇다면 어떻게 위대한 개발문화를 
만들 수 있을까?
많은 오해와 반감을 갖게 하는 단어
정치
인간 
사람과 사람 사이 
→ 사람이라면 정치는 필수
구성원을 한 곳을 바라보게 함 
부족한 역량을 살피고 키움 
구성원 간의 문제를 파악하고 해결 
부족한 자원을 찾고 제공 
도전적인 목표에 도전하게 함 
이런 것을 총합하는 단어는?
관리 
Management
관리만 잘 하면 끝?
성과를 내기 위해서 방향성과 추진력이 필 
요 
즉 구성원의 높은 역량이 필요
위대한 개발 문화 
= 
훌륭한 관리 + 뛰어난 역량
누군가의 실패 
혹은 
나의 실패
네이버 지식인 
DBDic 
ahnice
Win XP 
Win95 
Win3.1
콜럼버스 달걀
실패는 최고의 피드백이다!
성공을 추구한다는 건… 
만성적인(날마다) 실패를 경험한다는 뜻
시스템이란… 
날마다 무언가를 한다는 뜻 
그리고 장기적으로 무언가를 추구하는 것
1958년 헨리 크레머 
사람의 힘만으로 작동하는 비행기 제작 
영국해협을 건너면 40억을 주기로 함
20년 동안 모두 실패
폴 맥크래디 박사
다른 팀들은 비행기 제작 
1년 
즉 실패 한 번 하는 데 1년
폴 맥크레디 박사 비행기 제작 
몇 시간 
즉 실패 한 번 하는 데 몇 시간
소프트웨어 개발의 난제인 
비가시성을 가장 잘 다루는 방법 
실패를 극대화하는 시스템을 갖추는 것
agile 
scrum 
prototype 
80/20
실패 시스템의 가장 큰 적 
모호함 
그리고 
거짓