چه باید کرد؟

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

موفق باشید.

ناگفته های وب

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

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

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

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

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

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

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


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

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

Objective-J جهشی بلند بسوی خدمات برخط

مدت زیادی از ارائه اولین نرم افزارهای رومیزی مشهور ، بصورت تحت وب و آنلاین نمی گذرد.فتوشاپ آنلاین توسط شرکت آدوبی ، و همچنین Office Live شرکت میکروسافت ، دو نمونه مطرح در این عرصه هستند که خود حرکتی نو در زمینه تولید و توسعه نرم افزار را رقم می زند.
به نظر می رسد با فراگیر شدن اینترنت پر سرعت و سهولت دسترسی به آن در همه جا (البته بجز ایران) ، توسعه دهندگان نرم افزار که همیشه با مشکلاتی چون کنترل کپی نرم افزار ، کپی رایت ، و به روز رسانی نرم افزارها ، پشتیبانی و …. مواجه بوده اند ، را به سمت تولید و توسعه فن آوریهای نرم افزاری خود در محیط اینترنت سوق داده است.
طبیعی است در صورتیکه شما یک اتصال اینترنتی پر سرعت داشته باشید ، طراحی یک تصویر ، روتوش آن ، و یا نگارش متن توسط Word و یا تهیه اسلاید توسط Powerpoint و…. بصورت برخط ، چندان تفاوتی با استفاده از نرم افزار رومیزی (Desktop Edition) آن نخواهد داشت و اساسا یکی از دلایل تداوم توسعه سیستمهای رومیزی تاکنون ، عدم وجود اینترنت پر سرعت ، در همه جا ، و برای همگان بوده است و در صورتیکه این امر محقق گردد ، مسلما شاهد کاهش چشمگیر نرم افزارهای رومیزی خواهیم بود.
استفاده از نرم افزارهای برخط ، موضوع کپی رایت و تامین مالی هزینه های تولید را تا حد زیادی برای تولید کننده ، برطرف می کند.
یکی از جدید ترین این سیستمهای بر خط ، مبتنی بر کتابخانه جاوای Framework-J محصول شرکت ۲۸۰North هست که ۲۸۰Slides نامگرفته است.این نرم افزار برخط تحت وب ، امکان تهیه انواع اسلایدها را ، همانند Powepoint اما بصورت کاملا برخط و تحت وب فراهم می کند و پرونده های تولید شده آن در قالب استاندارد با MS-Powerpoint 2007 هستند.
این سیستم را می توانید در http://280slides.com/Editor ببینید.
امیدوارم سورس آن نیز بزودی منتشر گردد.