خیلی از برنامهنویسها باورهای اشتباهی دارند که سبب میشود در کارشان پسرفت داشته باشند یا پیشرفت قابل توجهی نکنند. من بر اساس تجارب خودم، برخی از این باورهای اشتباه را فهرست کردهام.
البته باید توجه داشت که برخی از این باورها، الزاما هم ربطی به برنامهنویسها ندارد و شاید درباره خیلیها دیگر هم درست باشد. (برای نمونه همین مورد اول)
اصرار بر باور خودماناین که اصرار داشته باشیم حتما باور ما درست است، سبب میشود که سخن بقیه را نشنویم؛ حتی اگر تظاهر به شنیدن آنها بکنیم.
همیشه باید این شک را داشت که شاید راه حل ما یا شیوه تفکر ما نسبت به یک مسئله درست نباشد؛ تا بتوان سخن بقیه را شنید، درک کرد و آن را بی طرفانه سنجید.
مشتری هیچ وقت نمیداند که چه میخواهداگر حتی شش ماه در زمینه برنامهنویسی کار کرده باشید، به احتمال زیاد این سخن را بارها و بارها از دوستان، همکاران و یا رئیستان شنیده باشید. در حالی که به نظر من، این مسئله همیشه درست نیست. بعضی وقتها (اگر نگویم خیلی وقتها) مشتری دقیقا میداند که چه میخواهد. اگر چه شاید بتوان بهبودهایی را به او پیشنهاد کرد.
دلیل این که کد یک نفر را نمیتوان خواند، درست کد ننوشتن او استهمیشه خواندن کد دشوار است. حتی خواندن بهترین و تمیزترین کدهای نوشته شده به دست بهترین برنامهنویسان دنیا. من سه دسته مشخص کد را به شخصه زیر و رو کردم: کدهای 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 وجود دارد.
برنامه خوبی است اگر چه خیلی چشم من را نگرفت. این برنامه افزون بر طراحی Wireframe کارهای دیگری مانند طراحی دیاگرام نیز انجام میدهد. به همین خاطر نسبتا برنامه بزرگتری است.
این برنامه 75 کنترل در اختیار شما قرار میدهد و به همین خاطر تقریبا امکان طراحی هر چیزی با آن هست. این برنامه نیز با Flex طراحی شده و نسخه آنلاین آن رایگان است. ولی برای نسخه Desktop باید پول پرداخت کنید. اگر چه، من دنبال یک ابزار رایگان هستم.
این یکی واقعا محشر است. Pencil در واقع افزونه Photoshop است و از قابلیتها Canvas جدید در HTML 5 استفاده میکند. بسیار سریع، راحت و با امکانات بسیار بالایی است و در مرورگر محبوب شما یعنی Firefox کار میکند. نیاز به برنامه جداگانهای نیست.
HotGloo هم کاملا تحت وب است و برنامه قدرتمند و زیبایی است ولی متاسفانه رایگان نیست.
این برنامه تمرکز زیادی روی Collaboration یا کار تیمی دارد. به شما اجازه میدهد که با هم تیمیهای خودتان روی طراحی یک اینترفیس کار کنید، برای هم دیدگاهایتان را بنویسید و آن را تغییر دهید. تمام برنامه با JavaScript نوشته شده است و هیچ خبری از Flash نیست.
این ابزار افزون بر Wireframe، امکان ساخت دیاگرام، UML و چارتهای شبکه را هم به شما میدهد.
این برنامه هم امکانات کار گروهی خوبی را در اختیار شما قرار میدهد. از جمله امکان نوشتن دیدگاه بر هر یک از عناصر موجود در Wireframe وجود دارد.
این برنامه با سرعت زیاد امکان ساخت Wireframe را در اختیار شما قرار میدهد.
این برنامه برای Max OS طراحی شده و فکر میکنم به درد کمتر کاربری در ایران بخورد.
اگر همه اینترفیسها را در ابتدا طراحی کنیم مزایای زیر را به دست خواهیم آورد:
1- همه اینترفیسها با هم هماهنگ خواهند بود.
2- امکان افزایش Usability اینترفیسها با حذف و یا ادغام و تغییر نحوه عملکرد اینترفیس به سادگی وجود دارد.
3- زمان طراحی Wireframe بسیار کمتر از طراحی اینترفیس در نرمافزارهای توسعه است. به این ترتیب پیش از پیادهسازی میتوان Wireframeها را به پیمانکار یا رئیس نشان داد و از او تایید گرفت.
روزی ما دوباره کبوترهایمان
را پیدا خواهیم کرد و مهربانی
دست زیبایی را خواهد گرفت
روزی که کمترین سرود
بوسه است
و هر انسانی برای هر انسانی
برادری است
روزی که مردم دیگر در خانه هایشان
را نمیبندند
قفل افسانه ای است و قلب
برای زندگی بس است...
روزی که معنای هر سخن
دوست داشتن است
تا تو بخاطر آخرین حرف
به دنبال سخن نگردی
روزی که آهنگ هر حرف
زندگی است
تا من بخاطر آخرین شعر
رنج جستجوی قافیه نبرم
روزی که هر لب ترانه ای است
تا کمترین سرود بوسه باشد
روزی که تو بیایی
برای همیشه بیایی
و مهربانی با زیبایی یکسان شود
روزی که ما برای کبوترهایمان
دانه بریزیم...
و من آن روز را انتظار میکشم
حتا اگر روزی
که دیگر
نباشم...
شاملو
این کوزهگر دهر چنین جام لطیف
میسازد و باز بر زمین میزندش
خیام
هوای اردیبهشتماه امسال، خواب را از چشمانت میرباید. کتاب را میگیری دستت با خیال این که یک ربع، بیست دقیقه، دیگه زیادِ زیادِ نیم ساعت بذاریش کنار و بخوابی تا برای فردا صبح و آن همه کار که بر سرت ریخته آماده شوی.... سرت توی کتاب است که یک مرتبه میبینی شده است ساعت چهار و سی و دو دقیقه و بیست و پنج ثانیه صبح. خیلی خوب هم چشمانت به ثانیه بیست و پنج میافتد و این عدد یادت میماند.
این قدر هوا پر نشاط است که باز حیفت می آد بخوابی. اگر چه میدانی که فردا روز پر کاری است و تو احتمالا خوابالو خواهی بود ولی تازه کله سحر است و حیفت میآید سحر را که «مگر نسیم سحر بوی یار من دارد» را از دست دهی.
خلاصه چایی را میذاری، به مناجات حرم گوش میکنی، سایت ملکوت را باز میکنی و سرِ کوهِ بلند میشنوی.