#تجربه
چطوری برای پروژههای هوش مصنوعی تست مینویسیم !؟
یک دوستی توی لینکدین این سوال جالب و خیلی خیلی مهم رو گذاشته که من قبل جواب دادن به ایشون گفتم تجربه خودم رو به اشتراک بذارم (قبلاً راجبش صحبت نکرده بودم) :
خداروشکر تست نویسی خوب داره رواج پیدا میکنه (متأسفانه بین دولوپرهای هموطن خیلی کم دیده میشه)
حتی وقتایی که زمانبندی پروژه خیلی کم هست (مشکل اصلی ۹۰٪ تست ننوشتن ها)
حداقل باید تمام سناریوهایی که بهش فکر میشه توی دیزاین و تستهای دستی وجود داشته باشه (ی جور Todo خاص برای وقتی زمان اجازه میده و دولوپرهای بعدی)
من ی مورد دیگه رو هم اضافه کنم بعد میرم سراغ جواب دادن به سوال :
تورو خدا Error Handling بذارید، دیباگر خوبه، print , log و ... هم خوبه ولی یوزر یا دولوپرهای دیگهای که از کد شما بعنوان سرویس استفاده میکنند باید متوجه بشن کجا به مشکل خورده پروژه که بتونه به شما اطلاع بده و شما reproduce کنید. (Debuger , ... فقط برای زمان توسعه کد هست توی production این error handle هست که کمک میکنه ؛ ی فکری بکنید به پروژههای بدون error handle که از باقی گرفتید چقدر سخت بوده رفع ارور توش ؟! )
جواب من برای این سوال، تست نویسی رو من برای پروژههای خودم (نظرشخصی و تجربه خودم) اینطور تعریف میکنم (باتوجه به تجربهام خیلی خوب جواب ML/DL رو میده)
من دیدم بعضی دوستان میگن، تست فقط برای بخش
Data Engineering
هست کاملاً غلط هست؛ جا بندازم که اینجا چیزی به اسم تست نداریم مثل باقی موضوع بطور کلی تست نویسی اسم اشتباهی هست، برای این مرحله بهش میگیم Data Validation ینی توقع داریم یکسری اطلاعات مثلاً توزیع دادهها / بالانس بودن یا نبودن و ... به مرور زمان ثابت باشه (بسته به نوع پروژه داره) و اگر نبود میگیم دیتا valid نیست و بعنوان ارور نوتیف برمیگرده برای تیمهایی که با اون داده کار میکنند.
اما من چطوری تست مینویسم یا از تیمم توقع دارم بنویسند:
اولین قدم:
تست رو فقط و فقط برای توابع pure مینویسم، توابعی که مطمئنم همیشه یک خروجی ثابتی رو باید برگردونه
قدم دوم :
توابعی که side effect روی پروژه نداره ولی خروجی خودش بستگی به یکسری پارامتر ورودی داره اول تست خود پارامتر بعد تست مقادیر و خروجی تابع
قدم سوم :
تست side effect ها و توابعی که به دیتای valid شده مرحله data engineering بستگی داره, یک مثال خیلی خیلی ساده توی مراحل preprocessing فرض کنید تابعی داریم که outlier و ... رو حذف میکنیم
تستی که مینویسم اینه که اگر ورودی توزیع نرمال هست خروجی هم توزیع نرمال باشه
یا دیتا از ی حدی بیشتر imbalance نشه بیشتر از ی تعدادی outlier پیدا نشه وگرنه validation مرحله قبلی زیر سوال هست
در نهایت پارامترهای مدل و دقت و لاس و .... رو بررسی میکنم (توقع دارم اگر مدل تا حالا روی ۹۰٪ دقت بوده توی همین حدود بمونه، اشاره کنم بازم که دقت به تنهایی اصلا معیاری خوبی نیست)
خلاصه :
تست نویسی توی پروژههای هوش و هرجایی که به دیتای متغییر وابسته هست متفاوت میشه بطور کلی.
پ.ن : من اینجا از valid / test و ... که برای خروجی مدل هست و همه بلدش هستید صحبتی نکردم
چون سوال بنظرم ربطی به این موضوع نداشت.
چطوری برای پروژههای هوش مصنوعی تست مینویسیم !؟
یک دوستی توی لینکدین این سوال جالب و خیلی خیلی مهم رو گذاشته که من قبل جواب دادن به ایشون گفتم تجربه خودم رو به اشتراک بذارم (قبلاً راجبش صحبت نکرده بودم) :
خداروشکر تست نویسی خوب داره رواج پیدا میکنه (متأسفانه بین دولوپرهای هموطن خیلی کم دیده میشه)
حتی وقتایی که زمانبندی پروژه خیلی کم هست (مشکل اصلی ۹۰٪ تست ننوشتن ها)
حداقل باید تمام سناریوهایی که بهش فکر میشه توی دیزاین و تستهای دستی وجود داشته باشه (ی جور Todo خاص برای وقتی زمان اجازه میده و دولوپرهای بعدی)
من ی مورد دیگه رو هم اضافه کنم بعد میرم سراغ جواب دادن به سوال :
تورو خدا Error Handling بذارید، دیباگر خوبه، print , log و ... هم خوبه ولی یوزر یا دولوپرهای دیگهای که از کد شما بعنوان سرویس استفاده میکنند باید متوجه بشن کجا به مشکل خورده پروژه که بتونه به شما اطلاع بده و شما reproduce کنید. (Debuger , ... فقط برای زمان توسعه کد هست توی production این error handle هست که کمک میکنه ؛ ی فکری بکنید به پروژههای بدون error handle که از باقی گرفتید چقدر سخت بوده رفع ارور توش ؟! )
جواب من برای این سوال، تست نویسی رو من برای پروژههای خودم (نظرشخصی و تجربه خودم) اینطور تعریف میکنم (باتوجه به تجربهام خیلی خوب جواب ML/DL رو میده)
من دیدم بعضی دوستان میگن، تست فقط برای بخش
Data Engineering
هست کاملاً غلط هست؛ جا بندازم که اینجا چیزی به اسم تست نداریم مثل باقی موضوع بطور کلی تست نویسی اسم اشتباهی هست، برای این مرحله بهش میگیم Data Validation ینی توقع داریم یکسری اطلاعات مثلاً توزیع دادهها / بالانس بودن یا نبودن و ... به مرور زمان ثابت باشه (بسته به نوع پروژه داره) و اگر نبود میگیم دیتا valid نیست و بعنوان ارور نوتیف برمیگرده برای تیمهایی که با اون داده کار میکنند.
اما من چطوری تست مینویسم یا از تیمم توقع دارم بنویسند:
اولین قدم:
تست رو فقط و فقط برای توابع pure مینویسم، توابعی که مطمئنم همیشه یک خروجی ثابتی رو باید برگردونه
قدم دوم :
توابعی که side effect روی پروژه نداره ولی خروجی خودش بستگی به یکسری پارامتر ورودی داره اول تست خود پارامتر بعد تست مقادیر و خروجی تابع
قدم سوم :
تست side effect ها و توابعی که به دیتای valid شده مرحله data engineering بستگی داره, یک مثال خیلی خیلی ساده توی مراحل preprocessing فرض کنید تابعی داریم که outlier و ... رو حذف میکنیم
تستی که مینویسم اینه که اگر ورودی توزیع نرمال هست خروجی هم توزیع نرمال باشه
یا دیتا از ی حدی بیشتر imbalance نشه بیشتر از ی تعدادی outlier پیدا نشه وگرنه validation مرحله قبلی زیر سوال هست
در نهایت پارامترهای مدل و دقت و لاس و .... رو بررسی میکنم (توقع دارم اگر مدل تا حالا روی ۹۰٪ دقت بوده توی همین حدود بمونه، اشاره کنم بازم که دقت به تنهایی اصلا معیاری خوبی نیست)
خلاصه :
تست نویسی توی پروژههای هوش و هرجایی که به دیتای متغییر وابسته هست متفاوت میشه بطور کلی.
پ.ن : من اینجا از valid / test و ... که برای خروجی مدل هست و همه بلدش هستید صحبتی نکردم
چون سوال بنظرم ربطی به این موضوع نداشت.
👍19❤2🥰1🎉1
توی تستهایی که تو یوتیوب دیدم از
Gpt-3
عملکرد بهتری داره روی سوال و جواب
Open source
و بر اساس T5 توسعه داده شده، جالب بود.
https://github.com/allenai/macaw
Gpt-3
عملکرد بهتری داره روی سوال و جواب
Open source
و بر اساس T5 توسعه داده شده، جالب بود.
https://github.com/allenai/macaw
GitHub
GitHub - allenai/macaw: Multi-angle c(q)uestion answering
Multi-angle c(q)uestion answering. Contribute to allenai/macaw development by creating an account on GitHub.
چقدر خوبه دنیای OpenSource,
شاید نهایتاً ۲ سال پیش بود که نیاز به ساخت Knowledge Graph داشتیم، چقدر زمان برد چقدر تحقیق لازم بود و واقعاً سخت بود.
حالا توی ۸ خط، تازه با print هاش
GitHub Link
شاید نهایتاً ۲ سال پیش بود که نیاز به ساخت Knowledge Graph داشتیم، چقدر زمان برد چقدر تحقیق لازم بود و واقعاً سخت بود.
حالا توی ۸ خط، تازه با print هاش
GitHub Link
👍8
این لینک خیلی خوب و عالی بود، اگر تازه از دانشگاه فارغالتحصیل شدید این لیست رو حتماً ببینید
اگر چندسال توی کار برنامهنویسی هستید، قطعاً و حتماً باید چک کنید که چقدر آشنایی با این لیست دارید
همهی واجباتی که باید بدونید + آموزش از دانشگاه MIT
The Missing Semester of Your CS Education
منبع :
LinkedIn Profile
اگر چندسال توی کار برنامهنویسی هستید، قطعاً و حتماً باید چک کنید که چقدر آشنایی با این لیست دارید
همهی واجباتی که باید بدونید + آموزش از دانشگاه MIT
The Missing Semester of Your CS Education
منبع :
LinkedIn Profile
👍6❤3🔥1
جمع خوبا جمع بوده، خروجیش این شده
ETH Zurich, Meta, KU Leuven
Github Link (VRT) Video Restoration Transformer
ETH Zurich, Meta, KU Leuven
Github Link (VRT) Video Restoration Transformer
👍7
فوتبال ۱۲۰
#آیتم_120 ▶️ هوش مصنوعی در فوتبال؛ تکنولوژیهای استعدادیاب 🎞 کیفیت بالا در آپارات @Futball120
اگر به فوتبال علاقه دارید این آیتم رو از دست ندید.
قبل از این از همچین روشی توی
NBA (BASKETBALL), HOCKEY, ....
استفاده شده بود، البته توی موضوع بسکتبال سیستم عملکرد بازیکنها در کنارهم رو مقایسه و پیشنهاد رو بر این اساس میداد
اینبار موضوع استعدادیابی هست
نکته جالبتر که باید اضافه کنم (برای کارفرماهای ایرانی) :
اشتباهات میلیون دلاری این وسط هم خیلی مهمه، که خب خیلی از تیمها (فوتبال و بسکتبال و ...) این موضوع رو درک میکنند
قبل از این از همچین روشی توی
NBA (BASKETBALL), HOCKEY, ....
استفاده شده بود، البته توی موضوع بسکتبال سیستم عملکرد بازیکنها در کنارهم رو مقایسه و پیشنهاد رو بر این اساس میداد
اینبار موضوع استعدادیابی هست
نکته جالبتر که باید اضافه کنم (برای کارفرماهای ایرانی) :
اشتباهات میلیون دلاری این وسط هم خیلی مهمه، که خب خیلی از تیمها (فوتبال و بسکتبال و ...) این موضوع رو درک میکنند
نکته :
اگر تو پروژه از Docker استفاده میکنید حتما multi-stage رو در نظر بگیرید
بخصوص وقتی قرار هست ابزار یا کد رو کامپایل هم بکنید.
#تجربه
فایل داکر برای golang حدود 1GB هست روی لینوکس و روی ویندوز به 5.5GB میرسه
مهم نیست کد چقدر بزرگ باشه برای کامپایل به همچین چیزی نیاز دارید؛ اگر single-stage docker ایجاد کنید حجم docker image بیشتر از حجم golang image میشه و خب خیلی زیاد هست مخصوصا وقتی کل سورس پروژه کمتر از 100MB هست.
همین رو اگر multi-stage کنید و کد رو روی stage قبلی کامپایل کنید و فقط نسخه کامپایل شده رو بردارید
توی لینوکس کمتر از 100MB و روی ویندوز کمتر از 300MB خواهد بود.
امنیتش هم بیشتر هست
خلاصه: چیزی که لازم ندارید رو بین لایه های ایمیج جابجا نکنید.
اگر تو پروژه از Docker استفاده میکنید حتما multi-stage رو در نظر بگیرید
بخصوص وقتی قرار هست ابزار یا کد رو کامپایل هم بکنید.
#تجربه
فایل داکر برای golang حدود 1GB هست روی لینوکس و روی ویندوز به 5.5GB میرسه
مهم نیست کد چقدر بزرگ باشه برای کامپایل به همچین چیزی نیاز دارید؛ اگر single-stage docker ایجاد کنید حجم docker image بیشتر از حجم golang image میشه و خب خیلی زیاد هست مخصوصا وقتی کل سورس پروژه کمتر از 100MB هست.
همین رو اگر multi-stage کنید و کد رو روی stage قبلی کامپایل کنید و فقط نسخه کامپایل شده رو بردارید
توی لینوکس کمتر از 100MB و روی ویندوز کمتر از 300MB خواهد بود.
امنیتش هم بیشتر هست
خلاصه: چیزی که لازم ندارید رو بین لایه های ایمیج جابجا نکنید.
این گیت خیلی جالبه، اونایی که تجربه کار با شرکتهای بزرگ رو دارن مسیری که دنبال کردن تا گرفتن شغل و منابعی که خوندن رو به اشتراک گذاشتن
بنظرم جالب بودم، برای علاقمندان مفید خواهد بود قطعاً
GitHub Link
بنظرم جالب بودم، برای علاقمندان مفید خواهد بود قطعاً
GitHub Link
GitHub
GitHub - jwasham/coding-interview-university: A complete computer science study plan to become a software engineer.
A complete computer science study plan to become a software engineer. - jwasham/coding-interview-university
👍8
#آموزش
این مورد بدرد همه میخوره، مخصوصاً اگر مثل من git شخصی، NAS ، next cloud , ... روی سیستم خونه دارید
یکی از دوستان دانشجوی دکتری هست و به این مرحله رسیده که کدهاش رو تست کنه و بذاره برای اجرا و ...
توی همین شرایط یک سفر حداقل ۱ هفتهای هم باید بره (فکر میکنم از طرف شرکت)
لپتاپ هم قدرت کافی برای پردازش هوش مصنوعی رو نداره
همونطور که میدونید ip static توی ایران از طرف isp ها داده نمیشه و باید درخواست بدید و هزینه پرداخت کنید براش (که البته جلوتر میگم نداشتنش چقدر خوبه)
برای این دوستمون ۲ تا راهکار پیشنهاد دادن :
۱- خرید ip static و کانفیگ ssh روی PC و استفاده از ssh برای اجرای کدها در طول سفر
که خب با توجه به ماهیت کار ما چیز خوبی نیست و نشدنی
همیشه crawl کردن داده ی بخش مهمی از کار ما هست و به لطف static نبودن ip میشه خیلی راحت از banned شدن جلوگیری کرد.
۲- درخواست خط تلفن جدید، خرید اینترنت و ip static , ... که خب چون ۲ روز تا سفر وقت داره نشدنی هست.
وقتی متوجه شدم بهش پیشنهاد راهکار خودمو دادم (فکر میکنم خیلی قدیما تو کانال گذاشتم زیر ۵۰۰ نفر بود)
سریعترین راهکار اینه که :
ی جیمیل جدید درست کنید و دسترسی کد بهش رو باز کنید، روی سیستمعامل لینوکس هم ی cron job بنویسید که روی هر reboot یا هر ۱۲ ساعت ۱بار بهتون یک ایمیل بزنه (از طریق gmail جدید به هر آدرسی که میخواید)
متن این ایمیل بر اساس curl یکی از سایتهای what is my ip باید باشه (که میشه public ip فعلی شما)
روی مودم هم port forwarding رو باز میکنید (دیفالت پورت ۲۲ برای ssh) که درخواستهای پورت ۲۲ رو بده به آیپی لوکال pc خودتون (بهتره local ip رو برای pc از طریق مودم static بذارید)
اینجوری هروقت لازم داشتید، ip رو روی ایمیل آخر دارید و راحت بهش ssh میزنید و همه چیز در دسترس خواهد بود.
پ.ن : پیشنهاد میکنم بجای ۱۲ ساعت یکبار curl و ارسال ایمیل، یک اسکریپت پایتون بنویسید ساعتی اجرا بشه و اگر ip عوض شده بود اونوقت ایمیل بفرسته براتون
نکته : اکثر isp های داخلی اگر مشکلی پیش نیاد و مودم رو ریست نکنید، ۳ روز ۱ بار ip public شمارو تغییر میدن
این مورد بدرد همه میخوره، مخصوصاً اگر مثل من git شخصی، NAS ، next cloud , ... روی سیستم خونه دارید
یکی از دوستان دانشجوی دکتری هست و به این مرحله رسیده که کدهاش رو تست کنه و بذاره برای اجرا و ...
توی همین شرایط یک سفر حداقل ۱ هفتهای هم باید بره (فکر میکنم از طرف شرکت)
لپتاپ هم قدرت کافی برای پردازش هوش مصنوعی رو نداره
همونطور که میدونید ip static توی ایران از طرف isp ها داده نمیشه و باید درخواست بدید و هزینه پرداخت کنید براش (که البته جلوتر میگم نداشتنش چقدر خوبه)
برای این دوستمون ۲ تا راهکار پیشنهاد دادن :
۱- خرید ip static و کانفیگ ssh روی PC و استفاده از ssh برای اجرای کدها در طول سفر
که خب با توجه به ماهیت کار ما چیز خوبی نیست و نشدنی
همیشه crawl کردن داده ی بخش مهمی از کار ما هست و به لطف static نبودن ip میشه خیلی راحت از banned شدن جلوگیری کرد.
۲- درخواست خط تلفن جدید، خرید اینترنت و ip static , ... که خب چون ۲ روز تا سفر وقت داره نشدنی هست.
وقتی متوجه شدم بهش پیشنهاد راهکار خودمو دادم (فکر میکنم خیلی قدیما تو کانال گذاشتم زیر ۵۰۰ نفر بود)
سریعترین راهکار اینه که :
ی جیمیل جدید درست کنید و دسترسی کد بهش رو باز کنید، روی سیستمعامل لینوکس هم ی cron job بنویسید که روی هر reboot یا هر ۱۲ ساعت ۱بار بهتون یک ایمیل بزنه (از طریق gmail جدید به هر آدرسی که میخواید)
متن این ایمیل بر اساس curl یکی از سایتهای what is my ip باید باشه (که میشه public ip فعلی شما)
روی مودم هم port forwarding رو باز میکنید (دیفالت پورت ۲۲ برای ssh) که درخواستهای پورت ۲۲ رو بده به آیپی لوکال pc خودتون (بهتره local ip رو برای pc از طریق مودم static بذارید)
اینجوری هروقت لازم داشتید، ip رو روی ایمیل آخر دارید و راحت بهش ssh میزنید و همه چیز در دسترس خواهد بود.
پ.ن : پیشنهاد میکنم بجای ۱۲ ساعت یکبار curl و ارسال ایمیل، یک اسکریپت پایتون بنویسید ساعتی اجرا بشه و اگر ip عوض شده بود اونوقت ایمیل بفرسته براتون
نکته : اکثر isp های داخلی اگر مشکلی پیش نیاد و مودم رو ریست نکنید، ۳ روز ۱ بار ip public شمارو تغییر میدن
👍11👎1
نمونه کانفیگهایی که توی ۷-۸ سال اخیر استفاده میکنم (خیلی ساده و پیش پا افتاده) فقط میمونه تنظیمات روی مودم :
send mail from terminal with gmail :
sudo apt install ssmtp
su -
cd /etc/ssmtp
۲ تا فایل زیر رو میتونید نحوه کانفیگش رو گوگل کنید (باید آدرسها و ... رو بهش بدید سخت نیست)
nano ssmtp.conf
nano revaliases
on gmail :
allow less secure apps to access account.
توی مرحله بعدی curl , ارسال ایمیل :
sudo apt install mutt
curl ipinfo.io/ip | mutt -s "Public IP Address" mySecretGmailAddress@gmail.com
to automate email sending :
create a file example <.publicip.sh> in user home
set chmod to 744 permission to make it executable only by current user
در نهایت cron job مختص یوزر :
میتونید اسکریپت ساده ۱ خطی رو بهش بدید یا اینکه خود دستور رو وارد کنید مثلاً :
sudo crontab -e
@reboot sleep 120 && curl ipinfo.io/ip | mutt -s "Public IP Address" mySecretGmailAddress@gmail.com
send mail from terminal with gmail :
sudo apt install ssmtp
su -
cd /etc/ssmtp
۲ تا فایل زیر رو میتونید نحوه کانفیگش رو گوگل کنید (باید آدرسها و ... رو بهش بدید سخت نیست)
nano ssmtp.conf
nano revaliases
on gmail :
allow less secure apps to access account.
توی مرحله بعدی curl , ارسال ایمیل :
sudo apt install mutt
curl ipinfo.io/ip | mutt -s "Public IP Address" mySecretGmailAddress@gmail.com
to automate email sending :
create a file example <.publicip.sh> in user home
set chmod to 744 permission to make it executable only by current user
در نهایت cron job مختص یوزر :
میتونید اسکریپت ساده ۱ خطی رو بهش بدید یا اینکه خود دستور رو وارد کنید مثلاً :
sudo crontab -e
@reboot sleep 120 && curl ipinfo.io/ip | mutt -s "Public IP Address" mySecretGmailAddress@gmail.com
👍6
#تجربه
یک بحثی رو توی لینکدین دیدم از تعریف افراد از Senior، وقتی نظرات رو خوندم یک سلسله تعاریف خیلی شخصی بود.
با توجه به تجربه خودم و مصاحبههایی که داشتم (کم نیست 😁) گفتم تعاریفی که متوجهاش شدم و معقول بود رو توضیح بدم :
سنیور توی جاهای مختلف تعاریف متفاوتی داره
خیلی از کسایی که توی لینکدین لقب سنیور برای خودشون میزارن نمیدونن چقدر توقع کارفرما رو بالا میبره، ( بیشتر بینالمللی منظورم هست) و اکثراً بخاطر همین توی مصاحبه اول رد میشن (شخصاً این لقب رو نداشتم توی پروفایلم به همین دلیل و البته بار مسئولیت راهنمایی junior ها)
شرکتهای داخلی تقریبا کاری به کیفیت کد
و ... ندارند ینی توی ایران میشه حتی با میزان سالی که توی یک شرکت کد زدید senior یا بالاتر از اون specialist بشید.
توی برخی شرکتها، میزان توجه شما به task ایی که بهتون داده شده هست، ینی علاوه بر اینکه شما همواره زمانبندی و ... خوبی دارید
کدهای تمیزی میزنید، code review باقی افراد گروه رو انجام میدید، داکیومنتهای آموزشی شرکت رو آپدیت ٫ ایجاد میکنید و البته optimization رو هم آشنا هستید، توی ML و ... شناخت بیزینس هم بهش اضافه میشه
اما بیشترین تعریف که به همه حوزههای کامپیوتر میخوره (شبکه، لینوکس، برنامه نویس و ... )
اینه که شما کارهای خودتون رو به خوبی و بدون نیاز به کسی انجام میدید (ینی اگر تسک سختی هم بهتون داده بشه خودتون راه خودتون رو پیدا میکنید و انجامش میدید) و علاوه بر اون نیروهای junior هم تیمی رو هم مدیریت میکنید که بهینه و درست کار کنند، تا توی کمترین زمان بهترین خروجی رو بدند
مرجع (گوگل، استک اورفلو) نیروهای جونیور شرکت میشید خلاصه هم توی منطق هم توی نحوه کد زدن.
این ۳ مورد ۹۹٪ مواردی بوده که شخصاً دیدم.
برای همین خیلی خیلی مهمه که حتی اگر کار فعلی رو توش خبره هستید بازم کدهای دیگران (گیت) بخونید و از لحاظ آموزش آپدیت باشید.
یک بحثی رو توی لینکدین دیدم از تعریف افراد از Senior، وقتی نظرات رو خوندم یک سلسله تعاریف خیلی شخصی بود.
با توجه به تجربه خودم و مصاحبههایی که داشتم (کم نیست 😁) گفتم تعاریفی که متوجهاش شدم و معقول بود رو توضیح بدم :
سنیور توی جاهای مختلف تعاریف متفاوتی داره
خیلی از کسایی که توی لینکدین لقب سنیور برای خودشون میزارن نمیدونن چقدر توقع کارفرما رو بالا میبره، ( بیشتر بینالمللی منظورم هست) و اکثراً بخاطر همین توی مصاحبه اول رد میشن (شخصاً این لقب رو نداشتم توی پروفایلم به همین دلیل و البته بار مسئولیت راهنمایی junior ها)
شرکتهای داخلی تقریبا کاری به کیفیت کد
و ... ندارند ینی توی ایران میشه حتی با میزان سالی که توی یک شرکت کد زدید senior یا بالاتر از اون specialist بشید.
توی برخی شرکتها، میزان توجه شما به task ایی که بهتون داده شده هست، ینی علاوه بر اینکه شما همواره زمانبندی و ... خوبی دارید
کدهای تمیزی میزنید، code review باقی افراد گروه رو انجام میدید، داکیومنتهای آموزشی شرکت رو آپدیت ٫ ایجاد میکنید و البته optimization رو هم آشنا هستید، توی ML و ... شناخت بیزینس هم بهش اضافه میشه
اما بیشترین تعریف که به همه حوزههای کامپیوتر میخوره (شبکه، لینوکس، برنامه نویس و ... )
اینه که شما کارهای خودتون رو به خوبی و بدون نیاز به کسی انجام میدید (ینی اگر تسک سختی هم بهتون داده بشه خودتون راه خودتون رو پیدا میکنید و انجامش میدید) و علاوه بر اون نیروهای junior هم تیمی رو هم مدیریت میکنید که بهینه و درست کار کنند، تا توی کمترین زمان بهترین خروجی رو بدند
مرجع (گوگل، استک اورفلو) نیروهای جونیور شرکت میشید خلاصه هم توی منطق هم توی نحوه کد زدن.
این ۳ مورد ۹۹٪ مواردی بوده که شخصاً دیدم.
برای همین خیلی خیلی مهمه که حتی اگر کار فعلی رو توش خبره هستید بازم کدهای دیگران (گیت) بخونید و از لحاظ آموزش آپدیت باشید.
👍24