هرز نوشته های یک توسعه دهنده

ورودی‌های دسته‌بندی شده تحت ‘Uncategorized’

بیگباکس را در دامین جدید ببینید!

سپتامبر 19, 2009 · نوشتن دیدگاه

newurl

با تشکر از همه بازدید کنندگان این سایت و مشترکینی که از طریق فید به مطالعه مطالب این بلاگ می پرداخته اند ، به اطلاع میرساند مطالب این بلاگ به دامین اختصاصی زیر منتقل شده و این بلاگ از این تاریخ به بعد به روز نخواهد شد.لذا در صورت تمایل به پیگیری مطالب نویسنده ، خواهشمند است فید دامین زیر را مشترک شوید:

http://www.drneamati.com

دسته‌ها: Uncategorized

چه باید کرد؟

جولای 20, 2009 · 4 دیدگاه

experience2

اگر مروری گذرا بر کامنت بازدید کنندگان وبلاگ داشته باشیم ، پرسشی که بیش از همه ، از سوی دوستان مطرح شده این هست که چه مسیری را برای آینده شغلی یا تحصیلی خود ترسیم کنیم و چکونه این مسیر را بپیماییم؟

در این پست که بویژه در پاسخ به آخرین پرسش در این زمینه از سوی یکی از کارشناسان نرم افزار که پس از مدتی شغل خود را رها کرده و به مناسبت انجام امور مادری ، مدتی از کار و تحصیل فاصله گرفته ؛ نوشته می شود ، سعی دارم تا راهکاری عملی و واقعی برای این عزیزان ارائه دهم و امید دارم مفید واقع گردد.

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

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

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

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

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

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

بدیهی است در صورتیکه بتوانیم در برخورد با هر نیاز ، تحلیلی درست ارائه دهیم ، بر اساس آن می توان (البته در صورت داشتن دانش کافی) اقدام به انتخاب پلاتفرم و محیط توسعه و همچنین بانک اطلاعاتی مناسب نمود.

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

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

evolve1at300dpi

پرسش بعد ، آنست که اگر شما سالها از دریافت مدرک کارشناسی تان گذشته باشد ، و اکنون تمایل به ادامه آن داشته باشید ، چه باید کرد؟

به نظر من ، از ابتدا باید تکلیف خود را روشن کنید که آیا علاقمندی شما به تحصیل است و یا کار و افزایش مهارتهای شغلی در زمینه تحصیلی؟

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

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

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

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

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

اما علاوه بر موارد فوق ، دقت کنید پروژه انتخاب شده حتما شامل موارد زیر باشد:

1- حداقل دارای یک یا دو فرم وروداطلاعات باشد.

2- حداقل دارای یک یا دو گزارش پارامتریک باشد.

3- حتما چند کاربره باشد.

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

زمان تولید نرم افزار انتخاب شده با کدامیک کمتر است؟ و…………

my-programming-bookshelf-large

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

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

اکنون زمان یادگیری است.و همزمان با یادگیری و مرحله به مرحله ، پروژه را تولید نمایید.

یک تجربه کوچک اما کارآمد.اگر مراحل گفته شده را بخوبی انجام داده باشید ، و هر اندازه وسعت مطالعات شما بیشتر باشد  ، راه خود برای آینده شغلی یا تحصیلی را بهتر و روشن تر می بینید.

موفق باشید.

ExperiencePoints-2008-10-20___Selected

دسته‌ها: Uncategorized
برچسب‌ها: , , , , ,

ناگفته های وب

ژوئن 22, 2008 · 15 دیدگاه

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

خب اولین پاسخی که هر کسی ممکنه به این سوال بده اینه که : تبلیغات!

قصد دارم در این پست پاسخهای این سوال رو مورد بحث قرار بدم:

1- تبلیغات: بخش مهمی از درآمد سایتهایی مثل گوگل و یاهو و سایتهایی از این دست که بازدید کننده زیادی دارند ، تبلیغات و همچنین کسب در آمد از طریق کلیک بر روی لینکهای تبلیغاتی موجود در صفحات این وبسایتهاست.

2- امید به خرید: یکی دیگه از دلایل برای راه اندازی سایتهایی مانند ووردپرس و توییتر و… که به نظر میرسه منبع درآمدی ندارند ، امید به خرید این سرویس ها درآینده ، توسط شرکتهای بزرگی مثل میکروسافت ، گوگل ، یاهو و…. هست که نهایتا منجر به درج آگهی های تبلیغاتی و روشهای دیگر کسب درآمد توسط این سایتها برای خریدارانشون هست.بنابر این مالکان این سایتها باید منتظر بمونند تا میزان بازدید از این سایتها و مقبولیت اونها تا حد مشخصی بالا بره تا خرید اونها برای شرکتهای بزرگ توجیه اقتصادی داشته باشه.

