اندر فواید پروتوتایپ در تحلیل نیازمندی‌ها

  • یوسف مهرداد بی‌بالان
پیش‌گفتار: تکنیک نمونه‌سازی(پروتوتایپ) در استخراج نیازمندی‌ها

اندر فواید پروتوتایپ در تحلیل نیازمندی‌ها

  • یوسف مهرداد بی‌بالان
پیش‌گفتار: تکنیک نمونه‌سازی(پروتوتایپ) در استخراج نیازمندی‌ها

چابکی یا چالاکی – بخش چهار

  • یوسف مهرداد بی‌بالان

نظر یکی از دوستان را درباره نوشته‌های دنباله‌دار «چالاکی یا چابکی» جویا شدم. گفت: خواندن و فهمیدنش خیلی دشوار بود. کمی برایش توضیح دادم و موضوعات کمی روشن‌تر شد. تصمیم گرفتم بخشی از آن توضیحات را در اینجا بیاورم.

خلاصه بخش اول:
ابتدا مفهوم چالاکی از چابکی جدا شد. چالاکی یعنی آن چه که از تیم یا سازمان ایده‌آل انتظار می‌رود و چابکی یعنی نتیجه اجرای متدهای چابک. این نام-چالاکی-، خودساخته است برای تفکیک مفاهیم.

خلاصه بخش دوم:
نوشته این بخش برگرفته از کتاب آقای ایکاف با نام «بازآفرینی سازمان» است و بر این نکته تأکید دارد که مسائل و لوازمِ سازمانی که بتواند در قرن بیست‌ویکم دوام بیاورد، موضوع ساده‌ای نیست بلکه موضوعی است پیچیده(Complex) و در عین حال دشوار فهم(Complicated). در این کتاب تأکید شده بود که «جست‌وجو برای راه‌حلهای ساده – اگر نگوییم ساده‌انگارانه – برای مسایل پیچیده، حاصل ناتوانی در رویارویی مؤثر با مشکلات پیچیده است. این ناکارایی موجب ساده‌سازی واقعیت و راههای برخورد با آن می‌شود».
این که انتظار داشته باشیم با یک راه حل، همه موانع چالاکی مرتفع گردد، موضوعی است که به سختی بتوان باور کرد. متدهای چابک نیز به عنوان یک راه حل از این قاعده مستثنی نیستند. دستمایه شدن حل مسائل سازمانها وکسب‌وکار در جهت تبلیغ متدهای چابک(با وجود نیت و اراده راستین و صداقت گفتار)، فقط منجر به بالابردن سطح انتظارات مخاطبان و در پایان، برباد رفتن تلاشهای مبلغان خواهد گردید.

خلاصه بخش سوم:
در این بخش تعریفی از چالاکی در سازمانها و کسب‌وکارها ارائه گردید. تعریف واژه، علاوه بر آشنایی خواننده کمک خواهد کرد تا قسمتی از مرز بین چالاکی و چابکی مشخص گردد.
چالاکی بدین گونه تعریف شد: چالاکی نتیجه یکپارچه‌سازی هشیاری به تغییرات (فرصتها و چالشها) – داخلی و محیطی- با توانایی استفاده از منابع برای پاسخگویی به موقع، منعطف، مقرون به صرفه و مناسب (پیش‌گیرانه یا واکنشی) به تغییرات است.
اجزای چالاکی نیز عبارتند از:
یک: هشیاری شامل دوراندیشی استراتژیک و بینش سیستماتیک
دو: توانایی پاسخگویی شامل ارزیابی ارزش، هماهنگی و یکپارچگی، یادگیری سازمانی و بازپیکربندی

