رفتن به مطلب
مرجع رسمی سی‌پلاس‌پلاس ایران

جستجو در تالارهای گفتگو

در حال نمایش نتایج برای برچسب های 'توسعه‌دهنده'.



تنظیمات بیشتر جستجو

  • جستجو بر اساس برچسب

    برچسب ها را با , از یکدیگر جدا نمایید.
  • جستجو بر اساس نویسنده

نوع محتوا


آی‌او‌استریم

چیزی برای نمایش وجود ندارد

چیزی برای نمایش وجود ندارد

تالارهای گفتگو

  • انجمن‌های آی او استریم
    • اخبار و اعلامیه‌های سایت
    • اسناد و قوانین مرجع
    • جلسات و دوره‌همی‌های آنلاین
    • پادکست‌های آموزشی
    • معرفی محصولات نوشته شده‌ بومی
    • مرکز نظرسنجی
    • مقالات و اسناد مشاوره‌ای
    • مرکز چالش برانگیز برنامه‌نویسان
    • رمز‌های موفقیت
    • ابزار‌ها و نرم‌افزارهای کاربردی برنامه‌نویسان حرفه‌ای
  • برنامه نویسی در C و ‏++C
    • سوالات عامیانه در رابطه با ++C مدرن
    • کتابخانه‌های استاندارد STL
    • کتابخانه بوست (Boost)
    • کتابخانه کیوت (Qt)
    • کتابخانه‌‌ی SDL
    • کتابخانه‌های گرافیکی Vulkan, OpenGL, Metal, Direct3D
    • کتابخانه‌‌ی OpenCV
    • کتابخانه‌‌ی Cuda
    • کتابخانه‌‌ی OpenMP
    • کتابخانه‌‌ی OpenCL
    • کتابخانه‌های دیگر
    • کامپایلر‌ها
    • کتابخانهٔ SFML
    • ابزار‌ها
  • استارتاپی و کسب‌و‌کار
    • استارتاپ‌ها
    • سرمایه گذاری
    • شتاب دهنده‌ها
    • پارک‌های علم و فناوری و مراکز رشد
    • مصاحبه با استارت‌آپ‌ها
    • قوانین حقوقی
    • داستان‌های موفقیت
    • کارآفرینان و متخصصین
    • مشاوره اجرای کسب‌وکار
    • اخبار حوزه‌ی استارتا‌پی
    • آگهی‌های استخدامی
  • ابزار‌های ساخت و ساز
    • ابزار CMake
    • ابزار QMake
    • ابزار Qbs
    • ابزار Make و Autotools
  • طراحی و توسعه وب
  • طراحی و توسعه وب اپلیکیشن‌ها
    • طراحی و توسعه در Angular
    • طراحی و توسعه در React.JS
    • طراحی و توسعه در Vue.JS
  • طراحی و توسعه موبایل و اِمبِد‌ها و تلوزیون‌ها
    • برنامه نویسی تحت محصولات اپل
    • برنامه نویسی تحت محصولات گوگل
    • طراحی و توسعه تحت محصولات دیگر
  • برنامه‌نویسی سطح پایین و سیستم عامل‌ها
    • سیستم عامل‌های آزاد
    • سیستم عامل‌های تجاری
    • مباحث آموزشی مرتبط با سیستم‌عامل
  • شبکه و اینترنت
    • مباحث و منابع آموزشي
    • سوالات و مشکلات
  • بانک‌های اطلاعاتی
  • برنامه نویسی تحت محصولات اپل
  • برنامه نویسی تحت محصولات مایکروسافت
  • طراحی و توسعه تجربه کاربری (UX) و رابط کاربری (UI)
  • سوالات و مباحث عامیانه
  • سطل آشغال

Product Groups

  • کتاب‌ها و مقالات آموزشی

تقویم ها

دسته ها

  • علمی
  • استارتاپی
  • برنامه‌نویسی
    • زبان‌های برنامه نویسی
    • معماری‌ها
  • کامپایلر و مفسر
  • محیط‌های توسعه
  • طراحی و توسعه‌ی وب
  • مجوز‌های نرم‌افزاری
  • فناوری‌ها
    • پردازش تصویر
    • اینترنت اشیاء
    • پردازش ابری (Cloud Computing)
    • چند سکویی (Cross-Platform)
    • بیگ دیتا (Big Data)
    • هوش مصنوعی (AI)
    • سخت افزار
    • نرم‌افزار و اپلیکیشن
    • اینترنت و شبکه
    • رمزنگاری
    • امبد‌ها (Embedded)
  • طراحی
    • تجربه کاربری
    • رابط کاربری

دسته ها

  • عمومی

دسته ها

  • عمومی
  • گرافیکی
  • شبکه و ارتباطات

دسته ها

  • کامپایلر‌ها
  • محیط‌های توسعه
  • کتابخانه‌ها
  • ماژول‌ها و پلاگین‌ها
  • محصولات بومی
  • کتاب‌ها و مقالات
  • زبان‌ها و ابزار‌ها
  • طراحی و گرافیک

جستجو در ...

نمایش نتایجی که شامل ...


تاریخ ایجاد

  • شروع

    پایان


آخرین بروزرسانی

  • شروع

    پایان


فیلتر بر اساس تعداد ...

تاریخ عضویت

  • شروع

    پایان


گروه


درباره من


شماره تلفن همراه


شناسه گیت‌هاب


شناسه لینکدین


شناسه پیام رسان


شهر


آدرس پستی