3- اهداف سیاسی: برخی از این سایتها با منابع مالی برخی سیاستمداران بزرگ دنیا راه اندازی میشن.هدف این سیاستمداران از اینکار استفاده از این سایتها در وقت مقرر و عندالزوم هست.گاهی حتی درج یک تیتر خبری یکی دو خطی مثلا در بخش “پر بیننده ترین های سایت” میتونه تاثیر به سزایی در پیشبرد اهداف سیاسی داشته باشه.

4- پولشویی : در ایران ، اینکه شما پول لازم برای یک سرمایه گذاری کلان یا خرید یک کارخونه یا املاک و … رو از کجا آوردید و یا وجود مقدار متنابه پول در حساب بانکی شما ، اغلب مشکلی رو برای شما بوجود نمی آره.اما در کشورهایی مثل امریکا ، ژاپن ، انگلیس ، فرانسه ، آلمان و … مکانیزمهای کنترلی بسیار شدیدی وجود داره که این امکان یعنی پول بادآورده و یا پول ناشی از فعالیتهای غیر قانونی رو بسرعت مورد تعقیب قرار میده.خب در شرایطی اینچنین ، انتقال پول ، و همچنین توجیه استفاده از منابع مالی از این دست ، برای مراجع قانونی در کشورهای مذکور ، با اتکا به روشهای مدرن امروزی انجام میشه.بعنوان مثال ، خرید و فروش انواع عطر و ادکلن ، یکی از ابزارهای پولشویی محسوب میشه.در واقع شما عطری رو خریداری می کنید که ارزش واقعی اون مثلا هزار تومان هست ولی شما دارید برای اون ده هزار تومان پول میدید! این یعنی انتقال پول.همین کار در سطحی وسیعتر توسط پولشویان انجام میشه.مکانیزم مشابهی در مورد وبسایتها انجام میشه.حدس چگونگی انجامش کار مشکلی نیست.

5- آمار و اطلاعات:یکی دیگه از منابع درآمدی ، فروش اطلاعات و آمار بازدید کنندگان به خریداران هست.این موضوع بسیار مهمیه.بعنوان مثال ، گوگل هر ساله مبلغ هنگفتی پول از شرکتهای بزرگ دریافت می کنه که آمار خاصی رو از بازدیدها ، از مقالات خاص برای کسب میزان علاقمندی کاربران به موضوعات خاص ، مشخصات رایانه های اونها (گاها) ، و … در اختیار اونها قرار بده.مثلا یک شرکت با داشتن نوع خاصی از این آمار و اطلاعات ، شروع به سیاستگذاری خط تولید نرم افزاری و یا سخت افزاری خودش می کنه و در واقع با اینکار پیش بینی آینده بازار ممکن میشه.اینکار یعنی خرید اطلاعات ، نقش بسزایی در فروش اون محصول خاص خواهد داشت.شناخت وضعیت فعلی تقاضا و علاقمندی کاربران برای سیاستگذاری برنامه های آتی بسیار مهمه.

و نکته آخر: امکان و اجازه رشد به سایتهایی که درآمدهای نجومی پیدا میکنن ، و بویژه با جریان اطلاعات سر و کار دارند ، بدون هماهنگی و یا تبعیت از سیاستهای بخش بزرگی از طبقه سیاستمدار و یا تراستها تقریبا غیر ممکنه.البته استثنا همیشه میتونه وجود داشته باشه!

دسته‌ها: Uncategorized

ویندوز 7 ، هسته کم حجم را هدف گرفته است!

ژوئن 1, 2008 · 4 دیدگاه

بالغ بر 200 برنامه نویس در حال ساخت هسته (Kernel) جدید برای سیستم عامل آتی میکروسافت یعنی ویندوز 7 هستند که MinWin نام گذاری شده!

این کرنل دارای حدود 100 فایل به حجم تقریبی 25 مگابایت هست که واقعا قابل مقایسه با حدود 5000 فایل در کرنل 4 گیگابایتی ویندوز ویستا نیست.

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

هسته جدید قراره در انتشارهای بعدی ویندوز ، ویندوز سرور و همچنین سیستمهایی مانند Embedded Devices مثل سامانه های اسکن و … بکارگرفته بشه.