اجازه دهید در اینجا مثال ساده‌ای را با هم مرور کنیم:
فرض کنید که یک تیم سه نفره هستید که نرم‌افزاری را نوشته و در حال فروش آن هستید. حال:
-یکی از اعضا تا سال آینده به شهر خود برخواهد گشت
-تصمیم دارید نرم‌افزار را در بازار شهرستانها نیز وارد کنید
-به این نتیجه رسیده‌اید(چگونه؟) که آینده از آن برنامه‌نویسی موبایل است
-یک پروژه تقریباً بزرگ با شرایط عالی به شما پیشنهاد شده است که در صورت عقد قرارداد همه منابع شما را مصرف خواهد کرد
-امکان به خدمت گرفتن سه نیروی پاره‌وقت با دستمزد معینی را دارید
-در فکر این هستید که محلی را خریداری کنید
-رقیب شما، چندین ویژگی منحصر به فرد را به نرم‌افزار افزوده و طی دو ماه آینده وارد بازار خواهد کرد
-مشتریان شما از اینکه هر بار خطایی رفع می‌شود، چندین خطای دیگر آشکار می‌شود، ناراضی‌اند
-داده‌های حجیم یکی از مشتریان باعث کندی نرم‌افزار، نارضایتی آنها و تهدید به فسخ قرارداد شده است
-با توجه به این که طی دو ماه آینده از طریق فروش محصول، درآمدی وارد شرکت نخواهد شد، در صورت تزریق نشدن نقدینگی به شرکت، با بحران مالی مواجه خواهید شد.

موارد گفته شده، دغدغه‌های روزمره بسیاری از تیمها و سازمانها هستند.
حالا اگر شما جای این تیم سه نفره بودید چه می‌کردید؟(آرزو داشتید چالاک می‌بودید)
به تعریف و اجزای چالاکی برگردید و مصادیق عبارات را بیابید:
-هشیاری به تغییرات (فرصتها و چالشها)
-تغییرات داخلی و محیطی
-استفاده از منابع
-پاسخگویی به موقع، منعطف، مقرون به صرفه و مناسب
-پاسخگویی پیش‌گیرانه یا واکنشی
-دوراندیشی استراتژیک
-بینش سیستماتیک
-ارزیابی ارزش
-هماهنگی و یکپارچگی
-یادگیری سازمانی
-بازپیکربندی

این بررسی(تعریف چالاکی) کمک خواهد کرد تا انتظارات از چابکی به درستی تبیین شده، اگر برخی لوازم چالاکی در متدهای چابک نیست، برای خواننده شفاف‌سازی شود و از ایجاد “شتاب زدگی-یا بهتر بگویم جو زدگی” (نقل قول از جناب آقای مهندس واحد) جلوگیری گردد.
در بررسی‌های انجام شده بر روی متدهای چابک، تطابق نداشتن مفهوم چابکی در این متدها با بخشهایی از مفهوم متناظر آن در سایر کسب‌وکارها یکی از ایرادات موجود در آنها شمرده شده است. واژه‌ها یکسان، ولی تعابیر متفاوت است
این موضوع ممکن است خواننده را که در پی دست‌یابی به «کسب‌وکار چابک/چالاک» است به سمت «متدهای چابک» بکشاند و در پایان، به دلیل دست نیافتن به خواسته‌اش، غمزده و دلزده کند.

در ادامه هم به معرفی متدهای چابک خواهیم پرداخت.

———————————————————————————————————

اما چرا به جای معرفی متدهای چابک و توانایی و ناتوانی‌های آنها، مبحث بدین گونه پیش برده شد:پاسخ آن خیلی ساده است: یادآوری گذشته.
متدها و متدولوژی‌ها بسیار دوست‌داشتنی‌اند، قداست ندارند، ولی کاربردی‌اند. با همه علاقه‌مندی، تصمیم بر آن شد که از دریچه‌ای متفاوت، معرفی آنها انجام شود. به شخصه، بیشتر از آن که فنون مهندسی را از متدهای چابک و نظم‌(دیسیپلین)گرا آموخته باشم، «انسانیت» و «ارزشهای انسانی» را آموخته‌ام. چندسال پیش در یکی از گروه‌هایی که عضو بودم، مشاجره‌ای درگرفت. چون مسئولیتی در آنجا داشتم، اعضا خواستند تا نظرم را ابراز کنم:
«حسن عزيزم، همان طور كه مي‌داني تخصص من مهندسي نرم‌افزار است. در ايجاد نرم افزار، مجموعه‌اي از اصول براي همكاري اعضاي تيم وجود دارد كه برخی از آنها را مي‌شمارم، شايد در اين جامعه كوچك نيز كاربرد داشته باشد. توجه داشته باشيد كه اين اصول ايراني نيست بلكه مربوط به دنياي مدرن است[معمولاً دنیای مدرن به خلاف این موضوع شناخته می‌شود]:

الف: ارتباطات: هيچ چيز نمي‌تواند جاي ارتباطات بین انسان‌ها را بگيرد. ارتباطات و همكاريِ اعضاي تيم است كه منجر به نرم‌افزار كارا و باكيفيت مي‌گردد.

ب: بازخورد: همه اعضاي تيم بايد از ديگران بخواهند كه نسبت به كارها و نظراتشان بازخورد داشته باشند. بازخورد لازمه پويايي و رشد و بهبود فردي و تيمي است.

ج: شجاعت: اعضاي تيم بايد در اظهار نظراتشان شجاع باشند. در اعلام اشتباهات خود و ساير اعضا شجاع باشند و با شجاعت اشتباهات خود را بپذيرند. پذيرش اشتباهات لازمه تصحيح آن و بلوغ فردي و گروهي است.

د: احترام: تيمي مي‌تواند نرم‌افزار كارا و با كيفيت توليد كند كه اعضاي آن به همديگر احترام بگذارند.»

سرخورده می‌شوم وقتی این دید زیبا و دوست‌داشتنی به ادبیات و مفاهیم پیش‌پا افتاده مهندسی ترجمه شده و اصل و بنیاد موضوع به فراموشی سپرده می‌شود.

در تیمهای تولید نرم‌افزار مشکلات متعددی وجود دارد. هر از گاهی واژه‌ای از اینترنت مانند نسیمی وارد جامعه‌مان می‌شود، با تبلیغات همه‌گیر می‌شود، همه به امید بهشت موعود به سویش کشیده می‌شویم و در انتها چون به درستی درک نشده و لوازمش آماده و مهیا نبوده، به درستی جذب نمی‌شود و از آن پس موج مخالفتها با اشاره به موارد شکست خورده شروع شده و گسترش می‌یابد. از این دست، نمونه‌های بسیاری را می‌توان شمرد.

آیا قرار است با متدهای چابک نیز چنین کنیم؟ متدهای چابک ایجاد نرم‌افزار قبل از سال دو هزار میلادی ارائه شده‌اند. بیش از 19 سال از تولد آنها می‌گذرد. پرسش این است که چرا در این مدت کسی به فکر جااندازی آنها در سازمانها و تیمهای ایرانی نبوده است، مسلماً بی‌اطلاعی دلیل آن نیست؟ آنهایی که این روشها را به کار گرفته‌اند، با چه مشکلاتی روبرو بوده‌اند؟ مسائل و مشکلات ما در استقرار متدهای چابک زیربنایی و گاه فرهنگی است.

برای خنده:
این نوشته (RUP بهتر است يا Agile؟) را لطفاً مطالعه کنید: «هفته پيش من جايی بودم و در مورد پروژه‌ای مشاوره می‌دادم. تأکيد من بر اين بود که می‌شود سيستم را بدون بازنويسی، با Refactoring در سطح مطلوبی بازسازی کرد. يکی از دوستان که در جلسه بود گفت: فکر می‌کردم که شما به جای RUP متمايل به XP method شده‌ايد» اگر دوست عزیزم را طی چند روز آینده دیدار کنم خواهد گفت:«شنیده‌ام مخالف Agile شده‌ای؟».

