Software Philosophy – Telegram
Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
#پست_مجدد این پست تا به حال بیش از ۱۴۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
قانون Conways در استفاده از مایکروسرویس‌ها در معماری نرم‌افزار بسیار قانون جالبی است. این روز‌ها در بسیاری از تیم‌های نرم‌افزاری بحث استفاده یا عدم استفاده از مایکروسرویس‌ها در معماری آینده تیم مطرح است. قانون Conways به طور کلی در مورد سیستم‌ها صحبت می‌کند. این قانون می‌گوید:
«اگر تیم و یا سازمانی در حال طراحی یک سیستم است (نه لزوما سیستم اطلاعاتی) طراحی نهایی آنها احتمالا شبیه ساختار ارتباطی همان سازمان است.»

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

این قانون گرچه اثبات نشده، ولی به طور ضمنی می‌گوید اگر می‌خواهید سراغ مایکروسرویس بروید، باید کل تیمتان هم مایکروسرویسی شود.

https://www.thoughtworks.com/insights/blog/demystifying-conways-law

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

http://ow.ly/8byp30emn9u


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

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

___
#پست_مجدد این پست تا به حال بیش از ۲۴۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
شایع‌ترین دلیل تخمین زمان اشتباه یک پروژه

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

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

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

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

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

http://ow.ly/958i30erVZs

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

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

___
#خلاصه_مطالب «فلسفه نرم‌افزار» در هفته گذشته:

۱. آشنایی با قانون حیاتی که تیم برنامه‌نویسی «آزمایشگاه نیروی متحرکه جت» ناسا

https://news.1rj.ru/str/SoftwarePhilosophy/1051

۲. آیا محصول شما در جیب جا می‌شود؟ (فلسفه دیزاین)

https://news.1rj.ru/str/SoftwarePhilosophy/1052

۳. چک‌لیست دراکر برای ارزیابی سازمان (Iran Agile)

https://news.1rj.ru/str/SoftwarePhilosophy/1053

۴. قانون Conways در استفاده از مایکروسرویس‌ها در معماری نرم‌افزار

https://news.1rj.ru/str/SoftwarePhilosophy/1055

۵. شایع‌ترین دلیل تخمین زمان اشتباه یک پروژه

https://news.1rj.ru/str/SoftwarePhilosophy/1057

ـــــــــــ

@SoftwarePhilosophy
#پست_مجدد این پست تا به حال بیش از ۱۳۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
آیا ترکیب WebAssembly و .Net آینده برنامه‌نویسی front-end است؟ این نام مقاله جدید اسکات هانسلمن است که در آن توضیح می‌دهد چطور .NET Core 2.0 این ایده را امکان پذیر کرده‌است که کدهای front-end را با c# نوشت و به WebAssembly کامپیال کرد. در این مقاله توضیح داده شده که چطور Steve Sanderson (برنامه نویس اصلی فریم‌ورک knockout) در یک پروژه آزمایشی به نام Blazor دقیقا مانند Angular, Knockout و Ember کد نوشته، با این تفاوت که این کد با C# نوشته شده.

مقاله زیر جزئیات نوشتن کد روی WebAssembly را با استفاده از .Net Core و C# شرح داده‌است.

https://www.hanselman.com/blog/NETAndWebAssemblyIsThisTheFutureOfTheFrontend.aspx

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

http://ow.ly/KVCh30ewRvs

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

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

___
Forwarded from فلسفه دیزاین
دیزاین برای حافظه، دیزاین برای انسان‌ها

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

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

پیشنهاد می‌کنم این مقاله جالب را همین حالا مطالعه کنید.

https://uxplanet.org/designing-for-human-memory-a2cdc0b6a75a

(زمان حدودی مطالعه، ۱۰ دقیقه)

#بررسی #استراتژی #طراحی
@Dexign فلسفه دیزاین

____
Forwarded from Iran Agile
🔴 اسکرام روزانه و «هادل»های ورزشی

در دنیای ورزش به اقدام افراد یک تیم برای تشکیل یک حلقه فشرده جهت مرور استراتژی، برنامه‌ریزی کوتاه‌مدت، انگیزه گیری و یا جشن، «هادل» (Huddle) گفته می‌شود.

یکی از دلایل اولیه شکل‌گیری این رفتار، پر سروصدا بودن استادیوم‌های ورزشی بوده است که گاهی باعث می‌شد که افراد تیم حتی صدای یکدیگر را هم نشنوند بنابراین برای افزایش تمرکز، نفوذ کلام و مرور استراتژی، دست به ایجاد حلقه فشرده می‌زدند. امروزه از هادل در اکثر ورزش‌های گروهی مانند فوتبال، کریکت، بسکتبال، راگبی و غیره استفاده می‌شود.