مطالب بیشتر در این زمینه رو میتونید در لینکهای زیر بخونید:
- Windows get a ‘Mini-Me’
- Microsoft to trim Windows bloat for 2010
- http://www.osnews.com/story.php/18804/Thoughts-on-MinWin-Windows-7-and-Virtualisation/
- Microsoft builds minin Windows core

دسته‌ها: Uncategorized
برچسب‌ها: , , , , , , , , ,

بکارگیری برنامه نویس باتجربه: ارزش افزوده ناچیز!

ژوئن 1, 2008 · ۱ دیدگاه

یکی از نویسندگان و نظریه پردازان مدیریت نرم افزار ، به کرات در مورد نحوه بکارگیری برنامه نویسان وترکیب موثر آنها در پروژه های نرم افزار سخن گفته است .بعقیده Frank Wiles ، همیشه استخدام برنامه نویسان حرفه ای (Junior) منجر به ارزش افزوده بالاتری نمی شود.

خلاصه عللی که معمولا توسط وی تشریح می گردد عبارتند از:

- یک برنامه نویس خوب می تواند بطور میانگین برابر 5 تا 10 برنامه نویس دیگر کارآیی داشته باشد.

- پیدا کردن برنامه نویسان خوب و با تجربه ، در هر زبان برنامه نویسی ، کار بسیار سخت و زمانبری است.

- متوسط حقوق مورد نظر برنامه نوسان خوب ، اغلب توسط کارفرمایان قابل توجیه نیست.

- برنامه نویسان خوب اغلب ترجیح می دهند در منزل کار کنند و نه در محل شرکت!

- به نظر می رسد از نظر اقتصادی ، استخدام برنامه نویسانی که توانایی ، پشتکار و علاقمندی به فراگیری یک زبان برنامه نویسی مورد نیاز کارفرما را دارند ، با صرفه تر از استخدام برنامه نویسی است که به آن زبان کاملا مسلط است.

براستی چرا یافتن برنامه نویسان خوب دشوار است؟ شاید یکی از علل اصلی این مطلب آنست که وقتی یک برنامه نویس خوب به استخدام شرکتی درآمد ، کارفرما نهایت تلاش خود را بکار خواهد بست تا از وی برای مدتهای دراز و سالیان طولانی استفاده کند.در واقع وضعیت عرضه و تقاضا این موضوع را در کنترل خود دارد.

همچنین ببینید:
A Guide to Hiring Programmers: The High Cost of Low Quality

دسته‌ها: Uncategorized
برچسب‌ها:

پنج ابزار کارآمد Firefox برای توسعه دهندگان وب

می 29, 2008 · 2 دیدگاه

در این پست تعدادی از ابزارهای قابل الحاق به FireFox رو که توسط توسعه دهندگان وب مورد استفاده قرار می گیرد ، معرفی خواهد شد:

1- Fireshot این الحاقیه ، امکان عکس برداری از صفحات وب رو براتون میسر می کنه و ویژگی متمایز کننده اون در مقایسه با سایر الحاقیه ها ، وجود امکانات ویرایش تصویر هست.

س

2- Web Developer یک ابزار واقعا جالب که امکان فعال سازی و یا غیر فعال کردن کدها ، CSS ها و در نهایت سفارشی کردن محتویات صفحات رو بهتون میده.

ش

3- SeoQuake این الحاقیه امکان مشاهده ویژگیهای SEO مربوط به سایت رو براتون فراهم می کنه.ویژگیهایی همچون Page Ranking از جمله این مشخصه ها هست.

ب

4- GreaseMonkey ابزاری که میتونید با استفاده از اون ، تاثیر اسکریپتها رو در ظاهر سایتها به آزمون بگذارید.

س

5- ColorZila از این الحاقیه میتونید برای برداشتن رنگ مورد نظر در صفحاتیکه بنظرتون از ترکیب رنگی مناسبی استفاده کرده استفاده کنید.این ابزار امکان ذخیره رنگ برداشتی ، بزرگنمایی و کوچکنمایی و همچنین اندازه گیری رو فراهم می کنه.

ی

برگرفته از http://www.dev102.com/2008/05/29/5-more-firefox-plugins-any-web-developer-needs/

دسته‌ها: Uncategorized

IETester یک ابزار مناسب جهت توسعه دهندگان وب

می 29, 2008 · 2 دیدگاه

همانطور که همه توسعه دهندگان وب میدونن ، دو تا از دغدغه های مهم یک طراح ، عبارتند از:

