Software Philosophy
3.43K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
Forwarded from Software Philosophy
شایع‌ترین دلیل تخمین زمان اشتباه یک پروژه

تخمین زمان یک پروژه کار آسانی نیست، مخصوصا اگر بخواهید خیلی دقیق باشید. ولی اغلب موارد مشکل تخمین این نیست که خیلی دقیق نیست، بلکه مشکلش این است که خیلی پرت است!
یکی از شایع‌ترین عواملی که باعث می‌شود تخمین زمانی یک پروژه خیلی اشتباه باشد، تفاوت قائل نشدن بین دو مفهوم خیلی مهم است: «تخمین زمان» و «تخمین کار».
«تخمین زمان» مفهومی است که مدیران پروژه دوست دارند در مورد آن صحبت کنند. وقتی صحبت می‌کنند دائما به دنبال شنیدن تخمین زمانی هستند. برای مثال جمله‌ای مانند «این کار تا پنجشنبه هفته بعد انجام می‌شود» جمله‌ای است که زمان انجام شدن کار را تخمین می‌زند.
در مقابل «تخمین کار» مفهومی است که معمولا برنامه‌نویسان دوست دارند در مورد آن صحبت کنند. آنها ترجیح می‌دهند بگویند که این کار به چقدر زمان نیاز دارد. مثلا کاری است که به ۳ روز زمان نیاز دارد. مثلا جمله «این کار به یک هفته کار نیاز دارد» به این معنی نیست که یک هفته دیگر این کار تمام می‌شود و صرفا حجم کار مورد نیاز بیان شده.

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

پست زیر این دو مفهوم را معرفی کرده و تفاوت آن‌ها را در مدیریت پروژه شرح داده‌است.

http://mehrandvd.me/2017/08/02/effort-vs-time-estimation/

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/958i30erVZs

#مهران_داودی (http://ow.ly/GwIl309lFEm)

کانال تلگرام:
@SoftwarePhilosophy

___
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
سریع ترین Object Mapper دات نت
کتابخانه Mapster مشابه AutoMapper است ولی با پرفرمنس باورنکردنی و فوق سریع
این کتابخانه حتی از حالت دستی هم سریع تر است!
https://github.com/MapsterMapper/Mapster

طبق بنچمارک زیر متونین پرفرمنس این روش ها رو مقایسه کنین.
https://github.com/mjebrahimi/Benchmark.netCoreMappers
_______________
@IranAspMvc
#پست_مجدد این پست تا به حال بیش از ۴۱۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
استفاده از امکانات Azure و TFS برای تیم‌های برنامه‌نویسی بسیار جذاب است. بسیاری از مشکلاتی که در تیم‌های نرم‌افزاری پیش می‌آید به علت نبود فرایند‌های درست و ابزارهای مناسب است. یکی از دغدغه‌های تیم‌های برنامه‌نویسی، نحوه تعامل و همکاری اعضای تیم در ساخت نیازمندی‌های نرم‌افزار به صورت با کیفیت است. نیازها باید طوری شفاف تعریف شوند که قابل تست باشند. اصولا اگر یک نیازمندی به اندازه‌ای واضح تعریف نشده که بتوان آن را تست کرد، احتمالا کد آن هم خیلی واضح به آن هدف نخواهد رسید!

در مقاله زیر تجربه استفاده از دو ابزار Team Foundation Server و یکپارچگی آن با سرویس‌های Azure در یک پروژه عملی شرح داده شده است. در این فرایند Feature‌ ها به عنوان زبان مشترک بین تیم فنی و بیزنس طراحی می‌شوند. سپس این Feature ها به Backlog Item ها شکسته می‌شوند. یک Backlog Item در حقیقت یک نیازمندی‌است است که آنقدری کوچک شده که بتوان آن را به تنهایی تست کرد. به طوری که اگر تست تمام Backlog Item های یک Feature پاس شود، به معنی قابل تحویل بودن آن به تیم بیزنس باشد. سپس Task ها مجموعه کارهایی (فنی و غیر فنی) است که باید انجام شود تا بتوان تست یک Backlog Item را پاس کرد.

در مقاله زیر به طور خلاصه توضیح داده شده‌است که چگونه Sprint ها انجام می‌شوند.

http://mehrandvd.me/2017/02/24/azure-experience-handling-requirements/

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/3NGm30b5IjZ

#مهران_داودی (http://ow.ly/GwIl309lFEm)

کانال تلگرام:
@SoftwarePhilosophy


