تجربهای از ۲۰۰+ مصاحبه کاری:
توی ۳ سال گذشته اگه بگم بیشتر از ۲۰۰ تا مصاحبه کاری داشتم کم نگفتم. از بین هزاران تجربه و نکتهٔ ریز و درشتی که بدست آوردم، اگه بخوام مهمترینش رو براتون به اشتراک بذارم اینه:
📍کار کنید و تجربه واقعی و عملی بدست بیارید!
- اگه به تازگی وارد حوزه نرمافزار شدین، پیشنهاد من اینه که هر چی زودتر وارد بازار کار بشین. خودتون رو غرق یادگیری و دیدن کورسها و ... نکنین. توی کار عملی چیزهایی یاد میگیرین که هیچوقت این کورسها بهتون یاد نمیدن
- ۸۰٪ دنیای کار امروز مربوط به سافتاسکیل هست! بله ۸۰ درصد! سافت اسکیل رو جایی به شما یاد نمیدن. حتی اگه ۱۰۰۰ ساعت کورس دربارش دیدم باشیم و مطلب خونده باشیم، اگه لمسش نکنیم یاد نمیگیریم
- گرچه توی حوزه کاری ما یادگیری خیلی موضوع مهمی هست، پیشنهاد من اینه که یادگیری رو حین کار عملی داشته باشین. اگه قصد آموزش دیدن از کتابها و کورسها و ... رو دارین، به نظرم ۲۰٪ وقتتون رو برای چنین سبک یادگیری بذارین. چونکه یادگیری واقعی از تمرینها و تجربههای عملی بدست میاد
- هر چی زودتر جایی رو پیدا کنید برای کار کردن. و حین جستجو برای شغل سعی کنین پروژههای عملی برای خودتون بزنین. نگید کار نیست. از در و همسایه و فامیل و ... پروژه بگیرید. کسی نیست که به جایی رسیده باشه ولی خاک نخورده باشه
- پروژههای عملی رو خیلی بزرگ در نظر نگیرید. مثلاً پیادهسازی یک فروشگاه اینترنتی با ۱۰۰ صفحه کار اشتباهی هست. بلکه سعی کنید چند پروژه خیلی کوچیک ولی متنوع پیادهسازی کنید. و اونها رو خیلی شیک و مرتب توی گیتهاب قرار بدین
- اگه به تازگی وارد این حوزه شدین (زیر ۵ سال تجربه دارین)، شرکت مناسب برای کار کردن جایی هست که بتونین تجربه کار عملی بدست بیارین. حقوق و مزایای مالی رو بعداً ۱۰۰ برابرش رو بهمون میدن اگه ارزشمند بشیم. توی هر حرفه و شغلی که هستیم، اگه واقعاً قصد پیشرفت داریم به قول معروف باید خاک اون حوزه رو بخوریم.
✍️ Ali Nazeri
🚀 @IranCoderz 👨💻
توی ۳ سال گذشته اگه بگم بیشتر از ۲۰۰ تا مصاحبه کاری داشتم کم نگفتم. از بین هزاران تجربه و نکتهٔ ریز و درشتی که بدست آوردم، اگه بخوام مهمترینش رو براتون به اشتراک بذارم اینه:
📍کار کنید و تجربه واقعی و عملی بدست بیارید!
- اگه به تازگی وارد حوزه نرمافزار شدین، پیشنهاد من اینه که هر چی زودتر وارد بازار کار بشین. خودتون رو غرق یادگیری و دیدن کورسها و ... نکنین. توی کار عملی چیزهایی یاد میگیرین که هیچوقت این کورسها بهتون یاد نمیدن
- ۸۰٪ دنیای کار امروز مربوط به سافتاسکیل هست! بله ۸۰ درصد! سافت اسکیل رو جایی به شما یاد نمیدن. حتی اگه ۱۰۰۰ ساعت کورس دربارش دیدم باشیم و مطلب خونده باشیم، اگه لمسش نکنیم یاد نمیگیریم
- گرچه توی حوزه کاری ما یادگیری خیلی موضوع مهمی هست، پیشنهاد من اینه که یادگیری رو حین کار عملی داشته باشین. اگه قصد آموزش دیدن از کتابها و کورسها و ... رو دارین، به نظرم ۲۰٪ وقتتون رو برای چنین سبک یادگیری بذارین. چونکه یادگیری واقعی از تمرینها و تجربههای عملی بدست میاد
- هر چی زودتر جایی رو پیدا کنید برای کار کردن. و حین جستجو برای شغل سعی کنین پروژههای عملی برای خودتون بزنین. نگید کار نیست. از در و همسایه و فامیل و ... پروژه بگیرید. کسی نیست که به جایی رسیده باشه ولی خاک نخورده باشه
- پروژههای عملی رو خیلی بزرگ در نظر نگیرید. مثلاً پیادهسازی یک فروشگاه اینترنتی با ۱۰۰ صفحه کار اشتباهی هست. بلکه سعی کنید چند پروژه خیلی کوچیک ولی متنوع پیادهسازی کنید. و اونها رو خیلی شیک و مرتب توی گیتهاب قرار بدین
- اگه به تازگی وارد این حوزه شدین (زیر ۵ سال تجربه دارین)، شرکت مناسب برای کار کردن جایی هست که بتونین تجربه کار عملی بدست بیارین. حقوق و مزایای مالی رو بعداً ۱۰۰ برابرش رو بهمون میدن اگه ارزشمند بشیم. توی هر حرفه و شغلی که هستیم، اگه واقعاً قصد پیشرفت داریم به قول معروف باید خاک اون حوزه رو بخوریم.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33❤2
۱- محصول خودشون رو میفروشن.
۲- از ترس شما پول در میارن.
۳- صرفا جوگیر شدن.
اتفاقی که در حال حاضر محتملترینه اینه که افرادی که صرفا کد مینویسن، به راحتی با هوشمصنوعی جایگزین میشن ولی اونهایی که مهارت و سواد بالایی دارن، ارزش کار و درآمدشون خیلی بیشتر میشه چون اون حجم از کدی که قراره با هوشمصنوعی تولید بشه، نیاز به نگهداری و مراقبت خیلی زیادی داره و فقط افراد متخصص میتونن همچین کاری رو انجام بدن، نوشتن منطقهای پیچیده بیزنسی به کنار.
به جای ترسیدن و غر زدن، سعی کنید تا جایی که میتونید مهارتهای فنی و نرم خودتون رو ارتقا بدید، تو هر زمینهای که هستید باید این کار رو انجام بدید چون دنیای پیشرو، برای آدمهای سطحی جایی نداره. یا مهارتهاتون رو ارتقا میدید و رشد میکنید، یا حذف میشید و میتونید برید گریه کنید. انتخاب با خودتونه.
این نطر شخصی من بود، اگه نظر دیگهای دارید بیاید تو کامنتها بگید
Please open Telegram to view this post
VIEW IN TELEGRAM
👍36❤4
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3
امروز HTTP status کد: «418 من یک قوری هستم!» گرفتم!
418 I'm a teapot
این یه شوخی نیست! واقعاً وجود داره! یعنی کاری غیر از اونچه در توانمه درخواست کردی. (یه چنین مفهومی، توضیحات کاملش تو عکس هست)
یعنی تو مستندات رسمی وب RFC هم دستمون انداختن! ((:
* NabiKAZ *
🚀 @IranCoderz 👨💻
418 I'm a teapot
این یه شوخی نیست! واقعاً وجود داره! یعنی کاری غیر از اونچه در توانمه درخواست کردی. (یه چنین مفهومی، توضیحات کاملش تو عکس هست)
یعنی تو مستندات رسمی وب RFC هم دستمون انداختن! ((:
* NabiKAZ *
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁12❤1
IranCoderz
در باب دقت و درستی صحبتهایی مثل "هوشمصنوعی تا فلان سال و ماه برنامهنویسها رو جایگزین میکنه" توسط مدیرعاملهای شرکتهای مرتبط با هوشمصنوعی، مدیرعامل انتراپیک(کمپانی سازنده کلاد) ۶ ماه پیش گفته بود که تا ۳-۶ ماه آینده، هوشمصنوعی ۹۰درصد کدها رو مینویسه و تا یک سال آینده همه کدها توسط هوشمصنوعی نوشته میشن.
🚀 @IranCoderz 👨💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🤯5😁1
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
محیط خیلی یوزر فرندلیای داره و موقع تمرین صدای ماشین تحریر پخش میشه که حسابی شما رو میبره تو حس و حال تایپ کردن.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤3🔥1
این کتاب حدود ۳۰۰ صفحهست و ترجمه فارسی قابلقبولی هم ازش موجوده که میتونید تهیه کنید.
من هم سعی میکنم تو چند پست، خلاصهای کاربردی و بهدردبخور از فصلهای مختلف کتاب رو بیارم تا با هم مرور کنیم.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤1
IranCoderz
برنامهنویسی کار آسونی نیست. ما باید نیازهای مبهم کاربر رو به زبون کامپیوتر تبدیل کنیم. نویسنده میگه برنامهنویس مثل یه استادکار باید بلد باشه از بین ابزارها بهترین رو انتخاب کنه. پس نباید فقط به یک زبان بسنده کنیم؛ باید یاد بگیریم ابزارها و زبانهای مختلف رو بشناسیم و متناسب با شرایط استفاده کنیم. وقتی منطق برنامهنویسی رو خوب بلد باشید، یاد گرفتن زبانهای جدید خیلی آسون میشه. به قول نویسنده اگه فقط کار با چکش رو بلد باشید، همه چیز رو میخ میبینید و دیدتون محدود میشه.🤔 برای عملگرا شدن باید کنجکاو باشیم و مدام سؤال بپرسیم:
- این کتابخونه چطوری کار میکنه؟
- چرا این مسئله اینطور حل شد؟
- آیا راه بهتری وجود نداره؟
این پرسشگری باعث میشه عمیقتر بشیم و دید بازتری پیدا کنیم.
اشتباه بخشی از کاره. مهم نیست چقدر تست و داکیومنت داشته باشیم، خطا اجتنابناپذیره. مهم اینه که مشکل رو بپذیریم، مسئولیتش رو قبول کنیم و راهحل پیشنهاد بدیم.
بزرگترین ضربهای که میتونیم به اعتماد بقیه بزنیم اینه که شروع کنیم به بهونه آوردن:
- روی سیستم من کار میکرد.
- مشکل از فلان کتابخونه بود.
- همکارم درست ریویو نکرد.
حتی اگه واقعاً تقصیر شما نباشه، باز هم بهتره به جای مقصر جلوه دادن بقیه، دنبال راهحل باشید. اینطوری هم اعتماد همتیمیها رو بهدست میارید هم روابط کاری قویتری میسازید.
یادتون باشه هیچ چیزی به اندازهی صراحت در پذیرش اشتباه، شما رو قابل اعتماد نشون نمیده.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤1
رفتار درست با ریویورهایی که گیر الکی میدن
https://github.com/pzoj/pzoj-contest/pull/1
🚀 @IranCoderz 👨💻
https://github.com/pzoj/pzoj-contest/pull/1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁19👍7
شما وقتی با مرورگرتون وارد وبسایت های مختلف میشید اثر انگشت خاصی رو از خودتون جا میذارید، این fingerprint شامل اطلاعات دستگاهی که باهاش وارد شدید، اکستنشن های نصب شده، زبان های کیبورد، تایم زون سیستم و خیلی موارد دیگه میشه.
برای همین خیلی جاها رو حتی وقتی با vpn مطمئن وارد شدید باز هم میتونند تشخیص بدن که شما از vpn استفاده میکنید.
جمع آوری این اطلاعات برخلاف کوکی نیازی به اجازهی کاربر نداره و خیلی راحت بدون اینکه کاربر متوجه بشه اطلاعات جمع آوری میشه.
برای اینکه fingerprint خودتون رو ببینید وارد لینک زیر بشید.
https://fingerprint.goldenowl.ai
💬 sabber_dev
🚀 @IranCoderz 👨💻
برای همین خیلی جاها رو حتی وقتی با vpn مطمئن وارد شدید باز هم میتونند تشخیص بدن که شما از vpn استفاده میکنید.
جمع آوری این اطلاعات برخلاف کوکی نیازی به اجازهی کاربر نداره و خیلی راحت بدون اینکه کاربر متوجه بشه اطلاعات جمع آوری میشه.
برای اینکه fingerprint خودتون رو ببینید وارد لینک زیر بشید.
https://fingerprint.goldenowl.ai
Please open Telegram to view this post
VIEW IN TELEGRAM
وضعیت کد شرکتی که تمام اصول کلین کد، دیزاین پترنها و معماریهای مختلف رو تو مصاحبهش میپرسه
🚀 @IranCoderz 👨💻
Please open Telegram to view this post
VIEW IN TELEGRAM
😁42👍2🤯2
مسئلههای لیتکد یکی از بهترین منابعی هستن که میتونید با حل کردن اونها مهارت حل مسئله خودتون رو بالا ببرید. سعی کنید هر چند وقت یه بار، برید و یکم سر به سرشون بذارید. اگه تو مسئلهای هم به مشکل خوردید، ریپو زیر حدود ۱۰۰۰ مسئله از لیتکد رو با ++C حل کرده و جواب اونها رو گذاشته که میتونید ازشون ایده بگیرید.
4️⃣ https://github.com/haoel/leetcode
🚀 @IranCoderz 👨💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍1
This media is not supported in your browser
VIEW IN TELEGRAM
تلگرام برای پوش کردن تغییرات مثل پیام جدید، ادیت، ری اکشن، تایپینگ و… به کلاینتها از سرویس Updates تو پروتکل MTProto استفاده میکنه، ایده ی کلی و کلیدی خیلی ساده اس و اینه که کلاینت ها یه state محلی نگه میدارن و آپدیتارو دقیقا با ترتیب درست اعمال میکنن؛ اگه شکافی بینشون افتاد، Difference میگیرن و دوباره پرش میکنن.
چرا اینکارو کرده و کلا چالشا چیه؟
• ترتیبش مهمه چون ممکنه یه اپدیت وابسته به چیزی باشه که توی خود همون پچ میاد
• تحویل دقیق باید انجام بشه و هیچی گم نشه
• مقیاسش هم میلیونها کاربر همزمان باید بگیرنش، مثل کانال های بزرگ
از اونجایی که هر پیامرسان منبع عظیمی از اتفاقاتیه که هر لحظه میوفته ما میتونیم اسم این اتفاقات رو event بزاریم. تلگرام هم یه پیامرسان مولتی کلاینته، یعنی هر کاربر میتونه چندین دیوایس برای یه حساب داشته باشه، پس وقتی یه ایونت اتفاق میوفته که باید یه کاربر از اون خبردار بشه باید اون ایونت رو به دیوایس های دیگه ی کاربر هم بفرسته، حدودا با مرتبه زمانی On^2.
مکانیزم اینجوریه که وقتی دیوایسی انلاین باشه و سوکت همون سوکتی باشه که keep alive هست یا اخرین rpc رو کال کرده سرور ایونت رو توی queue برای اون دیوایس نگه نمیداره و مستقیم میفرسته به کلاینت، حالا از اونجایی که کلاینت های دیگه ممکنه افلاین باشن یا حتی توی بکگراند پروسسشون کیل شده باشه عقب میمونن. حالا وقتی اون دیوایسی که عقب مونده بود با باز شدن سوکتش درخواست گرفتن اپدیت هارو وقتی که افلاین بوده رو از سرور میکنه و اطلاعات لوکالش رو میفرسته به سرور، من برای ساده شدنش اینجوری میگم که دیوایس میاد به سرور میگه من تا این زمان t رو داشتم و بعد این رو بهم بده، سرور هم میاد حساب کتابش رو میکنه و جواب رو توی یه پچ میفرسته! حالا چی توی این پچ هست و چی رو میفرسته رو میتونم یه رشته توییت دیگه در موردش بزنم.
حالا اگه اعدادی که توی پچ میاد با اعداد توی کلاینت نخونه عملا میگیم گپ اتفاق افتاده، برای همین هم کلاینت باید رکویست getDiff رو بزنه.
رکویست updates.getDifference به کلاینت اجازه میده بگه:
من الان pts = X و seq = Y هستم و هر چی بین این و حالت جدید هست بهم بده.
• سرور ممکنه جواب بده:
difference: همه ی آپدیت های گمشده
differenceSlice: بخشی از آپدیت ها یعنی هنوز باید به فچ کردن ادامه بدی
differenceEmpty: چیزی تغییر نکرده
جالبترش اینه که توی نسخه های جدیدترش برای کانال ها مکانیسم جدا getChannelDifference هست، چون هر کانال pts مستقل داره و این باعث میشه شما فقط کانال هایی رو بگیری که تغییر کردن! برای سوپر گروه هم مکانیزم همینه.
این باعث میشه حتی اگر چند ساعت آفلاین باشی، بعد از اتصال دوباره دقیقاً همهچی رو بگیری و هیچ پیامی رو از دست ندی
حتی با packet loss یا reconnect، state کلاینت خراب نمیشه و سرور مجبور نیست برای هر کلاینت همه چی رو دوباره بفرسته. فقط gap ها sync میشن
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥17👍2
This media is not supported in your browser
VIEW IN TELEGRAM
یه سایت بصری خفن برای اینکه کارکرد الگوریتمای مختلف رو ببینید و بهتر درکش کنین:
https://algorithm-visualizer.org/
🤖 _AbolfazlAbbasi
🚀 @IranCoderz 👨💻
https://algorithm-visualizer.org/
Please open Telegram to view this post
VIEW IN TELEGRAM
10❤8
Please open Telegram to view this post
VIEW IN TELEGRAM
😁8🤯8👍2
اگه استیو جابز زنده بود امشب وسط رویداد اپل یه بمب به خودش میبست، میرفت وسط کنفرانس و همه رو منفجر میکرد.
🚀 @IranCoderz 👨💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19👎4