1- اندازه (بویژه عرض) صفحات وب ، بعنوان مثال اغلب طراحان ناچارند تا در زیر صفحات بنویسند که مثلا رزولوشن مناسب تصویر 768*1024 هست و …. گرچه راه حلهایی برای اینموضوع وجود داره.

2- سازگاری کد با براوزرهای مختلف.طبیعیه که همه کاوشگران اینترنتی ، از براوزر یکسان استفاده نمیکنن و همانطور که همه میدانیم ، برخی از انتشارها و یا براوزرها ، ممکنه قادر به اجرای برخی تگها و یا دستورات نباشند.طراحی کد به نحوی که بتونه در همه براوزرها و یا معمولترین اونها بخوبی کار بکنه ، موضوعی هست که میتونه مهارت طراح رو نشون بده و اهمیت داره.

برنامه IETester یک ابزار رایگان برای تست وب سایت شما در انتشارهای مختلف Internet Explorer هست و بویژه این موضوع بررسی سازگار بودن در مورد Javascript ها رو بخوبی انجام میده.

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

http://www.my-debugbar.com/ietester/install-ietester-v0.2.2.exe

دسته‌ها: Uncategorized

هفت عادت برنامه نویسان موفق

آوریل 27, 2008 · 5 دیدگاه

عادت برنامه نویسان

بعنوان یک توسعه دهنده نرم افزار ، ممکنه بخاید بدونید که برنامه نویسان موفق چه عاداتی دارند و چه نکاتی رو رعایت می کنند ، این موضوع میتونه باعث بشه پروژه های مورد علاقتون رو بردارید و تداوم کاری مناسبی رو داشته باشید.در همین راستا سعی کردم مطالبی رو در این زمینه بنویسم:

1 نیازهای خود رو درک کنید: اولین قدم برای موفق بودن در برنامه نویسی اینه که بدونید چطور باید از زمانتون استفاده و اونرو مدیریت کنید و در نتیجه از وقت گذاشتن برای موضوعاتی که هیچ نفعی برای شما نداره خودداری کنید.

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

توجه داشته باشید که وقتی چیزی رو طراحی می کنید ، تصور نکنید اون چیزیکه طراحی کردید ، دیگه آخرشه! بزارید تا چند کاربر نهایی ، همین نسخه دمو رو ببینند و باهاش کار کنند،عکس العمل اونها رو ببینید ، نظراتشونرو بررسی کنید ، و بویژه وقتیکه دارن با دمو کار میکنن ، کنارشون بنشینید و ببینید ، چون در بسیاری موارد ، زمانیکه کاربر نهایی در حال کار هست ، تازه شما می فهمید که چه چیزهایی در رابط کاربریتون کم دارید.

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

3 درک خودتون رو از کد بالا ببرید: زندگی پر از معماهای شگفت انگیزه ، ولی قرار نیست کد شما هم همینطور باشه! بزارید منظورمو واضح تر بگم ، شما لازم نیست بدونید که موتور ماشینتون چطور کار میکنه ، ولی اگر موتور صدایی ناهنجار داشته باشه اونرو نزد تعمیرکار می برید.قرار نیست که کاربر نهایی بدونه پشت رابط کاربری شما چی میگذره ، باید برنامه بدون نقص و ابهام باشه طوریکه کاربر نهایی اونقدر راحت باشه که هیچوقت از خودش نپرسه که این برنامه داره چطور کار می کنه! و برای نیل به این هدف ، اولا باید رابطهای کاربری و فرآیندهاتون در نهایت سادگی و جذابیت باشه و از سویی کمترین اشکال در اجرای کارکردهای تعبیه شده در فرمها وجود داشته باشه که نهایتا منجر به این نشه که وقتی کاربر نهایی با اشکالی مواجه شد شما برین اول براش توضیح بدین که برنامتون چطور داره کار میکنه و حالا به این دلیل و اون دلیل این اشکال ایجاد شده و بعدش برین و اونرو اصلاح کنید.

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

نقطه مقابل این ایده ، اصطلاحا Cut & Copy نامداره! یعنی برنامه نویس ، از جاهای مختلف کد خودش و یا اینترنت ، کدهایی رو که لازم داره در هر جای برنامش که لازمه درج می کنه.و اینکار رو بدون اینکه بدونه اون کددقیقا چطور کار میکنه انجام میده ، من به این کار میگم سر هم بندی که نهایتا باعث میشه وقتی برنامه با اشکال مواجه بشه براحتی و بسرعت نتونید اشکال رو برطرف کنید.اگر هم از این تکنیک استفاده می کنید ، حتما پیش از درج کدها در برنامتون ، اونرو بدقت بخونید و درک کنید و اگر لازمه اونرو تغییر بدید و حتما کامنتهای خودتون رو هم بزارید.

