즐겁게 개발을...

개발보다 게임이 더 많이 올라오는 것 같은...

블로그/나의생각

[2021.03] 론 제프리의 "효율적인 소프트웨어 개발을 위한 7가지 핵심 원칙"

다물칸 2021. 3. 19. 16:59
728x90
반응형

출처: pragprog.com/titles/rjnsd/the-nature-of-software-development/

 

The Nature of Software Development

Go from the desire for value, down to the specific activities that help good Agile projects deliver better software sooner and at a lower cost.

pragprog.com

1. 처음부터 끝까지 가치에 초점을 맞추자. (Begin and end with a focus on value.) 
소프트웨어 제품을 만들때, 소프트웨어가 어떤 가치를 가지는지 마음속에 두고 시작한다. 단지 돈을 벌기 위해서가 아니라, 이 소프트웨어를 통해서 우리가 원하는 것(우리를 얼마나 행복하게 해 주는가, 우리의 삶을 얼마나 윤택하게 해주는가로 평가될 수있는)이 무엇인가에 관한 이야기이다. 우리가 가치를 두고 있는 것이 무엇인지에 대해서 진지하게 고민해보고, 어떻게 하면 더 중요한 것이 무엇이고 덜 중요하거나 버려야할 것이 무엇인지 판단하는 능력을 기를 수 있을지 생각해보자.

 

2. 작더라도 동작하는 소프트웨어로 제품을 이끌어가자. (Guide the product in terms of small slices of working software.)
가치를 만들어내는데 동의하고 책임감을 가지고 함께 일 할 수 있는 팀을 만들자. 팀원들에게 우리가 필요한 것이 무엇이고 우리에게 주어진 시간이 얼마나 있는지 공유하고 모든 팀원들이 이해했는지 확인하자. 일정과 약속한 것들만 가지고 단순하게 검사하는 것이 아니라, 그들이 실제로 무엇을 만들고 있는지 주의깊게 살펴보면서 팀원들을 이끌어나가자. 이렇게 하면 "기능(feature)"이라고 부를 수 있는 가치의 일부분을 만날 수 있다.

 

3. 해야할 일을 중심으로, 그 일을 할 수 있는 사람들로 팀을 꾸리자. (Organize around the work to be done, with people who can do it.)
개발할 기능을 중심으로, 필요한 모든 것들을 개발할 수 있는 팀을 구성하자. 기능에 초점을 맞추면 빠르게 계획을 세우고 가치를 개발할 수 있다. 적합한 사람들로 팀을 구성하고 팀원들이 필요한 기술을 습득할 수 있도록 지원한다면 더 효율적으로 일을 마무리할 수 있다.

 

4. 기능의 관점에서 계획을 세우자. (Plan in terms of features.)
팀을 꾸리고 팀원들이 기능에 대해서 충분히 이해하게 되면, 이제는 어떤 기능을 먼저 개발하고 어떤 기능은 뒤로 미룰지 결정함으로써 프로젝트를 원하는 방향으로 이끌어 나갈 수 있다. 우선순위가 가장 높은 가치에 초점을 맞추고 먼저 개발하자.

 

5. 기능의 관점에서 개발하자. (Build in terms of features.)
당연히 모든 소프트웨어 제품에는 아키텍처(architecture)와 인프라스트럭처(infrastructure)가 필요하다. 프로젝트를 진행하면서 필요한 아키텍처나 인프라스트럭처를 포함해서, 모든 것들을 기능을 중심으로 기능에 맞춰서 만들면서 개발을 진행하자.

 

6. 기능을 가능한 작게 나누자. (Slice features thinly.) 
필요한 기능을 가치를 가지는 범위내에서 가능한 가장 작은 크기로 나누자. 많은 기능이 포함되어 있지 않더라도, 동작하는 소프트웨어 제품을 가능하면 일찍 개발하고, 제품 출시일에 맞춰 하나씩 하나씩 발전시키고 향상시키자. 가장 우선순위가 높은 가치를 먼저 개발해 나가면, 항상 최고의 제품을 내놓을 준비가 되어 있는 것이다.

 

7. 매일 매일 품질을 높여가자. (Build quality in every day.) 
매 순간 소프트웨어 설계 품질을 최상으로 유지하고, 확신을 가지기 위해서 필요한 실천 방법들은 모두 사용하자. 그렇게 한다면 결함이 없는 소프트웨어에 가장 가까운 소프트웨어를 항상 유지할 수 있다. 끊임없이 지속적으로 그리고 유지 가능하게, 가치를 만들어 나가자.

 


원문

 

Begin and end with a focus on value.
When we build a software product, we have some value in mind. Not just the money we’ll make, but what we really want from the product, whether that’s measured in laughs or lives. We’ll think about what we value, and how to get a sense of what’s more important and what’s not so important at all.

 

Guide the product in terms of small slices of working software.
We create teams who are responsible for creating value. We make sure they understand what’s needed and how much time is available. We guide them by observing what they actually build, not by examining schedules and promises. We build small slices of value, which we call “features.”

 

Organize around the work to be done, with people who can do it.
We organize our teams around the features we need, with teams who can build everything needed. The focus on features lets us plan and build value rapidly. Organizing with good people and helping them build their skills gets the work done efficiently and well.

 

Plan in terms of features.
With teams in place and features in mind, we steer our projects by selecting which features to do next and which ones to defer. We produce highest value first, throughout the effort.

 

Build in terms of features.
Naturally, any product requires architecture and infrastructure. We build based on features, including the architecture and infrastructure we need as we go.

 

Slice features thinly.
We slice each desired capability down to the smallest possible value-bearing size. We build a capable product as early as possible, and then grow it and enhance it as the deadline approaches. Building highest value first, we are always ready to ship the best possible product.

 

Build quality in every day.
Throughout the effort, we apply all the necessary practices to ensure that we always have a good design, and that we are always as close to defect-free as possible. We build value continuously, sustainably, indefinitely.

반응형