___
#پست_مجدد این پست تا به حال نزدیک به ۱۳۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
برای شروع برنامه‌نویسی با reactJS یکی از مشکلات اصلی برنامه‌نویسان (حتی حرفه‌ای ترین آن‌ها) طرز فکر و حل مساله به روش‌های پیاده‌سازی شده در reactJS است. عدم تغییر این طرز فکر باعث می‌شود برنامه‌نویس در عین کار با reactJS از تمام امکانات آن استفاده نکند و فقط اسما یک برنامه‌نویس reactJS باشد. یکی از تفاوت‌های اصلی طرز فکر reactJS با سایر زبان‌های برنامه‌نویسی است پیاده‌سازی درست «ارتباط بین کامپوننت‌ها» است.

در این مقاله به شکل شفاف و جامع ۸ روش برای ارتباط بین کامپوننت‌ها توضیح داده شده است.

https://www.javascriptstuff.com/component-communication/#3-callback-functions

#مریم_کمالی (http://ow.ly/9Wa430mFGeK)

کانال تلگرام:
@SoftwarePhilosophy


___
این همه انواع Messaging Service روی Azure؟ چه خبره؟

اگر از سرویس Cloud مایکروسافت یا همان Microsoft Azure برای طراحی و معماری Solution های خود استفاده می‌کنید، روزی خواهد رسید که به یک Service Bus نیاز خواهید داشت. سرویس باس، سرویسی است که در معماری به شما کمک می‌کند برنامه‌های مختلف سیستم که نیاز دارند با هم ارتباط داشته باشند را به هم متصل کنید. معمولا اگر این اتصال از طریق database polling صورت پذیرد در مقیاس بالا بسیار هزینه‌بر و پیچیده می‌شود. به همین دلیل استفاده از «باس» بسیار پر کاربرد است.
در Azure سه نوع سرویس به این منظور تعبیه شده که هر کدام کاربردهای تخصصی خود را دارند:
- Event Grid
- Event Hub
- Service Bus

برای درک تفاوت این سرویس‌ها ابتدا باید تفاوت مفهوم Event و Message را در Azure بدانید که در مقاله زیر توضیح داده شده‌است. اما کاربرد هر یک را می‌توان به این صورت خلاصه گفت:
- Event Grid:
انتشار رویدادها و Reactive Programming، مثلا عکس‌العمل نشان دادن به تغییر وضعیت‌ها در دیتا

- Event Hub:
کار با stream های سنگین دیتا. برای کار و مدیریت میلیون‌ها رویداد در ثانیه در Big data pipleline طراحی شده.

- Service Bus:
انتقال پیام (Message) بین سیستم‌های Enterprise.

مستند زیر این مفاهیم را با جزئیات کامل‌تری شرح می‌دهد.

https://docs.microsoft.com/en-us/azure/event-grid/compare-messaging-services

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/fhwz30nWt1e

#مهران_داودی (http://ow.ly/GwIl309lFEm)

کانال تلگرام:
@SoftwarePhilosophy


___
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
معرفی پروژه DNTFrameworkCore

پروژه که نه بهتره بگیم یه فریمورک یا زیرساخت آماده واسه سایت هاتون هست که کلی امکانات و Best Practice رو تو خودش پیاده کرده و کارتون خیلی راحت میشه✌️

https://github.com/rabbal/DNTFrameworkCore

از امکانات این فریمورک میشه موارد زیر اشاره کرد :
🔹سبک و سریع (نکات پرفرمنسی رعایت شده)
🔸دارای معماری اصولی و توسعه پذیر
🔹پشتیبانی از طراحی چند مستاجری (Multi Tenancy)
🔸اعتبارسنجی خودکار
🔹مدیریت تراکنش ها
🔸پشتیبانی از آزمون واحد و کاملا تست پذیر
🔹و...

حتی اگه قصد استفاده ازشو ندارین، مرور و بررسی کد هاش خیلی میتونه آموزنده و مفید باشه و بهتون ایده بده
🌟 راستی یادتون نره Star هم بدین به ریپازیتوریش 😉

توضیحات بیشتر :
https://www.dotnettips.info/newsarchive/details/14242
_______________
@IranAspMvc
Forwarded from Iran Agile
معمولا ما برای چندین سال لیستی از آیتم‌ها رو در بک‌لاگ نگه می‌داریم، اما مبادا که یه دونه از اونا رو پاک کنیم. همین میشه که همیشه یه لیست چند صفحه ای از اقلام بک لاگ داریم که یا کسی از اون آیتم چیزی یادش نمیاد یا دیگه پیاده سازیش، دردی رو از مشتری دعوا نمی‌کند. آخر سالی وقت خوبی هست که این بک‌لاگ را حسابی تمیزکاری کنیم و حداقل نصف آن را دور بریزیم 😉