برای خنده:
چند وقت پیش با یکی از عزیزانم در حال صحبت بودم که در بین صحبتهایش گفت: بله ما backlogهایمان را هر روز وارد می‌کنیم. موضوع برایم جالب شد و پرسیدم: مگر شما چابک کار می‌کنید؟ گفت: نه، همان لیست کارهایمان را می‌گوییم بک لاگ.

در پایان آرزو دارم که تلاش همه خوبان و عزیزان با پایانی خوش و رستگاری همراه باشد.
خدایا چنان کن که پایان کار توخوشنود باشی و ما رستگار

گزیده:
سه راه براي رسيدن به شناخت وجود دارد: نخست، انديشيدن كه بهترين راه است. دومي تقليد كه آسانترين است و سومي تجربه كه تلخ ترين است. كنفوسيوس
مرجع: اس.جی.

How To Fail With Agile: 20 Tips to Help You Avoid Success

  • یوسف مهرداد بی‌بالان

Management Issues1: Don’t trust the team or agile. Micromanage both your team members and the process
2: If agile isn’t a silver bullet, blame agile.
3: Equate self-managing with self-leading and provide no direction to the team whatsoever.
4: Ignore the agile practices.
5: Undermine the team’s belief in agile.

Team Issues
6: Continually fail to deliver what you committed to deliver during iteration planning.
7: Cavalierly move work forward from one iteration to the next.
8: Do not create cross-functional teams. Put all the testers on one team, all the programmers on another, and so on.
9: Large projects need large teams. Ignore studies that show productivity decreases with large teams due to increased communication overhead. Since everyone needs to know everything, invite all fifty people to the daily standup.

Product Owner Issues10: Don’t communicate a vision for the product to the team or to the other stakeholders.
11: Don’t pay attention to the progress of each iteration and objectively evaluate the value of that progress.
12: Replace a plan document with a plan “in your head” that only you know.
13: Have one person share the roles of ScrumMaster (agile coach) and product owner. In fact, have this person also be an individual contributor on the team

Process Issues
14: Start customizing an agile process before you’ve done it by the book.
15: Drop and customize important agile practices before fully understanding them.
16: Slavishly follow agile practices without understanding their underlying principles
17: Don’t continually improve.
18: Don’t change the technical practices.
19: Rather than align pay, incentives, job titles, promotions, and recognition with agile, create incentives for individuals to undermine teamwork and shared responsibility.
20: Convince yourself that you’ll be able to do all requested work, so the order of your work doesn’t matter.

Reference: Mike Cohn in www.mountaingoatsoftware.com/

Qoute:
“To achieve great things, two things are needed: a plan, and not quite enough time.”
—Leonard Bernstein

افتخاری دیگر برای گریدی بوچ

  • یوسف مهرداد بی‌بالان

Grady Booch, Chief Scientist for IBM Research and an IBM Fellow has been awarded the BCS Lovelace Medal in recognition of his innovative work in software architecture, software engineering and collaborative environments.

The BCS Lovelace Medal was established in 1998 in honour of Lady Augusta Ada Byron, Countess of Lovelace and daughter of Lord Byron. The Medal is presented annually to individuals who, in the opinion of BCS, have made a significant contribution to the advancement of Information Systems

Grady Booch says of being presented with the award: “I am thrilled to accept the Lovelace Medal from BCS, The Chartered Institute for IT. The flowering of modern computing can be traced back to the time of Charles Babbage and Ada Augusta, Countess of Lovelace, for whom this award is named. It is a distinct privilege and responsibility to be counted among those men and women who have helped advance the technology of computing for the advancement of the human spirit.”
Reference: www.bcs.org

Quote:
The best process that I’ve seen hyper-productive organizations across domains tend to follow is this, in three parts. These are organizations that tend to incrementally and iteratively produce releases of executable architectures.
Grady Booch, in Beautiful Teams

چابکی یا چالاکی – بخش سه

  • یوسف مهرداد بی‌بالان