نکته دیگه اینه که هیجوقت تصور نکنید اونچه که نوشتید حتما بهترین روش هست .منظورم اینه که در نقاط مختلف برنامتون شما تابع هایی رو می نویسید که اولش فکر می کنید که بهترین الگوریتم رو داره.بصورت دوره ای همه قسمتهای برنامه رو مجددا بخونید و مطمئن باشید در نگهداری کدهاتون ، همیشه ایده های جدید به ذهنتون خطور میکنه که منجر به اصلاح کدهای قبلی با الگوریتمهای بهینه شده جدید میشه.اینکار رو میگیم Code Cleaning که بخشی از نگهداشت یا Code Maintenance هست.

و نکته آخر اینکه ، هیچوقت اخطارهای کامپایلر رو بی خیال نشید و برعکس اونها رو جدی بگیرید.Compiler Warnings درسته که جریان اجرای برنامه رو مختل نمیکنن ولی وجودشون تاثیر بسزایی میتونه در کارایی برنامه شما داشته باشه بنابر این توصیه می کنم با خوندن اونها و سپس برطرف کردن علتشون ، به Performance کاربرد تولید شده کمک کنید.

4 خودتونرو مدیریت کنید: یکی از ویژگیهایی بارز بسیاری از برنامه نویسان اینه که بدقول هستن و البته این موضوع بدلیل این نیست که ذاتا آدمهای بدقولی باشن بلکه وقتی شروع به کدنویسی می کنن ، زمان رو درک نمی کنن و اصولا اونها از اینکه بهشون بگی : تو باید ظرف 2 ساعت اینکارتو تموم کنی متنفرن.اینکار یعنی مدیریت برنامه نویسی و در نظر گرفتن زمان ، کاریه که خود برنامه نویس باید انجام بده . کارهای روزانتون رو زمانبندی کنید و برای اتمام برنامه نویسیتون زمان بزارین و درست در زمان تعیین شده ، کد نویسی رو رها کنید و به قرارهاتون برسید ، و در تمامی محیطهای توسعه قسمتی بنام To Do وجود داره شما میتونید کارهاییکه داشتید انجام میدادید و بر اساس اون باید ادامه بدید رو اونجا یادداشت کنید تا رشته کد نویسیتون از دستتون در نره! اینطور آدم خوش قولی میشید!

5 آموزش مداوم: هیچوقت تصور نکنید که در محیط توسعه ای که کار می کنید ، زبانیکه با اون برنامه نویسی می کنید و یا پلاتفرم مقصد ، هیچ نیازی به دانش دیگری ندارید.روزانه وقتی رو بگذارید که اخبار و مطالب جدید رو مطالعه کنید و اینکار رو جدی بگیرید.بدون آموزش مداوم شما شانس بسیار کمی برای گرفتن پروژه های بعدی دارید و همچنین موضوع نگهداری و پشتیبانی محصولات تولید شده قبلیتون هم که باید براشون انتشارها و نگارشهای جدید متناسب با نیازهای روز ارائه کنید رو با مشکل مواجه می کنه!

6 احترام : یکی از نکات مهم برای موفقیت در توسعه نرم افزار ، جدیت در کار هست.شما باید علاوه بر جدیتی که در کار با اعضای گروهتون دارید ، به اونها احترام بگذارید و هیچوقت نوعی رفتار نکنید (حتی اگر سابقه بیشتری دارید) که اونها تصویر کنن چون خودتونرو مجرب تر میدونید با اونها خیلی خشک و جدی هستید ، در عین جدیت در کار و رفتارهاتون ، نوعی از احترام و خوش خلقی و بوِیژه پذیرش نظرات اونها با ملایمت رو داشته باشید و خصوصا وقتی انتقادی نسبت به رفتار و یا کد نویسیهاتون میشه ، بهیچ عنوان عجله نکنید و درجا جواب ندید.ازشون تشکر کنید و بگید : مرسی از راهنماییتون ، نکته مهمی بود ، در موردش فکر میکنم.واینکار رو بکنید ، در موردش فکر کنید و در یه فرصت مناسب که افکارتون به نتیجه رسید ، جوابتون رو به اون بگین.برنامه نویسهای حرفه ای اونقدر درگیر پیچیدگیهای کد نویسیهاشون هستن که معمولا عجله میکنند در اینگونه رفتارهای اجتماعی و در نتیجه روابط خوبی نخواهند داشت.
7به ظاهر خودتون برسید و تصور نکنید که صرف اینکه برنامه نویس ماهر و با سابقه ای هستید اجازه دارید موهای درهم و برهم داشته باشید و یا لباس نامناسب بپوشید و…. حداقلهای یک زندگی اجتماعی رو عرفا رعایت کنید.
در انتها چند تا تصویر جالب هم براتون میزارم که خالی از لطف نیست:
جوک1
جوک 2

