Agile software development

from 생각창고 2006. 9. 7. 13:48
우연히 zdnet기사를 읽다가 요즘 각광받는 소프트웨어방법론이라고 해서 위키를 뒤져보았다...아직 완전히 읽어본건 아니어서 다 이해한건 아니었지만, 점점 정형화되고 비인간화되어가는 소프트웨어 개발 방법론을 타파하고자 하는 노력의 일환에서 나온듯 하다...

예전에 산업사회학을 수강할때, 정확히 기억은 나지 않지만 노동으로부터의 '인간소외'를 개선하고자 하는 여러가지 개량된 노동방식에 대해 리뷰했던 적이 있었다. 인간이 노동활동에 '개입'하여 주체적으로 일하는 것이 아니라 노동에 '편입'되어, 일과 일의 결과물 모두에게 '소외'되는 이중고...

프로그램개발이 몇몇 천재들에 의해 이뤄지던 가내수공업방식에서 벗어나 대규모 기업형 개발형태가 주류를 이뤄가면서 이러한 고민들은 점점 더 많아 질것 같다...(몇년 안에 sw기업이 4~5개로 정리될 것이라는 기사도 있다.) 지식노동의 이미지가 점차로 퇴색되어가고 그 자체로 기능적인 일의 반복에 가까워져가면서, 점점 그런 위기감이 새로운 방법론, '일'하는 방식에 대한 고민으로 이어지는 것 같다...

내 스스로 리뷰해보기 위해 위키에 실린 The Agile Manifesto를 일부 번역해본다...

agile 방법론은 소프트웨어 개발에 대한 하나의 접근이 아니라 개발 진행에 일부이다. 2001년 에자일 방법론의 영역에서 17명의 유명인사들이 유타의 스노버드 스키리조트에 모여 그들의 방법론의 토일된 테마에 대해 토론을 진행하였다. 그들은 에자일 선언을 만들었고, 그것은 애자일 방법론과 부가되는 에자일원칙에 대한 권위있는 정의로 여겨지고 있다. 에자일 선언의 몇가지 원칙은 :

Agile methods are a family of development processes, not a single approach to software development. In 2001, 17 prominent figures in the field of agile development (then called "light-weight methodologies") came together at the Snowbird ski resort in Utah to discuss the unifying theme of their methodologies. They created the Agile Manifesto, widely regarded as the canonical definition of agile development, and accompanying agile principles. Some of the principles behind the Agile Manifesto[1] were:

  • Customer satisfaction by rapid, continuous delivery of useful software
    유용한 소프트웨어의 즉각적이고 지속적인 공급에 의한 고객만족
  • Working software is delivered frequently (weeks rather than months)
    작업중인 소프트웨어는 월단위보다는 주단위로 공급된다.
  • Working software is the principal measure of progress.
    작업중인 소프트웨어는 진행단계에 대한 기초적인 평가이다.
  • Even late changes in requirements are welcomed.
    요구사항에 대한 심지어 늦은 변경도 환영된다.
  • Close, daily, cooperation between business people and developers
    현업과 개발자간의 친밀한 데일리 협업
  • Face-to-face conversation is the best form of communication.
    대면 대화는 커뮤니케이션의 가장좋은 형태이다.
  • Projects are built around motivated individuals, who should be trusted
    프로젝트는 신뢰받는 동기부여된 개인들을 중심으로 이뤄져야 한다.
  • Continuous attention to technical excellence and good design.
    기술혁신과 좋은 디자인에 대한 지속적인 관심
  • Simplicity
    단순함
  • Self-organizing teams
    자율적으로 조직되는 팀
  • Regular adaptation to changing circumstances
    변화하는 환경에 대한 정기적인 적응
,