یکی از نکات ظریفی که توجه بدان ضروری است، تعریف چابکی در کسب‌وکار(که آن را چالاکی نامیدیم) و تفاوت آن با چابکی در متدهای چابک(که آن را چابکی خواندیم) است. برای این منظور، تعاریفی از چالاکی در این نوشته آورده شده است(منبعی انتخاب شده که در اینترنت قابل دسترسی باشد).
برای دستیابیی به تعریف یکسان و مشترک از مفهوم چالاکی، پیشنهاد می‌کنم مطلب را تا آخر با دقت مطالعه نمایید.
پس از توافق بر سر تعریف، بر آنیم تا بررسی کنیم که آیا متدهای چابک، هر آن چه را که در چالاکی انتظار می‌رود، برای ما به ارمغان خواهند آورد.

Reference: Understanding Organizational Agility:A Work-Design Perspective, Clyde W. Holsapple, Xun Li, 2008

General, Unifying Definition of Agility:Agility is the result of integrating alertness to changes (recognizing opportunities/challenges) – both internal and environmental – with a capability to use resources in responding (proactive/reactive) to such changes, all in a timely, flexible, affordable, relevant manner.

The Components of Agility:
1) Alertness
1-1) Strategic foresight
1-2) Systemic insight

Strategic foresight is the ability to anticipate discontinuities in the business environment and the marketplace, threats and opportunities in the extended enterprise chain, and impending disruptive moves by competitors.

Systemic insight refers to the capability to consider the interconnections between the organization’s capabilities and emerging market opportunities.

2) Responsive capabilities
2-1) Value evaluation
2-2) Coordination and Integration
2-3) Organizational Learning
2-4) Reconfiguration

Responsive capabilities to opportunities and disturbances can be classified into two categories: capability to select actions and capability to enable actions.

When relevant change is detected or anticipated, an organization faces alternatives courses of action. Good response ability requires intelligent decision making, based on insightful problem definitions and sound value propositioning skills (e.g., Dove 2005).

The capability to enable actions includes components of coordination, learning, and reconfiguration (e.g., Goldman 1995, Goldsby et al. 2001, Dove 1994, 1999, 2005).

The potential value of giving attention to a change varies across organizations in terms of relevance, significance, and priority (Chung 2006). To make good decisions as to which changes deserve responses, organizations must be capable of assessing the value of undertaking a response. The value evaluation component reflects an organization’s response capability in making decisions in pursuit of competitive advantages (Dove 2005). Systemic alertness is positively correlated with value evaluation, because systemic insight enables an appreciation of the feasibility of seizing opportunities and treating competitive risks (Sambamurthy et al. 2003).

According to the theory of dynamic capabilities, an organization’s capabilities for enabling change-responsive actions lie with their distinctive ways of accomplishing coordination, learning, and reconfiguration (Teece et al. 1997).

Coordination refers to the ability to manage dependencies among activities and resources (Malone and Crowston 2001). Incentive systems, culture, routines, regulations, or trust are examples of coordination mechanisms.
Learning includes the generation of new insights that have a potential to reshape behavior (Huber 1991), and – more broadly – alterations in the state of knowledge assets (Ching, et al. 1992).
Reconfiguration refers to the ability to adjust an asset structure, and to accomplish the necessary internal and external transformations (Teece et al.1997).

The responsive capabilities are determined by the interplay of value evaluation, coordination, learning, and reconfiguration….

————————-
Reference: WikiPedia
Business agility is the ability of a business to adapt rapidly and cost efficiently in response to changes in the business environment. Business agility can be maintained by maintaining and adapting goods and services to meet customer demands, adjusting to the changes in a business environment and taking advantage of human resources.[1]

Agility is a concept that incorporates the ideas of flexibility, balance, adaptability, and coordination under one umbrella.

گزیده:

“If you tell people where to go, but not how to get there, you’ll be amazed at the results.” General George S. Patton

چابکی یا چالاکی – بخش سه

  • یوسف مهرداد بی‌بالان