دسته‌ها: Uncategorized

رویکرد نه چندان جدید اما دلچسب توسعه وب

آوریل 26, 2008 · نوشتن دیدگاه

Visual Web Gui
همیشه یکی از دغدغه های توسعه دهندگان نرم افزار های Desktop این بوده که آیا راهی وجود داره که بتونیم با کمترین زحمتی ، برنامه های Desktop و یا عامیانه تر بگیم WinForm خودمون رو بصورت Web Application و یا WebForm در بیاریم؟
خب بدلیل اینکه اینکار تا مدتها ممکن نبود ، بسیاری از توسعه دهندگان نرم افزار ، پس از مدتی بسراغ محیطهای Cross-Platform مانند J2EE میرفتن که بتونن مشکل قابلیت حمل نرم افزار رو حل کنن.
برخی هم ، نرم افزارهاشونرو در دو نگارش تحت ویندوز و تحت وب می نوشتن.یعنی یکی تحت ویندوز و نرم افزار دیگری با ظاهری مشابه و همون قابلیتها بصورت تحت وب.گاهی هم تولید کننده ، نرم افزار اصلی رو تحت ویندوز تولید کرده و تنها برخی از قابلیتهای اونرو که باید از راه دور هم بهشون دسترسی پیدا کرد ، در قالب یک رابط تحت وب برای کاربردش تولید می کرده.
حالا بماند که برخی هم هسته اصلی نرم افزار رو در وب تولید می کردند و برای برخی کارها که انجامش در وب امکان نداشت و یا هزینه بالایی داشت ، یک رابط تحت ویندوز می نوشتن.
این موضوع برای خود من هم یک دغدغه اساسی بوده و راستش رو بخاین تمامی حالات فوق رو در پروژه های مختلف تجربه کردم.پروژه اصلی بصورت ویندوز و یک پروژه مشابه تحت وب ، پروژه اصلی تحت ویندوز و تنها یک رابط تحت وب و برعکس و نیز توسعه پروژه از همون ابتدا توسط J2EE.
اما مدتیه که مجموعه ای تحت عنوان Visual Web GUI بصورت Open Source منتشر شده که ایندست مشکلات رو برطرف کرده.
با استفاده از قابلیتهایی که این مجموعه به Visual Studio اضافه می کنه ، شما تمامی طراحی خودتونرو در محیط WinForm انجام میدین و با انجام چند تنظیم ساده ، نرم افزار تحت وب بهمون شکلی که در ویندوز اجرا میشه در براوزر اجرا میشه.انگار که کل پروژه تحت وب طراحی شده باشه.
در واقع با این ایده و مجموعه ، تمامی رویکردهای AJAX براحتی مرتفع شده و شما لازم نیست منتظر بمونید تا پلاتفرمهای AJAX تکمیل بشن تا بتونن امکاناتی رو که یک کاربرد Desktop داره رو تامین کنن چون شما برنامه رو بصورت Desktop طراحی می کنید و VWG اونرو بصورت وب اجرا می کنه.بهمین راحتی!
اما تنها مشکل اینه که سرور باید IIS باشه و قاعدتا هم روی Windows Server.اما من مطمئن هستم بزودی قابلیت نصب روی سایر سیستمهای عامل هم فراهم میشه همانند Net Framework که بزودی بر روی سیستمهای عامل دیگه هم ارائه خواهد شد.
برای آشنایی با این قابلیتها میتونید به سایت مربوطه مراجعه کنید:
http://www.visualwebgui.com

دسته‌ها: برنامه نویسی/کد نویسی یا توسعه

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

آوریل 25, 2008 · 3 دیدگاه