این هادل‌ها به‌مرورزمان به نوعی عرف ورزشی تبدیل شده و دارای خصوصیات مشترکی شامل موارد زیر هستند:

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

https://goo.gl/mjFbDk

@IranAgile
یکی از دغدغه‌های همیشگی برنامه‌نویسان، تولید نرم‌افزار با سرعت بیشتر و کیفیت بالاتر می‌باشد. یکی از زبان‌های جدید پرطرفدار که به این امر کمک می کند F# است. با F# می‌توان بصورت Functional کد نوشت. تعداد خطوط نوشته شده در زبانهای Functional نسبت به سایر زبان‌ها کم می‌باشد. بطور مثال ۲۰ خط کد در C# با حدود ۵ خط کد در F# قابل بازنویسی است. ویدیو زیر به معرفی F# برای برنامه نویسان C# پرداخته است.

https://www.youtube.com/watch?v=KPa8Yw_Navk

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

http://ow.ly/KfWV30h1wUK

#علیرضا_وفی (http://ow.ly/Vna930dsUGr)

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

___
#پست_مجدد این پست تا به حال بیش از ۱۲۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
ممکن است در فرایند توسعه‌ی برنامه‌های SPA که UI‌ آن‌ها با screen‌های با اندازه‌های متفاوت موبایل تا دسکتاپ سازگار است٬ نیاز به تست برنامه روی Device ها داشته باشید. Browsersync ابزاری قدرتمند است که در ترکیب با Webpack و Hot Reloading این امکان را به شما می‌دهد تا به جای تست app روی شبیه ساز های device بتوانید مستقیما روی device تست و debug را انجام دهید.
برای توضیحات بیشتر به لینک زیر مراجعه کنید.

https://manavsehgal.com/browsersync-and-webpack-for-testing-web-apps-across-multiple-devices-64e7f7fa62f2


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

http://ow.ly/3dge30eCtwT

#شراره_لطفی (http://ow.ly/xvC530dx8xL)


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

___
#پست_مجدد این پست تا به حال بیش از ۱۸۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
تبدیل کدهای C# به JavaScript در بسیاری از شرایط می‌توان مفید باشد. معمولا قسمت قابل توجهی از کدهای بین سرور و کلاینت که شبیه هم هستند می‌توانند در یک جا نوشته شوند. برای مثال مدل‌های انتقال اطلاعات DTO و یا Validation ها همه کدهایی هستند که پس از تعریف در سمت سرور می‌توانند در سمت کلاینت هم دوباره استفاده شوند.
هدف پروژه Bridge.NET اینجا امکان تبدیل کدهای C# به کدهای TypeScript و یا JavaScript است. در سایت این پروژه به صورت آنلاین می‌توانید آن را آزمایش کنید تا از نحوه کار آن مطلع شوید.

http://bridge.net/

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

http://ow.ly/yrVs30eL96Y

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


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

___
#خلاصه_مطالب «فلسفه نرم‌افزار» در هفته گذشته:

۱. آیا ترکیب WebAssembly و .Net آینده برنامه‌نویسی front-end است؟

https://news.1rj.ru/str/SoftwarePhilosophy/1060

۲. دیزاین برای حافظه، دیزاین برای انسان‌ها

https://news.1rj.ru/str/SoftwarePhilosophy/1061

۳. اسکرام روزانه و «هادل»های ورزشی

https://news.1rj.ru/str/SoftwarePhilosophy/1062

۴. معرفی F# برای برنامه نویسان C#

https://news.1rj.ru/str/SoftwarePhilosophy/1063
https://news.1rj.ru/str/SoftwarePhilosophy/1064

۵. آشنایی با Browsersync

https://news.1rj.ru/str/SoftwarePhilosophy/1066

۶. تبدیل کدهای C# به JavaScript و پروژه Bridge.NET
#javanoscript #csharp #bridgenet #framework

https://news.1rj.ru/str/SoftwarePhilosophy/1068

ـــــــــــ

