기술적 인 기술이없는 고위 경영진은 기능적 패러다임의 사용과 같은 기술적 측면에 신경 쓰지 않아야합니다. 이것은 그들의 전문 영역이 아니며 소액 관리 냄새가납니다. 그들은 실제로 기술을 필요로하는 사람들에게 그러한 결정을 위임하지 않는 이유는 무엇입니까?
이것은 기술적 인 배경을 가진 사람들 (첫 번째 경우)과 하나가없는 사람들 (두 번째 경우)을 설득하기위한 힌트입니다.
첫 번째 경우
프로그래밍을 아는 사람들과 이야기하는 경우 기능적 프로그래밍 패러다임없이 작성된 코드와 기능적 스타일로 작성된 동일한 코드를 비교하면 충분히 설득력이있을 수 있습니다.
명령형 스타일을 사용하는 샘플 C # 코드 :
var categorizedProducts = new Dictionary<string, List<Product>>();
// Get only enabled products, filtering the disabled ones, and group them by categories.
foreach (var product in this.Data.Products)
{
if (product.IsEnabled)
{
if (!categorizedProducts.ContainsKey(product.Category))
{
// The category is missing. Create one.
categorizedProducts.Add(product.Category, new List<Product>());
}
categorizedProducts[product.Category].Add(product);
}
}
// Walk through the categories.
foreach (var productsInCategory in categorizedProducts)
{
var minimumPrice = double.MaxValue;
var maximumPrice = double.MinValue;
// Walk through the products in a category to search for the maximum and minimum prices.
foreach (var product in productsInCategory.Value)
{
if (product.Price < minimumPrice)
{
minimumPrice = product.Price;
}
if (product.Price > maximumPrice)
{
maximumPrice = product.Price;
}
}
yield return new PricesPerCategory(category: productsInCategory.Key, minimum: minimumPrice, maximum: maximumPrice);
}
함수형 프로그래밍을 염두에두고 동일한 코드를 다시 작성했습니다.
return this.Data.Products
.Where(product => product.IsEnabled)
.GroupBy(product => product.Category)
.Select(productsInCategory => new PricesPerCategory(
category: productsInCategory.Key,
minimum: productsInCategory.Value.Min(product => product.Price),
maximum: productsInCategory.Value.Max(product => product.Price))
);
그런 다음 물어보십시오.
첫 번째 샘플에서 프로그래머가 몇 가지 실수를 할 수 있습니까? 두 번째는 어떻습니까?
실수를 찾는 것이 얼마나 어려운가요?
코드를 수정하는 것이 얼마나 어렵습니까?
세 가지 요소 모두 생산성과 제품 비용에 영향을줍니다.
두 번째 경우
프로그래밍을 모르는 사람들을 다루는 경우 기술적 인 내용이 많지 않습니다. 설득력있는 방법 중 하나는 기능적 패러다임이 작업과 동료의 작업에 미치는 실제 영향을 보여주는 것입니다.
예를 들어, 동일한 팀이 만든 두 프로젝트 (하나는 FP를 사용하고 다른 하나는 사용하지 않음)를 비교하십시오. 버그의 수가 훨씬 적거나 회사가 실제로 정시에 제공 한 첫 번째 프로젝트라는 것을 보여 주면 충분히 설득력이 있어야합니다.