برنامه نویسی برای موبایل
این پست پاسخ به کامنت یکی از دوستان هست که پرسیدن کدوم مسیر رو برن.
در درجه اول اونچه در طی میک مسیر علمی و انتخاب اون اهمیت داره علاقه شخص هست و پس از اون میزان پشتکارش در دنبال کردن تازه های اون.
طبیعی در هر دانشی چه علوم رایانه ای و چه غیر اون ، هر شخصی میتونه عضو بهترین ها باشه بشرط اینکه علاقه داشته باشه و پشتکارش هم خوب باشه.
اما میشه این سوال رو از جوانب دیگه هم بررسی کرد:
1- از نظر بازار کاری آینده : بنظر میرسه که بازار توسعه نرم افزار ، از نظر تنوع کاری و میزان تقاضا بسیار بیشتر از شبکه هست.چون شبکه یه بستر هست و بجز سطوح بسیار پیشرفته اون که عناوینی مانند طراحی و نهایتا مشاوره رو در بر می گیره ، ما بقی سطوح اون چندان سخت نیست و بقول عرفی دست در اون زیاد و تنوع کاری در اون کم هست.یعنی کاریهایی که شما میتونید مهارتتونرو در اونها افزایش بدید که خدمات بدین یکسری کارهای مشخصه که کمتر رنگ فن آوریهای نو رو بخودش خواهد گرفت (منظورم اینه که بروز فن آوریهای نو و اصصلاحا جا برای پیشرفت و نو آوری در شبکه کمتر از نرم افزار هست) و از سویی چون یادگیری و خدمات دهی اون نیاز به بهره هوشی بالایی نداره ، دست برای اون زیاد هست و بمقدار کافی در این علوم متخصص داریم و متخصصین این امر بجز دو رشته ای که بالا اشاره کردم لازم نیست دانش فراوونی داشته باشن و یا زحمت زیادی بکشن تا مهارت لازم رو بدست بیارن.بنابر این به نظر می رسه که از این نظر ، توسعه نرم افزار بهتر باشه.
2- از نظر درآمد: این موضوع در ایران و خارج از ایران کمی متفاوته.در ایران بدلیل عدم رعایت حقوق مولفین ، و ازونجاییکه توسعه نرم افزاری بنوعی تولید و تالیف هست ، توسعه دهندگان نرم افزار خیلی با احتیاط یک پروژه رو آغاز می کنن و دستشون برای اجرای هر نوع تولید چندان باز نیست ، توان لازم وجود داره که هر نوع نرم افزاری تولید بشه اما چون امنیتی برای حقوقشون وجود نداره ، سراغ هر کاری نمیرن.بعنوان نمونه ما در ایران به یوتیلیتیهای بسیاری نیاز داریم که البته وقت زیادی هم برای یک حرفه ای نخواهد برد که اونرو تولید بکنه و البته اگر تولید بکنه ، مقدار نیاز اونقدر هست که اگر نرم افزار تولیدی رو به قیمت چند هزار تومان هم بفروشه ، خودش درآمد فوق العاده ای براش ایجاد میکنه ، اما چون کپی رایت رعایت نمیشه و نظارتی هم نیست ، اون همون وقت کم رو هم نمیگذاره! لذا می بینید بسیاری از حرفه ای ها نرم افزارهای اختصاصی تولید میکنن بویژه برای دستگاههای دولتی که مطمئن هستن که این هدف ، چندان تحت تاثیر نقض کپی رایت قرار نمی گیره و درآمدشون تضمین شده هست.از طرفی کار با دستگاههای دولتی بسیار مشکله ، رانت خواری بسیار زیاد هست ، نمیشه براحتی بصورت انفرادی کار کرد و حتی اگر تیمی و در قالب شرکت کار کنید ، وجود رانت و محدودیتهایی مانند تامین ضمانتهای بانکی برای عقد قراردادها و …. مانع از این هست که بتونید براحتی کار رو انجام بدین مگر اینکه به استخدام شرکتهای بزرگ در بیاید که اونهم به نظر من در آمدش در خور یک برنامه نویس واقعا حرفه ای نیست و شرکتهای انگشت شماری در ایران وجود دارن که به یک برنامه نویس حرفه ای حقوقی در خور توانایی هاش بدن! اما در مورد شبکه اینطور نیست.در حالیکه انجام کارهای مربوط به شبکه چندان مشکل نیست و کسب تواناییهاش هم راحت و سریع انجام میشه ، کار بقدر کافی هست و پولش هم نقد هست و اون همه محدودیتهای دست و پا گیر مانند نرم افزار هم در موردش وجود نداره.
اما من اگر بخام از الان شروع بکنم ، توسعه نرم افزار رو انتخاب می کنم چون:
1- موضوع کپی رایت در ایران در حال نهادینه شدن هست و اگر بخام الان توسعه نرم افزار رو فرا بگیرم تا حرفه ای شدنم اقلا 5 سال وقت دارم و طی این مدت مشکلات کپی رایت تا حد زیادی حل میشه.
2- شما میتونید توسعه نرم افزار رو همزمان با تقویت مهارتهای زبانی خودتون دنبال کنید و سپس حتی اگر امیدی به تولید برای مصرف داخل نداشته باشید ، براحتی میتونید تولید نرم افزار رو برای کشورهای دیگر بصورت اینترنتی انجام بدین.مثلا تولید نرم افزارهای ضد ویروس و یا نرم افزارهای مدیریت شبکه و یا مثلا نرم افزاری مثل Norton Ghost کار چندان پیچیده ای نیست و شما می تونید مشابه اونرو بسازید و به قیمت پایین تری در اینترنت بفروشید.یه سایت انگلیسی راه اندازی کنید ، یه حساب الکترونیک افتتاح کنید و کمی تبلیغات.واقعا بهمین راحتیه و درآمدش هم عالیه! البته باید مطابق با استانداردهای روز طراحی نرم افزارتون رو انجام بدین و نیاز بازار نرم افزار رو بخوبی بشناسید و صد البته اقلا 5 سال کار کرده باشید و در تولید حرفه ای شده باشید.
نکته ای که باید تاکید بکنم اینه که اگر میخاین توسعه نرم افزار رو از امروز آغاز کنید باید چند چیز رو از اول برای خودتون مشخص کنید و در همون راستا هم حرکت کنید و اصطلاحا متخصص در اون انتخابها باشید:
1- سیستم عامل مقصد: از همین ابتدا مطالعات و تجربیاتتونرو متمرکز بر سیستم عامل مشخصی بکنید و از پراکنده کاری بپرهیزید و مطمئن باشید که تمرکز بر روی یکی از سیستمهای عامل خطری رو براتون نداره و نگران این نباشید که مثلا انتخاب لینوکس ،یا ویندوز بعنوان تنها سیستم عامل کاری شما ممکنه آینده نداشته باشه! همیشه بقدر کافی برای هر یک از سیستمهای عامل ، بازار هست که شما نگرانش نباشی.تولید در سیستمهای عامل موبایل بوِزه در حال رشده و من کار روی اونرو توصیه می کنم چون در آینده بازار اصلی تولید و توسعه رو جهت میده!
سیستم عامل پالم
سیستم عامل موبایل
مقایسه سیستم عامل سیمبیان در گوشهای مورد استفاده