@SoftwarePhilosophy
#پست_مجدد این پست تا به حال بیش از ۲۲۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
در صورتی که از کندی Visual Studio رنج می‌برید و علاقه مند هستید سرعت کار ویژوال استدیو را بالاخص در زمان دیباگ و اجرای برنامه‌ها تا چندین برابر بهبود دهید، راهکارهای ارایه شده در این مقاله را که همگی تست شده اند و بعضا دارای PowerShell Script آماده به اجرا هستند استفاده کنید و از بهبود به دست آمده لذت ببرید.

https://docs.bit-framework.com/docs/good-to-know/visual-studio-speedup.html



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

http://ow.ly/GrJ430eStMy

#یاسر_مرادی (http://ow.ly/Ph6w30ebM21)

با سپاس از آقای سعید صالحی برای مشارکت در تهیه این مطلب
https://github.com/1saeedsalehi


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

___
#پست_مجدد این پست تا به حال بیش از ۱۳۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
بسیاری از برنامه نویسان و طراحان نرم افزار خاطره خوشی از معماری سرویس‌گرا ندارند. این مسأله دلایل بسیاری دارد که از جمله آنها می توان به پیچیدگی‌های فراوان ESB (Enterprise Service Bus) ها اشاره کرد. معماری سرویس‌گرا تلاشی بود برای جلوگیری از مشکلاتی که معماری یکپارچه (Monolithic) به تیم و محصول تحمیل می‌کرد. هرچند معماری سرویس‌گرا اقبال خوبی از سمت سازمان‌ها و شرکت‌های بزرگ کسب کرد ولی عمر زیادی نداشت و امروز از توجه کمتری برخوردار است. از طرفی محصولات یکپارچه بزرگ سازمانی و مشکلاتشان همچنان وجود دارند.
میکرو سرویس مفهمومی است که سعی میکند با استفاده از تجربه معماری سرویس‌گرا نقص‌های آن را برطرف کرده و به کمک طراحان بیاید.
در معماری میکروسرویس سیستم به اجزاء کوچکتری تقسیم می‌شود که هرکدام به طور مستقل عمل می‌کنند و یک عمل خاص را به خوبی انجام می‌دهند. این میکروسرویس‌ها درکنار همدیگر همان کار یک نرم افزار یکپارچه را انجام خواهند داد، آن‌ها توانایی این را دارند که زندگی را برای طراحان ساده‌تر و زیباتر کنند!

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

https://www.nginx.com/blog/introduction-to-microservices/

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

http://ow.ly/4aX530f2OZz

#مهدی_بلوچی (http://ow.ly/5kxI30exl7k )

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


___
Forwarded from فلسفه دیزاین
کوله‌پشتی یک دیزاینر

اخیرا چند نفر از دوستان و آشنایان، افرادی علاقه‌مند به دیزاین را به من معرفی کردند و خواستند که در این مسیر کمکشان کنم. با وجود اینکه سال‌ها قبل کارگاه‌ها و کلاس‌هایی برگزار کرده بودم ولی همیشه افراد جدید با رویکردهای جدید به یادگیری دیزاین، من را به چالش کشیده‌اند.
بعد از اینکه به هر سختی ممکن این روند معرفی و شروع یادگیری افراد، چند بار تکرار شد، متوجه شدم که قدم‌های اولیه یادگیری را به مرور به شکل یک بسته شروع (Starter Kit) درآورده‌ام. درست مثل کوله‌پشتی یک گردشگر که وسایل داخل آن تمام چیزی‌ست که برای برداشتن اولین قدم‌ها نیاز دارد ولی وقتی به نقاط مشخصی در مسیر می‌رسد، برای ادامه دادن راه،‌ نیاز دارد محتویات کوله‌اش را دوباره پُر کند یا دستی به سر و روی آن‌هایی که زیاد استفاده شده‌اند بکشد.

در جستجوهایم به وب‌سایت Designer Lynx برخوردم. جایی که شاید ۸۰ درصد منابعی را که برای یادگیری معرفی می‌کنم، یکجا جمع کرده‌ست.
هیجان‌زده دست به صفحه‌کلید بُردم تا درباره‌ش برای شما بنویسم.
درست است که بخش‌های مختلف این وب‌سایت دست‌چینی هستند از بهترین منابع شروع دیزاین محصولات دیجیتال، ولی صرفا ابزارهای کوله‌پشتی شما به حساب می‌آیند. حتی وقتی شما بهترین‌ها را در کوله‌پشتی خود داشته باشید، اگر به کار نبندیدشان، فقط سنگینی آن‌ها را به دوش کشیده‌اید.

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

https://www.designerlynx.co/

#معرفی #منابع
@Dexign فلسفه دیزاین

____