باورهای اشتباهی که بسیاری از برنامه نویسان دارند!

خیلی از برنامه‏نویسها باورهای اشتباهی دارند که سبب می‏شود در کارشان پسرفت داشته باشند یا پیشرفت قابل توجهی نکنند. من بر اساس تجارب خودم، برخی از این باورهای اشتباه را فهرست کرده‏ام.

البته باید توجه داشت که برخی از این باورها، الزاما هم ربطی به برنامه‏نویسها ندارد و شاید درباره خیلی‏ها دیگر هم درست باشد. (برای نمونه همین مورد اول)

اصرار بر باور خودمان

این که اصرار داشته باشیم حتما باور ما درست است، سبب می‏شود که سخن بقیه را نشنویم؛ حتی اگر تظاهر به شنیدن آنها بکنیم.

همیشه باید این شک را داشت که شاید راه حل ما یا شیوه تفکر ما نسبت به یک مسئله درست نباشد؛ تا بتوان سخن بقیه را شنید، درک کرد و آن را بی طرفانه سنجید.

مشتری هیچ وقت نمی‏داند که چه می‏خواهد

اگر حتی شش ماه در زمینه برنامه‏نویسی کار کرده باشید، به احتمال زیاد این سخن را بارها و بارها از دوستان، همکاران و یا رئیستان شنیده باشید. در حالی که به نظر من، این مسئله همیشه درست نیست. بعضی وقتها (اگر نگویم خیلی وقتها) مشتری دقیقا می‏داند که چه می‏خواهد. اگر چه شاید بتوان بهبودهایی را به او پیشنهاد کرد.

دلیل این که کد یک نفر را نمی‏توان خواند، درست کد ننوشتن او است

همیشه خواندن کد دشوار است. حتی خواندن بهترین و تمیزترین کدهای نوشته شده به دست بهترین برنامه‏نویسان دنیا. من سه دسته مشخص کد را به شخصه زیر و رو کردم: کدهای Net Framework، کدهای VCL (کتابخانه کنترلهای دیداری دلفی) و کدهای CentOS (یک نگارش مشهور لینوکس که خیلی شبیه به Redhat درست شده ولی رایگان است). همه کدها به شدت تمیز و ساختار مند نوشته شده‏اند ولی با این حال خواندن آنها دشوار بوده و نیاز به تمرکز دارد.

بنابراین این قدر سخت‏گیر نباشید و از کد بقیه ایراد نگیرید. کد فعلی خود شما هم اگر توسط یک برنامه نویس حرفه‏ای‏تر بازبینی شود، شاید کاملا غیر بهینه و زشت به نظر بیاید و او بتواند کد شما را خیلی بهتر و تمیزتر بنویسد. توجه داشته باشید که همه کدها (به نسبت کد بهتر) کثیف هستند. مطمئنا حتی کدهای کتابخانه‏های بالا را که مثال زدم هم می‏شود بهبود داد. همه چیز نسبی است.

برنامه‏نویسی مهمترین و بزرگترین بخش یک پروژه است

این باور کاملا نادرست است. من شخصا از داشتن چنین باوری، بسیار ضرر کردم. حداقل تحلیل و طراحی یک سیستم بخشهای بسیار مهمی هستند که در کنار برنامه‏نویسی قرار می‏گیرند.

تازه همه اینها، بخش فنی کار هستند. مسائلی مانند بازاریابی، جذب مشتری، ارائه درست محصول، کارهای حقوقی (ثبت شرکت، نوشتن قراردادها)، مدیریت درست، طراحی استراتژی درست برای فروش، کارهای خدماتی (نظافت محل کار، فراهم کردن فضای مناسب کاری و ...)، بسته‏بندی درست، طراحی گرافیکی، طراحی وبسایت برای عرضه محصول، تبلیغات درست، تعیین درست بازار هدف، استخدام نیروهای درست برای بخشهای پروژه، زمان‏بندی درست و خیلی کارهای دیگری تعیین کننده هستند.

شما اگر بهترین برنامه‏نویس هم باشید، این را باید بدانید که کار شما تنها 20% (و تازه شاید خیلی هم کمتر) از کل کارهای یک پروژه است. برای راه انداختن یک شرکت نیاز به همه عواملی هست که بر شمردم. داشتن برنامه نویس خوب مثل همان جک مشهور است که فردی یک دکمه برده بود خیاطی و از خیاط می‏خواست که یک کت خوب برای این دکمه بدوزد.

حتما قبلا کسی این کار را کرده است

«به خودت زحمت نده. لازم نیست بنویسی‏اش. فقط توی گوگل جستجو کن. حتما کسی قبل از ما این کار را انجام داده است.» یا «چرا چرخ را دوباره اختراع می‏کنی» این جملات را هم احتمالا کسانی که در گروه‏های برنامه‏نویسی کار کرده‏اند زیاد شنیده‏اند.