2- پلاتفرم و زبان تولید: از همون اول زبان برنامه نویسی خودترونر مشخص کنید و باز هم از پراکنده کاری بپرهیزید.از اینکه در پاسخ به سوال دوستتون بگین که فقط جاوا بلدید نترسید اما جاوا رو مسلط باشید.
3- انتخاب توسعه Desktop و یا Web Application: این موضوع هم اهمیت داره.از همون اول تکلیف خودتونرو مشخص کنید و توصیه می کنم که نگران آینده هم نباشید.بسیاری از همکاران من بدلیل اینکه اینترنت و کاربردهای تحت وب فراگیر شدن احساس نگرانی می کنن و میگن بهتر بریم سراغ برنامه نویسی تحت وب بجای برنامه نویسی تحت سیستم عامل یا همون Desktop Application. بنظر من این تصور اشتباهیه ، در واقع فراگیر شدن وب ، فراگیر شدن کاربردهای تحت وب نیست! هر کدوم جایگاه خودشو داره.اما اتفاقی که در ایران افتاده ، و البته دیر افتاده و این سوء برداشتها رو موجب شده اینه که موضوع استفاده از منابع اطلاعاتی اینترنتی ، بسرعتی که در کشورهای پیشتاز اون رشد کرده در اینجا رشد نداشته و علتش هم محدودیت در پهنای باند بوده.بعبارت دیگر فراگیر شدن سرویسهایی نظیر فیدینگ ، بلاگ و …. در ایران چندین سال با کشورهای پیشتازش فاصله داشته هم بدلیل محدودیتهای پهنای باند و عدم دسترسی به اینترنت پر سرعت و آنلاین و هم بدلیل توانایی پایین عمده کاربران اینترنتی ایرانی به زبان انگلیسی.بنابر این هر کدوم از ایندو محیط رو برگزینید مطمئن باشید بازار آینده اون تضمین شده هست و فقط به علاقه خودتون نگاه کنید و گول ظاهر پر از فریب و اشتباه کاریهای اطرافیان رو نخورید.
مقایسه سیستمهای عامل موبایل
موفق باشید.
سیستم عامل موبایل

دسته‌ها: برنامه نویسی/کد نویسی یا توسعه · پرسش و پاسخ