https://bit.ly/2STfrtg

@iranagile
#پست_مجدد این پست تا به حال نزدیک به ۳۴۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
تئوری اسب مرده!

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

یک ضرب‌المثل قدیمی هندی می‌گوید: اگه دیدین سوار یه اسب مرده هستید، بهترین استراتژی اینه که پیاده شین.

در حالی که معمولا استراتژی‌های پیشرفته‌تری در دولت‌ها، شرکت‌ها، سیستم‌های آموزشی و ... استفاده می‌شود. این استراتژی‌ها حتما برای شما هم آشنا هستند:

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

مفهومی که هنگام خواندن این ضرب‌المثل تداعی می‌شود، مفهوم Root Cause است. اغلب مشکلاتی که در اطراف ما وجود دارد دارای دلایل واضح و سطحی است که غالبا منجر به حل آن مشکل نمی‌شود. از طرفی، اگر تلاش کنید برای یک مشکل عمیق فکر کنید و به Root Cause آن برسید، مشکلات به طور عجیبی حل می‌شوند و حتی با حل یک مشکل، مشکلات دیگری نیز خود به خود حل می‌شوند.

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

http://mehrandvd.me/2018/06/27/the-dead-horse-theory/


⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/AGJa30kQv8N

#مهران_داودی (http://ow.ly/GwIl309lFEm)

کانال تلگرام:
@SoftwarePhilosophy


___
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
خلاصه‌ای از دوره‌ی ASP.NET Core Fundamentals آقای اسکات آلن از سایت Pluralsight

واسه کسایی که دنبال آموزش متنی جامع ASP Core میگردن، خوبه 👌
https://github.com/SirwanAfifi/aspdotnet-core-fundamentals
لینک دانلود PDF :
https://bit.ly/2XaEhs2
_______________
@IranAspMvc
#پست_مجدد این پست تا به حال نزدیک به ۸۶۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
لطفا پروسه هندل شدن یک اینونت توسط DOM را بدانید!
وقتی یک ایونت اتفاق می‌افتد در وهله اول از المنت ریشه به پایین مورد بررسی قرار می‌گیرد تا المنتی که ایونت روی آن اتفاق افتاده پیدا شود. این مرحله Capturing phase نام دارد.

در وهله دوم المنت پیدا شده به عنوان المنت target نگه داشته می‌شود. این مرحله Target phase نامیده می‌شود.

و در وهله آخر ایونت اتفاق افتاده به سمت بالا، یعنی المنت‌های پدر حرکت کرده و ایونت‌های مربوطه روی آنها را raise می‌کند که اصطلاحا به آن Bubbleing phase گفته می‌شود.

در مواقع لازم می‌توان از event.stopPropagation و event.stopImmadiatePropagation برای جلوگیری از Bubbling phase استفاده کرد.

لینک زیر شرح کاملی از پروسه و نحوه استفاده از دو متد گفته شده را ارائه می‌دهد:

https://javascript.info/bubbling-and-capturing

#مریم_داودی (http://ow.ly/HGkG309B7de)


کانال تلگرام:
@SoftwarePhilosophy

___
روانشناسی برای بیزنس - تحلیلی بر شخصیت من

یکی از اتفاقات جذاب امسال من، شرکت در دوره‌ای با مضمون «روانشناسی در بیزنس» یا «روانشناسی برای بیزنس» بود که توسط «مدرسه بازاریابی برگزار شد.
تو این دوره با یه رویکرد جالب، مفاهیم روانشناسی، تیپ‌ها و اختلال‌های مختلف آموزش داده می‌شدن و نکته جالب این بود که آموزش با تمرکز بر بیزنس بود. ینی مثلا چطوری بفهمیم این مشتری چه تیپ شخصیتی داره و یا چه اختلال شخصیتی داره (البته نه به معنی بیماری، بلکه به معنی ویژگی، اینطوری هممون یه اختلالایی داریم). و بعد که اینا رو فهمیدیم چطوری باید با طرفمون برخورد کنیم که منجر به یه رابطه موفق بشه.

این مفاهیم در دنیای استارتاپ‌ها و تیم‌های برنامه‌نویسی خیلی کاربردی هستن و می‌تونه تاثیر زیادی روی موفقیت کسب و کار بذاره.

