📊 توابع جدید مرتبط با سریهای زمانی در SQL Server 2022
دادههای سری زمانی یکی از رایجترین انواع دادهها توی سیستمهای مدرنه؛ از لاگهای سرور گرفته تا دادههای سنسورها و حتی قیمت سهام و فروش و...
این نوع دادهها بر اساس زمان ثبت میشن و تحلیلشون معمولاً به دستهبندی و تجمیع توی بازههای زمانی مشخص نیاز داره. قبل از نسخه ۲۰۲۲ SQL Server، انجام این کارها کلی کدنویسی دستی و پیچیدگی داشت؛ مثل استفاده از توابع عجیبوغریب برای ساخت بازههای زمانی یا تولید دادههای مصنوعی برای شبیهسازی سریها. اما حالا با ابزارهایی مثل DATE_BUCKET و GENERATE_SERIES این مشکلات تا حد زیادی حل شده و میتونیم دادهها رو خیلی راحتتر دستهبندی و تحلیل کنیم.
نتیجه؟ هم توی زمان صرفهجویی میکنیم، هم کدمون تمیزتر میشه و هم بابت هر کار سادهای نیاز به مهاجرت به دیتابیس انجینهای سریزمانی مثل InfluxDB نمیشیم.
این دو تا پوستر رو برای معرفی و توضیح این توابع ببینید و طبیعتا اگر نظر و سوالی دارید بنویسید 😉
#SQLServer #DB #SQLServer_Week
دادههای سری زمانی یکی از رایجترین انواع دادهها توی سیستمهای مدرنه؛ از لاگهای سرور گرفته تا دادههای سنسورها و حتی قیمت سهام و فروش و...
این نوع دادهها بر اساس زمان ثبت میشن و تحلیلشون معمولاً به دستهبندی و تجمیع توی بازههای زمانی مشخص نیاز داره. قبل از نسخه ۲۰۲۲ SQL Server، انجام این کارها کلی کدنویسی دستی و پیچیدگی داشت؛ مثل استفاده از توابع عجیبوغریب برای ساخت بازههای زمانی یا تولید دادههای مصنوعی برای شبیهسازی سریها. اما حالا با ابزارهایی مثل DATE_BUCKET و GENERATE_SERIES این مشکلات تا حد زیادی حل شده و میتونیم دادهها رو خیلی راحتتر دستهبندی و تحلیل کنیم.
نتیجه؟ هم توی زمان صرفهجویی میکنیم، هم کدمون تمیزتر میشه و هم بابت هر کار سادهای نیاز به مهاجرت به دیتابیس انجینهای سریزمانی مثل InfluxDB نمیشیم.
این دو تا پوستر رو برای معرفی و توضیح این توابع ببینید و طبیعتا اگر نظر و سوالی دارید بنویسید 😉
#SQLServer #DB #SQLServer_Week
👍7
چند وقته توی کامیونیتی توصیفات عجیب و غریبی توسط جَواگِره عزیز (جمع مکسر جوگیر) راجع به Rust میبینیم. گویی که «امروزه، عصر Rustنویسی است و مابقی کدها شایستهی لعنت کائنات» (همینو در مورد چیزهای دیگه هم میبینیم، ولی باشه برای پستهای بعدی 😁)
خیلی مهمه که بدونیم «چرا» لینوکس، ویندوز، اندروید و کلی پروژه مهم دیگه در حال بازنویسی برخی کدهای موجود و توسعه برخی کدهای جدیدشون با Rust هستن؟
مثلا توی کرنل ویندوز یک سال و نیمه که راست به صورت رسمی وجود داره (System32\win32kbase_rs.sys) یا لینوکس کرنل ۶.۱۳ که این هفته ریلیز شد علاوه بازهم بخشهای جدیدتری رو با راست بازنویسی کرده (البته خیلی وقته برخی درایورهاش رو با راست نوشتن) و...
با اینکه فریمورک وب و دسکتاپ و... برای راست میبینیم، حتی جایگزین برای الکترون و.. هم داره، باید قبل از افتادن توی حباب، ببینیم «چه مسئله» ای رو قراره برامون حل کنه!
علیایحال؛ اگر خواستید بیشتر باهاش آشنا شید (برای یادگیری مفاهیم طراحی زبان، روشهای مدیریت همزمانی و حافظه و... مایکروسافت به عنوان یکی از اعضاء جدی و مهم بنیاد راست، مستندات خیلی خوبی ویژهی توسعهدهندگان داتنت که قصد مهاجرت یا یادگیری Rust دارن، توسعه داده که میتونید به عنوان یک رفرنس عالی ازش استفاده کنید)
https://microsoft.github.io/rust-for-dotnet-devs/latest/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍5
image_2025-01-23_00-38-51.png
372.4 KB
تاحالا شده موقع ساخت یا بازسازی ایندکس روی سروری که کاربرهای همزمان زیادی داره دچار مشکل شید و lockها جلو کارتون رو بگیرن؟ اگر پاسخ مثبته پوستر رو بخونید 😊
حالا یه سوال دیگه؟ تا حالا شده بخواهید روی یک جدول بزرگ ایندکس / کلید اصلی بسازی یا ایندکس بازسازی کنی ولی حجم فعالیت سنگین باشه و آرزی کنی ای کاش میشد تا اینجا رو pause کنم، بقیهاش رو بعدن ادامه بدم؟ اگر پاسخ مثبته، این چند کد رو که توی نسخه ۲۰۲۲ کار میکنه ببین لطفا:
ALTER TABLE table1
ADD CONSTRAINT PK_Constrain PRIMARY KEY CLUSTERED (a)
WITH (ONLINE = ON, MAXDOP = 2, RESUMABLE = ON, MAX_DURATION = 240);
ALTER TABLE table2
ADD CONSTRAINT PK_Constrain UNIQUE CLUSTERED (a,b)
WITH (ONLINE = ON, MAXDOP = 2, RESUMABLE = ON, MAX_DURATION = 240);
این موضوع اینقدر مهمه که اگر فکر میکنید در درک صحیح و عمیق ایندکس مشکل دارید، با ریاکشن
Please open Telegram to view this post
VIEW IN TELEGRAM
کِی و کجا، بریم سراغ Go؟
همونقدر که Go زبان خوبیه (چه از نظر طراحی کامپایلر چه سهولت و سرراستی سینتکس، چه پرفرمنس) همونقدر هم مثل هر موضوع دیگهای، افتادن توی حباب تبلیغات و حرفهای جَواگِره (قبلن اشاراه کردم که جمع مکسر جَوگیر) بده!
یک زبون خیلی خوب، که کوبرنتیز و داکر باهاش نوشته شده و توی مایکروسرویس و شبکه خیلی عملکرد خوبی داره.
ولی یادمون نره سال ۲۰۲۲ و نسخه ۱.۱۸ بود که تازه generics رو اضافه کرد، خود این موضوع، نکتهایه برای اهل تعقل! نه اینکه گوگل کمکاری کرده یا بلد نبوده یا زبون بدیه؛ بلکه اساسا کاربریاش با طیف وسیعی از نرمافزارهایی که با جاوا یا سیشارپ میسازیم متفاوته.
امروز، برای مهاجرت از سیشارپ به Go باید دلایل قوی داشت! که تعداد این دلایل زیاد نیست... چون سیشارپ طی ۳-۴ سال گذشته، از نظر پرفرمنس و بهینگی و... نزدیک بوده و طی ۱-۲ سال گذشته اگر بهتر نباشه کمتر نیست. (برآیند رو عرض میکنم، مقایسه منصفانه با در نظر گرفتن اینکه چی رو با چی مقایسه میکنیم، نه اینکه صرفا به سایز باینری خروجی یا حافظه در یک مورد خاص اشاره کنیم). ولی اگر توی لایه شبکه قصد توسعه دارید، زبون بسیار کارامد و خوبیه. من بین بازه زمانی داتنت کور ۱ تا داتنت ۶ بخش مهمی از پروژههایی که همزمانی و سرعت مسئله اصلیشون بود با گو پیش بردم، ولی از ۶ به بعد داتنت برای مسائلی که من تصمیمگیر بودم، گزینه بهینهتری بود.
اینم بگم اینکه تیم شما «چی» رو «خوب بلده» یکی از مولفههای تصمیمگیریه.
در هر حال اگر دوست دارید با پیشینه سیشارپ، گو یاد بگیرید:
منبع خوب اول
منبع خوب دوم
همونقدر که Go زبان خوبیه (چه از نظر طراحی کامپایلر چه سهولت و سرراستی سینتکس، چه پرفرمنس) همونقدر هم مثل هر موضوع دیگهای، افتادن توی حباب تبلیغات و حرفهای جَواگِره (قبلن اشاراه کردم که جمع مکسر جَوگیر) بده!
یک زبون خیلی خوب، که کوبرنتیز و داکر باهاش نوشته شده و توی مایکروسرویس و شبکه خیلی عملکرد خوبی داره.
ولی یادمون نره سال ۲۰۲۲ و نسخه ۱.۱۸ بود که تازه generics رو اضافه کرد، خود این موضوع، نکتهایه برای اهل تعقل! نه اینکه گوگل کمکاری کرده یا بلد نبوده یا زبون بدیه؛ بلکه اساسا کاربریاش با طیف وسیعی از نرمافزارهایی که با جاوا یا سیشارپ میسازیم متفاوته.
امروز، برای مهاجرت از سیشارپ به Go باید دلایل قوی داشت! که تعداد این دلایل زیاد نیست... چون سیشارپ طی ۳-۴ سال گذشته، از نظر پرفرمنس و بهینگی و... نزدیک بوده و طی ۱-۲ سال گذشته اگر بهتر نباشه کمتر نیست. (برآیند رو عرض میکنم، مقایسه منصفانه با در نظر گرفتن اینکه چی رو با چی مقایسه میکنیم، نه اینکه صرفا به سایز باینری خروجی یا حافظه در یک مورد خاص اشاره کنیم). ولی اگر توی لایه شبکه قصد توسعه دارید، زبون بسیار کارامد و خوبیه. من بین بازه زمانی داتنت کور ۱ تا داتنت ۶ بخش مهمی از پروژههایی که همزمانی و سرعت مسئله اصلیشون بود با گو پیش بردم، ولی از ۶ به بعد داتنت برای مسائلی که من تصمیمگیر بودم، گزینه بهینهتری بود.
اینم بگم اینکه تیم شما «چی» رو «خوب بلده» یکی از مولفههای تصمیمگیریه.
در هر حال اگر دوست دارید با پیشینه سیشارپ، گو یاد بگیرید:
منبع خوب اول
منبع خوب دوم
👍14👏3❤2 2
This media is not supported in your browser
VIEW IN TELEGRAM
این ویدیو از دکتر شهشهانی عزیز چند وقته زیاد دستبهدست میشه.
از اونجایی که نظام آموزشی ما مشکلات ساختاری زیادی داره، احتمالا اینکه «این درسها مثل ریاضی و معادلات دیف و محاسبات عددی و... به چه درد میخوره/میخورد» سوال خیلیها خصوصا جوانترها باشه، زیاده.
چیزی که مینویسم، ترکیبی از پاسخیه که تقریبا جملهبهجملهاش بعد از این همه سال یادم مونده و بخش زیادیش توی این ویدیو تکرار شده + درک و شهود خودم.
هدف نظام آموزشی اصلی (چیزی که توی ایران صرفا از نظر شکلی کپی شده) از مدارج تحصیلی اینه:
- تکنسین (فوق دیپلم): فرد، یک سری مهارت مشخص رو برای انجام کارهای مشخص یاد بگیره؛ بیشتر، نه!
- مهندسی (لیسانس): فرد، به «دانش عام حل مسئله» برسه، یعنی روشها و زاویه نگاههای مختلف رو برای بررسی مسائل یاد بگیره، و بدونه چه نوع مسئلهای از طریق چه روشی قابل حل است.
- مهندسی (فوق لیسانس): فرد علاوه بر «دانش عام به حل مسائل» روی یک تیپ «مسئله مشخص» تمرکز میکنه و روی یکی از روشهای حل اون مسئله، «بهینگی» ایجاد میکنه.
- مهندسی (دکترا): فرد روی تیپ مسئله مشخصی که قبلا دانشش رو تعمیق کرده، «یک روش حل مسئله جدید» ارائه میکنه به جهان.
❓ عارضهیابی نظام آموزشی مهندسی:
*️⃣ کتب درسی، یکبهیک «وارد» و «تدریس» میشن؛ ولی ارتباط بینشون وارد نشده! مثل قطعات مختلف یک ماشین که جدا جدا وارد کردیم، ولی یادمون رفته دستورالعمل مونتاژ ماشین رو بیاریم!! به بچههای مردم قطعات جدا جدا میفروشیم، بدون اینکه وصل شده باشن به هم!
*️⃣ صنعت و دانشگاه باید مثل یک مدار «سری» بسته بشن، نه «موازی»! توی ایران فرم غالب، موازی است.
*️⃣ «دوره دانشگاهی» در خدمت «هدف» فرد نیست؛ بلکه «هدف افراد» در خدمت «تحصیل دانشگاهی» است. تا اینجا مشکل ۳۰ درصده، ۷۰ درصد مشکل وقتی کامل میشه که جایی که «باید» هدف برای افراد شکل بگیره هم کارش رو درست انجام نمیده!!
همین عارضه متوجه خود دانشگاه هم هست، یعنی هدف تاسیس خیلی دانشگاهها عملا آمار تعدادی و اشتغالزایی برای کارکنان دانشگاه بوده؛ همین بلا رو هم با «تعداد» مقاله و مفهوم چرندی مثل «تولید علم» آوردن.
*️⃣ پرداختن به منابع «غیراصیل» این عوارض رو تشدید کرده، مثل کتبی که بد ترجمه شده و شاکلهي معیوبی از مطلب رو همراه داره، یا جایگزینی جزوه و کتاب فرعی، به جای «منابع اصیل» (کتاب رو به استاد هم تعمیم بدید با همین منطق، یعنی استادی که اصالت سواد نداره). البته این بخشیش در فرهنگ ما هم هست که دنبال زحمت کمتر و زودتر به نتیجه رسیدنیم که توی جای جای کارهامون از استفاده کور از ابزارها و نخوندن داکیومنت، تا تصور یادگیری با یک پست وبلاگی تا دنبال جزوه گشتن به جای کتاب خوندن تا... بهشون دچاریم.
ببخشید اگر غیر مرتبط با مطالب کانال بود... 😊🌱
از اونجایی که نظام آموزشی ما مشکلات ساختاری زیادی داره، احتمالا اینکه «این درسها مثل ریاضی و معادلات دیف و محاسبات عددی و... به چه درد میخوره/میخورد» سوال خیلیها خصوصا جوانترها باشه، زیاده.
چیزی که مینویسم، ترکیبی از پاسخیه که تقریبا جملهبهجملهاش بعد از این همه سال یادم مونده و بخش زیادیش توی این ویدیو تکرار شده + درک و شهود خودم.
هدف نظام آموزشی اصلی (چیزی که توی ایران صرفا از نظر شکلی کپی شده) از مدارج تحصیلی اینه:
- تکنسین (فوق دیپلم): فرد، یک سری مهارت مشخص رو برای انجام کارهای مشخص یاد بگیره؛ بیشتر، نه!
- مهندسی (لیسانس): فرد، به «دانش عام حل مسئله» برسه، یعنی روشها و زاویه نگاههای مختلف رو برای بررسی مسائل یاد بگیره، و بدونه چه نوع مسئلهای از طریق چه روشی قابل حل است.
- مهندسی (فوق لیسانس): فرد علاوه بر «دانش عام به حل مسائل» روی یک تیپ «مسئله مشخص» تمرکز میکنه و روی یکی از روشهای حل اون مسئله، «بهینگی» ایجاد میکنه.
- مهندسی (دکترا): فرد روی تیپ مسئله مشخصی که قبلا دانشش رو تعمیق کرده، «یک روش حل مسئله جدید» ارائه میکنه به جهان.
همین عارضه متوجه خود دانشگاه هم هست، یعنی هدف تاسیس خیلی دانشگاهها عملا آمار تعدادی و اشتغالزایی برای کارکنان دانشگاه بوده؛ همین بلا رو هم با «تعداد» مقاله و مفهوم چرندی مثل «تولید علم» آوردن.
ببخشید اگر غیر مرتبط با مطالب کانال بود... 😊🌱
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍7👌2😁1🤔1
سالهاست که توی کامیونیتی، یه عده از جواگره عزیز یه جوری در مورد NoSQL صحبت میکنن که گویی دوای درد هر نوع نرمافزاریه! یا گاها طوری وانمود میکنن که انگار NoSQL نسل بعدی دیتابیسها پس از دوران RDBMSهاست!! بحمدلله و المنه MEAN stack (MongoDB, Express, Angular, Node) هم بهشون کمک کرده تا مثالهای سریع و قشنگ رو کنن. از اون طرف هم سوگند خوردههای Oracle و SQL Server از بیخ NoSQL رو حتی بعد از این همه سال حباب و مُد زودگذر میدونن!! ولی واقعیت اینه که هر کدوم برای حل مسائل خاص خودشون طراحی شدن.
در واقع MongoDB یک پلتفرم عالی برای دادههای با ساختار منعطف و مقیاسپذیری افقیه. مثلاً وقتی دادههاتون ساختار ثابتی نداره، یا نیاز دارید به سرعت تغییرات اسکیما اعمال کنید. یا سناریوهایی که حجم write بالاست و eventual consistency قابل قبوله.
از اون طرف، SQL Server (و Oracle) غول باتجربهایه که ACID transactions، روابط پیچیده و کوئریهای سنگین رو به خوبی مدیریت میکنه. توی سیستمهای مالی، بانکی و هر جا که consistency داده حیاتیه، همچنان پادشاهی میکنه و البته امکانات انترپرایز امنیتی و پایداری و توزیعپذیری داره.
انتخاب تکنولوژی فقط به قابلیتهای فنی محدود نمیشه. تجربه تیم، اکوسیستم ابزارها، هزینههای نگهداری و مهمتر از همه "مسئلهای که قراره حل کنیم" توی تصمیمگیری موثرن.
شروع سریع با MongoDB
مقایسه جزئیتر از زبان مونگو
محصول رقیب مایکروسافت (Cosmos DB)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14 6
لابلای اخبار کلی مطلب میبینیم در مورد اینکه هوش مصنوعی تا فلان سال (اکثرا بین ۳ تا ۱۰ سال رو پیشبینی میکنن) فلان درصد از آدمها رو بیکار میکنه و دیگه مهندسهای نرمافزار باید غازهاشون رو صبح به صبح به چَرا ببرن و...
چقدر این توصیفات درسته؟ چقدر AI برای ما خطرناکه؟
از نگاه کلی: هوش مصنوعی که این روزها مرکز توجهه، مدلهای زبانی هستن، به زبان خیلی ساده؛ یه ماتریس خیلی خیلی بزرگ از ارتباط بین کلمات! آیا با مفهوم انسانی؛ نوآور، خلاق و باهوش هستند؟ خیر! چیزی که در قالب نوآوری ازشون دیده میشه، ترکیب دادههایی است که باهاشون مدل زبانی آموزش دیده (متن، تصویر، ویدیو و...). حالا نسل جدیدترش که agentic AI هست، ترکیب مدلهای مختلف برای کاربردهای خاص هستن که انجام کارهای پیچیدهتر رو ممکن میکنن.
قبلتر هم چنین تحولات بزرگی رو از سر گذروندیم؛ یه عده هم حذف شدن، حالا یا به شکل تغییر زمینه کاری یا باقی موندن روی پروژههای حوصله سربری که خدا میدونه چه روزی جایگزین میشن. مثلا: زمانی که وب گسترش پیدا کرد، کسانی که اصرار روی دسکتاپ داشتن؛ زمانی که دوران افول دلفی رسید شرکتها و تیمهایی که دیر این موضوع رو پذیرفتن. یا دوران کلاد، یا زمانی که نرمافزارها نیاز به تحلیل داده داشتن، اونایی که کماکان اصرار بر گزارشات چاپی که لیست اطلاعات رو حداکثر با یه جمع به کاربر ارائه میکردن. یا دورانی که موبایل اپلیکیشنها به یه راه تعامل جدی با کاربرها تبدیل شدن و...
من هوش مصنوعی فعلی رو چیزی فراتر از تحولات بالا نمیدونم، روزی که برنامهنویسها توی vim کدنویسی میکردن، آیا اومدن IDEها و ادیتورهای مدرن که autocomplete و کلی ابزار قوی که سرعت و سهولت رو به توسعه میداد، حتی اومدن low-codeها no-codeها ما رو بیکار کرد؟
آیا اومدن روباتها به صنایع خودروسازی باعث بیکاری سراسری شد؟
جواب هر دو سوال: هم بله است هم خیر. جنس بیکار کردن AI از جنس بیکار کردن سیر جاری پیشرفت تکنولوژی است. تایپیستی که زرنگار و بعدتر ورد یاد نگرفت، و بعدترش از speech-to-text استفاده نکرد و مهارتش رو به ویراستاری ارتقاء نداد، مثل برنامهنویسی که روی ابزارهای جدید مهاجرت نکرد و بهروز نموند شغلش یا حس پویاییاش نابود شد.
در دنیای مدرن مابهازای تولید هر ۱۰۰۰ خودرو، بین ۵ تا ۱۰ نفر شاغل میشن (با وجود روباتها و ابزارهای خودکار پیشرفته)، در ایران، این عدد ۷۰ تا ۱۵۰ نفر است!!! آیا اگر تویوتا یا تسلا در ایران کارخونه بزنن یا همین کارخونهها رو تصاحب کنن، نباید تعداد زیادی آدم غیربهرهور اخراج شن؟ همین رو به نرمافزار تعمیم بدیم؛ آیا با وجود کوپایلوت و ابزارهای مدرن؛ برنامهنویسی که هنوز نرمافزار CRUD مینویسه، و به کاربرش و سازمان بهرهبردار از نرمافزار، امکانات مبتنی بر AI برای بهرهوری بیشتر نمیده، نباید حذف شه؟ یا اگر حذف نشه، نباید درجا بزنه و رشد نکنه؟
برنامهنویسی که امکانات مدرن به محصولش نیاره، مثل شرکتهایی هستن که به خودروسازهای داخلی ما امکانات رباتیک هوشمند و بهرهور ندادن، هم مشتریشون (خودروساز) رو غیربهرهور کردن هم خودشون عقبموندن. حالا فرق AI در نرمافزار اینه که که چون امکانات فیزیکی مثل کارخونه و روباتهای بزرگ و... نیاز نداره و شما از هر جای دنیا میتونی از یک مدل در جایی دیگر از جهان استفاده کنید، مهاجرت و اثرگذاری سریعتری خواهد داشت.
از نگاه ایران: متاسفانه در زمانهای که کشورها سر تحولات بزرگ هوشمصنوعی و دسترسی به تراشه رقابت دارن، دیپسیک چینی در عرض چند روز حتی توی آمریکا به بالای لیست میاد؛ ایران درگیر فیلتر بودن یا نبودن بدیهیات و اینترنت طبقاتی و... است. لذا با تاسف و تألم عمیق، بعید میدونم تغییرات در ایران وسعت و عمق زیادی داشته باشه. دلایلم وسیع و بیانش زمانبره ولی اگر از چند شرکت پیشرو عبور کنیم، معدل بقیهی جامعه نرمافزاری کشور، بسیار پایینه. پیشنهاد میکنم دیدگاه کلان داشته باشیم و کل جامعه نرمافزاری رو ببینیم نه چند شرکتی که روز به روز هم کوچکتر و کُندتر میشن (مهاجرت نیروی متخصص، شرایط اقتصادی، انزوای تکنولوژیک، سیاستهای کشور و...). همین جامعه نرمافزاری ایران سهم مهمی از شرایط دولت داشته که به جای ۱۵ تا ۲۵ نفر کارمند به ازای هر ۱۰۰۰ نفر، ۳۰ تا ۳۵ کارمند با بهرهوری «برو فردا بیا؛ برو هفته دیگه بیا» داره؛ در حقیقت نرمافزارهایی توسعه دادن که شفافیت، business observability و integrity رو به سخره گرفتن!
لذا درست مثل زمانی که IDEهای مدرن اومدن، AI رو به مثابه ابزاری ببینیم که قراره به ما کمک کنه تا محصولات «امروزی» تری بسازیم، مشتریانمون رو توانمندتر و بهرهورتر کنیم و دانشمون رو ارتقاء بدیم. به جای حبابها رو هیجانات هم روی تعمیق و گسترش دانشمون کار کنیم...
نظرتون رو بگید لطفا 😊🌱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👏5❤2
⚠️ این پست، فنی نیست، فقط شوخی و تخیلی است!
«حالا که چند بار کلمه جواگره که جمع مکسر جوگیر است رو به کار بردم لازمه تا انواعشون رو برشماریم»
۱. فنبوی/فنگرل (Fanboy)
اینا بهشدت به یک برند یا تکنولوژی خاص وفادار هستن و اغلب بهطور غیرمنطقی ازش دفاع میکنن (مثلاً طرفدارای اپل یا پیاچپی یا جاوا، دقت کنین که داتنت و گو فَنبوی ندارن، همه از بیخ جنتلمن، لیدی و فهیم و منطقی هستن چون کسی حق نداره در مورد حضور ابرو در سمت فوقانی چشمشون صحبت کنه! حالا خود دانید؛ اصلنشم فنبوی خودتونید و ۷... ).
رفتار: مخالفت شدید با هر محصول یا تکنولوژی رقیب. از زمرهی خطرناکترین جواگره.
۲. ترول (Troll)
کسایی که عمداً بحثها و مباحثات رو خراب میکنن تا دیگران رو تحریک کنن.
رفتار: نظر دادنهای بیربط یا بحثبرانگیز، صرفاً برای جلب توجه یا ایجاد دعوا. حداکثر اصطکاک با سطح مُخ رو دارند. اساتید whataboutism در مباحثات. اینا اگر توی کامیونیتی نرمافزاریها چرند نبافن، حتمن در اون ساعت و لحظه، توی گفتگوی ویژه خبری تلویزیون دارن روان ۸۰ میلیون نفر رو سیقل میدن، مثلا با طرح دلایل متقن! در مورد تاثیر فیلترینگ بر شادابی پوست و افزایش طول عمر!
۳. فومو (FOMO: Fear of Missing Out)
افرادی که به دلیل ترس از جا موندن از فناوریهای جدید، همیشه به دنبال خرید یا تجربه آخرین محصولات و تکنولوژیها هستن.
رفتار: خرید فوری هر محصول جدید یا ثبتنام توی سرویسهای تازه معرفیشده. اینا حقوقشون به پنجم ماه بیشتر قد نمیده. از سابسکریپشن هوشمصنوعی تا تمام سرویسهای موسیقی، تا هزاران گیگ ویدیو آموزشی تمام تکنولوژیهای جهان رو دارن. عموما از شدت استرس عقب موندن از موج اتفاقات، مجبورن شبها ماینوکسیدیل ۹۰ درصد، گل ختمی و جوشونده خارشتر به سرشون بمالن.
۴. هایپ رایدر، هایپمستر (Hype Rider)
کسایی که فقط به دلیل "مد شدن" یا "حواشی" سراغ یک تکنولوژی میرن.
رفتار: مثلاً هوش مصنوعی رو فقط به خاطر ترند بودن، بدون علاقه واقعی، بلغور میکنن. اینا حتی وبلاگشون که هنوز متون lorem ipsum و «سلام دنیا، این اولین پست وردپرس است» توشه رو «باید» روی کوبرنتیز بیارن بالا. این گونه از جواگره، دانششون دریایی به عمق ۱ سانتیمتره و پارسال با عینک اپلویژن در سطح خیابونا زیاد دیده شدن. در پاسخ «چرا» عموما به سقف یا گاهن به سمت افق خیره میشن.
۵. میمباز تکنولوژی (Tech Meme Lord)
کسایی که علاقه دارن مسائل تکنولوژی رو در قالب میم مطرح کنن.
رفتار: اینا حرف نمیزنن، تایپ نمیکنن، فقط میم میفرستن. هر جا دکمه submit یا send داشته باشه جوکهای فنی و میم میفرستن. این گونهاز جواگره بعد از مدتی به درجهای از بیمزگی و تکرار میرسن که نیازی ندارن تا همسر برادر همسرشون تست بارداری بده، چون «قطعا» شوهرعمه شدن!
۶. نوستالژیباز (Tech Nostalgic):
اینا مدام از گذشته تکنولوژی تعریف میکنند و معتقدن همه چیز قبلاً بهتر بود.
رفتار: ساعت کاسیو اف۹۱ دستشونه، گوشی نوکیا دارن هنوز (با چراغقوه فعال)، عینک طرح مرحوم هویدا میزنن، باور دارن دلفی و SQL Server 2000 هنوزم کافیه و بهترین استک است، تنها مشکلشون اینه که مشتریهاشون باید ویندوز XP اونم ۳۲ بیتی نصب کنن.
۷. اسنوب فناوری (Tech Snob):
اینا فقط گرونترین و جدیدترین گجتها رو قبول دارن و به انتخابهای دیگران با تحقیر نگاه میکنن.
رفتار: هر کس اندروید داره و آیفونش قدیمیتر از ۱۶ است، اُمُل، کَدی، و حتی اًزگَل به شمار میاد. ویندوز دارها مستحق سوزانده شدن در کوره آجرپزی هستن و مَک تنها پاسخگوی نیازهای این بزرگوارانه، چرا؟ چون با «زبان برنامهنویسی» HTML و CSS پروژههای سنگینشون باید پردازش شه. اینا عموما یه کلیه ندارن، مسابقات ملی چارقاپ شپشها انتهای جیبشون برگزار میشه ولی در عوض پشت یَک یَک گجتهاشون یک سیب گاز زده است.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣19👍3👏1
آشنایی به عناوین و سلسهمراتب سازمانی مهندسی نرمافزار، توانمندیها و مسئولیتها. و اینکه از کجا بفهمیم سازمان ما چه سطوحی رو نیاز داره...
Please open Telegram to view this post
VIEW IN TELEGRAM
سلسلهمراتب مهندسی نرمافزار موضوع مهمیه، هم برای سازمان که بخواد با ساختار مناسب به اهداف و برنامههاش برسه و بهرهوریاش رو بهبود بده؛ هم افراد انگیزه برای رشد و یادگیری و رقابت داشته باشن. پس داشتن یه ساختار سازمانی درست + ساز و کار ارزیابی و رشد سرمایهانسانی، نه تنها حیاتیه، بلکه یه چالش بُرد-بُرد برای سازمان و افراده.
قبل از توضیح در مورد انواع سلسلهمراتب مهندسی نرمافزار، باید بدونیم » چجوری ساختار سازمانی مناسب رو انتخاب کنیم؟
آیا هر چی گوگل، اپل، متا یا... داره رو کپی کنیم؟ یا هر کاری هزاردستان و اسنپ و دیجیکالا کردن رو کپی کنیم؟ (حتی لحن سوالم نشون میده فقط یکی از انواع مدیران جواگره چنین کاری رو میکنه 😁)
موارد زیر تنها تعدادی از مولفههای مورد بررسی برای طراحی ساختار سازمانی مهندسی نرمافزاره، برای هر کدوم دو مورد مثال ذکر میکنم.
توجه داشته باشید که هم مولفههای بیشتری دخیله، هم مثالهای متنوعتری میشه از انواع هر مولفه زد که از حوصله پست تلگرامی خارجه.
۱. اندازه شرکت
۲. پیچیدگی محصول
۳. فرهنگ سازمانی
۴. اهداف رشد
۱. نیازسنجی (Gap Analysis):
۲. مقایسه با شرکتهای مشابه (Benchmarking):
۳. تعریف نقشه راه (Roadmap):
۴. انعطافپذیری:
این بخش اول بود، لازم بود توضیح بدم که نقشها و انواع سلسه مراتبی که در قسمت بعدی معرفی خواهم کرد، فقط نمونههاییه که سازمانهای مختلف بر اساس نیاز و شرایطشون ایجاد کردن. مثلا Distinguished Engineer یا Developer Advocate نقشهایی است که برخی سازمانها بنا به ضرورت، اهداف و نیازشون ایجاد کردن و دارن، دلیل نمیشه همه داشته باشن.
از اون طرف اگر ما نقشها و مسئولیتها رو درست نشناسیم در انتخاب مسیر شغلی شاید انتخابهای غیر بهینهای کنیم. پس افراد باید بدونن مسیر رشدهای مختلف چیه تا هم نقشه رشدشون رو ترسیم کنن هم سازمان متناسب رو برای کار کردن انتخاب کنن. از طرفی سازمانها هم باید تکلیفشون مشخص باشه تا بتونن چرخه تربیت و رشد سرمایهانسانی رو ترسیم و اجرا کنن. شما برای تربیت نیروی انسانی باید افرادی رو داشته باشی که «بلد باشن و شایستگی» هدایت نیروی انسانی رو داشته باشن. نه اینکه هر وقت مدیر رفت نفر بعدی رو مدیر کنی! یا هر کی شوآف بیشتری داشت ارتقاء بدی!
🌱 لطفا دقت شود: «هدایت» با «راهنمایی» بسیار فرق داره! هدایت یعنی من دست شما رو بگیرم ببرمتون به مقصد مشخص برسونم. ولی راهنمایی یعنی بهتون آدرس رو بگم. لیدرشیپ نوعی از هدایت است، وگرنه راهنمایی توی اینترنت زیاده!
دوست دارید ادامه بدم و قسمت دوم و بعدترش رو داشته باشیم؟
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
کوییز: تنها ۲ درصد افراد قادر به حل این کوییز هستن که جزو نوابغ ناسا به شمار میان.
کدام گزینه نابودکنندهترین اقدام برای «حال و آینده» یک مهندس نرمافزار است؟
کدام گزینه نابودکنندهترین اقدام برای «حال و آینده» یک مهندس نرمافزار است؟
Anonymous Quiz
2%
رها نمودن پیانو از بالای ساختمان وقتی در حال عبور است
1%
وارد کردن وی داخل چرخ گوشت و دریافت دهها مهندس کوچولوی رشته رشته
2%
تنها گذاردن وی داخل اتاقی مملو از کروکودیل گرسنه
5%
وصلت وی با عمهی بیوه کیمجونگاون که همسر مرحومش تابآوری کافی در مقابل شلیک گلوله توپ کیم را نداشت
70%
ارتقاء وی به پوزیشن لیدرشیپ یا تصمیمگیر وقتی تجربه و دانش کافی را ندارد
20%
با یک سال سابقه، طی فرایند شایستهگزینی قحطالرجال/قحطالنساء شدم انجینیرینگمنجر اومدم نتیجه ببینم
🤣24👍1🔥1
خب حالا که فهمیدیم انتخاب ساختار سازمانی بستگی به نیازها و شرایط داره، بریم سراغ یه نمونه واقعی: گوگل!
گوگل یکی از شرکتهاییه که ساختار مهندسی مدون و تعریفشدهای داره و خیلیها تو مسیر شغلیشون دوست دارن بدونن که این مسیر رشد توی گوگل چطوره. البته دوباره تأکید کنم: ساختار گوگل برای گوگل خوبه! کپی کردنش بدون توجه به اندازه، اهداف، و فرهنگ سازمانی شما مثل این میمونه که کت و شلوار سایز ۳XL بخری ولی قدت ۱۲۰ باشه! 😁
۱. سطح Software Engineer I (L3)
📌 تجربه و دانش: معمولاً تازهواردها، فارغالتحصیلان دانشگاه یا کسانی که صفر تا دو سال تجربه دارن
۲. سطح Software Engineer II (L4)
📌 تجربه و دانش: معمولاً چند سال (۲ تا ۵ سال) تجربه کاری در پروژههای واقعی
۳. سطح Senior Software Engineer (L5)
📌 تجربه و دانش: معمولاً ۵ تا ۱۰ سال تجربه، فرد باید بتونه راهحلهای فنی جامع و بهینه ارائه بده؛ یا کل پروژه رو از صفر تا صد هدایت کنه
۴. سطح Staff Software Engineer (L6)
📌 تجربه و دانش: معمولاً بالای ۱۰ سال تجربه، کسی که بتونه تصمیمات کلیدی فنی بگیره
۵. سطح Senior Staff Engineer (L7)
📌 تجربه و دانش: ۱۵+ سال تجربه، این سطح برای متخصصین عمیق در یک حوزه فنی در نظر گرفته شده (مهندسینی که در صنعت شناخته شدهاند)
۶. سطح Principal Engineer (L8)
📌 تجربه و دانش: عموما ۲۰+ سال تجربه و سطحی که فقط تعداد کمی از مهندسان بهش میرسن
۷. سطح Distinguished Engineer / Google Fellow (L9 - L10)
📌 تجربه و دانش: یکی از بالاترین جایگاههای مهندسی که فقط تعداد محدودی بهش میرسن
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2 1
جمعبندی:
سلسلهمراتب گوگل برای شرکتی با ۱۷۰ هزار کارمند و محصولات جهانی طراحی شده. اگر سازمان شما ۵۰ نفر است، دنبال استخدام L8 نباشید! 😂
موفقیت در گوگل (و هر شرکتی) به تاثیرگذاری (Impact) وابسته است، نه صرفاً سالهای تجربه. پس به جای تقلید کورکورانه، ساختاری طراحی کنید که متناسب با قد و بالای سازمان شما باشه!
💬 شرکت بعدی چی باشه؟ (کامنت کنید)
بوکینگ؟ مایکروسافت؟ اپل؟ Miro؟ ING؟ Meta؟ Ayvens؟
اگر مثال شرکتهای دیگه رو ادامه بدم، ریاکشن:⚙️
اگر این بحث کافیه، ریاکشن:🤪
سلسلهمراتب گوگل برای شرکتی با ۱۷۰ هزار کارمند و محصولات جهانی طراحی شده. اگر سازمان شما ۵۰ نفر است، دنبال استخدام L8 نباشید! 😂
موفقیت در گوگل (و هر شرکتی) به تاثیرگذاری (Impact) وابسته است، نه صرفاً سالهای تجربه. پس به جای تقلید کورکورانه، ساختاری طراحی کنید که متناسب با قد و بالای سازمان شما باشه!
بوکینگ؟ مایکروسافت؟ اپل؟ Miro؟ ING؟ Meta؟ Ayvens؟
اگر مثال شرکتهای دیگه رو ادامه بدم، ریاکشن:
اگر این بحث کافیه، ریاکشن:
Please open Telegram to view this post
VIEW IN TELEGRAM
مقدمه: یکی از چالشهای متعدد و اساسی جامعه ما اینه که «سوال نداریم» خصوصا «سوال خوب»!! شاید روزی مفصل نوشتم در موردش... فعلا بگذریم...
امروز یک سوال «خوب» در مورد مطلب قبلی طرح شد؛ ممنون از آقا یا خانم NaN که پرسیدن:
به احترام پرسش خوب ایشون سعی میکنم در حد بضاعت پست تلگرامی توضیح بدم.
توی مباحث لیدرشیپ فنی، ۳ تا کلمه داریم که دونستن معانی اونها مهمه:
💡 در مورد Output (خروجی)
تعریف: خروجی، محصول مستقیم و قابلاندازهگیری فعالیتها یا وظایفه. درواقع، ماحصل بلافصل کاریه که انجام میدهیم؛ مثلاً کدنویسی، طراحی، مستندسازی یا تولید نسخه اولیه نرمافزار. عملا فعالیتها یا محصولات ملموسی که تیم تولید میکند.
⚙️ مثال:
===========================
💡 در مورد Outcome (نتیجه)
تعریف: نتیجه به تأثیرات و تغییراتی اشاره داره که به واسطهٔ یک خروجی در رفتار یا وضعیت کاربران، کسبوکار یا فرایندهای داخلی به وجود مییاد. Outcome معمولاً روی «ارزش» تمرکز داره؛ اینکه خروجی تولیدشده چه مشکلی را حل کرده یا چه بهبودی ایجاد کرده.
⚙️ مثال:
===========================
💡 در مورد Impact (تأثیر یا اثرگذاری کلان)
تعریف: Impact سطحی کلانتر از «نتیجه» است که نشون میده تغییرات ایجادشده چه اثرات عمیق یا پایدار در جامعه، بازار، استراتژی کلان شرکت یا حتی صنعتی که شرکت توش فعالیت میکنه، داشته است. Impact فراتر از یک «دوره کوتاه» یا «مقیاس کوچک» است و غالباً در بلندمدت ارزیابی میشود.
⚙️ مثال:
===========================
لذا این خیلی خیلی مهمه که «ملاک سنجش و ارزشگذاری» عملکردمون «استاندارد و جهانی» باشه... وگرنه: «خود گویی و خود خندی... عجب مرد هنرمندی!»
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10 4👍2
حالا که گوگل رو مرور کردیم، و مفهوم impact در سازمان رو دیدیم، بنا به نظر و پیشنهاد شما، بریم سراغ مایکروسافت ۲۲۸هزار کارمند داره که متناسب با ساختار و نیازهاش، نردبان شغلی خاص خودش رو داره:
۱. سطح L59 - Software Development Engineer I (SDE I)
📌 تجربه و دانش: فارغالتحصیلهای تازهکار یا ۰ تا ۲ سال تجربه.
۲. سطح L60 - Software Development Engineer II (SDE II)
📌 تجربه و دانش: معمولاً ۲ تا ۵ سال تجربه، کسی که بتونه مشکلات فنی پیچیدهتر و پروژههای کوچیک رو حل کنه.
۳. سطح L61-L62 - Senior Software Engineer (SSE)
📌 تجربه و دانش: معمولاً بالای ۵ سال تجربه، کسی که بتونه استقلال بیشتری در تصمیمگیریهای فنی داشته باشه
۴. سطح L63-L64 - Principal Software Engineer
📌 تجربه و دانش: معمولاً ۸-۱۲ سال تجربه، فردی که میتونه چند تیم رو از نظر فنی هدایت کنه.
۵. سطح L65-L66 - Partner Software Engineer
📌 تجربه و دانش: یکی از بالاترین سطوح مهندسی فنی در مایکروسافت، معمولاً ۱۲+ سال تجربه.
۶. سطح L67 - Distinguished Engineer
📌 تجربه و دانش: افرادی که تأثیر مستقیمی روی کل صنعت دارن، تعداد این افراد خیلی کمه (مثال: دیوید فولر)
۷. سطح L68+ - Microsoft Technical Fellow
📌 تجربه و دانش: بالاترین سطح فنی در مایکروسافت! این افراد تأثیرگذارترین چهرههای تکنولوژی شرکت هستن (اینقدر که مدخل ویکیپدیا دارن!)
🔀 مایکروسافت دو مسیر مجزا برای پیشرفت داره:
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
tech-afternoon
📇 سلسلهمراتب مهندسی نرمافزار (بخش دوم, گوگل!)
خب حالا که فهمیدیم انتخاب ساختار سازمانی بستگی به نیازها و شرایط داره، بریم سراغ یه نمونه واقعی: گوگل!
گوگل یکی از شرکتهاییه که ساختار مهندسی مدون و تعریفشدهای داره و خیلیها تو مسیر شغلیشون دوست دارن…
خب حالا که فهمیدیم انتخاب ساختار سازمانی بستگی به نیازها و شرایط داره، بریم سراغ یه نمونه واقعی: گوگل!
گوگل یکی از شرکتهاییه که ساختار مهندسی مدون و تعریفشدهای داره و خیلیها تو مسیر شغلیشون دوست دارن…
🔥11👍1
🛠 چرا سلسلهمراتب مهندسی برای شرکتهای کوچک و متوسط مهمه؟
شرکتهای کوچک و متوسط (SMEs) معمولاً چابکتر از غولهایی مثل گوگل و مایکروسافت هستن، ولی اگر نقشها شفاف نباشه، افراد جای رشد نداشته باشن و سازمان فاقد ساختار منطقی باشه، انگیزه تیم پایین میاد و رشد شرکت متوقف میشه. آدمها میرن یا فسیل میشن! و دیگه نقطه قوت چابکی تبدیل میشه به اسباب درجا زدن...
👨💻 هدف از طراحی نردبان شغلی اینه که:
🔹 سلسلهمراتب پیشنهادی برای یک شرکت پویا و مقیاسپذیر
۱. سطح Junior Software Engineer 👶
📌 ویژگیها: ۰ تا ۲ سال تجربه، تسلط روی اصول برنامهنویسی و یکی دو تکنولوژی
🔹 مسئولیتها:
🎯 شرایط ارتقا: تسلط به ابزارهای توسعه شرکت، بهبود درک معماری نرمافزارها
۲. سطح Software Engineer 👨💻 (مهندس نرمافزار)
📌 ویژگیها: ۲ تا ۵ سال تجربه، توانایی توسعه ویژگیهای مستقل
🔹 مسئولیتها:
🎯 شرایط ارتقا: ارائه راهحلهای بهینهتر (نه شوآف!) و درک بهتر از طراحی سیستمها
۳. سطح Senior Software Engineer 🔥 (مهندس نرمافزار ارشد)
📌 ویژگیها: ۵ تا ۸ سال تجربه، مهارت در حل مشکلات پیچیده
🔹 مسئولیتها:
🎯 شرایط ارتقا: توانایی تصمیمگیریهای فنی مهم، رهبری پروژههای بزرگتر
۴. سطح Lead Engineer / Tech Lead 🚀 (رهبر فنی تیم)
📌 ویژگیها: ۷ تا ۱۰ سال تجربه، تخصص در طراحی و راهبری سیستمهای پیچیده
🔹 مسئولیتها:
🎯 شرایط ارتقا: تجربه کافی در مدیریت تیمهای مهندسی، درک استراتژی فنی
۵. سطح Software Architect 🏛 (معمار نرمافزار)
📌 ویژگیها: ۱۰+ سال تجربه، توانایی طراحی سیستمهای بزرگ و توزیعشده
🔹 مسئولیتها:
🎯 شرایط ارتقا: داشتن دیدگاه کلان و استراتژیک به سیستمهای نرمافزاری
۶. سطح Engineering Manager 🎯 (مدیر مهندسی)
📌 ویژگیها: مهارت در هم مدیریت افراد، هم درک فنی سیستمها
🔹 مسئولیتها:
🎯 شرایط ارتقا: اثبات توانایی در هدایت چند تیم و موفقیت در اجراهای استراتژیک
۷. سطح CTO (Chief Technology Officer) 🏆 (مدیر ارشد فناوری)
📌 ویژگیها: بالاترین سطح فنی، توانایی هدایت کل دپارتمان مهندسی
🔹 مسئولیتها:
🎯 شرایط ارتقا: تجربه گسترده در رهبری فناوری و ایجاد محصولات موفق
🔹 انعطافپذیری حفظ بشه! یه استارتاپ ۱۰ نفره قطعاً نیازی به CTO یا چندین سطح از روز اول نداره، ولی وقتی رشد کنه، نیازش ایجاد میشه.
🔹 جایگاههای میانی حذف نشن! بین یه Junior و یه Senior باید مسیر رشد منطقی باشه، وگرنه انگیزه تیم کم میشه.
🔹 فرهنگ یادگیری و رشد ایجاد بشه! مسیر پیشرفت افراد نباید صرفاً روی «سالهای تجربه» باشه، بلکه توانایی و خروجی مهمتره.
🔹 وقتی برخی پوزیشنها رو به هر دلیلی ندارید، هیچ اشکالی نداره از مشاور «شایسته» استفاده کنید، خیلی بهتر از اینه که چون کسی رو ندارید بهش برچسب سنیور یا معمار یا کوفت بچسبونیم.
🔹 پوزیشنهای لیدرشیپ، فقط مهارت فنی نیاز ندارن، باید بتونه تعامل سازنده و مناسب با سایرین داشته باشن و کمک به رشد بقیه کنن
😊 پایان این بحث
خوشحال میشم فیدبک بدید 🌱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🏆2
کوییز: بهترین مسیر برای رشد شغلی و پیشرفت در مهندسی نرمافزار کدام است؟ (نمونه سوال آزمون ثلث سوم دانشگاه هاروارد، ۲ نمره)
Anonymous Quiz
9%
پاچهخواری از روبرو، زیرآبزنی از پشت 😈
1%
شیتیل بدیم کارگزینی تا جلو اسممون بنویسه مهندس 🥸
1%
نفر بالادستی، دیر یا زود مهاجرت میکنه، فرداش میشینیم رو صندلیش، میشیم رییس 😎
1%
حوصله داری عامووو، پیشرفت کنیم که کجاا رو بگیریم مثلا؟! 🥱
60%
شرکتی کار کنیم که نردبان شغلی خوبی داره، تلاش و یادگیری و اثربخشی داشته باشیم 🤓
7%
قتل تمیز یا چیزخور کردن بیسروصدای نفر بالادستی، حداکثر مشارکت در شیوَن و ناله در مراسم ۷ و چهلم💀
6%
گز ۹۸درصد پسته و کاردستی خلاقانه برای مدیرعامل عزیز و قشنگ شرکت 🙇
1%
خرید پکیج موفقیت و پی بردن به راز پیشرفت 🤪
13%
گشتن توی وبلاگها و بلغور کردن اسم تکنولوژیهای جدید، تهلهجه انگلیسی + فراموشی لغات فارسی 💅
🤣17
یه اصطلاحی برای توصیف کالاهای تندمصرف داریم به نام FMCG یا Fast-Moving Consumer Goods که سریع فروش میرن، عموما ارزون هستن. مثل مواد غذایی و نوشیدنی، لوازم نظافت و...
برای محتوای دیجیتال هم اصطلاح «محتوای زودگذر» یا ephemeral content استفاده میشه. یعنی محتوایی که مثل اینستاگرام (بهخصوص استوریها) یا مطالب تلگرام منتشر میشه، که معمولاً به سرعت توسط کاربر مصرف میشه. خیلی از این محتواها فقط برای چند ساعت یا چند روز قابل مشاهده هستن یا اهمیتشون رو از دست میدن.
چند وقته درگیر این سوال شدم که آیا اصلا تلگرام جای درستی بود برای نوشتن محتوای فنی؟ جایی که گاها مجبورم از کلمات یا علائم نگارشی حذف کنم که توی یک پست جا بشه! یا اینکه بهتر بود تلگرام برای اعلان مطلب جدید در یک پلتفرم مناسبتر مثل بلاگ استفاده میشد؟ آیا مثلا مخاطب امروز این کنال، چقدر از محتوایی که ۲ ماه پیش نوشته شده و هنوز از نظر کاربردی منقضی نشده مطلع میشه یا در معرض انتخابش قرار میگیره؟
خلاصه اینکه اگر پیشنهاد و نظری که کمک کنه داشتید خوشحال میشم بگید... 😊
برای محتوای دیجیتال هم اصطلاح «محتوای زودگذر» یا ephemeral content استفاده میشه. یعنی محتوایی که مثل اینستاگرام (بهخصوص استوریها) یا مطالب تلگرام منتشر میشه، که معمولاً به سرعت توسط کاربر مصرف میشه. خیلی از این محتواها فقط برای چند ساعت یا چند روز قابل مشاهده هستن یا اهمیتشون رو از دست میدن.
چند وقته درگیر این سوال شدم که آیا اصلا تلگرام جای درستی بود برای نوشتن محتوای فنی؟ جایی که گاها مجبورم از کلمات یا علائم نگارشی حذف کنم که توی یک پست جا بشه! یا اینکه بهتر بود تلگرام برای اعلان مطلب جدید در یک پلتفرم مناسبتر مثل بلاگ استفاده میشد؟ آیا مثلا مخاطب امروز این کنال، چقدر از محتوایی که ۲ ماه پیش نوشته شده و هنوز از نظر کاربردی منقضی نشده مطلع میشه یا در معرض انتخابش قرار میگیره؟
خلاصه اینکه اگر پیشنهاد و نظری که کمک کنه داشتید خوشحال میشم بگید... 😊
🎩 کلاسیک: تست «فقط خروجی و رفتار نهایی» رو مورد ارزیابی قرار میده؛ نیازی به دونستن جزئیات داخلی نیست. مثلاً اگر کد توابع کمکی رو تغییر بدیم ولی نتیجه نهایی تغییر نکنه، تستها تغییر نخواهند کرد و فقط اگه Assertمون پاس شه، تست پاس شده.
🎡 لندن: تستها بر اساس نحوهی فراخوانی وابستگیها و جزئیات پیادهسازی دقیق نوشته میشن. این یعنی تغییرات جزئی در داخل کلاس (حتی بدون تغییر در خروجی نهایی) ممکنه باعث شکست تستها بشه؛ حتی اگه مثلا مقدار برگشتی یک متد دقیقا همونی باشه که قبلا بوده.
🎩 کلاسیک: ممکنه چند تست باهم شکست بخورن چون وابستگیها واقعی هستند. در نتیجه پیدا کردن مشکل ممکنه کمی زمان بیشتری ببره.
🎡 لندن: چون تستها به صورت دقیق تعاملات کلاسها رو چک میکنن، در صورت خطا معمولا به سرعت متوجه میشیم که مشکل کجاست.
🎩 کلاسیک: برای تستهای واقعی باید تمامی وابستگیها پیادهسازی بشن که اگر تعدادشون زیاد باشه کار زمانبر میشه؛ ولی از طرفی این موضوع میتونه نشونهای از طراحی پیچیده یا ناسالم سیستم باشه.
🎡 لندن: با استفاده از Mockها میشه وابستگیهای «سطح اول» رو شبیهسازی کرد بدون اینکه لازم باشه کل گراف وابستگیها رو راهاندازی کنیم.
🤔 اگر کنجکاوی که با کد هم تفاوتش رو ببینی: ریاکشن
Please open Telegram to view this post
VIEW IN TELEGRAM
tech-afternoon
به احترام ⚙️ گذارهای عزیز 😁 کد مثال با 📱 و 📱 رو در کامنت مطلب قرار دادم.
💬 کامنت نظر و تجربه داری بیا بحث کنیم 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🙏3👾1