یکی از نکات ظریفی که توجه بدان ضروری است، تعریف چابکی در کسب‌وکار(که آن را چالاکی نامیدیم) و تفاوت آن با چابکی در متدهای چابک(که آن را چابکی خواندیم) است. برای این منظور، تعاریفی از چالاکی در این نوشته آورده شده است(منبعی انتخاب شده که در اینترنت قابل دسترسی باشد).
برای دستیابیی به تعریف یکسان و مشترک از مفهوم چالاکی، پیشنهاد می‌کنم مطلب را تا آخر با دقت مطالعه نمایید.
پس از توافق بر سر تعریف، بر آنیم تا بررسی کنیم که آیا متدهای چابک، هر آن چه را که در چالاکی انتظار می‌رود، برای ما به ارمغان خواهند آورد.

Reference: Understanding Organizational Agility:A Work-Design Perspective, Clyde W. Holsapple, Xun Li, 2008

General, Unifying Definition of Agility:Agility is the result of integrating alertness to changes (recognizing opportunities/challenges) – both internal and environmental – with a capability to use resources in responding (proactive/reactive) to such changes, all in a timely, flexible, affordable, relevant manner.

The Components of Agility:
1) Alertness
1-1) Strategic foresight
1-2) Systemic insight

Strategic foresight is the ability to anticipate discontinuities in the business environment and the marketplace, threats and opportunities in the extended enterprise chain, and impending disruptive moves by competitors.

Systemic insight refers to the capability to consider the interconnections between the organization’s capabilities and emerging market opportunities.

2) Responsive capabilities
2-1) Value evaluation
2-2) Coordination and Integration
2-3) Organizational Learning
2-4) Reconfiguration

Responsive capabilities to opportunities and disturbances can be classified into two categories: capability to select actions and capability to enable actions.

When relevant change is detected or anticipated, an organization faces alternatives courses of action. Good response ability requires intelligent decision making, based on insightful problem definitions and sound value propositioning skills (e.g., Dove 2005).

The capability to enable actions includes components of coordination, learning, and reconfiguration (e.g., Goldman 1995, Goldsby et al. 2001, Dove 1994, 1999, 2005).

The potential value of giving attention to a change varies across organizations in terms of relevance, significance, and priority (Chung 2006). To make good decisions as to which changes deserve responses, organizations must be capable of assessing the value of undertaking a response. The value evaluation component reflects an organization’s response capability in making decisions in pursuit of competitive advantages (Dove 2005). Systemic alertness is positively correlated with value evaluation, because systemic insight enables an appreciation of the feasibility of seizing opportunities and treating competitive risks (Sambamurthy et al. 2003).

According to the theory of dynamic capabilities, an organization’s capabilities for enabling change-responsive actions lie with their distinctive ways of accomplishing coordination, learning, and reconfiguration (Teece et al. 1997).

Coordination refers to the ability to manage dependencies among activities and resources (Malone and Crowston 2001). Incentive systems, culture, routines, regulations, or trust are examples of coordination mechanisms.
Learning includes the generation of new insights that have a potential to reshape behavior (Huber 1991), and – more broadly – alterations in the state of knowledge assets (Ching, et al. 1992).
Reconfiguration refers to the ability to adjust an asset structure, and to accomplish the necessary internal and external transformations (Teece et al.1997).

The responsive capabilities are determined by the interplay of value evaluation, coordination, learning, and reconfiguration….

————————-
Reference: WikiPedia
Business agility is the ability of a business to adapt rapidly and cost efficiently in response to changes in the business environment. Business agility can be maintained by maintaining and adapting goods and services to meet customer demands, adjusting to the changes in a business environment and taking advantage of human resources.[1]

Agility is a concept that incorporates the ideas of flexibility, balance, adaptability, and coordination under one umbrella.

گزیده:

“If you tell people where to go, but not how to get there, you’ll be amazed at the results.” General George S. Patton

برای خروج از جستجو کلید ESC را بفشارید