4 نتیجه پیدا شد

  1. سلام و درود، این اواخر راجع به مشورت و راهنمایی‌ها خیلی ساده به قضیه نگاه می‌شه، همه فکر کردن کشکه و فقط با دونستن JS یا QML می‌شه محصول ساخت. البته این مثال JS و QML یک مثال هست و این مسئله در همهٔ ابزار‌ها و حول محور حوزهٔ کامپیوتر و نرم‌افزار به چشم می‌خوره، هرچند روی داستان ساده هست اما حتی پشت این کار‌های ساده کلی زمان باید صرف بشه. همین گرفتن یک دادهٔ ساده از سمت سرور و تجزیه کردنش سمت JS نیاز به یک دانش خوب در مورد معماری Api‌داره، نیاز به آگاهی از استاندارد‌های Http داره، نیاز به تخصص کافی در ریز به ریز مسائل داره، نیاز به آگاهی لازم در مورد شبکه و نحوهٔ مدیریتش داره، نیاز به درک خوب راجع به کلاس‌های شبکه و نحوهٔ مدیریت بسته‌ها داره و صد‌ها جور مسئلهٔ دیگه. یا راهنمایی نکنیم یا می‌کنیم همه چیز رو ساده نشون ندیم! به خصوص برای کسایی که سال‌ها یه چیز دیگه خوندن و الآن قراره وارد این حوزه بشن. قشنگ واقعیت رو باید به نمایش گذاشت، و اگرنه به اشتراک گذاری چهارتا UI خفن که بگین با QML هم میشه کاری نداره، سه سوته می‌شه این‌ها رو طراحی کرد. اگر کسی اطلاعات کافی و پایهٔ تخصصی نداشته باشه و همینطور متکی به یک ابزار یا زبان پیش بره چه اتفاق می‌افته؟ از نظر من قطعاً بهتون از نظر تجربی آسیب میزنه، ساخت یک محصول واقعاً به این سادگی‌ها نیست که تو گروه‌های تلگرامی داریم راجع بهش صحبت می‌کنیم! قضیه خیلی پیچیده‌تر از این‌هاست. فراموش نکن در این حوزه اگه یک کار ساده رو سریع انجام میدیم یا به نتیجه می‌رسونیم دلیلش به خاطر سال‌ها زمان و تلاشه، امکان نداره کسی حتی با ۲..۳ سال تجربه یک کار رو سریع بتونه صفر تا صد انجام بده و مشکلی نداشته باشه یا نتیجهٔ اون در سطح یک استاندارد معتبر باشه. ساخت محصول اصول داره که اولین مرحلش شفاف‌سازی و نقشهٔ توسعه و ایده‌پردازی درسته، نباید مثل بعضی از مشتری‌ها باشه که پشت تلفن زنگ می‌زنن می‌گن یه سایت می‌خوایم یا یه اپلیکیشن چند می‌گیری و بعدش شروع کنن به چک و چونه زدن و شما هم کیف کنی بگی که آره دیگه مشتری دارم! شما تا زمانی که جزء به جزء محصول رو آگاه نباشید، یعنی تا زمانی که دقیق متوجه نشید نیاز چی هست و روش حلش رو متوجه نباشید منطقی نیست که واردش بشید. چون همین مرحلهٔ نیاز‌سنجی به قدری مهمه که فرآیند مسیر و نقشهٔ توسعهٔ یک محصول رو نشونتون میده و اگه درست تشخیص ندین و ابزار‌ها و راه‌کار‌ها رو درست انتخاب نکنید بی برو برگرد با مشکل مواجه می‌شید. مشکلاتش می‌تونه به این صورت باشه: - سردرگمی - عدم توانایی کالبد‌شکافی مسئله - عدم توانایی حل مسئله - عدم توانایی انتخاب یک روش یا ابزار صحیح و مناسب - عدم تعامل شما با مشتری - عدم رضایت شما از حق‌الزحمه - عدم رضایت مشتری از نتیجهٔ کار - عدم توانایی در پاسخ‌دهی به اعضا و شرکای کلیدی دیگه در محصولات تجاری و بزرگ! - و هزاران مسئلهٔ دیگه که همشون نتیجهٔ تشخیص نا درسته. - در کنارش مهمترین خاصیتی که پیدا می‌کنه این خواهد بود در اوج نادانی احساس خواهد کرد که همه چیز دان هست! به قولی همه چیز گیگ! از نظر من حداقل مواردی که (به طور خیلی خیلی خلاصه و محدود) نیاز هست تا یک متخصص بتونه پاسخ‌گوی‌ تصمیم‌گیری نقشهٔ توسعهٔ یک محصول برای مشتری در ابعاد مختلف و سطوح متفاوت از حوزه‌های موجود در قالب اصولی باشه به صورت زیر هستند: ۱- آشنا مبانی کامپیوتر که امر طبیعیه (شامل درک و فهم مسائل و نحوهٔ حلشون متناسب با پلتفرم اجرایی محصول) ۲- آشنا به ساختار نوع محصول استاندارد در یک حوزه مثل: وب، آی‌او‌اس، اندروید یا دسکتاپ‌های مختلف مثل لینوکس، مک و ویندوز، اینترنت اشیاء و دیگر موارد. ۳- آشنا به فلسفهٔ بک‌اند و فرانت‌اند یا ترکیبی از این دو به همراه ابزار‌های مناسب. ۴- آشنا به اصول طراحی UI/UX به عنوان یک نیاز و یک فاکتور مهم در ساخت محصولی که وابسته به عملکرد کاربر داره و در حوزهٔ فرانت‌اند مهم و کاربردی هست. ۵- آشنا به اصول SOLID و امثالش مهم هستند. ۶- آشنا اصول برنامه‌ریزی ساخت بانک اطلاعاتی، اینکه از چه بانک اطلاعاتی‌ای استفاده کنی و چرا؟ ۷- آشنا به ارتباطات داده‌ای، جداول و ارتباط بین فیلد‌ها، جدوال و روش‌های درست تبادل اطلاعات مابینی داده‌ها. ۸- آشنا و تسلط کافی به یک محیط توسعه و ادغام ابزار‌ها و محیط طراحی برای هدف. ۹- آشنا به معماری ساختار و رابط‌های برنامه‌نویسی (Api) ۱۰- آشنا به استاندارد‌های Http، درک و مدیریت درخواست، پاسخ‌ها و ... ۱۱- آشنا به الگو‌های طراحی برنامه‌نویسی (DP) ۱۲- آشنا به روش‌های نگه‌داری و آزمایش نرم‌افزار و کد‌ها به خصوص درک مبحث Fault tolerance. ۱۳- آشنا به روش‌های اطمینان‌سازی و ایمن‌سازی پردازش‌های داخلی نرم‌افزار برای جلوگیری یا دشوار سازی نفوز و خراب‌کاری ۱۴- آشنا به روش‌ها و معماری‌های احراز هویت و نحوهٔ ادغامش با نرم‌افزار مثل:JWT, OAuth, AWS و غیره... ۱۵- آشنا به نوع پارادایم‌های زبان برنامه‌نویسی، در قالب‌های (دستوری) Imperative و (اعلانی) Declarative مثل OOP، functional و دیگر موارد. ۱۶- آشنا به سبک معماری نرم‌افزاری (Microservice یا مثلاً Monolith) مزایا و معایبشون. ۱۷- آشنا به سبک معماری طراحی مانند MVC در طراحی بدنهٔ محصول. ۱۸- آشنا به سبک و الگو‌های طراحی ساختاری در بک‌اند مانند Builder، Abstract، Factory و غیره. ۱۹- آشنا به ساختار یک زبان (در صورتی که می‌خواین جوابگوی مسائلِ پیش آمده باشید) کالبد‌شکافی زیر‌پوستی و عمیق یک زبان مهمه. ۲۰- آشنا و درک کامپایلر‌ها و مفسر‌ها، تفاوت‌ها و شیوه‌های عملکردیشون نسبت به کد‌های بهینه شده و عادی. ۲۱- آشنا و درک مدل‌های مختلفی از سیستم‌های توزیع شده مثل IaaS، PaaS، SaaS یا FaaS. ۲۲- آشنا به ابزار‌های ساخت و فرآیند کاری اون‌ها مثل CMake، NMake، QMake و غیره. ۲۳- آشنا به روش‌های مدیریت وابستگی‌های نرم‌افزار و ابزار‌های لازم برای بسته‌بندی بهتر خروجی. ۲۴- آشنا به روش‌های کد‌نویسی قابل آزمایش (Unit Test) و استفاده از ابزار‌هایی مثل CTest, GTest, Catch2 و غیره. ۲۵- آشنا به توسعهٔ آزمون محور (Test Driven- Development) ۲۶- آشنا به گام‌ها و شرایط نسخه‌نگاری و مراحل توسعهٔ نرم‌افزار (SDP) ۲۷- آشنا به روش‌های امنیت در کد و توسعه به شیوه‌های بررسی از طریق Fuzz-Test، Sanitizer، آنالیزر‌های پویا و ایستا و غیره... ۲۸-آشنا به قوائد طراحی بر پایهٔ خدمات مبتدی بر معماری ابری برای خدمات پیامی، وب‌سرویس‌ها، پردازش و غیره. ۲۹- در سطوح وب آشنا به مکانیزم شاخص بندی، فاکتور‌های SEO و شیوه‌‌های درست بهبود صفحات وب. ۳۰- آشنا به روش‌های به کار گیری و پیاده‌سازی ثبت کننده‌ٔ وقایع در دل محصول و روش‌های بازخورد برای توسعهٔ بهتر به همراه مانیتورینگ، نظارت و تریسینگ. ۳۱- در شرایط لزوم آشنا به نحوهٔ به کار گیری و دلیل استفاده از فناوری‌هایی مثل Redis، Memcached و غیره. ۳۲- آشنا و درک صحیح از مفاهیم هم‌زمانی (Concurrency) و روش‌های به کار گیری آن نسبت به زبان برنامه‌نویسی و شرایط مناسب استفاده. ۳۳- آشنا به سبک و قوائد و ساختار زبان‌های برنامه‌نویسی و فرآیند ساخت و ترجمه. ۳۴- و تا صد‌ها گزینهٔ دیگه می‌تونم لیست کنم اینجا که اگه انتخابتون زبان‌های نزدیک به سیستم باشه این داستان در ادامهٔ این توضیحات سر به فلک می‌کشه نمونش کامپایلر‌ها خودشون شونصد جور مباحث دارند، پلتفرم‌ها ومعماری‌های پردازنده‌ای هم در این زبان‌ها مهمن و شما حتی تا عمق سیستم‌عامل و رابط‌های اون‌ها و نحوهٔ رفتارشون باید اطلاعات کافی داشته باشید که هر کدوم به نوبهٔ خودشون هزاران صفحه می‌شه راجع بهشون کتاب معرفی کرد. این لیست چیزی بود که به زبان بسیار بسیار ساده شده و خیلی خلاصه به ذهنم رسید تا بدانید همچین هم الکی نیست ای عزیزانی که فتوا‌های صد من یه غاز میدین و این مسائل رو حل شده می‌دونید! در ادامه اصل ماجرا خیلی فراتر از این‌ها هم هست که بخوای حساب کتاب کنی می‌بینی باید هفت خان رستم رو فتح کنی تا در تمامی سطوح پاسخگو باشی، این امر شدنی هست اما زمانی که شما محدود به یک موضوع باشید قطعاً درک همهٔ مسائل محدود و ناتوان در اجرای آن خواهید شد. * وقتی می‌گم آشنا قطعاً در حد حروف الفبا کافی نیست، باید در حد نیاز تسلط و درک کافی ازشون وجود داشته باشه. * همهٔ این‌ها رو باید در کمترین زمان ممکن نسبت به یک مشتری، محصول و نیاز تشخیص بدین و انتخاب کنید، به این کار می‌گن ارزیابی محصول بر اساس دانسته‌های فنی که تماماً متکی بر دانش و تجربهٔ شماست. (کارشناسی پروژه دقیقاً همین موضوع است). * برای بهتر شدن و حرفه‌ای تر شدن هم باید فراتر از این‌ها پیش برید و در قالب «مثلث دانش» بهبودش بدهید. * محصولات معتبر جهانی حاصلِ چنین نقشه‌های پیش‌بردی هستند و اصول تخصصی و مهندسی رو رعایت می‌کنن تا به یک درجهٔ کیفی موفق و زبان زد می‌رسند. شاید این مسائل از نظر یک برنامه‌نویس ساده و نه چندان با تجربه مهم نباشه، اما در سطح کیفی یک محصول نرم‌افزاری همهٔ این مسائل مهم تلقی می‌شوند. برای همین می‌گم گولِ توصیه‌های ساده و ظاهر چهارتا برنامه یا کیوت، دات‌نت و امثال این ابزار‌ها رو نخورید، پشت همهٔ نیاز‌های یک محصول به فاکتور‌های بسیاری باید توجه کنید. فردا بخواهید بدون آگاهی در این مسائل وارد پروژه‌هایی بشید که به ظاهر ساده هستند یا باید دست به گریبان دیگران باشید و توی گروه‌ها مدام سوأل پرسی کنید و یا باید بیخیال آن شوید؛ چون به هیچ یک از این فاکتور‌های مورد نیاز توسعه توجه نکردین! پس این اصول رو به عنوان سر نخ مطالعه کنید تا بخش بزرگی از سرگردانی‌های شما حل شود. این مواردی که این جا اشاره کردم، همونطور که گفتم بخش بسیار کوچکی از دنیای نیازمندی‌های ساخت و ساز و طراحی یک محصول واقعی در پیرامون نرم‌افزار و کامپیوتر هست، اما یک دل‌گرمی بدم به کسایی که با خودشون فکر می‌کنند چنین مسیر یا نقشه‌ای از راه که قراره پیش بگیرند سخته و همهٔ ماجرا این نیست (جزئیات رو در کتاب‌ها، موقعیت و فرصت‌های شغلی، شکست‌ها، موفقیت‌ها و آزمون و خطاها یاد خواهند گرفت) و نتیجهٔ اون می‌تونه مطابق همین حکایت زیر باشه:
  2. کامبیز اسدزاده

    تفاوت بین کدنویس، برنامه‌نویس و توسعه‌دهنده‌ها

    شما برنامه نویس هستید یا توسعه‌دهنده؟ آیا تا به حال فکر کرده‌اید که چه نوع عنوانی متناسب با مهارت‌های شماست؟ من یک (توسعه دهنده فول-استک هستم) من یک (برنامه‌نویس هستم) من یک (توسعه‌دهندهٔ وب هستم) من یک (توسعه‌دهندهٔ فرانت اند هستم) من یک (توسعه دهندهٔ iOS هستم) و عناوین بسیار زیاد من در آوردی دیگر که ممکن است منظور دقیق از مهارت‌های شما را به درستی مطرح نکنند! من می‌خوام در رابطه با اصطلاحاتی صحبت کنم که شاید بسیاری از علاقه‌مندان از استفادهٔ به جا از آن‌ها بی‌خبر هستند. داستان این مقاله از اینجا شروع می‌شه که امروزه عناوین متعددی در رشتهٔ مهندسی کامپیوتر به خصوص گرایش نرم‌افزار و (برنامه‌نویسی) به چشم می‌خوره که ممکنه باعث سردرگمی بشه. نکته اصلی اینجاست که ما به عنوان صاحب عنوان تخصصی خود باید بدانیم که دارای چه مهارت‌هایی هستیم و در دنیای فناوری تحت چه عنوانی باید خود را در زمینه تخصصی معرفی کنیم. تفاوت بین کدنویس، برنامه‌نویس و توسعه‌دهنده در این پست قصد داریم با اصطلاحاتی آشنا شویم که ممکن برای اکثر افراد غیرمتخصص و گاه متخصص نیز سوال باشد که این عنوان‌ها (کدنویس، برنامه نویس و توسعه‌دهنده) به چه کسانی با چه تخصص‌های گفته می‌شود. ما به عنوان صاحب “عنوان تخصص” خود باید بدانیم که دارای چه مهارت‌هایی هستیم و در دنیای فناوری تحت چه عنوانی باید خود را در زمینه تخصصی معرفی کنیم. در این مقاله تصمیم گرفتم تفاوت‌های بین کدنویس (Coder)، برنامه‌نویس (Programmer) و توسعه‌دهنده (Developer) را مشخص کنم. بنابراین به ترتیب عناوین هر یک از آن‌ها را توضیح و در رابطه با نکات مهم متمایز کنندهٔ آن‌ها اشاره خواهیم کرد. 1.کدنویس (Coder) کد نویس به کسی گفته می‌شود که می‌تواند بدون داشتن مهارت خاص یا حتی رشته مرتبط کدنویسی کند و نیاز به دانش تخصصی و واقعی علوم کامپیوتری ندارد. معمولاً کسانی که دارای تخصص دیگری هستند اما آشنا به منطق برنامه‌نویسی نیستند کُدِر می‌گویند. برای مثال تغییر دادن و یا ویرایش کد‌های از قبل نوشته شده و حتی ایجاد نمونه‌ای از کدهایی موجود به صورت (کپی) که می‌تواند نتیجه‌ای به صورت کار بر روی یک سیستم نرم‌افزاری بر روی وب مانند WordPress یا غیره شود که با کمی تغییرات بر اساس نیاز پروژه خود را به صورت نه چندان حرفه‌ای ایجاد و توسعه نمایند. اصطلاح درست این نوع اشخاص کُدر می‌باشد. 2.برنامه‌نویس (Programmer) برنامه‌نویس به کسی گفته می‌شود که توانایی و تخصص مرتبط با برنامه‌نویسی و علوم کامپیوتری را دارد. به عنوان مثال یک مهندس نرم‌افزار از شاخه مهندسی کامپیوتر که با منطق برنامه نویسی آشنا است برنامه نویس محسوب می‌شود. برنامه‌نویس می‌تواند برنامه‌ای را تحت یکی از زبان‌های برنامه‌نویسی که خود آن را ترجیح می‌دهد برنامه نویسی کند. برای مثال، کلاسی را طراحی و پیاده سازی کرده و توابع مورد نیاز خود را در آن ایجاد و توسعه دهد. برنامه‌نویس می‌داند در کجا باید از چه نوع دستورات و توابعی استفاده کند تا کدِ نهایی او نتیجه‌ای ایجاد کند که از آن انتظار می‌رود. یک برنامه‌نویس توانایی این را دارد که کُدهای نوشته شده توسط دیگر برنامه‌نویسان را بخواند، درک کند و حتی آن‌ها را ویرایش کند. توجه داشته باشید که یک برنامه‌نویس توانایی کنترل و مدیریت کردن بخش‌های بسیار پیچیدهٔ یک محصول را ندارد. برای مثال اگر قرار است پروژه‌ای را طراحی و توسعه نمایید برنامه‌نویس بخش بَک-اِند توانایی مدیریت بخش فرانت-اند (رابط‌کاربری) را ندارد و برعکس! بنابراین برنامه‌نویسان تنها کُدهایی را می‌نویسند که قرار است در بخش مورد نیاز عملیاتی را انجام دهند و کاری به این ندارند که طراحی رابط‌کاربری تحت چه نوع فناوری و زبانی در حل توسعه است و یا ارتباط با پایگاه داده چگونه صورت می‌گیرد چرا که برنامه‌نویسان مرتبط با آن بخش‌ها با استفاده از مهارت های تخصصی خود در آن بخش آن را هندل خواهند کرد. برنامه‌نویسان معمولاً تیم‌های توسعه یک محصول را ایجاد می‌کنند و همگی آن‌ها وابسته یکدیگر هستند بنابراین اگر برنامه‌نویس واحد بک اند شما نتواند به موقع کدهای مورد نیاز بخش فرانت‌اند شما را آماده و تحویل دهد پروژه شما در زمان تعیین شده به نتیجه مطلوبی نخواهد رسید. 3.توسعه دهنده (Developer) در رابطه با توسعه‌دهنده باید به این توجه داشته باشید که توسعه‌دهنده به تنهایی عنوان نمی‌شود. بنابراین توسعه‌دهنده به صورت‌های مختلفی وجود دارند (توسعه‌دهنده وب، توسعه‌دهندهٔ نرم‌افزار، توسعه‌دهندهٔ موبایل که در رابطه با نوع پلتفرم باز متفاوت هستند؛ توسعه دهنده رابط کاربری، توسعه‌دهندهٔ تجربه کاربری و در نهایت توسعه دهنده فول-استک). توسعه‌دهنده کسی است که علاوه بر برنامه‌نویس بودن مهارت و دانش کافی در لایه‌های مختلف پروژه در اختیار داشته باشد که متناسب با نوع تخصص نیز متفاوت است. توسعه‌دهنده کسی است که می‌تواند بر اساس نوع پروژه وظایف خاصی را در اختیار بگیرد به عنوان مثال اگر به صورت تیمی بر روی یک پروژه کار می‌کنید که شامل برنامه نویس هایی است که هر کدام بخشی از پروژه را برنامه‌نویسی می‌کنند کافی است یک توسعه‌دهنده داشته باشید تا تمامی کد‌های شما را آنالیز، اشکال زدائی و بررسی کند و در نهایت آن‌ها را با یکدیگر ارتباط داده و تبدیل به یک پروژه قابل استفاده نماید. چرا که توسعه‌دهنده دانش مورد نیاز در لایه‌های مختلف را دارد و می‌داند بخش‌های مختلف یک محصول نرم‌افزاری یا غیره را که چگونه است و چطور باید برنامه‌نویسی شوند به آن‌ها تسلط دارد. توسعه‌دهنده شخصی است که نباید فقط به یک زبان‌ یا ابزار برنامه‌نویسی اکتفا کند چرا که برای توسعه محصول حتما باید از چند زبان برنامه‌نویسی مورد نیاز در پروژه اطلاعات کاملی داشته و بتواند هر جا که نیاز بود کد‌ای مورد نیاز را توسعه و به نتیجه نهایی تبدیل کند. توجه داشته باشید که یک تیم شامل چندین توسعه دهنده به عنوان یک تیم کاملا حرفه‌ای و زبان زد محسوب می‌شوند برای مثال شرکت‌های بسیار بزرگ نه تنها برنامه‌نویسان حرفه‌ای در تیم خود استخدام می‌کنند بلکه توسعه دهندگانی را از نوع (Full-Stack) در اختیار دارند که مدیریت حساس پروژه را به عهده گرفته و پروژه را با دانشی که دارد به خوبی مدیریت می‌کند و زمانی که جایی پروژه به نکته‌ای برسد که برنامه‌نویسان توانایی حل آن را ندارند توسعه دهنده فول-استک می‌تواند با مهارت‌ها و تجربیات خود آن را حل کند. در رابطه با برنامه‌نویسان فول‌استک و ویژگی‌های این دسته از برنامه‌نویسان را در ادامه آورده شده است. 4.توسعه دهندگان فرانت-اند (UI/UX) این نوع توسعه‌دهندگان برنامه‌نویسانی هستند که مهارت کاملی در رابطه با لایه‌های مختلف و چندین زبان و فناوری‌های مورد نیاز در بخش User Interface و User Experience را دارند و می‌توانند طراحی مناسبی را متناسب با نوع پروژه و تجریبات مشتری ایجاد و توسعه دهند. این نوع برنامه‌نویسان یکی از مهمترین بخش‌های توسعه‌دهندگان در تیم محسوب می‌شوند که شاید تجربیات و بازخورد‌های مشتری را به سمت این نوع توسعه دهنده ارسال کنند. این نوع توسعه دهندگان علاوه بر داشتن دانش طراحی و تجربه کاربری دانش مرتبط با روانشناسی رنگ‌ها و جلوه‌های بصری دارند که آن‌ها را می‌توانند در قالب برنامه نویسی پیاده سازی کنند. 5.توسعه دهندگان بک-اند این نوع توسعه‌ دهندگان برنامه‌نویسان بسیار ماهری در بخش لایه‌های زیرین پروژه یعنی (منطقی) دارند که تمامی اطلاعات لازم را در رابطه با لایه‌های زیرین در اختیار دارند و می‌دانند چطور باید با دیتابیس ارتباط برقرار کنند، می‌دانند چطور باید با API‌های سیستم عامل کار کنند و می‌دانند کد‌های خود را بر اساس نوع ABI‌ و API‌ها چگونه باید مدیریت کنند؛ موارد بسیار زیادی که نیاز است در بخش منطقی یک پروژه ایجاد شود را به تنهایی حل و توسعه می‌دهند تا نتایج آن در اختیار توسعه دهنده فرانت اند قرار بگیرد. اما وظیفه‌ای در رابطه با طراحی تجربه‌کاربری و یا رابط کاربری نداشته و نمی‌توانند در این بخش مانور دهند. از این نوع توسعه دهندگان تنها می‌توان انتظار نوشتن کُدهای بی نقص و عالی در لایه‌های پایین را داشت. 6.توسعه دهندگان فول-استک این نوع توسعه‌‌دهندگان علاوه بر داشتن مهارت‌های مربو به برنامه‌نویسی، توسعه‌دهنده در فرانت‌اند و بک‌اند نیز هستند تجربیات و مهارت‌های بسیار زیادی در شاخه‌های دیگر علوم مهندسی کامپیوتری را دارند که نکته بسیار مهمی است! رسیدن به این درجه از برنامه‌نویسی یعنی یک مهندس کامل کامپیوتر که می‌تواند در تمامی بخش‌های یک پروژه در لایه‌های مختلف نرم‌افزار، سخت‌افزار، شبکه، پلتفرم‌ها و … صاحب نظر باشند و آن را توسعه دهند. یک فول استک به تنهایی می‌تواند رهبری یک پروژه را بر عهده بگیرد و درصورتی که نیاز باشد به تنهایی یک پروژه را از صفر تا صد تولید توسعه و اجرا نماید. این نوع توسعه‌دهنده‌ها یک مهندس واقعی کامپیوتر (نرم‌افزار) هستند که به خوبی می‌دانند یک محصول نهایی باید تحت چه شرایطی توسعه و اجرا شود. البته به این نکته توجه کنید توسعه‌دهنده‌های فول‌استک هم می‌توانند از لحاض محدودیت دسته‌بندی شوند، بعضی از آن‌ها صرفاً در یک حوزه تسلط کافی دارند، مانند Full Stack Web Developer یا Full Stack Android Developer به معنای این است که این گونه توسعه‌دهنده‌ها می‌توانند یک محصول را در سطح وب به طور کامل طراحی و پیاده سازی کند و یا در حوزهٔ ساخت و ساز اپلیکیشن‌های اندروید یک محصول را به طور کامل طراحی و برنامه‌نویسی کند. در غیر این صورت تنها واژهٔ Full Stack Developer می‌تواند پوشش کاملی بر تسلط کامل یک فرد با تخصص‌های بسیار بالا در ساخت و ساز یک محصول در پلتفرم‌های متنوع را بدهد که در یک پست جداگانه قبلاً به آن اشاره کرده‌ام: با توجه به تعاریف مرتبط با عناوین باید سعی کنیم که از اصطلاحات صحیح و عناوین مرتبط با خود استفاده کنیم چرا که در صورتی که شما یک برنامه‌نویس هستید نباید بگویید من یک توسعه‌دهندهٔ وب هستم! این کار باعث ایجاد انتظار از شما خواهد شد که به احتمال بسیار زیاد توانایی انجام آن را نخواهید داشت. حتی برعکس آن ممکن است شما یک توسعه‌دهنده باشید اما بگویید یک کُدر حرفه‌ای هستم! این واقعاً اشتباه است! در این صورت درجه تخصصی خود را به شدت تنزل داده‌اید. در فرصت مناسب‌تری در بارهٔ این موضوع، در قالب یک اینفوگرافیک اطلاعاتی نشر خواهم کرد.
  3. پادکستِ مربوط به شفاف‌سازی تقریبی از مسیرِ توسعه‌دهندگی تحت سی++ و ساخت محصولِ هدفمند زمان مورد نیاز : ۲۰ دقیقه و ۱۱ ثانیه Podcast-03.mp3
  4. کامبیز اسدزاده

    چگونه با مشتریِ خود صحبت کنیم

    با سلام و درود، همه‌ی ما می‌دانیم که امروزه کسب‌و‌کار‌های اینترنتی و وابسته به فناوری‌های مبتنی بر نرم‌افزار، یکی از حوزه‌هایی به شمار می‌رود که در چهارچوب خود می‌توانند پیشرفت بسیار چشم‌گیری داشته باشند. بنابراین، هر فردی که ایده‌ای در ذهن خود برای خلق یک کسب‌و‌کار دارد می‌تواند وارد این حوزه‌ی «کسب‌و‌کار‌های» اینترنتی شود. در این مقاله من به عناوین زیر اشاره خواهم کرد: گفتگوی صمیمانه و آزاد «مشاوره و ارزیابی مسائل» واقعیت‌هایی که مشتریان از آن‌ها آگاه نیستند مشتری را برای مقایسه و دیدن نمونه‌های واقعی تشویق کنید معرفی و توصیف ابزار‌هایی که از آن‌ها برای تولید و توسعه استفاده می‌کنید صداقت شما و تضمین وفاداری مشتری قرارداد، ارزیابی هزینه‌ها و زمان توسعه مشاوره‌ی رایگان یا پولی چگونه از دیگر برنامه‌نویسان و توسعه‌دهندگان متمایز و به یک برنامه‌نویس واقعی و حرفه‌ای تبدیل شویم؟ به‌روز باشید و از رفتار‌های تعصبی بپرهیزید محصولات با کیفیت در سطح جهانی تولید کنید خدمات پشتیبانی، تضمین پاسخگو بودن طبیعی است که راه‌اندازی چنین مواردی نیاز به دانش و مهارت‌های تخصصی در حوزه‌ی مهندسی کامپیوتر، نرم‌افزار و شاخه‌های دیگر آن خواهد داشت. برای مثال: راه‌اندازی یک وب‌سایت برای معرفی کسب‌و‌کار مشتری نیازمند یک فرآیند ارزیابی، استعلام، ثبت، تخصیص فضای میزبانی، طراحی، برنامه‌نویسی، توسعه و پشتیبانی است. در این حالت مشتری می‌بایست با مراجعه به یکی از شرکت‌ها و یا متخصص‌های این حوزه خواسته‌ی خود را به آن ارائه کند تا مطابق با آن کسب‌و‌کار ارزیابی و توسعه یابد. اگر شما به دنبال این هستید که سریعاً مشتری خود را قانع و پروژه‌ای را برای انجام بپذیرید، شک نکنید که احتمال شکست و نارضایتی در هر دو طرف بسیار بالا خواهد بود. ممکن است شما رزومه‌ی بسیار قوی‌ با نمونه‌کار‌های بسیار جذاب در اختیار داشته باشید که مشتری در لحظه‌ی اول به توانایی‌های شما مطمئن شود. اما این به تنهایی کافی نیست! گفتگوی صمیمانه و آزاد «مشاوره و ارزیابی مسائل» در این مقاله من به برخی از مشکلات مهمی که مشتریان در ابتدای کار با آن مواجه هستند می‌پردازم که عبارتند از: عدم شناخت کافی به ابزار‌ها، روش‌ها، الگو‌ها و حتی افراد و شرکت‌های انجام دهنده‌ی این خدمات. جالب است بدانید که مشتری بر اساس دانسته‌ها، شنیده‌ها و همچنین دیده‌های خود از الگو‌های نه چندان ارزیابی شده تصویری را از کسب‌و‌کار خود ترسیم می‌کند که کاملاً خام است که اگر توسط متخصصین مورد بررسی قرار نگیرد ممکن است به مسیر نادرست و نا آگاهانه‌ای هدایت شوند که نتیجه‌ی آن به جز ناامیدی و نا رضایت مشتری نخواهد بود. بنابراین اگرچه دنیای طراحی و توسعه‌ی نرم‌افزار می‌تواند همه‌گیر باشد، اما واقعیت آن است که «باید کار را به کاردان سپرد» کاردان‌هایی که می‌توانند با مورد ارزیابی قرار دادن ایده‌های ذهنی مشتری آن را درک، هدایت و بهبود بخشد. من در بسیاری از جلسات کاری خودم برای شنیدن خواسته‌های مشتری نسبت به طرحی که در ذهن خود داشته این مشکلات را به خوبی دیده و درک می‌کنم. به عنوان مثال: مشتری در ابتدای کار مایل به بیان سریع تصویری از ایده یا راه‌کار خود برای توسعه‌ی کسب‌و‌کاری است که شامل استراتژی کامل و نهایی شده‌ای نیست. البته من اطمینان می‌دهم این اشتباهات طبیعی بوده و یکی از وظایف برنامه‌نویسان حرفه‌ای این است که با متکی بودن به علم روان‌شناسی و هم‌دلی در شنیدن خواسته‌های مشتری سعی در تأیید همراه با اصلاح و هدایت آن به بهترین سمت ممکن باشد. در نظر داشته باشید که احتمال بسیار زیادی وجود دارد که ابتدای کار در همان دقایق اولیه جلسه مطالبی را از مشتری خود بشنوید که واقعاً در کسب‌و‌کار او نیاز نیست و یا حتی فراتر و متفاوت‌تر از آن چیزی است که در عمل باید به آن متکی بود. حتی در همان دقایق اول احتمال بسیار زیادی دارد که از مشتری چنین سوألاتی را بشنوید «شما بابت این کار چقدر هزینه می‌گیرید؟» البته این نوع سوألات حتی در پشت تلفن نیز پرسیده می‌شود، اما برای اینکه ارزش کار خودتان را حفظ کنید توصیه می‌شود هیچ‌گاه بدون ارزیابی و اصول حرفه‌ای در شنیدن خواسته‌ی مشتری خود نه قیمت و نه زمانی برای انجام درخواست ارائه ندهید. این روشی ناشیانه است که معمولاً افراد غیر متخصص به کار می‌گیرند. بنابراین توصیه می‌شود صحبت‌ها و ایده‌های مشتری خود را با دقت گوش کنید. تأکید می‌کنم به هیچ عنوان ایده‌ی مشتری خود را سریعاً نکوبید و آن را رد نکنید «این امر موجب می‌شود مشتری نظرش در مورد شما تغییر کند» این روش در شأن متخصص حرفه‌ای نیست. چرا که یکی از وظایف مهم شما ارائه‌ی یک راهکار و مشاوره‌ی مفید قبل از اخذ قرارداد و انجام آن است. سعی کنید سوأل‌هایی را بپرسید که مشتری خود به آن‌ها فکر نکرده است و با شنیدن آن حتماً نظرش جلب و از بُعد دیگری به کسب‌و‌کار خود و توسعه‌ی آن نگاه خواهد کرد. شما به عنوان مشاور فنی باید بتوانید مشتری را قانع کنید که چه موردی ارزشمند و کدام بخش از خواسته‌های آن ارزش آن‌چنانی ندارد! چرا که مشتری نیاز دارد به مشکلات و ارزش‌هایی که در طرح ذهنی خود وجود دارد آگاه باشد تا به راحتی بتواند یک تصمیم صحیح بگیرد. واقعیت‌هایی که مشتریان از آن‌ها آگاه نیستند قطعاً واقعیت‌هایی وجود دارد که مشتریان از آن‌ها آگاه نیستند، چرا که آن‌ها متخصص و افراد فنی نیستند. بنابراین احتمال بسیار زیاد دارد که مشتری ابتدا نمونه‌ای از خواسته‌های خود را برای شما معرفی کند. به عنوان مثال: معرفی یک نمونه وب‌سایت یا نرم‌افزار (اپلیکیشن) که در نظر او بسیار جذاب و قابل قبول است. تمامی این مسائل وجود خواهد داشت، شما باید در نظر داشته باشید که تفاوت یک نمونه با خواسته‌ی مشتری را شفاف سازی کنید. اگر قرار است بر اساس سلیقه‌ی مشتری با او همکاری کنید بهتر است بدانید شما متخصص نیستید و نتیجه‌ی پروژه‌ای که بر روی آن کار خواهید کرد مطابق میل شما در بُعد تخصصی نخواهد بود. نمونه وب‌سایت مثال زده شده توسط مشتری را در مقابل خود مشتری ارزیابی کنید، اگر شما یک حرفه‌ای باشید قطعاً می‌توانید الگو‌های پیاده سازی شده، روش‌های برنامه‌نویسی، سیستم‌ نرم‌افزاری، بستر‌ها، تجربه‌‌کاربری و رابط‌کاربری آن را بررسی و نظر خود را برای مشتری ارائه دهید. در نظر داشته باشید زمانی که مشتری برای شما نمونه مثالی را ارائه می‌کند که شاید تا حدی با ایده‌ی ذهنی آن یکسان است، شما باید در نظر داشته باشید که اصول اساسی تولید محصولی که در نظر دارد را به او توضیح دهید. مشتری باید بداند که رفتار کاربر‌ها، تجربه‌کاربری، برندینگ و اصول چیده‌مان و همه‌ی موارد دیگر در عین حال سادگی در کاربرد آن چقدر مهم است. تجربه‌کاربری هرچند برای خود یک تخصص کامل است، اما مشتری نیاز دارد تا شما در مورد این نکته‌ها به او یادآوری کنید. اگر شما فقط یک برنامه‌نویس هستید بهتر است مراجعی را برای مشتری و حتی خودتان در نظر بگیرید تا در بهتر شدن محصول مشارکت کند. مشتری را برای مقایسه و دیدن نمونه‌های واقعی تشویق کنید همه‌ی مشتریان شما مانند هم رفتار نمی‌کنند، بعضی از آن‌ها قبل از شما با افراد دیگری صحبت کرده‌اند و بعضی از آن‌ها با شما به عنوان اولین نفر در رابطه با کسب‌و‌کارشان و خواسته‌ی خود در ایجاد آن صحبت می‌کنند. بنابراین سعی کنید مشتری را به دیدن رقبا و نمونه‌هایی که مشابه کسب‌و‌کار آن است تشویق کنید تا بتواند آن‌ها را در واقعیت نیز ببیند. پیشنهاد می‌کنم دو نمونه‌ی مشابه را در مقابل هم مقایسه کنید و برای مشتری توضیح دهید که چه تفاوتی بین ضعف‌ها و قدرت‌ها وجود دارد. معرفی و توصیف ابزار‌ها و فناوری‌هایی که از آن‌ها برای تولید و توسعه استفاده می‌کنید طبیعتاً همه‌ی مشتریان شما با ابزار‌ها، زبان‌های برنامه‌نویسی و دیگر موارد آشنایی ندارند. اما برای جذب اعتماد و افزایش آگاهی مشتری لازم است به توصیف ابزار‌هایی که از آن‌ها استفاده می‌کنید بپردازید. قرار نیست همه‌ی موارد را به صورت فنی توضیح دهید، اما تا جایی که ممکن است به نکته مزیت‌ها و مقایسه‌ی تکنیک‌ها و ابزار‌هایی که قرار است محصول مشتری را با آن توسعه دهید بپردازید تا اون نیز در جریان ذاتِ اصلی محصول خود قرار بگیرد. صداقت شما و تضمین وفاداری مشتری اگر به دنبال جذب مشتری با وفا و مشارکت طولانی مدت هستید، سعی کنید از همان دقایق ابتدائی نظرات خود را بی‌طرف و با صداقت کامل در قالب مشاوره‌‌ی قانع کننده ارائه کنید. قرار نیست در همان جلسه‌ی اول قرارداد اخذ کنید و یا هزینه‌ای بابت کارتان دریافت کنید! اگر احساس می‌کنید مشتری شما به مهارت‌ها و حضور شما ارزش قائل نشده است و به نظرات شما توجهی نمی‌کند خیلی محترمانه سعی کنید وارد این همکاری نشوید. چرا که حرف شنوی از یک متخصص یک ارزش اولیه برای ادامه‌ی همکاری است. ناگفته نماند در مقابل ارزش‌هایی که مشتری به شما می‌دهد، مانند: شنیدن مشتاقانه‌ی نظرات شما، به معنای آن است که این رابطه‌ی کلامی در حل بسیاری از مسائل برای مشتری بسیار مهم بوده و شما از نتیجه‌ی وقتی که بابتِ این مشاوره صرف می‌کنید مطمئن شوید. قرارداد، ارزیابی هزینه‌ها و زمان توسعه قبل از اینکه مشتری به شما بگوید شرایط قرادادی چگونه است، شما نمونه قراردادی را با توجه به نتایج ارزیابی شده از نیاز مشتری آماده کنید. بند‌ها و ماده‌های قرارداد را عادلانه مشخص کنید. تعهدات شما باید به گونه‌ای باشد که مشتری شما از کار مطمئن شود. این قرارداد است که مشخص می‌کند شما چقدر به توانایی‌های خودتان مطمئن هستید. متأسفانه بعضی از توسعه‌دهندگان به گونه‌ای تعهدات را یک‌طرفه و به نفع خود تنظیم می‌کنند که گویی مشتری هیچ حقی در پروژه ندارد! حتی بند‌هایی دیده می‌شود که گاهاً توسعه‌دهنده اعلام کرده است منبع‌کد - سورس‌کد برنامه را با هزینه‌ی بسیار زیاد و جدا از پروژه به مشتری تحویل خواهد داد! به نظر من این یک بی انصافی به تمام معناست! چرا که مشتری پول می‌دهد تا محصول خریداری کند! منطقی‌ترین پیشنهاد از نظر من این است که بر اساس زمان و زحماتی که در ساخت و توسعه‌ی پروژه صرف خواهد شد یک هزینه و زمانِ شفاف برای مشتری ارائه دهید. برای مثال: فاز‌بندی‌های ساخت پروژه در یک جدول استاندارد مانند WBS یا همان «ساختار شکست کار» استفاده کنید. مشاوره‌ی رایگان یا پولی ممکن است با خود فکر کنید که من چرا باید دقیقه‌ها و یا ساعت‌ها وقت صرف مشاوره‌ی کسانی صرف کنم که مشخص نیست مشتری من هستند یا خیر! برای تشخیص این موضوع که آیا مشاوره‌‌های شما در نهایت منجر به همکاری دو طرفه می‌شود یا خیر، کافی است به چند نکته توجه کنید. اول اینکه مشتری یا نماینده‌ای از مشتری به دفتر کسب‌و‌کار شما آمده است یا برعکس شما به دفتر کاری یا یک دیدار دوستانه رفته‌اید! قطعاً زمانی که شما یک دفتر یا شرکت منظمی دارید طبیعی‌ است که زمان خود را باید ارزشمند نگه‌دارید. بنابراین قبل از ورود به مشاوره‌ی اصلی، اشکالی ندارد که بگویید برای ورود به آن هزینه‌ای را دریافت خواهید کرد. به این نکته توجه داشته باشید که، پیش‌مشاوره با مشاوره‌ی اصلی بسیار متفاوت است. در پیش‌مشاوره شما اولین دیدار را با مشتری خود خواهید داشت که در آن قرار است صحبت‌های طرف مقابل را شنیده و از آن برای تجزیه تحلیل آن برای پاسخ در یک زمان مناسب نکته‌برداری کنید. در این نوع صحبت که معمولاً در دیدار اول و مقدماتی شکل می‌گیرد بهتر است هیچ صحبتی از هزینه‌هایی که در ذهن دارید به مشتری انتقال ندهید چرا که در این مرحله «واقعاً نیاز نیست» و شما صرفاً باید یک شنونده‌ی خوب باشید. در نهایت بعد از شنیدن صحبت‌های مشتری، لازم است از او بخواهید تا یک فرصت برای تجزیه تحلیل شنیده‌های او بدهید. همانطور که در ابتدای مقاله توضیح دادم، احتمال اینکه مشتری در همان ابتدای صحبت‌های خود درخواست میزانه هزینه و زمان برای انجام پروژه کند بسیار زیاد است. بنابراین اگر قبل از تجزیه تحلیل مسئله زمان و هزینه‌ای برای آن مشخص کنید، دیگر نخواهید توانست در صحبت‌ها و جلسات بعدی هزینه‌ها و زمان‌بندی مشخصی که بعد از تجزیه تحلیل واقعیت به دست آورده‌اید را به مشتری پیشنهاد و او را قانع کنید و هر چیزی که در سر داشته‌اید را از دست خواهید داد. نکته‌ی کلیدی در این مرحله برای حرفه‌ای برخورد کردن، این است که مشتری را متوجه این کنید که قرار است به او مشاوره و آموزش‌های قبل از ورود به مرحله‌ی ساخت و توسعه‌ی ایده‌ی ذهنی او را بدهید. در واقع قرار است یک ارزش‌آفرینی از این صحبت‌ها برای مشتری ایجاد کنید تا به دانسته‌های خود اضافه کند «این کار برای مشتری شما ارزشمند و قابل قبول است» در این زمان است که شما می‌توانید وارد مذاکره‌ی جدی و حرفه‌ای شوید که شامل آموزش‌ها و توضیحات کامل برای قانع‌سازی مشتری است که قطعاً دارای هزینه و ارزش به خصوصی خواهد بود. بنابراین یک جلسه‌ی دیگر برای مشاوره‌ی جدی با مشتری خود هماهنگ کنید تا نکات کلیدی و اساسی را برای هدایت هر چه بهتر او به مسیر درست و موفقیت را ترسیم کنید. چگونه از دیگر برنامه‌نویسان و توسعه‌دهندگان متمایز و به یک برنامه‌نویس واقعی و حرفه‌ای تبدیل شویم؟ به احتمال بسیار زیاد هر یک از برنامه‌نویسان و طراحان در حوزه‌ی کسب‌و‌کار‌های اینترنتی که در زمینه‌های طراحی، توسعه و تولید محصولات نرم‌افزاری فعالیت می‌کنند، نظر بر این دارند که چون مهارت کار با زبان‌های برنامه‌نویسی را در اختیار دارند و یا رزومه یا نمونه‌کار‌های خوبی را دارند، پس بهترین هستند! متأسفانه من بارها شاهد غرور نابه‌‌جای بسیاری از برنامه‌نویسان بوده‌ام که به شدت این رفتار را در شأن حرفه‌ای ها نمی‌دانم. توصیه می‌کنم به دانسته‌های خود مغرور نباشید و از آنچه که در اختیار دارید به نحو عالی استفاده کنید تا از شما یک حرفه‌ای واقعی بسازد. شرایطی که یک برنامه‌نویس حرفه‌ای می‌تواند داشته باشد به صورت زیر است: تجربه‌ی کافی و پُخته در زمینه‌های تخصصی تحصیلات مرتبط و مطالعات بسیار در حوزه‌ی تخصصی و مرتبط با آن آشنا به اصول مشتری مداری برندینگ، معرفی فردی و تخصصی آشنا به اصول تجربه‌کاربری و سیستم روان‌شناسی مناسب با آن رزومه‌ی خوب و واقعی نمونه کار‌های واقعی و اصولی عدم وابستگی به ابزار‌های محدود در توسعه مدارک و مجوز‌های لازم در حوزه‌ی فعالیتی چهارچوب مشخص و کاتالوگ معرفی خدمات و ارزش‌ها توجه کنید که داشتن مجوز و گواهی‌های فعالیتی در این حوزه بسیار مهم است. اگر شما به عنوان یک متخصص در این رشته فعالیت می‌کنید باید بدانید داشتن مدارک و گواهی‌هایی ملی و بین‌المللی در این حوزه اعتبار خوبی در اختیار شما قرار می‌دهد که مشتری را بیشتر قانع خواهد کرد. پیشنهاد می‌کنم بهتر است خودتان را با یک رزومه‌ی خوب و مجوز‌های لازم از سمت «سازمان نظام صنفی رایانه‌ای کشور» و «مرکز فناوری اطلاعات و رسانه‌های دیجیتال» معرفی کنید. اخذ این گواهی‌ها در صورتی که شما واقعاً یک متخصص هستید در قالب شرکتی یا خصوصی، می‌تواند یک اعتبار لازم در قبال دانسته‌های شما و شرکت شما را در اختیار سازمان‌ها و ارگان‌های دولتی، خصوصی و نیمه‌خصوصی بدهد که اولویت انتخاب در زمان مزایده‌ها نیز با کسانی است که اعتبار لازم را دارند. واقعیت آن است، دریافت پروژه‌های بزرگ نه تنها نیاز به دانش و رزومه‌ی بسیار خوب دارد، بلکه گواهی‌هایی که ثابت می‌کند شما یک متخصص هستید مهم است. این تنها گزینه‌ای است که شما را با افرادی که غیر متخصص هستند متمایز می‌کند. به‌روز باشید و از رفتار‌های تعصبی پرهیز کنید همه‌ی ما این واقعیت را می‌دانیم که در حوزه‌ی صنعت علوم کامپیوتری، فناوری با سرعت بسیار چشم‌گیری در حال تغییر و تحولات بسیار زیادی است. این دلیل موجب می‌شود که در صورت عدم به‌روز‌رسانی اطلاعات و دانش تکنیکی شرکت یا شخص برنامه‌نویس، از دیگر رقبا فاصله بگیرد. متأسفانه در کشور ما شرکت‌ها و برنامه‌نویسان بسیاری هستند که به سبک‌ها و اصولی که در نمونه‌های جهانی از آن‌ها به خوبی یاد نمی‌شوند وابستگی نشان می‌دهند و بر بهترین بودن آن تأکید متعصبانه‌ای دارند. شاید این تأکید‌ها در دید اولیه از جانب مشتری قابل درک باشد، اما واقعیت آن است که نباید خود را محدود به ابزار‌ها و فناوری‌هایی کنید که از آینده‌ی آن بی خیر هستید! به عنوان مثال بررسی آینده‌ای از یک فناوری مانند IoT می‌تواند بسیاری از مسائل را برای شما یادآوری کند که چه ابزار و چهارچوبی می‌تواند برای پیشرفت روز افزون با حداقل محدودیت‌ها مناسب است. در بسیاری از جوامع، وب‌سایت‌ها، گروه‌ها وکانال‌های اینترنتی دیده می‌شود که افراد به ابزار و دانشی که فقط به آن محدود و مسلط هستند شدیداً تعصبی برخورد کرده و آن را بهترین انتخاب می‌دانند. لازم است یادآوری کنیم تعصب بر دانسته‌ها تنها تأیید بر کم دانستن دارد و نه بیشتر! اگر منطقی باشیم یادگیری استاندارد‌های تضمین شده و پایدار، فناوری‌ها، ابزار‌ها و زبان‌های برنامه‌نویسی قدرتمند و آینده‌دار همیشه در پایداری و توسعه‌ی سریع کسب‌و‌کار‌ها موثر هستند. چرا که فناوری در زمان تغییر محیط را نیز تغییر می‌دهد. بنابراین توصیه من در این بخش آن است که در یادگیری ابزار‌ها و زبان‌های برنامه‌نویسی، تکنیک‌ها و آشنایی با استاندارد‌های روز جهانی مصمم باشید و به هیچ عنوان به ابزار‌های محدود به دانسته‌های خود تأکید شدید نکنید مگر با دلیل منطقی و علمی که تضمین کند انتخاب شما دقیقاً هم سو با پیشرفت است. محصولات با کیفیت در سطح جهانی تولید کنید با توجه به توضیحاتی که داده شد، شرکت‌ها و توسعه‌دهندگانی که در حوزه‌ی تولید نرم‌افزار فعالیت می‌کنند، معمولاً محصولاتی را توسعه می‌دهند که در مدیریت کسب‌و‌کار‌های خود و دیگران موثر است. محصولات نرم‌افزاری هرچقدر هم قدرتمند باشند و هرچقدر شما کد‌های منظم و قدرتمندی در تولید آن‌ها نوشته باشید، کد‌های شما از نظر مشتری یا کاربرانی که از آن‌ها استفاده می‌کنند مخفی است. لازم به ذکر است که، یکی از رایج‌ترین اشتباهاتی که نا خواسته در اکثر محصولات ایرانی دیده می‌شود عدم به کار گیری مباحث تجربه‌کاربری و رابط‌کاربری و استاندارد‌های توسعه‌ی مناسب است. حقیقت این است که نمونه محصولات خارجیِ موفق فاقد این ایرادات هستند و در این صورت است که در نظر کاربر بسیار محبوب می‌شوند. هرچند بحث تجاری و تبلیغات رسانه‌ای و جهانی در محبوبیت آن‌ها بسیار مهم است، اما در نهایت این کاربر است که تصمیم می‌گیرد آن را بپذیرد یا خیر. منظور از کاربری صرفاً در زیبایی محیط نرم‌افزاری نیست، بلکه در دسترس بودن امکانات و ویژگی‌هایی که می‌تواند در برقراری ارتباط و وفاداری مشتری شما مفید باشد هم اشاره دارد. بنابراین، اگر شما دید کاربری نداشته باشید و صرفاً با توجه به سلیقه‌های خودتان محصولی را تولید کنید که فاقد اصول کاربری باشد در این صورت است که محصول شما تنها برای خودتان مهم و با ارزش خواهد بود. نکته: اصول استاندارد نسخه‌نگاری نرم‌افزار (محصول) را رعایت کنید و سعی کنید مشتری را در جریان تغییر تحولات و ویژگی‌های اعمال شده در محصول قرار دهید. برای این کار می‌توانید از استاندارد‌هایی مانند نسخه‌نگاری معنایی استفاده کنید. خدمات پشتیبانی، تضمین پاسخگو بودن با توجه به نکاتی که اشاره شد، پشتیبانی و پاسخگو بودن در مراحل بعد از عقد قرارداد، طراحی و تولید محصول، یکی از مهمترین مواردی که در طولانی مدت وفاداری کاربران (مشتریان) شما را تضمین می‌کند، پاسخگو بودن و پشتیبانی است. حتی این موضوع می‌تواند به صورت یک قرارداد جداگانه با شرایط مخصوص خودش برای مشتری بیان شود تا در جریان شرایط و نحوه‌ی پشتیبانی قرار بگیرد. علاوه بر قواعد و قوانین مشتری مداری و توسعه‌ی کسب‌و‌کار، در چرخه‌ی تولید نرم‌افزار نیز مهم است که بازخورد‌های کاربری دریافت و مشکلات احتمالی محصول (نرم‌افزار) را بررسی و حل نمایید. این خود نوعی پشتیبانی و پاسخگویی و ارزش قائل شدن به مشتریان است که در عمل حتی به روش‌های بسیار هوشمندانه می‌توان آن را انجام داد. مشتریان شما در هر زمان که با مشکلی مواجه شوند حق دارند مشکلی که با آن مواجه شده‌اند را به توسعه‌دهنده‌ی محصول انتقال دهند. توسعه‌دهنده با بررسی بازخورد ارائه شده موظف است مشکل مربوطه را بررسی و آن را حل کند. این نکته در جمله‌های مشابه می‌تواند در بخشی از بند‌های قراردادِ بین مشتری و توسعه‌دهنده یادآوری شود. شاید با خود فکر کنید که با چه روش‌هایی می‌توان ارتباط بین مشتری و توسعه‌دهنده را برای حل مشکلی در محصول بررسی و مدیریت کرد، حتی بدون آنکه نیاز باشد به صورت حضوری وقت صرف آن کرد. در این باره پیشنهاد می‌کنم به توضیحات قبلی من در رابطه با ساختن محصول با کیفیت عمیقاً توجه کنید. منظور از توسعه‌ی محصولات با کیفیت آن است که مشتری باید بتواند حتی در بازه‌ی ۲۴ ساعته نظر خود را نسبت به مشکل، انتقاد یا پیشنهادی در رابطه با محصول ارائه کند تا در فرصت مناسب توسعه‌دهنده آن را بررسی کند. معمولاً این فرآیند به صورت سنتی با تلفن و مراجعه‌ی حضوری صورت می‌گیرد، اما توصیه‌ی من برای حفظ زمان و کارآیی بهتر این است که نرم‌افزار (محصول) خود را مجهز به خدمات پشتیبانی آنلاین در قالب سیستم هوشمند مجهز کنید. علاوه بر آن، استاندارد‌های سیاهه‌ی تغییرات (change log) و مشکلات گزارش شده را در محیط نرم‌افزار شفاف سازی کنید تا مشتری هم متوجه اعمال نظرات و انجام آن شود.
×
×
  • جدید...