حالا مدرسه بازاریابی تصمیم گرفته در یه دوره فشرده ۳ روزه (روزی ۸ ساعت) در عید (۷،۸،۹ فروردین) این دوره رو با عنوان «تحلیلی بر شخصیت من» برگزار کنه.

https://www.instagram.com/tehranmarketing_school/

#مهران_داودی (http://ow.ly/GwIl309lFEm)

کانال تلگرام:
@SoftwarePhilosophy


___
Forwarded from tehran marketing school
کمپ های آموزشی 3 روزه مدرسه بازاریابی تهران / نوروز 98

* 3 روز برای یک سال *

24 ساعت آموزش فشرده
علمی - عملی

کمپ تحلیلی بر شخصیت من

9-8-7 فروردین

مناسب برای تمامی کسانی که به دنبال شناخت بهتر خود برای موفقیت در کسب و کارشان هستند.


📞 برای ثبت نام و اطلاعات بیشتر میتوانید با شماره زیر تماس بگیرید:
02188677808
و یا به اینستاگرام زیر پیام دهید👇
https://www.instagram.com/tehranmarketing_school/

🔸مکان برگزاری کلاس ها, تهران, محدوده میدان ونک است


@tehran_marketing
♨️ یک تغییر بزرگ: حذف دستور new از زبان‌های C# و Java ⁉️

بالاخره پس از مذاکرات و صحبت‌های زیاد در یک اقدام هماهنگ خالقان C# و Java تصمیم گرفتند دستور new را از این زبان‌ها حذف کنند. این تصمیم به این دلیل گرفته شد که از نظر طراحان این زبان‌ها همه Object Instantiation ها همیشه باید از طریق Dependency Injection انجام شود و اصولا در یک برنامه خوب برنامه‌نویس نباید خودش یک شی را ایجاد کند.

// Not a valid code anymore. 
Person p = new Person();

// New dependency injection syntax.
Person p = new.Resolve<Person>();

این تصمیم اولین تصمیم هماهنگ شده و همزمان بین تیم‌های توسعه زبان Java و C# است و Anders Hejlsberg و James Gosling هر دو در مورد این تصمیم بسیار خوشحالند.

با توجه به اینکه این تصمیم در روز اول آوریل (۱۳ فروردین) گرفته شد و نسخه Visual Studio 2019 نیز در همین روز منتشر شد، این تغییر در نسخه جدید C# 8.0 اعمال شده و باید از مدل جدید آن استفاده کنید.
در جاوا هم طبق برنامه‌ریزی این ویژگی در Java 15 اضافه خواهد شد که در سال ۲۰۲۵ ریلیز خواهد شد.

برای اطلاعات بیشتر می‌توانید مقاله‌ای که در این مورد در لینک زیر نوشته شده‌است را بخوانید.

۱۳ بدرتان مبارک!

http://mehrandvd.me/2019/04/01/a-huge-change-in-java-and-c/

http://ow.ly/MldR30ojXpI

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/6RyP30ojWAP

#مهران_داودی (http://ow.ly/GwIl309lFEm)

کانال تلگرام:
@SoftwarePhilosophy

___
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
🔰 بررسی تغییرات جدید NET Core 3.0 Preview 3

تاکنون تاریخ دقیقی واسه انتشار ورژن نهایی NET Core 3.0 اعلام نشده بود و فقط توی Roadmap اش نوشته بود تا پایان فصل اول سال 2019 ولی الان ماکروسافت اعلام کرده در نیمه دوم سال 2019 منتشر خواهد شد که تاریخ دقیق اون توی کنفرانس Build 2019 ماکروسافت اعلام خواهد شد
از طرفی Visual Studio 2019 که هفته پیش نسخه RC یش هم منتشر شد و ماکروسافت اعلام کرده نسخه نهاییش در تاریخ 2 ماه April منتشر میشه
با توجه به اخبار، خیلی انتظار میرفت که ورژن نهایی NET Core 3.0 همراه با ورژن نهایی VS منتشر بشه که خب ظاهرا قضیه کنسله

و اما بریم سراغ تغییرات جدید :

🔸امکان Upgrade شدن نسخه های SDK :
اولین تفاوتی که بهش میخوریم اینه که از این پس، نسخه های SDK Installer روی ورژن های patch قبلی Upgrade میشن. به این معنی که با نصب نسخه های جدید، پچ قبلی همون نسخه (که قسمت feature bands مشترکی داشته) حذف شده و سپس نسخه جدید نصب میشه
قسمت feature bands همون قسمت صدگان آخر ورژن هست. مثلا با نصب ورژن 3.0.101، نسخه قبلی اون یعنی 3.0.100 حذف میشه (چون فیچر بند های یکسانی دارند) ولی با نصب 3.0.200، نسخه 3.0.101 حذف نمیشه (چون فیچر بند های متفاوتی دارند)
این باعث میشه تعداد SDK های نصبی روی کامپیوتر شما کاهش پیدا کنه و الکی فضای ها هاردتون با نسخه های بی مصرف پر نشه

