کتاب «واقعی شدن، روش هوشمندانه تر، سریع تر و ساده تر برای ساختن برنامه های وبی موفق» حاصل تجربیات یکی از موفق ترین شرکت های حوزه وب، شرکت 37signals است. در این کتاب این شرکت تجربیات خود را نوشته است که می تواند برای شرکت های نوپای فعال در زمینه برنامه نویسی مرجع و راهنمای بسیار خوبی باشد. این کتاب در سایت این شرکت منتشر شده است و متن فارسی آن به مرور در سایت «هواخوری» منتشر خواهد شد.
فهرست مطالب این کتاب:
- مقدمه
- خط شروع
- لاغر بمانید
- اولویتها
- انتخاب ویژگیها
- فرایند
- سازمان
- امور کارکنان
- طراحی ظاهر
- کد
- کلمات
- قیمت گذاری و ثبت نام
- تبیلغ و ترویج
- پشتیبانی
- بعد از عرضه
- مؤخره
در اینجا ترجمه فصل اول این کتاب را می آوریم و به محض آماده شدن فصل های بعدی، آن ها را در همین سایت تقدیم شما می کنیم.
فصل اول: مقدمه
واقعی شدن چیست؟
- میخواهید نرمافزار وبی موفقی بسازید؟ پس وقت آن است که واقعی شوید. واقعی شدن روشی کوچکتر، سادهتر و بهتر برای ساختن نرمافزار است.
- واقعی شدن درباره گذشتن از چیزهایی که واقعی مینماید (نمودارها، شکلها، جعبهها، پیکانها، سیمها و غیره) و در عوض، پرداختن به چیزهای واقعی است.
- واقعی شدن، کم شدن است. افراد کمتر، نرمافزار کمتر، امکانات کمتر، کاغذ بازی کمتر و کمتر شدن هر چیزی است که مهم به نظر میآید (و خیلی از چیزهایی که فکر میکنید مهم هستند هرگز مهم نیستند).
- واقعی شدن کوچک ماندن و چابک و چالاک شدن است.
- واقعی شدن با ظاهر برنامه آغاز میشود، پنجرههایی که مردم میخواهند استفاده کنند. با چیزی که مشتری آن را تجربه میکند آغاز شده و از آن جا عقبگرد میکند. اینها به شما اجازه میدهد که پیش از این که نرمافزار به خطا برود، ظاهر یا نمای کاربری آن را درست کنید.
- واقعی شدن درباره تکرار و کاهش هزینه تغییرات است. واقعی شدن کلاً درباره اقدام کردن، دستکاری کردن و دائماً ارتقا دادن است که آن را به روشی عالی برای نرمافزارهای وبی تبدیل کرده است.
واقعی شدن فقط چیزی را به مشتری میدهد که نیاز دارد و سایر چیزها را حذف میکند.
مزایای واقعی شدن
واقعی شدن نتایج بهتری به بار میآورد زیرا شما را وادار میکند به جای درگیر شدن با ذهنیت خود از مسائل، با مسائل واقعیای که میخواهید آنها را حل کنید درگیر شوید. شما را وامیدارد که با واقعیت روبرو شوید.
واقعی شدن به دلیل ساختن پنجرههای واقعی، بر ویژگیهای کاربردی و مستندات ناپایدار تقدم دارد. ویژگیهای کاربردی، مجعول و ساختگی هستند، توهمیاز یک توافق، در حالی که که صفحات وب واقعی هستند. چیزی هستند که مشتری شما میبیند و استفاده میکند. این چیزی است که مهم است. واقعی شدن شما را به سرعت به چنین چیزی میرساند. این بدان معنی است که تصمیمگیریهای شما برای نرمافزار بر مبنای چیزهای واقعی است نه نمادهای ذهنی.
در نهایت این که واقعی شدن راه حل ایدهآلی برای برنامههای وبی است. روش کهنه و قدیمیفروش نرمافزار در جعبه و بعد یکی دو سال منتظر دریافت یک بروز رسانی ماندن در حال محو شدن است. نرمافزارهای وبی -بر خلاف نرمافزارهای نصبی- میتوانند متداوم و روزانه رشد و نمو کنند.
واقعی شدن مانند تمام این منافع را برای شما به ارمغان میآورد.
چگونه نرمافزار قوی بسازیم
نوشته قوی، نوشته مختصر است. جمله نباید کلمات زیادی داشته باشد، بند نیز نباید جملات زیادی داشته باشد. به همان دلیل که نقاشی نباید خط زیادی و ماشین نباید قطعات زیادی داشته باشد. این بدان معنی نیست که نویسنده باید جملات را کوتاهتر بنویسد یا از جزئیات چشم بپوشد و موضوع را در لفافه بیان کند، بلکه هر کلمه باید گویا باشد.
نقل از The Elements of Style اثر William Strunk Jr
دیگر حجیم کافی است
روش قدیمی: فرایندی طولانی، پر از کاغذبازی و مسائل نامربوط.
نتیجه عمومی: نرمافزار حجیم و فراموششدنی که ضعف از سر و روی آن میبارد.
واقعی شدن شر اینها را کم میکند
- برنامههای زمانی که گاهی اوقات ماهها یا سالها طول میکشد
- ویژگیهای دستنیافتنی
- منازعات مقیاسپذیری
- جلسات کاری پایان ناپذیر
- «نیاز» به استخدام چند دوجین کارمند
- شماره نسخههای بیمعنی
- نقشههای از پیش تعیین شدهای که آیندهای کامل و بی نقص را پیشبینی میکنند
- گزینههای ترجیحات بیانتها
- پشتیبانی برون سپاری شده
- آزمون کاربر غیر واقعی
- سلسله مراتب بالا به پایین
برای ساختن نرمافزاری فوقالعاده نیاز به مقدار زیادی پول یا گروهی بزرگ یا چرخه توسعه طولانی ندارید. این چیزها عناصر تشکیل دهنده نرمافزارهای کند و پیچیده و غیر قابل درک و تغییر ناپذیر است.
در این کتاب ما به شما نشان میدهیم:
- اهمیت داشتن فلسفه
- چرا کوچک ماندن چیز خوبی است
- چگونه کمتر بسازیم
- چگونه به سرعت از فکر به واقعیت رسیدن
- چگونه گروه خود را استخدام کنید
- چرا باید از درون به بیرون طراحی کنید
- چرا نوشتن این قدر مهم است
- چرا باید کمتر رقابت کنید
- چگونه نرمافزار خود راترویج کنید و آن را به افراد بیشتری معرفی کنید
- رازهای پشتیبانی موفق
- نکتههایی درباره حفظ نیروی محرکه بعد از به کارانداختن نرمافزار
- و خیلی چیزهای دیگر …
تأکید بر روی مسائل اصلی است. ما شما را در باتلاقهای نمونه کد یا حقههای CSS فرو نمیبریم. ما به تفکرات اصلی و فلسفه محرک فرایند واقعی شدن خواهیم پرداخت.
آیا این کتاب برای شما مناسب است؟
شما کارآفرین، طراح، برنامه نویس یا بازاریابی هستید که بر روی ایده بزرگی کار میکنید. شما میدانید که قوانین قدیمیدیگر به کار نمیآیند. نرمافزار خود را هر ساله بر روی دیسک فشرده منتشر میکنید. شما باید بسازید، اجرا کنید و دستکاری کنید، سپس مرتب این کار را تکرار کنید.
یا این که ممکن است شما هنوز درگیر توسعه چابک و ساختارهای تجاری نشدهاید ولی دوست دارید درآمد بیشتری داشته باشید.
اگر این گونه است این کتاب برای شما است!
نکته: با این که تأکید اصلی این کتاب بر روی توسعه نرمافزارهای وبی است ولی بسیاری از ایدههای آن برای فعالیت در حوزههای غیر از نرمافزار نیز کاربرد دارد. پیشنهادهای مربوط به گروه کوچک، تولید سریع نمونه اولیه، استقبال از تکرار، و بسیاری از چیزهای دیگری که در این جا آمدهاند میتواند به شما در راهاندازی کسب و کار، نوشتن کتاب، طراحی پایگاه وب، ضبط آلبوم موسیقی، یا سایر کارها و فعالیتها کمک کند. یک بار که شما در یکی از جنبههای زندگی واقعی شوید خواهید دید که چطور این مفاهیم میتوانند در طیف وسیعی از فعالیتها به کار گرفته شوند.
درباره 37Signals:
[به سایت شرکت مراجعه کنید]
کار ما
37Signals گروه کوچکی است که نرمافزارهای ساده و متمرکز میسازد. محصولات ما کمک می کند که شما بتوانید همکاری و سازماندهی کنید. بیش از 350.000 نفر و شرکتهای کوچک برای انجام امور خود از برنامههای وبی ما استفاده می کنند. یکی از نویسندگان مجله وال استریت به نام Jeremy Wagstaff نوشته است: «محصولات 37Signals به طرز زیبایی ساده، عالی و دوست داشتنیاند و باعث میشوند پنجره Outlook در دنیای نرمافزار معادل اتاقهای شکنجه به نظر برسد.» نرمافزارهای ما هیچگاه شما را در رنج و عذاب نمیگذارند.
مرام ما
ما معتقدیم که نرمافزار بسیار پیچیده است. ویژگیهای بسیار زیاد، دکمههای بسیار زیاد و چیزهای زیاد برای یادگرفتن. نرمافزارهای ما عمداً کمتر از رقبای خود کار میکنند. ما محصولاتی میسازیم که هوشمندانهتر کار میکنند، احساس بهتری میدهند، اجازه میدهند کارها را به شیوهای که دوست دارید انجام دهید و استفاده از آنها راحتتر است.
محصولات ما
در زمان چاپ این کتاب ما پنج محصول تجاری و یک چارچوب برنامهنویسی وبی کد باز داریم.
- کار اصلی Basecamp مدیریت پروژهها است. Basecamp به جای نمودارهای Gantt، گرافهای شکیل، صفحه گستردههای پر از آمار و … تابلوی اعلانات، فهرست وظایف، زمانبندی ساده، همکاری در نوشتن و اشتراک فایلها را ارائه میکند. اکنون صدها هزار نفر معتقدند که این روش، روش بهتری است. Farhad Manjoo از سایت Salon.com میگوید: «Basecamp آینده نرمافزار تحت وب را نشان میدهد. »
- Campfire گپ و گفت گروهی ساده را وارد کسب و کار میکند. کسب و کارها میفهمند که چقدر گپ گروهی ماندگار باارزش است. تیزپیکهای متداول برای گپهای سریع یک نفره عالیاند اما برای 3 نفر یا بیشتر به صورت همزمان بیچاره کنندهاند. Campfire این مشکل و خیلی مشکلات دیگر را حل میکند.
- Backpack جایگزین نرمافزارهای «مدیریت اطلاعات شخصی» پیچیده و گیج کننده (زندگی خود را در 25 گام ساده سازماندهی کنید) است. صفحات متفاوت و ساده، یادداشتها، فهرست کارها و یادآورندههای تلفنی و رایانامهایِ Backpack، ایدههایی خلاقانه در این دسته از محصولات است که همواره از «حفظ وضع موجود» لطمه خوردهاند. Thomas Weber از مجله وال استریت میگوید این بهترین محصول از این نوع است و David Pogu از نیویورک تایمز آن را ابزار سازماندهی«خیلی معرکه» مینامد.
- Writeboard به شما امکان میدهد که به تنهایی یا به همراه دیگران متنی را بنویسید، به اشتراک بگذارید و بازبینی و مقایسه کنید. این نرمافزار یک جانشین نرمافزارهای واژه پرداز حجیم است که برای 95% از آنچه مینویسید، اضافه هستند. John Gruber از Daring Fireball میگوید «Writeboard واضحترین و سادهترین نرمافزار وبی است که تاکنون دیدهام. » نابغه وب Jeffrey Zeldman میگوید: «ذهنهای عالی در 37Signals باز هم موفق به انجام آن شدند. »
- Ta-da List همه فهرست کارهای شما را در کنار هم نگه میدارد و به صورت برخط سازماندهی میکند. میتوانید فهرستها را برای خود نگه دارید یا برای همکاری با دیگران، آنها را به اشتراک بگذارید. هیچ راهی سادهتر از این برای انجام کارها وجود ندارد. تاکنون بیش از 100.000 فهرست با بیش از 1.000.000 قلم ایجاد شدهاند.
- Ruby on Rails برای برنامه نویسان یک چارچوب کامل و کدباز توسعه وب با استفاده از زبان Ruby است که از آن برای توسعه سریع و آسان برنامههای واقعی استفاده میشود. Rails کارهای سنگین و مشغول کننده را انجام میدهد تا شما بتوانید بر افکار خود متمرکز شوید. Nathan Torkington از امپراتوری نشر O’Reilly میگوید «حیرت انگیز است. استفاده از آن مثل تماشای یک فیلم کونگ فو است، آن جایی که یک دوجین چارچوب گردن کلفت برای له و لورده کردن یک تازه وارد آماده می شوند فقط برای اینکه حسابش را به تمام روشهای متصور کف دستش بگذارند.» عاشق این جملهایم.
اطلاعات بیشتر درباره محصولات و شرکت ما را میتوانید از وب سایت ما www.37Signals.com به دست آورید.
اخطارها، رد مسؤلیت، پیشگیری از برخورد
برای جلوگیری از تکرار برخی اشتباهات، در این جا به تعدادی از اعتراضاتی که هر روزه میشنویم پاسخ میدهیم:
«این فنون به درد من نمیخورد»
واقعی شدن سامانهای است که برای ما فوقالعاده مفید بوده است. ولی به این معنی نیست که واقعی شدن برای هر پروژهای در این کره خاکی به درد میخورد. اگر شما سامانههای نظامی، سامانههای کنترل نیروگاه هستهای، سامانه بانکی با میلیونها کاربر، یا هر چیزی که با مسائل حیاتی یا مالی سر و کار دارد میسازید، شما باید برخی از روشهای آزادانه ما را نادیده بگیرید و احتیاط بیشتری پیشه کنید. در ضمن واقعی شدن گزارهای همه یا هیچ نیست. حتی اگر نمیتوانید آن را کاملاً بپذیرید دست کم تفکراتی وجود دارد که شما میتوانید از آنها استفاده کنید.
«شما این ایدهها را ابداع نکردهاید»
ما ادعا نمیکنیم که این فنون را ابداع کردهایم. بسیاری از این ایدهها به شکلهای گوناگون و در زمانهای گذشته پیرامون ما وجود داشتهاند. اگر مطالب و توصیههایی را که این جا میخوانید، مطالبی که قبلاً در وبلاگ یا کتابی که بیست سال پیش منتشر شده را به یاد شما میآورد، اخم نکنید. این مسأله طبیعی است. این فنون انحصاراً متعلق به 37Signals نیست. ما فقط به شما میگوییم که چگونه کار خود را انجام میدهیم و چه چیزهایی برای ما مفید و سودمند بوده است.
«شما بسیار منفی (سیاه و سفید) به مسأله نگاه میکنید»
اگر لحن کلام ما تلخ است با ما باشید. ما معتقدیم که ارایه جسورانه ایدهها بهتر از بیاعتنا بودن نسبت به آنها است. اگر متکبرانه و خودخواهانه به نظر میرسد، باشد. ماترجیح میدهیم محرک و تأثیر گذار باشیم تا این که با گفتن «بستگی دارد …» هر چیزی را از اهمیت بیندازیم. یقیناً در برخی مواقع این قوانین باید بسط یابند یا نقض شوند. و برخی از این فنون در موقعیت شما به کار نیاید. خودتان در این مورد داوری کنید.
«اینها در شرکت ما به کار نمیآید»
شما فکر میکنید برای واقعی شدن بسیار بزرگ هستید؟ حتی مایکروسافت هم واقعی شده است (و ما شک داریم که شما از آنها بزرگتر باشید).
حتی اگر شرکت شما برنامههای زمانی طولانی مدت یا گروههای بزرگی دارد باز هم راههایی برای واقعی شدن وجود دارد. اولین قدم شکستن آنها به واحدهای کوچکتر است. زمانی که افراد زیادی درگیر شوند هیچ کاری انجام نمیشود. هر قدر که شما لاغرتر و کوچکتر باشید کارها سریعتر و بهتر انجام میشود.
موافقیم که نیاز به رفتار فروشندگی دارد. فرایند واقعی شدن را در شرکت خود مطرح کنید. این کتاب را به آنها نشان دهید. نتیجههای واقعی را که میتوانید در زمان کمتر و تیم کوچکتر به آنها دست یابید به آنها نشان دهید.
توضیح دهید که واقعی شدن روشی کم خطر و کم سرمایهبر برای آزمودن مفاهیم جدید است. برای اثبات این مدعا بهتر است پروژههای بزرگ را به پروژههای کوچکتری بشکنید و نتایج را به آنها نشان دهید.
یا اگر واقعاً میخواهید بی باک باشید، در خفا حرکت کنید. بیرون از دید رادار حرکت کنید و نتایج واقعی را به آنها نشان دهید. این روشی است که گروه Start.com در مایکروسافت برای واقعی شدن پیش گرفتند. Robert Scoble فنینویس مایکروسافت میگوید: «من کار گروه Start.com را دیدم. آنها اجازه نمیگیرند. آنها رئیسی دارند که پوشش هوایی را برای [محافظت] آنها فراهم میکند و آنها در هر لحظه به چیزهای کوچک ناخنک میزنند و به بازخوردها پاسخ میدهند».
عرضه Start.com متعلق به مایکروسافت
در شرکتهای بزرگ فرایندها و ملاقاتها تبدیل به هنجار شدهاند. با هدف رسیدن به توافق درباره چیزهای «مناسب» برای کاربر، چندین ماه صرف برنامه ریزی ویژگیها و بحث بر روی جزئیات میشود.
این روش شاید بهترین روش برای نرمافزارهای بستهبندی شده باشد، ولی وقتی با وب سروکار داریم امتیاز بزرگی داریم. شما فقط نرمافزار را عرضه کنید. اجازه بدهید کاربر خودش به شما بگوید که آیا نرمافزار برای وی مناسب است یا خیر. آهای! اگر بخواهید میتوانید خطاها را رفع کرده و در همان روز مجدداً نرمافزار را عرضه کنید! مهمترین انگیزه برای حضور در جلسات طاقت فرسا و مباحثات، پایداری مشتریان است. فقط عرضه کنید و یک نقطه به جلو حرکت کنید.
سخن گفتن از عمل کردن آسانتر است. این مطلب میرساند که:
نیازی به برنامهریزیهای چند ماهه نیست.
ماهها نوشتن ویژگیها لازم نیست. ویژگیها باید بر بنیانهایی نهاده شوند که در طول توسعه به دست میآیند و جزئیاتی که در طول توسعه فهمیده و اصلاح میشوند. هرگز سعی نکنید که تمام مباحث باز و تمام جزئیات را پیش از آغاز توسعه ببندید.
ویژگیهای کمتر ولی مطلوب را عرضه کنید.
شما نیازی به روش انفجار بزرگ و عرضه تعداد زیادی ویژگیها در یک زمان ندارید. به کاربر قطعات دراندازه یک بایت بدهید که بتواند آن را هضم کند.
اگر خطاهای کوچکی وجود دارند نرمافزار را به محض آماده شدن طرح اصلی آن، عرضه کنید و رفع خطاها را به تدریج در وب منتشر کنید. هر چه سریعتر بازخورد کاربر را بگیرید بهتر است.
ایدهها بر روی کاغذ عالی به نظر میرسند ولی در عمل غیر بهینه از کار در میآیند. هر چه زودتر اشکالات بنیادی ایدهها را بیابید بهتر است.
یک بار که شما به سرعت تکرار کنید و به بازخوردهای کاربران عکسالعمل نشان دهید شما با کاربران ارتباط برقرار میکنید. به یاد داشته باشید که هدف پیروز شدن کاربر است با ساختن چیزی که آنها میخواهند.
Sanaz Ahari مدیر برنامه Start.com در مایکروسافت
پایان فصل اول.