개발 패러다임의 변화

 

2004-09-13

허광남

kenu@okjsp.pe.kr

 

1.    소프트웨어 개발의 특성

A.       소프트웨어 개발의 역사

1946 ENIAC

1957 FORmula TRANslating system.

1959 LISP, COBOL

1964 BASIC

1970 PASCAL

1972 C

1986 C++

1995 JAVA

from: http://www.byte.com/art/9509/sec7/art19.htm

 

 

B.       국내 소프트웨어 개발의 역사

1967 경제기획원 조사통계국 "IBM 1401" "파콤222"

1969 서강대

1981 PC

1989 PC통신

1995 WWW

 

from: http://phps.snu.ac.kr/intro/people/kslee/readings/compan

 

C.       민족정서

응용능력 우수

기본 지식 박약

냄비 근성

돈 되면 우르르

지식 폐쇄성

표현에 어색

비논리적 정적인 문화

 

D.       기술의 변화와 개발자의 습성

Standalone application

C/S

Web Application

 

E.       방법론 정보공학이론, RUP

WaterFall(Cascade)

Whirl Pool

 

F.        Design Patterns, Refactoring

GoF (Gang of Four)

http://my.dreamwiz.com/ecogeo/tutorial/gof/contfs.htm

Martin Fowler

언제할까요?

 

G.       XP, Agile

Kent Beck
Mike Beedle
Arie van Bennekum
Alistair Cockburn
Ward Cunningham
Martin Fowler

James Grenning
Jim Highsmith
Andrew Hunt
Ron Jeffries
Jon Kern
Brian Marick

Robert C. Martin
Steve Mellor
Ken Schwaber
Jeff Sutherland
Dave Thomas

http://agilemanifesto.org/

 

H.       직업 프로그래머와 순수 프로그래머

누구를 위해 자판을 울리나

취미? 노가다?

 

I.          오픈소스 운동

오픈 소스는 공짜가 아니다.

Apache Software Foundation

Product Level(performance, stability, supportable)

MySQL, CVSNT

 

J.         소프트웨어 개발의 미래

프로그램이 프로그램을 만드는 시대

비즈니스를 IT가 막아서는 안 된다.

 

2.    개발자 덕목

A.       열린 생각, 닫힌 생각

힘들게 알아낸 비결을 공개할 것인가? 말 것인가?

길어야 6개월

공개가 다 좋은 것은 아니지만,

뻔뻔한 개발자가 오래 간다.

공개에 대한 두려움.

성당과 시장 http://kldp.org/root/cathedral-bazaar/cathedral-bazaar.html

 

B.       기술력과 의사소통능력, 무엇이 중요한가?

이 산이 아닌가벼~

말 한마디로 천라인 줄인다.

Driving Software[1]

개발자간의 의사소통방법

용어집

코딩 컨벤션

 

C.       TDD

내가 만들 함수의 조건으로 시작

주조, 주형부터 제작

군더더기 없는 코드 산출

코드 변경으로 인한 side effect 발견 가능

 

D.       습관을 바꾸자

개인개발과 팀개발의 차이

(야근 == 시간 보충) à 창의력 제거 à 소진(burn out)

Pair Programming

 

E.       예측과 작업리스트

할당된 시간 내에 몇 개의 UseCase를 구현하는가?

UseCase에는 몇 개의 클래스와 기능이 필요한가?

Story Card

ToDo list 관리

 

F.        관리자를 관리하는

알아서 다 해주겠지?

지속적인 요청과 확인

Out of Sight, Out of Project

관리자가 상위 관리자에게 보고하도록 도와주는 법

 

G.       기술공유 어떻게?

중복을 줄여라.

중재자 또는 Librarian

코드 공동 관리

 

H.       야근 줄이기

집중 근무 시간

Flow 상태(Tom DeMarco, "PeopleWare")

야근을 결정했을 때의 심정

NT프로젝트 종료 후 줄줄이 이혼

 

I.          회의시간 줄이기

사전 준비, 린다 김

관련자료 배포 및 의견 수집, 참석자 포섭

안건에 따른 시간 배분

 

J.         삽질 줄이기

해 아래 새것이 없나니

개발자의 쫀심을 버려라

아는 길도 물어가라. Assert의 생활화

 

K.       해커라는 착각

Hack이란 무엇인가?

공돌이 공순이

Man-Month

예술이 아니라 생산이다.

 

L.        코딩 컨벤션

내무반의 관물대

가독성과 이름짓기

상품: Goods? Product? 그냥 한글로?

Tab

 

3.    개발툴 Tips & Tech

A.       이클립스

B.       CVS

C.       ANT

D.       JUnit

 



[1] Kent Beck, Martin Fowler, "Planning Extreme Programming", Addison Wesley, p11

 

+ Recent posts