اگر چه کلا حرف درستی است ولی خیلی از مواقع هم سبب عقب راندن شما می‏شود. شما به خیال این که، کدی که می‏خواهید بنویسید قبلا نوشته شده است، کلی در اینترنت می‏گردید و در نهایت چیزی پیدا نمی‏کنید. به نظر من همیشه، همه چیزها را قبلا نوشته نشده است.

هر چه یک کد طولانی‏تر باشد، احتمالا حرفه‏ای تر است

این دیگه از آن باورهای کاملا نادرست است. بر اساس قانون KISS یا «نادون هر چه ساده‏تر بهتر»، روش ساده‏تر برای انجام یک کار، درست‏ترین روش است. تا به حال بسیار پیش آمده که کدی که دو روز سر آن وقت گذاشته‏ام را مرور کردم (که مثلا شده است 1000 خط) و دیده‏ام که چقدر همه چیز را پیچیده کرده‏ام. همه چیز را پاک کرده‏ام و دوباره خیلی بهتر و موثرتر و کم‏باگ تر آن را با 50 خط نوشته‏ام.
این را باید همیشه به خاطر داشت که می‏شود کد را ساده‏تر و بهتر نوشت. این طوری باگها هم کمتر می‏شوند و خطایابی هم آسان‏تر خواهد بود.

برنامه‏نویسی خیلی کار با حال و خفنی است

برنامه‏نویسی جذابیتهای خیلی زیادی دارد. ولی از سوی دیگر مانند همه کارها است. دقیقا مانند همه کارهای دیگر دنیا. آن چنان که فکر هم می‏کنید این کار با حال و خفن نیست.

برنامه‏نویسی پیچیده‏ترین کار دنیا است

مطمئن باشید از این کار پیچیده‏تر هم وجود دارد. کارتان را مقایسه کنید با کار یک دندان‏پزشک، جراح قلب، مدیر عامل شرکتهای بزرگ دنیا، طراحان معمار، مدیر پروژه برج دبی و خیلی کارهای دیگر. این قدرها هم به خودتان اعتماد به نفس نداشته باشید.

اینها چیزهایی بود که به ذهن من می‏رسید.

ابزارهای طراحی اینترفیس

فرهنگ Document کردن کامل یک پروژه پیش از آغاز فاز پیاده‏سازی معمولا کمتر در ایران جا افتاده است. درباره پروژه‏های کوچک تقریبا در ابتدا هیچ مستندی با استفاده هیچ روش مدل‏سازی (مانند SSADM یا روشهای جدیدتر مانند UML) نوشته نمی‏شود. برنامه‏نویس می‏نشیند پای ابزار Development خود و همین طور عشق و الله بختکی اینترفیس برنامه را طراحی می‏کند. بعد ابزار Database خود را باز می‏کنند و Tableهای مربوط به اینترفیسی که روی آن کار می‏کند را درست می‏کند.

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

در این نوشته می‏خواهم چند ابزار طراحی Wireframe یا اینترفیس را معرفی کنم. کاربرد Wireframe این است که اینترفیس یک سایت یا یک برنامه بدون این که وارد زرق و برق‏های گرافیکی شویم، قابل طراحی است. در واقع در این برنامه Layout یک اینترفیس که مهمترین بخش آن نیز هست قابل طراحی است.

MockFlow


MockFlow امکانات کاملی را در اختیار شما قرار می‏دهد. همچون چون با Adobe Flex نوشته شده است، امکان استفاده به صورت Offline با Adobe AIR وجود دارد.

Axure


برنامه خوبی است اگر چه خیلی چشم من را نگرفت. این برنامه افزون بر طراحی Wireframe کارهای دیگری مانند طراحی دیاگرام نیز انجام می‏دهد. به همین خاطر نسبتا برنامه بزرگتری است.

Balsamiq Mockups


این برنامه 75 کنترل در اختیار شما قرار می‏دهد و به همین خاطر تقریبا امکان طراحی هر چیزی با آن هست. این برنامه نیز با Flex طراحی شده و نسخه آنلاین آن رایگان است. ولی برای نسخه Desktop باید پول پرداخت کنید. اگر چه، من دنبال یک ابزار رایگان هستم.

Pencil Project


این یکی واقعا محشر است. Pencil در واقع افزونه Photoshop است و از قابلیتها Canvas جدید در HTML 5 استفاده می‏کند. بسیار سریع، راحت و با امکانات بسیار بالایی است و در مرورگر محبوب شما یعنی Firefox کار می‏کند. نیاز به برنامه جداگانه‏ای نیست.

HotGloo


HotGloo هم کاملا تحت وب است و برنامه قدرتمند و زیبایی است ولی متاسفانه رایگان نیست.

Mockingbird


این برنامه تمرکز زیادی روی Collaboration یا کار تیمی دارد. به شما اجازه می‏‎دهد که با هم تیمی‏های خودتان روی طراحی یک اینترفیس کار کنید، برای هم دیدگاهایتان را بنویسید و آن را تغییر دهید. تمام برنامه با JavaScript نوشته شده است و هیچ خبری از Flash نیست.