🔹بهبود قابلیت Memory Limits برای Docker :
توسط این قابلیت میتونین منابع داکر رو برای برنامه تون محدود کنین مثلا بگین فقط 100 مگابایت حافظه مموری در اختیار برنامه تون بذاره، این قابلیت مخصوصا برای اجرای NET Core روی دیوایس های IOT کاربرد داره
این قابلیت قبلا هم بوده ولی الان بهبود داده شده و توضیحاتش مفصله .پس اطلاعات بیشترش رو میتونین از لینک خود ماکروسافت بخونین

🔸ارائه Container Image های ماکروسافت در MCR
ماکروسافت یه Container Registry به نام Microsoft Container Registry یا به اختصار MCR راه اندازی کرده (چیزی مشابه DockerHub ولی نه دقیقا مثل اون؛ درواقع فقط یه مخزنی هست واسه Image هاش)
2 3 هفته پیش ریپازیتوری نسخه های nightly شو از DockerHub به MCR انتقال داد و الان هم ریپازیتوری نسخه های NET Core رو به MCR منتقل کرده
اطلاعات بیشتر در لینک ماکروسافت

🔹بهبود قابلیت های Index و Range موجود در سی شارپ 8
این قابلیت نیاز به توضیح نداره با یه مثال متوجه میشین
int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
دستور 1^ یعنی اولی از آخر
int lastNum = nums[^1]; // 10
دستور 6..2 یعنی آیتم های 2 تا 6 این آرایه
int[] subsetNums = nums[2..6]; // {3, 4, 5, 6}
این قابلیت توی Preview 1 اومد ولی فقط واسه آرایه های عددی بود. الان این قابلیت واسه Span، Memory، Array و String امکان پذیر شده

🔸دیگر تغییرات :
تغییرات دیگه ای از جمله بهبود هایی در مورد پیشتبانی بهتر از EF, WPF, WinFroms و... در NET Core 3.0 هم انجام شده که از توضیحاتش صرف نظر می کنیم

جهت اطلاعات بیشتر لینک زیر رو مطالعه کنین
https://devblogs.microsoft.com/dotnet/announcing-net-core-3-preview-3/
___________
@IranAspMvc
البته من، مهران داودی با یک واو هستم!
خوشحالم که در رویداد in-Tech به عنوان مربی در کنار تیم‌ها هستم.
در این سه روز آخر هفته به تیم‌ها کمک می‌کنم بیزنس‌هاشون رو خلق کنن و با هم تجربه ترکیب مهارت‌های فنی و توانایی‌های بیزنسی رو لمس کنیم. در کنارش با هم در مورد تکنولوژی‌های جدید هم گپ می‌زنیم.

http://swwomen.ir
❇️ یادش بخیر روزی که تلگرام فیلتر شد.
🔆 گفتیم می‌مانیم و ماندید، بیشتر هم شدیم.
Forwarded from Software Philosophy
مقایسه ایران با مایکروسافت ۱۰ سال پیش! تلگرام را فیلتر کنیم؟

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

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

از این لحاظ رویکرد ما خیلی شبیه مایکروسافت ۱۰ سال پیش است. مایکروسافتی که با دنیای open-source مخالف بود و سعی در نادیده گرفتن آن داشت تا جایی که به مرز حذف از بازار برنامه‌نویسی رسید. ولی آنها فهمیدند، خود را تغییر دادند، اوپن‌سورس بودن را درک کردند. به جای مقابله با آن شروع به استفاده از مزایای آن کردند و اکنون فعال‌ترین open-souce community در github هستند. و آرام آرام در حال بازگشت به بازار.

اگر تلگرام را تهدید می‌بینیم، به خاطر این است که «باز بودن« یا «open-source بودن» را تهدید می‌بینیم و باید به حال آن فکری کنیم. با فیلتر کردن ابزار، این طرز فکر از بین نمی‌رود، فقط تبدیل به حالت جنگجویانه‌ترش می‌شود و فیلتر کننده را از بین می‌برد.

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

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

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

http://mehrandvd.me

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/wJ6i30jn1B4

#مهران_داودی (http://ow.ly/GwIl309lFEm)

کانال تلگرام:
@SoftwarePhilosophy


___