<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های دکتر نعمتی</title><link>https://virgool.ir/feed/@drneamati</link><description>کارآفرین ، تحلیلگر سیستم ، مدیر پروژه</description><language>fa</language><pubDate>2026-11-12 22:05:05</pubDate><image><url>https://files.virgool.ir/upload/users/40534/avatar/avatar.png</url><title>دکتر نعمتی</title><link>https://virgool.ir/@drneamati</link></image><item><title>بکارگیری برنامه نویس باتجربه: ارزش افزوده ناچیز!</title><link>https://virgool.ir/@drneamati/بکارگیری-برنامه-نویس-باتجربه-ارزش-افزوده-ناچیز-b1bwt5c6hefv</link><description>یکی از نویسندگان و نظریه پردازان مدیریت نرم افزار ، به کرات در مورد نحوه بکارگیری برنامه نویسان وترکیب موثر آنها در پروژه های نرم افزار سخن گفته است .بعقیده Frank Wiles ، همیشه استخدام برنامه نویسان حرفه ای ، منجر به ارزش افزوده بالاتری نمی شود.خلاصه عللی که معمولا توسط وی تشریح می گردد عبارتند از:یک برنامه نویس خوب می تواند بطور میانگین برابر 5 تا 10 برنامه نویس دیگر کارآیی داشته باشد.پیدا کردن برنامه نویسان خوب و با تجربه ، در هر زبان برنامه نویسی ، کار بسیار سخت و زمانبری است.متوسط حقوق مورد نظر برنامه نوسان خوب ، اغلب توسط کارفرمایان قابل توجیه نیست.برنامه نویسان خوب اغلب ترجیح می دهند در منزل کار کنند و نه در محل شرکت!به نظر می رسد از نظر اقتصادی ، استخدام برنامه نویسانی که توانایی ، پشتکار و علاقمندی به فراگیری یک زبان برنامه نویسی مورد نیاز کارفرما را دارند ، با صرفه تر از استخدام برنامه نویسی است که به آن زبان کاملا مسلط است.براستی چرا یافتن برنامه نویسان خوب دشوار است؟ شاید یکی از علل اصلی این مطلب آنست که وقتی یک برنامه نویس خوب به استخدام شرکتی درآمد ، کارفرما نهایت تلاش خود را بکار خواهد بست تا از وی برای مدتهای دراز و سالیان طولانی استفاده کند.در واقع وضعیت عرضه و تقاضا این موضوع را در کنترل خود دارد.</description><category>دکتر نعمتی</category><author>دکتر نعمتی</author><pubDate>Thu, 02 May 2019 14:35:07 +0430</pubDate></item><item><title>رتبه بندی شرکتها : ابزار مدیریتی یا رانت دولتی</title><link>https://virgool.ir/@drneamati/رتبه-بندی-شرکتها-ابزار-مدیریتی-یا-رانت-دولتی-pzvtexu6uhve</link><description>سابقه تشکیل شورایعالی انفورماتیک به سال 1359 باز می گردد.لایحه قانونی تشکیل این شورا ، وظایف این شورا را بشرح زیر بر می شمرد:الف - بررسی و تعیین سیاست‍های لازم جهت سالم‌سازی مراكز و نظام‌های كامپیوتری كشور و جلوگیری از اتلاف منابع مالی و نیروی انسانی و تجهیزات كامپیوتری . ب - بررسی مداوم به منظور تعیین نظام كلی انفورماتیك كشور . ج - تعیین خط مشی و سیاست‍های كامپیوتری به منظور رفع مشكلات و تحول وضع موجود در جهت نیل به نظام مطلوب كامپیوتری كشور . د - بررسی و تأیید طرح‍ها و فعالیت‍های انفورماتیك كشور . ه - بررسی و شناخت سیاست‍های تأمین نیروی انسانی مورد نیاز امور انفورماتیك كشور با همكاری و مشاركت مؤسسات آموزشی ، كامپیوتری ، و سایر ارگان‍های ذیربط . و - سیاست‌گذاری و هماهنگ‌سازی فعالیت‍های پژوهشی در جهت خودكفاسازی كشور در زمینه تأمین افزارگان و دستورگان‍های مورد نیاز با همكاری مؤسسات علمی و پژوهشی و صنعتی . ز - هماهنگی و نظارت بر امور شركت‍ها و سازمان‍های كامپیوتری به ویژه در زمینه چگونگی تأمین قطعات یدكی و تعمیر و نگهداری تجهیزات كامپیوتری . ح - انجام بررسی‌های لازم برای وحدت امور و انفورماتیك كشور .بنظر می رسد تشکیل این شورا در آن مقطع ، بیشتر بعلت آن بوده که عمده سیاستگذاریها ، مدیریت و بویژه افزارهای رایانه ای اعم از نرم و سخت ، در کشور متعلق به شرکتهای خارجی خصوصا IBM و NCR و… بوده و تاسیس آن شورا پیش از تصویب این لایحه توسط افرادی که درگیر حل مسایل مربوط به بازمانده های شرکت های رایانه ای در کشور بوده اند پیشنهاد گردید.اما بسان بسیاری از قوانین و مقررات و تصمیمات در کشور ، در همان تاریخ نیز افراد فوق بدون آنکه تحقیق و مطالعه ای جامع در کشورهای پیشرو نموده باشند ، ظاهرا متاثر از ملاحظات انقلابی آنروزها که منجر به تاسیس شوراهای فراوان و نهادهای مختلف انقلابی گردید ، این شورا را تاسیس نمودند.تاسیس چنین شورایی ، بنظر من ، نه در آن زمان توجیه علمی داشته و هم اکنون نیز در فلسفه وجودی آن باید تجدید نظر گردد.یکی از کلیدی ترین وظیفه این شورا که بیشترین زمان کارشناسی شورا به آن اختصاص یافته است موضوع رتبه بندی و احراز صلاحیت شرکتهای رایانه است.این موضوع در دنیا بی نظیر است.موضوع رتبه بندی ، نتیجه تفکر کارشناسان سازمان برنامه و بودجه ، مدیریت و برنامه ریزی سال گذشته و یا همان معاونت برنامه ریزی ریاست جمهوری فعلی است که این سازمان در ابتدا بیشتر با هدف برنامه ریزی پروژه های عمرانی شکل گرفت و از همان بدو تاسیس موضوع رتبه بندی کارشناسان و شرکتهای عمرانی ، ساختمانی و … را در دستور کار خود قرار داد.متاسفانه این تفکر بدون مطالعه و لحاظ نمودن تفاوتهای دو رشته عمران و رایانه ، به این حوزه نیز وارد گردید.در حال حاضر شورای فوق ، شرکتها را بر اساس نیروی انسانی ، درآمد و مالیات پرداختی رتبه بندی می کند ، یعنی شرکتهایی که کارمند بیشتر و درآمد بیشتری دارند ، رتبه بالاتری کسب می نمایند.و بر اساس قوانین موجود این شرکتها قادرند تا قراردادهای  بزرگتری را با دستگاههای دولتی به امضا برسانند.نگاهی به این نوع قانونگذاری و در کنار آن جدول رتبه و سقف قراردادها ، شما را به چند نکنه رهنمون می سازد.عملا با توجه و وضعیت موجود تنها  چند شرکت محدود که شاید تعدادشان از انگشتان دستان شما کمتر باشد قادر به اجرای پروژه های نرم افزاری بزرگ هستند ! جالب است بدانید که بدترین پروژه های نرم افزاری نیز توسط همین شرکتها برای دستگاههای دولتی تولید شده اند!و همچنین بد نیست اشاره نمایم که عمده این شرکتها ، خود نیز دولتی هستند!در دنیای نرم افزار ، رتبه بندی شرکت معنا ندارد.در واقع بنظر می رسد دولت باید بجای آنکه بدنبال رتبه بندی می بود ، بدنبال تدوین استانداردها و یا شیوه نامه تدوین قراردادها و RFP می رفت.علیرغم آنکه شخصا با ماهیت وجودی این شورا مخالفم ، اما حتی در صورت وجود این شورا ، بهتر می بود این شورا مبادرت به تدوین استانداردهای حداقل در تدوین قراردادها و ویژگیهای نرم افزاری می کرد(کمی در مصوبات موسوم به 7 برنامه آمده است) و شرکتهای رایانه ای بدون محدودیتهایی از نوع رتبه می توانستند با دولت ، قراردادهای مورد نظر رو اجرا نمایند و تنها محدودیت آنها ، لحاظ نمودن استانداردهای فوق بود.و در این میان ، وظیفه اصلی این شورا ، نظارت بر حسن اجرای استانداردها و یا بهتر است بگویم تدوین راهکارهای نظارت بر تولید پروژه و بویژه روش استاندارد تحویل پروژه های نرم افزاری توسط سازمانهای دولتی از شرکتهای طرف قرارداد می بود.به نظر من نقش و تاثیر عملکرد این شورا در نظام رایانه ای کشور ، تاثیری کاملا منفی و جلوگیری کننده از بروز هر نوع ایده جدید و یا خلاقیت در پروژه های نرم افزاری است ، و این درحالی است که بزرگترین پروژه های نرم افزاری و بعبارت دیگر بزرگترین مشتری برای محصولات نرم افزاری در کشور ، سازمانهای دولتی هستند و علت این امر هم آنست که کشور کاملا دولتی است و عمده این سازمانها در کشورهای توسعه یافته بصورت کاملا خصوصی اداره می شوند.نگاهی گذرا به پروژه های اجرا شده در سازمانهای دولتی ، که مجری آن ، شرکتهای بزرگ ایرانی بوده اند و مقایسه آنها با پروژه هاییکه شرکتهای کوچکتر برای سازمانهای کوچکتر مثلا در استانها ، اجرا نموده اند بخوبی موید این مطلب است که کیفیت پروژه های تولید شده توسط شرکتهای بزرگ در مقایسه با شرکتهای کوچک با در نظر گرفتن حجم کاری ، بسیار ناچیز است!امید است روزی شاهد سیاستگذاری درست در زمینه آی تی در کشور باشیم.</description><category>دکتر نعمتی</category><author>دکتر نعمتی</author><pubDate>Thu, 02 May 2019 14:27:22 +0430</pubDate></item><item><title>طرح جامع فن آوری اطلاعات یا ICT Master Plan</title><link>https://virgool.ir/@drneamati/طرح-جامع-فن-آوری-اطلاعات-یا-ict-master-plan-ahvlh5qfnxdq</link><description>در پاسخ به تقاضای برخی دوستان ، تصمیم گرفتم مختصری در مورد طرح جامع ICT بنویسم.پیش از اون ، لازم میدونم مقدمه ای کوتاه بر وضعیت IT در گذشته و امروز در سازمانهای اداری بگم.در سالهای آغازین ورود رایانه ها به سازمانها در ایران ، تهیه ملزومات اون ، یعنی سخت افزار و نرم افزار و نیروی انسانی متخصص ، بصورتی مشابه با سایر نیازمندیهای سازمان صورت می گرفت.بعنوان مثال ، یک مدیر در سازمان &#34; احساس &#34; نیاز به یکدستگاه رایانه می کرد و سپس تقاضای خرید اونرو می نوشت.این تقاضا نهایتا منجر به پر شدن فرمی بنام &#34;تقاضای خرید کالا&#34; می شد که در اون با هماهنگی و نظر مسوول رایانه آن سازمان و یا شرکتهای خصوصی ، مشخصات رایانه مناسب نوشته می شد.در این مراحل ، اتفاقات متتوعی روی می داد.اولا مشخصات رایانه ها ، دقیق نوشته نمیشد.این موضوع باعث سوء استفاده های مختلفی در مرحله خرید توسط فروشنده و گاهی مامورین خرید می شد.دوم اینکه هنگام درخواست خرید ، هیچ توجهی به نیازمندیهای سازمان نمیشد و تنها ، خرید برای پاسخ به&#34; احساس نیاز&#34; کارمند یا مدیر مربوطه انجام می شد.هیچ برنامه و طرح مشخصی برای توسعه فن آوری در سازمان وجود نداشت.اهدافی که سازمان بصورت کوتاه مدت و دراز مدت باید دنبال نماید مشخص نبوده  و لذا همه امور بصورت لحظه ای تصمیم سازی می شد.فقدان این برنامه ، باعث انجام امور سلیقه ای توسط مدیران کمابیش کم اطلاع از مدیریت شده و این موضوع در کنار تغییر مکرر مدیران سازمانها ، که منجر به تغییر سلایق نیز می گردد ، هزینه های گزافی را برای سازمان به ارمغان می آورد.مدیر اول ، تصمیم می گیرد که فلان سناریوی شبکه را اجرا نماید که هزینه ای بالغ بر 100 میلیون بر سازمان تحمیل می کند.در اواسط اجرای این شبکه 100 میلیونی ، مدیر تغییر کرده و مدیر جدید هیچ اعتقادی به شبکه در حال اجرا ندارد.سازمان تصمیم می گیرد سیستم جدیدی از شبکه را نصب نماید که در این راستا ناچار است حداقل دو سوم از هزینه های انجام شده را نادیده بگیرد و کار را از ابتدا آغاز کند.یعنی در این مثال ساده حدود 60 میلیون خسارت ناشی از برخورد سلیقه ای در تصمیم سازی توسط مدیران به سازمان تحت مدیریت آنها!جالب است بدانیم که شیوه ای که در ادامه در مورد آن توضیح خواهیم داد بیش از 40 سال است که در کشورهای توسعه یافته در حال اجرا است(البته کلیات و روشها ، در مورد جزییات اجرایی روشها ، طبعا تغییراتی ایجاد شده اما اصول کلی همانهاست)روش درست تصمیم سازی برای فن آوری اطلاعات و فن آوریهای مرتبط با آن ، شامل آموزش نیروی انسانی ، خدمات سازمانی ، ساختار سازمانی و… بر اساس مراحل زیر انجام می گردد:1- کلیات اطلاعات سازمان ، شامل توان انسانی ، اطلاعات مربوط به دانش کارشناسان و سطح تحصیلات و توانایی آنها در حوزه آی تی ، سنوات خدمتی آنها ، تعداد و نوع رایانه های سازمان ، تعداد و مشخصات نرم افزارهای فعلی سازمان ، اهداف سازمان ، و…. در قالب مستندی بنام RFI یا Request for Information تهیه شده و به شرکتهای خصوصی که توان علمی و عملی ارائه خدمات مشاوره ای مدیریتی و اطلاعاتی را دارند ارائه می شود تا ایشان نسبت به تهیه مستندی که معین می کند که طرح جامع فن آوری اطلاعات سازمان باید دارای چه چارچوبی باشد و چه مشخصه ای از نیازمندیها را شامل باشد ، و با چه استانداردهایی مستند سازی گردد ، اقدام نمایند.این مستند بنوعی یک RFP یا Request for Project برای تدوین طرح جامع ICT آن سازمان است.اینکار مشمول هزینه ای برای سازمان بوده و لذا ارائه اینگونه اطلاعات در قالب عقد قرارداد با شرکتهای خصوصی و انجام مطالعات کوتاه مدت ،  از سازمان ، به سازمان داده می شود.2- سازمان ، پس از دریافت RFP مربوط به طرح جامع ICT که کامل و دقیق است ، اقدام به برگزاری مناقصه ای برای انتخاب شرکتی می نماید که بتواند طرح مذکور را بر اساس مشخصه نیازمندیهای ارائه شده در RFP تدوین نماید.پس از اینکار شرکت برنده ، تدوین طرح جامع ICT آن سازمان را آغاز می کند ، که اینکار بر اساس مطالعات در عرصه سازمان ، مصاحبه با کارشناسان سازمان ، بررسی امکانات سازمان از نظر سخت و نرم افزاری و نیروی انسانی ، از نزدیک و …. انجام شده و معمولا زمان حداقلی 6 ماهه را می طلبد.نهایتا طرح جامع ICT در قالب مجلداتی ، که مبتنی بر RFP باشد ، به سازمان تحویل می گردد.3- سازمان ، پس از دریافت طرح جامع ICT توسط شورایی تحت عنوان شورای عالی اداری ، یا شورای فن آوری اطلاعات سازمان و یا هر شورایی که اختیارات کافی را دارد ، طرح مذکور را بررسی و نهایتا آنرا تصویب می نماید و مدیر سازمان ، از آن پس ، ملزم به اجرای آن خواهد بود.نحوه هزینه کرد ، نوع تجهیزات ، تعداد ، برنامه مدون آموزشی ، RFP مربوط به خریدهای نرم افزاری و سخت افزاری ، و زمانبندی هر یک به تفصیل در طرح فوق وجود دارد و مدیر ملزم به اجرای آن خواهد بود.شیوه برخورد اخیر ، در مدیریت اجرایی سازمان ، مانع هرگونه تصمیم سازی مدیریتی سلیقه ای یا مقطعی می گردد و حتی در صورت تغییر مدیران ، کسی حق تغییر در ساختار طرح جامع را ندارد و مدیران جدید ملزم به ادامه اجرای مصوبات آن طرح می باشند.برای نمونه ، سر فصلهای یک طرح جامع ICT را برای آشنایی دوستان ، اینجا می گذارم ، امیدورام موفق باشید:?1- فاز اول : برنامه ریزی راهبردی فن آوری اطلاعات:فعالیتهای اصلی:مستند سازی ماموریتهای راهبردی سازمانبیانیه چشم انداز و ماموریت سازمان در زمینه IT   یعنی Mission and Vision Statementاستراتژی IT سازمانعوامل کلیدی موفقیت سازمان در زمینه IT یا CSF:Critical Success Factorsنقاط ضعف و قوت درون سازمانی و فرصتها و تهدیدهای محیطی در زمینه ITبرنامه ریزی کلان فرآیندهاتشریح موقعیت جدید فن آوری اطلاعاتیافتن فاصله ها تا وضع مطلوب-نحوه رسیدن به موقعیت جدیدارائه برنامه?2- فاز دوم:برنامه ریزی معماری سازمانی: شامل دو بخش و هر بخش چندین مرحله:بخش اول: تدوین معماری اطلاعات وضع موجودفعالیتهای اصلی:مدل سازی لایه فرآیندهای کاری وضعیت موجود،  شامل:1- تدوین و ارائه نمودار مفهومی اطلاعات CONOPS:Concept of Operations Graphic2- تدوین و ارائه Activiy Model &amp; Treeمدل سازی لایه اطلاعات وضعیت موجود:مدل سازی لایه برنامه های کاربردی وضعیت موجود: شامل1- ماتریس ارتباط سیستم-مکان2- ارائه معیارهای اندازه گیری کارآیی و اثربخشی سیستمها3- ارائه کارآیی و اثر بخشی هر یک از سیستمهای موجود بر اساس معیارهای فوق4- ارائه شناسنامه کاربردهای موجود سازمان در لایه های کاربرد و دادهمدل سازی لایه داده ها در وضعیت موجوداینکار از طریق Physical Data Model انجام می گردد.مدل سازی لایه تکنولوژیک در وضعیت موجود ، از طریق:1- Physical Node Connectivity Diagram &amp; Description2- Deplyment Diagram3- تهیه شناسنامه برای امکانات سخت افزاری4- تهیه شناسنامه برای امکانات ارتباطی5- تهیه شناسنامه سیستمهای عامل شبکه و ایستگاههای کاری و نرم افزارهای عمومیبخش دوم: تدوین معماری اطلاعات وضع مطلوبفعالیتهای اصلی:مدل سازی لایه فرآیند های کاری وضعیت مطلوبمدل سازی لایه اطلاعات وضعیت مطلوبمدل سازی لایه برنامه های کاربردی وضعیت مطلوبمدل سازی لایه داده ها در وضعیت مطلوبمدل سازی لایه تکنولوژیک در وضعیت مطلوب?3- فاز سوم: تهیه برنامه تحقق وضعیت مطلوب Sequence Plan: خروجیهای این فاز عبارتند از:1- تعریف پروژه های اجرایی مورد نیاز (سیستمهای اطلاعاتی ، تجارت الکترونیک ، ارتباطات ، سخت افزار و ….)2- محدوده و مشخصات فنی پروژه3- هزینه و زمان تخمینی اجرای پروژه4- تکنولوژی مورد نظر ( از قبیل نوع بانک اطلاعاتی ، محیط توسعه و ….)5- تخصص ها و و ویژگیهای تیم اجرایی پروژه6- طرح تضمین کیفیت پروژه7- نحوه ارزیابی پیمانکاران  و مشاوران پروژه8- طرح مدیریت پروژه توسط کارفرما (سازمان پروژه ، ترکیب کمیته های راهبری و تخصصی و وظایف و حدود اختیارات آنها ، نحوه هماهنگی جلسات و مصاحبه های مورد نیاز پیمانکار ، فرمت و دوره های ارائه گزارش پیشرفت پروژه توسط پیمانکار ، نحوه بررسی و تصویب خروجی ها و محصولات پروژه توسط کارفرما)9- برنامه آموزشهای مورد نیاز کارکنان سازمان در زمینه IT10- RFP پروژه ها و اسناد مناقصه هر یکقابل ذکر است مستندات فنی و مدلسازی ها عموما بروش UML پیاده سازی و ارائه می گردد.</description><category>دکتر نعمتی</category><author>دکتر نعمتی</author><pubDate>Thu, 02 May 2019 14:26:35 +0430</pubDate></item><item><title>سه اشتباه کلیدی در سه دهه توسعه نرم افزار ایران - اشتباه سوم</title><link>https://virgool.ir/@drneamati/سه-اشتباه-کلیدی-در-سه-دهه-توسعه-نرم-افزار-ایران-اشتباه-سوم-gxvahz9rnt13</link><description>اما کوتاه مطلبی در مورد اشتباه سومی که بویژه در 3 ساله اخیر در ایران بوقوع پیوسته، موضوع توسعه سیستمها و کاربردهای تحت وب هست.جالبه که بدونید مشکلی که میخام در موردش صحبت کنم ، چندان تازگی نداره و در طول 30 ساله اخیر ، همواره تکرار شده اما اینبار در مورد توسعه کاربردهای وبی!زمانیکه توسعه نرم افزار در ایران از سال 1366 به یکباره پس از پایان جنگ ، شدت گرفت ، تب بالایی از برنامه نویسی با فاکس پرو رو شاهد بودیم.پس از اون ، با ورود اکسس ، به یکباره فراوانی برنامه های تحت اکسس در ویندوز افزایش یافت و این در حالی بود که در همین زمان ، برنامه نویسی با دلفی ، توربو پاسکال تحت ویندوز ، و محیطهای مشابه اون ، سهم بسیار کمتر و قابل اغماضی از بازار ایران رو در دست داشت!با ورود ویژوال بیسیک تحت ویندوز ، و پس از اون یکپارچه شدن محیطهای توسعه میکروسافتی در ویژوال استودیو ، به یکباره شاهد افزایش نجومی برنامه نویسی وی بی در ایران بودیم.بدون مطالعه و امکان سنجی .پس از گرم شدن بازار اینترنت و برنامه نویسی تحت وب ، ابتدا در طول یک بازه زمانی کوتاه میبینیم که  برنامه نویسی با asp و به دنبال اون ASP.Net  بویژه با VB مد میشه!?و حالا ، که محتوای اینترنتی رونق بیشتری پیدا کرده ، همه رو آوردن به PHP اما اینبار با توجیه Open Source بودنش!اما بگذارید خیالتون رو راحت کنم:هیچکدوم از وقایع فوق توجیهی علمی نداشته و حتی توجیه آخری برای PHP یعنی Open Source بودنش هم توجیه مناسبی برای هجوم لگاریتمیک توسعه دهنده ها به اون نیست.اگر کمی دقیق بشیم ، یه لیست مختصر می بینیم:1- فاکس پرو در ایران، زمانیکه زبانهای سی و توربو پاسکال در داس در کشورهای توسعه یافته در راس انتخابها هستند.2- اکسس و VB در ایران، زمانیکه Oracle Power Objects (که فکر میکنم تعداد معدودی این یکی رو در ایران بشناسن و یا بیاد بیارن) و سپس دلفی سهم اصلی بازار توسعه نرم افزار در کشورهای توسعه یافته رو دارند.3- ASP در ایران، زمانیکه جاوا زبان غالب برنامه نویسی وب در کشورهای توسعه یافته هست.4- ASP.Net  با VB در ایران ، درست زمانیکه زبان غالب همسان اون در کشورهای توسعه یافته ASP.Net با #C هست.5- و امروز ، PHP در ایران و کمی Rubby که با ارائه NetBeans و بویژه Eclipse ، جاوا زبان غالب وبی امروز و آینده در کشورهای توسعه یافته هست!فکر می کنم نگاه سریعی به دو سمت این معادلات ، بتونه شما رو به نتیجه مناسب برسونه:ایران کشوری است که تصمیمات در اون :1- عجولانه2- بدون مطالعه3- بدون امکان سنجی4- بدون آینده نگری5- بدون همراهی با جریان توسعه جهانیو….انجام میشه.در یک جمله چند بخشی :اینجا ، همه بدنبال ساده ترین زبان برنامه نویسی هستن که خیلی سریع اونرو یاد بگیرن ، و بتونن در کوتاهترین زمان ممکن کاربردشونرو به مشتری برسونن و بطور خلاصه به پولش برسن!امیدورام روزی در این کشور شاهد انجام پروژه ها بدون تعصب و ملاحظات فوق ، تنها مبتنی بر مطالعات و امکان سنجیهای انجام شده باشیم و مطمئن باشیم رویکرد کیفی به تولیدمون ، شاید زمان بیشتری رو به ما تحمیل بکنه تا پروژه نهایی رو تولید کنیم ، اما با اینکار کیفیت محصول بالا میره ، نگهداریش آسونتره ، امکان رقابت در بازار جهانی رو افزایش میده ، و همچنین شانس ما رو برای استفاده از توان مهندسیمون در خارج و یا صادرات خدمات مهندسی رو افزایش میده.</description><category>دکتر نعمتی</category><author>دکتر نعمتی</author><pubDate>Thu, 02 May 2019 14:25:38 +0430</pubDate></item><item><title>سه اشتباه کلیدی در سه دهه توسعه نرم افزار ایران - اشتباه دوم</title><link>https://virgool.ir/@drneamati/3-اشتباه-کلیدی-در-سه-دهه-توسعه-نرم-افزار-ایران-اشتباه-دوم3-e4v7njdfywwf</link><description>و اما دومین اشتباه که در تاریخ توسعه نرم افزار در ایران بوقوع پیوست ، در ده ساله اخیر ، و پس از فراگیر شدن وب و اینترنت و نهایتا ارائه زبانهای برنامه سازی وب مانند ASP و ASP.Net  و والدهای اونها بوده است.بگذارید ابتدا مقدمه ای کوتاه بگم.اساسا وب برای انتشار اطلاعات در اینترنت ایجاد شد و در پی اون ، تولید نرم افزارهای تحت وب تنها در دو حالت توجیه پیدا می کنه:1- تمامی کاربرد ، از نوع توزیعی باشه.بعنوان مثال ، شما یک کاربرد دارید که قراره افرادی در نقاط مختلف جغرافیایی روی یک یا چند موضوع یا پروژه ، کار ورود اطلاعات ، پردازش اونها و نهایتا انتشار اونها رو انجام بدن.و یا اینکه عملیاتی رو انجام بدن که باید پس از اون ، نتیجه در سایر سیستمهای همکاران که در نقاط جغرافیایی دیگری بوده و از طریق اینترنت بهم متصل هستند دیده بشه.و مسایلی از این دست.مثالهای ایرانی برای این نوع کاربردها ، سیستم ثبت نام سوخت ، ثبت نام و انتخاب واحد دانشگاهها و… هست.نکته حایز اهمیت این هست که در این حالت ، موضوع تنوع سیستم عامل هم قابل توجهه و باید مطمئن باشید که کاربران کاربرد ، ممکنه که سیستمهای عامل مختلفی داشته باشند و از سویی ، برای سهولت کاربری ، نمیخایم که همانند Yahoo Messenger مجبورشون کنیم تا برای دسترسی به خدمات ، برنامه ویژه ای رو دانلود کنند.?2- کاربرد بصورت رابط ارائه میشه: در این حالت نرم افزار اصلی بطور کامل بصورت رومیزی نوشته میشه و فقط قسمتهایی از برنامه که قرار هست خدماتش از راه دور و اینترنت هم قابل دسترسی باشه ، برای اون بخشها ، رابطهای وبی ساخته میشه.اما واضحه که سیستم رومیزی کارایی کاملتری داشته و برخی امکاناتش در رابط وب وجود نداره. اتفاقی که بعنوان اشتباه دوم ، موضوع بحث ماست ، اینه که بویژه پس از ارائه Visual Studio همون برداشتها و استفاده های نا صوابی که در مورد فاکس پرو اتفاق افتاد ، تقریبا همگانی شد.البته یکی از عللی که این موضوع رو داغتر کرد ، تمایل برخی کارشناسان جدیدتر برای ابراز وجود بود ، چون اونها که تازه وارد بازار شده بودند و تجربه حرفه ای برای تولید سیستمهای رومیزی نداشتند ، و در دوراهی تولید سیستمهای رومیزی و یا وبی بودند ، با تصور اینکه وب یک فن آوری نو بوده و علاقمندان زیادی رو بخودش جلب کرده ، پس میایم و شعار میدیم که نرم افزار ما کلا تحت وب هست و از این رهگذر مشتریهای بسیاری جلب خواهیم کرد و هم وب رو بعنوان تخصص اصلیمون بر می گزینیم.من پروژه های زیادی رو در ایران سراغ دارم که در روزهای اولیه ارائه ASP و ASP.Net توسط کارشناسان تازه فارغ التحصیل شده بعنوان اولین تجربه برنامه نویسیهاشون اجرا شده و جالبه که اونها برنامه نویسی وب رو هم با این پروژه های تجاری آموختند.مثلا پروژه چند میلیاردی…. در وزارت…. که توسط دو تن از مهندسین نرم افزار که سرباز آن وزارتخانه بودند تحت وب و با ASP.Net شروع شد.اولین نگارشهای این نرم افزار ، مشخصا نشون میده که برنامه نویسهاش ، حتی الفبای وب رو هم نمیدونن.خلاصه کنم که حتی هم اکنون نیز بسیاری تصور می کنن که سیستمهای تحت وب از رومیزی برتر هست و اینرو از نقاط قوت نرم افزار قلمداد می کنند.در حالیکه از نقطه نظر علمی ، ابتدا باید مطالعاتی رو انجام بدید تا ببینید که نرم افزاری که قراره تولید بشه آیا مشخصه ها و نیازمندیهای وب رو داره و یا نه؟ شاید امکاناتی رو لازم داره که اساسا در وب قابل پیاده سازی نیست.شاید از نظر سهولت کاربری و امنیت و …. بهتر باشه نرم افزار اصلی بصورت رومیزی نوشته بشه (برنامه نویسان ویندوز عادت دارند به این برنامه ها WinForm بگن) و تنها بخشی از امکاناتش در قالب یک رابط وب هم در دسترس باشه.بهر حال تب بالایی برای تولید نرم افزارهای تحت وب ، بدون مطالعات کارشناسی در ایران ایجاد شده و امیدوارم منجر به خسارات زیادی نشه و اطمینان دارم که خسارات این تب ، اگر کنترل نشه از خسارات اشتباه کلیدی فاکس پرو ، بسیار بیشتر و گاها جبران ناپذیر خواهد بود.</description><category>دکتر نعمتی</category><author>دکتر نعمتی</author><pubDate>Thu, 02 May 2019 14:23:36 +0430</pubDate></item><item><title>سه اشتباه کلیدی در سه دهه توسعه نرم افزار ایران - مقدمه</title><link>https://virgool.ir/@drneamati/سه-اشتباه-کلیدی-در-سه-دهه-توسعه-نرم-افزار-ایران-مقدمه-qkizstwnxsfc</link><description>سه اشتباه کلیدی در سه دهه توسعه نرم افزار ایران - مقدمه  سابقه ساخت نرم افزارهای مبتنی بر بانکهای اطلاعاتی به سال 1960 بر میگردد.در اون زمان شرکت Tymshare Corporation برای اولین بار ایده استفاده از سیستمهایی نظیر dbase رو تحت عنوان Retrieve مطرح کرد.این ایده ابتدا توسط مهندسی بنام Jeb Long در آزمایشگاههای Jet  Propulsion Laboratory بکار گرفته شد.این مهندس در اونزمان بر روی یک سیستم مبتنی بر بانک اطلاعاتی بنام JPLDIS (Jet Propulsion Laboratory Display Information System) کار میکرد که با زبان Fortran نوشته شده بود. JPLDIS بزودی مادر نرم افزار نوینی گشت که dbase نام گرفت و بر روی میکروکامپیوترهای CP/M اجرا می شد.بعدها مهندس دیگری بهمراه جب لانگ بنام Wayne Ratliff سیستم dbase رو برای اجرا تحت سیستمهای IBM PC آماده کرد.نرم افزار dbase تماما توسط Assembly نوشته شده بود.رادلیف پیش از کار با جبلانگ از نرم افزاری شبیه آنچه بعدا dbase نامگرفت برای ثبت و بازیابی اطلاعات مربوط به مسابقات فوتبال استفاده کرده بود. جب لانگ Ashton-Tate رو تاسیس کرد و بدین صورت dbase تجاری شد.جب لانگ مدت هشت سال در این شرکت به توسعه dbase تا انتشار نسخه  IV آن پرداخت و پس از آن از شرکت جدا شده و تا کنون بعنوان مشاور مستقل و همچنین نویسنده مقالات فنی برای مجلات تخصصی و همچنین کتب کامپیوتری فعالیت می کند. در سال 1991 شرکت بورلند بدلیل موفیقت dbase در بازار توسعه نرم افزارهای مبتنی بر بانک اطلاعاتی ، شرکت فوق رو خرید و dbase رو تحت شرکت جدیدی بنام dbase Inc توسعه داد.از این پس dbase بذر تولید محیطهای مشابه رو بارور کرد و نهایتا نرم افزارهای مشابهی توسط شرکتهای دیگر تولید شدند که مشهورترین اونها Clipper و Foxbase و Foxpro بودند.?بدلیل اینکه عمده آنچه بعدا در dbase استفاده شد مبتنی بر کدها و ایده های رادلیف بوده ، بهمین دلیل اغلب از ایشان بعنوان پدید آورنده Dbase یاد میشود.?زبان برنامه سازی Dbase ساختاری مشابه پاسکال داشت و چهارمین زبان برنامه سازی دارای مفسر بوده و در آنزمان بسیار عمومیت یافت.بعنوان مثال کد زیر برای تبدیل فارنهایت به سانتیگراد نوشته شده است:INPUT &#34;Enter Fahrenheit  &#34; TO FAHR&#xA;? &#34;Celsius is &#34;, (FAHR - 32) * 5 / 9&#xA;فاکس پرو اولین بار برای محیط داس توسط مهندس خلاقی بنام Dave Fulton در میکروسافت در سال 1989 به بازار عرضه شد و بسرعت تا سال 1995 نگارشهای تحت یونیکس و مکینتاش آن نیز عرضه شد و نهایتا در اینسال میکروسافت Visual Foxpro رو عرضه کرد که محیطی کاملا ویژوال را تحت ویندوز و همچنین مکینتاش ارائه می کرد.Dave Fulton در سال 1995 از میکروسافت بازنشسته شد و عملا پس از اون ،توسعه  VFP با شکست مواجه شد و میکروسافت تصمیم گرفت تا توسعه نرم افزارهایی از ایندست رو با سیستم جدیدی تحت عنوان Office تلفیق و نهایتا MS-Access ارائه شد.?پس از Dave Fulton مدیریت توسعه تیم ویژوال فاکس پرو رو مهندسی بنام Ken Levy ادامه داد که ایشان نیز در سال 2006 پس از ارائه آخرین سرویس پک برای VFP 9 ، میکروسافت رو ترک کرد. گرچه میکروسافت از سال 1995 پروژه اکسس رو برای تداوم درآمدزایی سیستمهایی از ایندست و همچنین ایجاد یک جانشین بالقوه برای ویژوال فاکس پرو آغاز کرده بود لکن بدلیل فراگیر شدن استفاده از فاکس پرو در همان سالهای اول ، و در نتیجه نیاز به پشتیبانی این محصول ، توسعه ویژوال فاکس پرو را تا نگارش 9 در سال 2004 ادامه داد. اما عملا توسعه این محیط در همان سال 2004 در میکروسافت خاتمه یافت و توسعه دهندگان دیگر امیدی به ارائه نگارشهای جدیدی از VFP نخواهند داشت. بنابر این  پروژه VFP مختومه شد.برنامه سازان جدیدتر ، توسعه نرم افزارهای خود را از 1996 بیشتر با Access متمرکز کردند و پس از اون بسرعت Access نیز جذابیتهای خود رو از دست داد و برنامه سازان به MS-SQL Server روی آوردند. هرچند هم اکنون نیز بسیاری از برنامه سازان از موتور اکسس و پرونده های MDB  آن برای ذخیره اطلاعات مربوط به برنامه هاشون بهره می برند اما عمده رابطهای گرافیکی توسط محیطهایی مانند دلفی و ویژوال استودیو تولید میشوند و اکسس تنها بعنوان یک ابزار جانبی مورد استفاده قرار میگیرد. ادامه دارد….</description><category>دکتر نعمتی</category><author>دکتر نعمتی</author><pubDate>Thu, 02 May 2019 14:22:30 +0430</pubDate></item><item><title>برنامه نویسی را چگونه آغاز کنم ؟ قسمت سوم و آخرین قسمت</title><link>https://virgool.ir/@drneamati/برنامه-نویسی-را-چگونه-آغاز-کنم-قسمت-سوم-و-آخرین-قسمت-ydrboiwhbvfh</link><description>برنامه نویسی را چگونه آغاز کنم ؟ قسمت سوم و آخرین قسمت  در پاسخ به کامنتهای دوستان مبنی بر رئوس مطالبیکه باید از شروع تا برنامه نویس تجاری شدن یاد بگیرید اینجا می نویسم.مطالب باید به ترتیبی که گفته میشه فراگرفته بشن و هر مقاطع لازم هم پروژه ای انجام و کدهای زیادی در همون مطلب مرتبط از برنامه ها و کدهای خوب ، خونده بشن:1- ترم 1:مقدمه ای بر برنامه نویسی:شامل ساختار اصلی یک برنامه ، عبارات کنترل برنامه ، حلقه ها ، دستورات شرطی و… در این مرحله نیازی به آشنایی با مفاهیم OOP نیست و تاکید بر عادات خوب برنامه نویسی هست.موضوعاتی از قبیل نکاتیکه باید برای خوانایی کد رعایت بشه و مسایلی از این دست که در برخی پستهای قبلی اشاره کردم.بنظرم میرسه ، زبان VB زبان مناسبی باشه هرچند شخصا Rubby و پاسکال رو توصیه میکنم.منطق برنامه ، مفهوم کلمات کلیدی در زبانهای برنامه سازی ، نحوه و مراحل کد نویسی ، ترجه ، تفسیر تا تولید برنامه اجراییمبانی شبکه و مدیریت سیستم: عمده تمرکز بر روی مفاهیم کلیدی شبکه و همچنین آشنایی کامل با TCP/IP2- ترم 2: شامل:درک مفاهیم Usability  یعنی نحوه شناسایی نیازهای اساسی کاربران نهایی نرم افزار و Accessibilty یعنی نیازهای اختصاصی کاربران.تئوری بانکهای اطلاعاتیمهارتهای اصلی برنامه نویسی: در این مرحله ، دانشجو/نوآموز باید با مفاهیم کتابخانه توابع آشنا باشه و بتونه برای برنامه هاش کتابخانه ایجاد بکنه.روش تهیه این کتابخانه ها و روش تشخیص توابع کتابخانه ای و …. که بتونه توسعه نرم افزار رو تسهیل بکنه از مهارتهای اصلی این دوره هست که باید فراگرفته بشه.-طراحی بروش OOP3- ترم 3: شامل:ساختمان داده : که حتما باید با C آموخته بشه و تمامی عناوینش با جزییات آموخته بشه ، صف ها ، گرافها ، درختهای دودویی ، پشته ، لیستهای پیوندی و ….مستند سازی مشخصه های فنی: در این بخش باید یاد بگیرید که چگونه مشخصه نیازمندیهای کاربر رو دریافت کنید و اونرو به فرمی از مستندات فنی تبدیل کنید.همچنین در این دوره مقدماتی از روش UML گفته میشه.برنامه نویسی کاربردهای مبتنی بر بانک اطلاعاتی و Client/Serverمبانی طراحی صفحات وب: در این زمان باید HTML و CSS و همچنین جاوااسکریپت بطور کامل فراگرفته بشه.4- ترم 4: شامل:اعتبار سنجی داده ها: باید روشهای اعتبارسنجی داده ها و بخصوص مفاهیم Regular Expressions بطور کامل آموخته بشه.برنامه نویسی ++C :  در حد مقدماتیآشنایی با زبانهای برنامه سازی مبتنی بر مفسر: باید قابلیتها و امکانات ، تفاوتها و محل کاربرد هر یک از زبانهای Perl , Ruby , Python  و جاوااسکریپت فراگرفته بشه.طراحی گزارش: در این مرحله باید اصول طراحی گزارش و مفاهیم اون و مدلسازی داده ها برای ساخت گزارش آموخته بشه.5- ترم 5: شامل:زبان ++C پیشرفته کار با OOP و کلاسها و جریانها و ….معماری بانک اطلاعاتی : نحوه طراحی بانک اطلاعاتی متناسب با نوع نرم افزار و پیاده ساطی این طراحی بزبان SQLروشهای توسعه و تولید نرم افزار: باید مفاهیم RUP و فازهای اون و روشهای توسعه نرم افزار اعم از آبشاری ، RAD و … کاملا فراگرفته بشه.6- ترم 6: شامل:برنامه نویسی بزبان جاوا : ترجیحا در محیط Eclipseبرنامه نویسی بزبان VB.Netبرنامه نویسی بزبان #Cمفاهیم امنیت نرم افزار ، قفل گذاری ، محافظت از برنامه و بانک اطلاعاتی و مفاهیمی از قبیل Hack &amp; Crack و همچنین SQL Injection و….7- ترم 7: شامل:برنامه نویسی یونیکس: بهمراه آشنایی با مفاهیم و معماری یونیکسبرنامه نویسی ویندوز بهمراه آشنایی کامل با معماری و مفاهیم ویندوزآنالیز کیفی(QA)مستندسازی: شامل روش و استانداردهای نوشتن توضیحات در داخل کد ، تهیه مستندات راهنمای کاربران و…8- ترم 8: شامل:برنامه نویسی گروهی(تیمی): مهارتهای کار در گروه و کار گروهی ، روشهای مدیریت گروههای نرم افزاری ، بهمراه شرکت اقلا در دو پروژه که بصورت گروهی کار شده باشه.توسعه نرم افزارهای چند رگه ای (multithread)برنامه نویسی گرافیکی و DirectX و OpenGL بویژه با ++Cنحوه نوشتن ابزارگردان یا Device Driverنحوه نوشتن برنامه های شبکه (Sockets) مانند فایروالها ، و….موفق باشید.</description><category>دکتر نعمتی</category><author>دکتر نعمتی</author><pubDate>Thu, 02 May 2019 14:21:16 +0430</pubDate></item><item><title>برنامه نویسی را چگونه آغاز کنم - بخش دوم</title><link>https://virgool.ir/@drneamati/برنامه-نویسی-را-چگونه-آغاز-کنم-بخش-دوم-a9ukbol6hll6</link><description>برنامه نویسی را چگونه آغاز کنم - بخش دوم  یکی از سوالات متداولی که عمدتا توسط نوآموزان پرسیده میشه اینه که چه زبانی رو برای برنامه نویسی انتخاب بکنن که بتونن برای آینده کاریشون روی اون تمرکز بیشتری داشته باشن.پاسخ این سوال بویژه برای دانشجویان اهمیت بیشتری داره. پیش از هر چیز ، لازم میدونم مقدمه ای کوتاه رو بگم.واضحه که اغلب کسانیکه این پرسش رو مطرح میکنن ، قصدشون اینه که بپرسن : چه زبانی رو برای توسعه نرم افزارشون در آینده ، بیاموزند و امیدوار باشن که درآمد بهتری در آینده خواهند داشت؟ بنابراین ، باید مقایسه ها رو بر اساس معیارهایی توضیح بدم که مبتنی بر درآمد باشه.بر این اساس ، شما باید بازار تولید نرم افزار و همچنین نیازهای بازار رو در کشوری که دارید در اون زندگی میکنید و یا کشوریکه میخاید در اون یا برای اون تولید نرم افزار بکنید ، شناسایی بکنید. بعنوان مثال ، در امریکا ، آمار استفاده از جاوا برای تولید نرم افزار های مستقل از سکو ، بسیار بیشتر از ایران هست و در ایران ، مدت زیادی نیست که توسعه دهندگان به این فکر افتادن که نرم افزارهای خودشونرو مستقل از سکو تولید کنن و مثلا برن سراغ زبانهایی همانند جاوا! خب ، بنابر این شما باید اول مشخص کنید که در آینده در نظر دارید که در چه کشوری کار کنید؟ موضوع دوم ، که باید مشخص بشه ، این هست که در اون کشور و یا شاید بهتره دقیقتر بشیم ، در استان و یا شهری که شما قصد دارید آینده شغلیتونرو در اونجا بمونید ، چه تیپ پروژه هایی بیشتر هستند؟ چه صنایعی در اونجا فعالترند و غالب نیازهاشون چیه؟ مثلا در شهرهایی مثل تبریز و اهواز ، که شهرهایی صنعتی بشمار میرن ، شما باید ببینید که نیاز غالب صنایع امروز اونها چیه؟ خب بررسی نشون میده که صنایع این شهرها در دو سطح قابل ارزیابی هستند: اول ، صنایع کوچک و متوسط به لحاظ وسعت مدیریت و درآمد ، که از این نظر ، اونها عمدتا نیازهاشون به نرم افزارهای مالی و همچنین گاهی نرم افزارهای کنترلی هست.طبیعیه که در چنین شرایطی شما بهتره برای رفع نیازهای نوع اول ، زبانهایی مثل دلفی و یا سی شارب رو برای تولید نرم افزارهای رومیزی و ASP.Net رو بهمراه ترجیحا #C برای تولید رابطهای وب مورد نیاز این نرم افزارهای رومیزی انتخاب کنید. اما ، برای رفع نیازهای نوع دوم ، یعنی نرم افزارهای کنترل ، و برنامه ریزی ماشین آلات صنعتی ، عمدتا از زبان ++C و گاهی Lisp استفاده میشه و برای ایجاد رابطهای کنترلی تحت وب اونها هم ترجیحا از همون ++C بصورت نرم افزار وبی CGI استفاده میشه. دوم:صنایع بزرگ هستند که بعید بنظر میرسه که تاکنون در مورد تهیه نرم افزارهای مالی خودشون اقدامی نکرده باشند ، و عمده نیازهای اونها در این مرحله و سالهای پیش رو ، محصولات نرم افزاری ناظر بر مدیریت کیفیت و خدمات خواهد بود.بنابر این در این صنایع ، نیاز اساسی کنونی تهیه نرم افزارهایی از نوع CRM و یا ERP خواهد بود که به نظر من بهتره اگر میخاید از حالا شروع کنید ، جاوا رو انتخاب کنید و بهش مسلط بشید چون نزدیکی زیادی با #C داره و در آینده در صورت نیاز ، مشکل چندانی برای تسلط به اون نخواهید داشت اما مطمئن باشید تسلط به هر دوی اینها باید در برنامه هاتون حتما وجود داشته باشه. گاهی کارشناسان مختلف ، نظرات متنوعی رو ارائه می کنن و من بارها RFP و RFI هایی رو دیدم که واقعا عجیب بود! مثلا برای تولید یک سیستم که صرفا یک سیستم بانک اطلاعاتی از نوع CMS با گرایش پزشکی بود ، یکی از دانشگاههای کشور ، در RFP ارائه شده ذکر کرده بود که باید نرم افزار با Rubby  نوشته بشه! و من واقعا متعجب شدم که وه چه کارشناسان زبده و با تجربه ای باید در این دانشگاه بوده باشند که پس از سالها بررسی به این نتیجه غریب رسیده باشند! و یا گاهی برخی از متقاضیان ، اصرار دارند که نرم افزار باید حتما Cross-Platform باشه.در حالیکه نمیدونن اصولا پیش از اینکه شما RFP رو بنویسی باید ابتدا RFI بدید و پس از دریافت اون ، و همچنین بررسیهای میدانی ، اقدام به تهیه RFP بکنید و در هر کدوم از مراحل فوق ، شما باید به سوالهای زیادی پاسخ بدید مثلا: 1- چه سیستم عاملی هم اکنون در ایستگاههای کاری سازمان مورد استفاده قرار می گیره؟ 2- آیا توجیهی وجود دارد که بخواهیم سیستمهای عامل ایستگاههای کاری رو تغییر بدیم و هزینه این تغییرات از نظر قیمت تمام شده تهیه نرم افزارها ، سخت افزارها و از همه مهمتر منابع انسانی ، آموزش کارکنان و بروز چالشهایی مثل مقاومت در برابر تغییر چه مقدار خواهد بود؟ 3- سازمان قرار هست چند سال از نرم افزار تولید شده استفاده بکنه و بعبارت دیگر Life-Cycle نرم افزار چقدره؟ 4- ….. و خلاصه کنم حتی برای تهیه فهرستی از سوالاتیکه باید یک سازمان بهشون جواب بده تا تازه در مرحله تهیه RFP قرار بگیره ، ابتدا باید ضمن عقد قرارداد ، اقدام به تهیه طرح جامع تحت عنوان طرح جامع فن آوری اطلاعات و یا ICT-Master Plan بکنه. نمیخاستم در پاسخ به سوال ابتدای بحث ، وارد این موضوعات بشم ، اما خیلی خلاصه بگم که توصیه من به دانشجویان عزیز این هست که زبانهای زیر رو به ترتیبی که نوشتم در طول زمان دانشجویی بطور کامل مسلط بشن و مثلا در طول دوره 4 ساله کارشناسی هرکدوم یکسال و نیز اقلا دو پروژه متفاوت رو با اون در این یکسال بنویسن: 1- برنامه نویسی دلفی 2- برنامه نویسی SQL3- برنامه نویسی جاوا4-برنامه نویسی HTML و بدنبال اون ASP.Net با #Cتوضیحات:RFP=Request for ProjectRFI=Request for Information</description><category>دکتر نعمتی</category><author>دکتر نعمتی</author><pubDate>Thu, 02 May 2019 14:20:00 +0430</pubDate></item><item><title>برنامه نویسی را چگونه آغاز کنم - بخش اول</title><link>https://virgool.ir/@drneamati/برنامه-نویسی-را-چگونه-آغاز-کنم-بخش-اول-gtjdfekzs3sv</link><description>برنامه نویسی را چگونه آغاز کنم - بخش اول خب ، این سوالیه که بویژه در 10 سال اخیر در ایران ، بسیاری از دوستان  مکررا از من پرسیدن.خیلی ها از من می پرسن: آقا شما به چه زبانی برنامه  نویسی می کنی؟ و البته منظوزشون از این سوال اینه که بفهمن که مثلا حرفه ای  های امروز به چه زبانی برنامه می نویسن که مثلا اونها هم برن دنبال همون و  مثلا حرفه ای بشن! پیش از اینکه پاسخ سوال اول رو بدم ، طبق عادت ،  بزارید یه مقدار روده درازی بعنوان مقدمه بکنم.متاسفانه تا چند سال پیش در  ایران اصولا کار گروهی و مدیریت تیمهای نرم افزاری و همچنین مدیریت تولید  نرم افزار و چرخه حیات اون و مباحثی از این دست ، موضوعاتی از قبیل  Software Life Cycle Management و RUP و UML اقلا در عمل ، بسیار مهجور  بوده و عمده کسانیکه در حوزه نرم افزار حتی در سطوح حرفه ای (البته بر اساس  تعریف متعارف حرفه ای بودن در ایران که اگر کسی پرسید به اون هم پاسخ  میگم) با اون بیگانه بودند.و عملا در این چند سال اخیر اونهم به سبک سایر  پدیده های نو در ایران مثل موبایل که بیشتر جنبه تجملاتی و تبلیغاتی و ….  داشته ، این یکی هم در این چند سال توسط شرکتها و حتی اونهایی که خودشونرو  برترین شرکتهای نرم افزاری ایران میدونن ، تنها جهت کلاس گذاشتن بوده که  ازش نام میبرن.مثلا شرکت… میگه من نرم افزارمو با UML مستند سازی کردم و  بروش RUP تیمم اونرو تولید کرده و …. بزارید خلاصه بکنم که هنوز هم در  ایران کار تیمی عملیاتی نشده  و تنها فرقش با چند سال پیش اینه که قبلا  اصلا حرفش نبود و کسی نمیدونست ، اما حالا حرفشو میزنن که بگن ما برتریم  چون اینو میدونیم و اسمشو و تعریفشو بلدیم.در همین حد! حالا برگردیم به  پاسخ سوال ، در ایران چون عملا کار گروهی به معنای واقعی خودش منطبق با  استانداردهای جهانی انجام نمیشه ، خودبخود ، توسعه یه نرم افزار ، قائم به  شخص میشه و طبیعیه که یک شخص نمیتونه در چند زبان برنامه سازی بقدر کفایت  مسلط باشه.حالا اینکه این قدر کفایت چیه خودش یه سوال دیگه هست که باز هم  اگر کسی خواست بدونه ، کامنت بزاره و بپرسه تا بگم منظورم چیه.بهمین دلیل ،  هر کی از راه میرسه به من میگه:آقا شما به چه زبانی برنامه می نویسی؟  اما در تیمهای توسعه ، برنامه نویسهای متعددی وجود دارند که هر کدوم در  زبان خاصی تسلط در تمامی جوانبش دارن و علاوه بر این برنامه نویسا ، برنامه  نویسهای مباحث ویژه داریم ، مثلا برنامه نویس متخصص توسعه سیستمهای امنیتی  که بخوبی مباحث امنیتی رو در اغلب زبانها و پلاتفرمها میدونه ، و یا  برنامه نویس بانکهای اطلاعاتی که در اغلب بانکهای اطلاعاتی مسلطه و…. در  چنین وضعیتی ، همه اعضای تیم پس از چند سال سابقه کار ، بدلیل تعامل نزدیک ،  و جلسات مشترک کاری و تبادل نظرها و دیدن و خوندن کدهای اعضای تیم با  ویژگیهایی که گفتم ، نسبت به اغلب محیطهای توسعه نرم افزاری ، نوعی از تسلط  و یا بهتره بگم ، دید ، و نگرشی پیدا می کنن که بسیار ارزشمند تر از اون  نوعی از تسلط برنامه نویسهای انفرادی نسبت به یک یا چند محیطیه که برنامه  نویسی می کنن. تفاوتش با یه مثال ساده قابل فهم تره.مثلا شما در ایران  هنوز می بینید که اجبار داریم که شما باید فورمولها را حفظ باشی ، جدول ضرب  را حفظ باشی و …. در حالیکه با وجود ابزارهای الکترونیکی موجود ، نیازی به  اینکار نیست و اصولا این ابزارها ایجاد شدن تا انسان وقتشو برای ایندست  کارها تلف نکنه و در عوض بره بدنبال موضوعات جدید و بویژه عمقی تر کردن  مفاهیم و نه افزایش محفوظات بلا استفاده! خب من شخصا ، با تاریخ  کامپیوتر از ابتدا بزرگ شدم و طبیعیه که با ورود فن آوریهای جدید و محیطهای  توسعه جدید ، با اونها آشنا شدم و به فراخور زمان و تنوع پروژه های کاری ،  و همچنین تجربه کار تیمی به معنای واقعی ، نمیشه که ما رو که عملا پوسیده  شدیم با انسانهای امروزی با بهره هوشی البته بالاتر مقایسه کرد. من  تصور می کنم ، برای شروع برنامه نویسی ، ابتدا باید یک مختصر از تاریخ  کامپیوتر برای دانش آموز گفته بشه تا اصولا بفهمه که چرا این تنوع بوجود  اومده ، و بفهمه که هر کدوم چه کاربردی دارن.جوابی که من به پرسشگرا می دم  همینه: می گم که من نمیتونم بگم در چه محیطی برنامه سازی می کنم ، چون وقتی  پروژه ای پیش می آید ما ابتدا یکسری مطالعات مقدماتی و امکان سنجی می کنیم  و با توجه به نوع کار ، حجم اطلاعات ، امکانات سخت افزاری ، زمان تحویل  پروژه ، ملاحظات امنیتی و کارایی و نهایتا توان مالی سفارش دهنده ، محیط  توسعه رو انتخاب می کنیم و تیم توسعه کار تولید رو شروع می کنه. برای  نو آموزان ، همانطور که گفتم ، دونستن تاریخ ضروریه تا حتی در صورتیکه  انفرادی کار میکنه بتونه تشخیص بده که کدوم محیط مناسب پروژه هست. پس  از اون ، بهتره که یه سیستم عامل رو برای مقصد انتخاب بکنه.مثلا ویندوز  سیستم عامل مناسبی هست.سپس پیش از اونکه اقدام به تولید پروژه بکنه ، باید  معماری ویندوز Windows Architecture رو از مستندات SDK اون بخونه و طرح کلی  از اون در ذهنش باشه.دونستن کلیات API ویندوز و یا هر سیستم عامل که میخاد  مقصد تولید باشه از ضروریاته.سپس بهتره با یه محیط غیر ویژوال مثل Turbo  Pascal for windows , و یا Microsoft C++ for Windows برخی از نمونه کدهای  موجود در Windows SDK و یا سیستم عامل مقصد رو تجربه کنه تا بتونه فهم  عمیقتری از معماری سیستم عامل داشته باشه. پس از اون ، دانش آموز باید  یکی از محیطهای بانک اطلاعاتی و برنامه نویسی اونرو تجربه کنه که شخصا در  ایران SQL Server میکروسافت رو برای شروع  یادگیری توصیه می کنم. تازه  اینجا ، من شخصا ، میتونم به دانش آموز ، اجازه بدم که بیاد سراغ محیطهای  ویژوال که شخصا ابتدا Delphi رو توصیه میکنم و سپس Visual Studio . حالا بسته به اینکه دانش آموز میخاد که یه توسعه گر Desktop Application باشه و یا Web Application ادامه کار تفاوت داره.  اگر بخاد Desktop Application رو انجام بده ، بهتره که با Visual Studio و  همزمان J2EE کار بکنه که البته من در پست دیگری راجع به J2EE و محیطهای  مناسبش توضیح خواهم داد ، واگر می خاد که Web Application رو ادامه بده ،  باید ابتدا PHP یا Perl و سپس Java Jsp Programming و نهایتا مجوز ورود به  Visual Studio .Net داده می شه. روش فوق یک روش موفقیت آمیز خواهد بود  در صورتیکه دانش آموز علاقمند باشه و پشتکار داشته باشه و همچنین اگر در  ایران هست ، تحت تاثیر اطرافیان نباشه و با اعتقاد و التزام و علاقه ، کار  یادگیری و تمرین رو با پشتکار ادامه بده. </description><category>دکتر نعمتی</category><author>دکتر نعمتی</author><pubDate>Thu, 02 May 2019 14:18:45 +0430</pubDate></item></channel></rss>