Cacoo


این ابزار افزون بر Wireframe، امکان ساخت دیاگرام، UML و چارتهای شبکه را هم به شما می‏دهد.

ProtoShare


این برنامه هم امکانات کار گروهی خوبی را در اختیار شما قرار می‏دهد. از جمله امکان نوشتن دیدگاه بر هر یک از عناصر موجود در Wireframe وجود دارد.

iPlotz


این برنامه با سرعت زیاد امکان ساخت Wireframe را در اختیار شما قرار می‏دهد.

OmniGraffle


این برنامه برای Max OS طراحی شده و فکر می‏کنم به درد کمتر کاربری در ایران بخورد.

مزایای طراحی Wireframe

اگر همه اینترفیسها را در ابتدا طراحی کنیم مزایای زیر را به دست خواهیم آورد:
1- همه اینترفیس‏ها با هم هماهنگ خواهند بود.
2- امکان افزایش Usability اینترفیسها با حذف و یا ادغام و تغییر نحوه عملکرد اینترفیس به سادگی وجود دارد.
3- زمان طراحی Wireframe بسیار کمتر از طراحی اینترفیس در نرم‏افزارهای توسعه است. به این ترتیب پیش از پیاده‏سازی می‏توان Wireframeها را به پیمانکار یا رئیس نشان داد و از او تایید گرفت.

و من آن روز را انتظار میکشم حتا اگر روزی که دیگر نباشم...

روزی ما دوباره کبوترهایمان
را پیدا خواهیم کرد و مهربانی
دست زیبایی را خواهد گرفت
روزی که کمترین سرود
بوسه است
و هر انسانی برای هر انسانی
برادری است

روزی که مردم دیگر در خانه هایشان
را نمیبندند

قفل افسانه ای است و قلب
برای زندگی بس است...
روزی که معنای هر سخن
دوست داشتن است
تا تو بخاطر آخرین حرف
به دنبال سخن نگردی
روزی که آهنگ هر حرف
زندگی است

تا من بخاطر آخرین شعر
رنج جستجوی قافیه نبرم
روزی که هر لب ترانه ای است
تا کمترین سرود بوسه باشد

روزی که تو بیایی
برای همیشه بیایی
و مهربانی با زیبایی یکسان شود
روزی که ما برای کبوترهایمان
دانه بریزیم...

و من آن روز را انتظار میکشم
حتا اگر روزی
که دیگر
نباشم...

شاملو‎

اردیبهشت امسال

این کوزه‏گر دهر چنین جام لطیف
میسازد و باز بر زمین میزندش
خیام

هوای اردیبهشت‏ماه امسال، خواب را از چشمانت می‏رباید. کتاب را می‏گیری دستت با خیال این که یک ربع، بیست دقیقه، دیگه زیادِ زیادِ نیم ساعت بذاریش کنار و بخوابی تا برای فردا صبح و آن همه کار که بر سرت ریخته آماده شوی.... سرت توی کتاب است که یک مرتبه می‏بینی شده است ساعت چهار و سی و دو دقیقه و بیست و پنج ثانیه صبح. خیلی خوب هم چشمانت به ثانیه بیست و پنج می‏افتد و این عدد یادت می‏ماند.

این قدر هوا پر نشاط است که باز حیفت می آد بخوابی. اگر چه می‏دانی که فردا روز پر کاری است و تو احتمالا خوابالو خواهی بود ولی تازه کله سحر است و حیفت می‏آید سحر را که «مگر نسیم سحر بوی یار من دارد» را از دست دهی.

خلاصه چایی را می‏ذاری، به مناجات حرم گوش می‏کنی، سایت ملکوت را باز می‏کنی و سرِ کوهِ بلند می‏شنوی.

المنه لله که در میکده بازست

خیلی جالب است که حافظ در این شعر می‏نویسد: «و آن مى که در آن جاست حقیقت نه مجازست» فکر می‏کنم حداقل این یک مصراع شعر حافظ، پاسخی باشد به بحث قدیمی شاملو و مطهری.

المنه لله که در میکده بازست         زانرو که مرا بر در او روى نیازست
خمها همه در جوش و خروشند ز مستى       و آن مى که در آن جاست حقیقت نه مجازست
از وى همه مستى و غرورست و تکبر       و ز ما همه بیچارگى و عجز و نیازست
رازى که بر غیر نگفتیم و نگوئیم       با دوست بگوئیم که او محرم رازست
شرح شکن زلف خم اندر خم جانان       کوته نتوان کرد که این قصه درازست
بار دل مجنون و خم طره ء لیلى       رخساره ء محمود و کف پاى ایازست
بر دوخته ام دیده چو باز از همه عالم       تا دیده ء من بر رخ زیباى تو بازست
در کعبه ء کوى تو هر آن کس که بیاید       از قبله ء ابروى تو در عین نمازست
اى مجلسیان سوز دل حافظ مسکین
از شمع بپرسید که در سوز و گدازست


Syndicate content