Python Hints
8.63K subscribers
171 photos
11 videos
9 files
141 links
Python tips and tricks
The Good, Bad and the Ugly

توی این کانال فقط قرار هست در مورد core python صحبت کنیم.

این کانال یک بلاگ شخصی هست و پیرامون نظرات و چیزهایی که توی بیش از ۱۰ سال کد زدن یاد گرفتم (فقط برای کمک به دوستان تازه‌کار)

Admin: @Abbasi_ai
Download Telegram
Python Hints
چندروز قبل بعنوان Team Lead یک پروژه دیگه‌ای توی شرکت انتخاب شدم (با تمام مخالفتی که کردم؛ حتی با وجود افزایش دستمزد) ولی قرار بر این شد امروز لیستی از تمام تغییرات مورد نیاز قبل از اضافه کردن فیچر جدید رو بدم code review اولیه رو انجام دادم و لیست رو…
توی شرکت روی پروژه شرکت مثال زدم؛ عذر میخوام اگر توی تصویر بالا مثال خیلی کاربردی نیست
جایی رو ندیدم مثال خوب / واقعی بزنه یا زده باشه سعی کردم ی مورد مشابه رو مثال بزنم

فرض کنید ما ۳ نوع فایل داریم که خیلی برامون مهم هست :
1- لاگ‌ها ؛ خطاهای سرویس‌ها - دیتابیس و ... توی این فایل‌ها نوشته میشه و وجودش برای پروژه بسیار بسیار مهم هست
پس اگر فایل لاگ وجود نداشت پروژه به هیچ وجه نباید روی پروداکشن بره

2- فایل‌های کمکی؛ وجودشون مهم هست اما نه اونقدری که نذاریم پروژه بره روی پروداکشن
بعنوان مثال تصویر لوگوی شرکت

3- یک سری گذارشات روزانه مثلا و.ضعیت پرداخت‌ها و ...
که بصورت اتوماتیک انتهای ساعت کاری هر روز درست میشه؛ اما اگر یکی از ادمین‌ها یا مشتری‌ها وسط روز بخواد خروجی بگیره ممکنه نداشته باشم.

توی مثال بالا بصورت دیفالت هر ۳ فایل یک ارور رو بر میگردونه :
FileNotFoundError
که اگر بخوایم exception handler بنویسیم باید حتما توی داخلی ترین تابع پردازش نوشته بشه و حتما باید بررسی کنیم که توی یک تابع یا متد بصورت همزمان وجود بیش از ۱ مورد از فایل‌های بالا بررسی نشه چون در اون صورت نمی‌دونیم ارور مربوط به عدم وجود کدوم فایل بوده و نمی‌تونیم تصمیم بگیریم آیا ابزار باید روی پروداکشن بره یا خیر یا ...

اهمیت custom exception نوشتن همینجا مشخص می‌شه؛
شما می‌تونید هرجایی که دلتون خواست و هر نوع فایلی که دلتون خواست رو بررسی کنید.
برنامه‌نویس‌های تیم شما آزادی عمل بیشتری دارند و این یعنی تصمیمات بهتری می‌تونند بگیرند
دیباگ کردن بسیار راحت تر خواهد بود؛ چرا که به لطف خطاهای مشخص می‌تونید درجا سروقت تابع یا متدی برید که وظیفه بررسی اون خطا رو داره
جداسازی مفاهیم مختلف؛ مثل بررسی لاگ و اعمالش یا بررسی و برخورد با گزارشات روزانه و ... باعث میشه شما بتونید کد رو به راحتی به افراد مختلف بسپارید و این یعنی کار کردن به صورت پارالل به راحتی قابل انجام هست پس سرعت توسعه کد قطعا بیشتر خواهد بود.
و ...


اتفاقی که امروز افتاد: برای ما روی یک پکیج حیاتی و بسیار بزرگ بود که پیدا کردن باگ داخلش می‌تونه حتی هفته‌ها طول بکشه
اما اگر پروژه شما انقدر گسترده نیست می‌تونید این مورد رو چشم پوشی کنید.

ولی در نظر بگیرید:
هیچ کس از رعایت best practice ها متضرر نشده و نمی‌شه.
👍413🔥1👏1
قدیما یک سری مسابقات بود، خیلی دوست داشتنی بود :

اینجوری بود که به کثیف‌ترین کد جایزه داده می‌شد، نرید قیمه و قرمه بریزید
منظور خوانایی بود 😁

بعدها شرکتی رو وارد شدم که بازی ماهانه‌‌اش برای تیم برنامه‌نویسی هم همین شد (به پیشنهاد تیم خودمون، بله ما اسم فامیل و کارت بازی و ... دوس نداشتیم)

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

برای نمونه کلاس رو اینطوری تعریف میکردیم :
m = "3627"

def __str__(sth):
return f"sth.__class__(members={sth._mem})"

PYHINTS = type("pyhints", (), {
"_mem" : int(m),
"__str__": __str__
})


I = PYHINTS()
print(I)

توی کد بالا هیچ چیزی اشتباه نیست و همه چیز عمدی هست، کد بالا یک مثال خیلی کوچیک بود معمولاً یک تسک بهمون داده میشد

برنده همیشه اونی میشد که :
۱- PEP
رو رعایت نمی‌کرد

۲- کاری‌ رو می‌کرد که پایتون باید بکنه، توی مثال بالا من بجای استفاده از
class PYHINTS:
_mem = int(m)
def __str__(self):
pass
اومدم مستقیم از type استفاده کردم.

فقط اضافه کنم، علاوه بر اینکه بد کد میزنید باید بتونید آخر روز کد خودتون رو روی ۱-۲ تا داده تست بصورت دیباگ خط به خط توضیح بدید.

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

از اسم فامیل و فوتبال دستی و .... هم بهتره 😑


پ.ن : باید خیلی سواد داشته باشید و حواستون جمع باشه که موارد بالا رو رعایت کنید و ید کد بزنید.
و این خودش یعنی شما به درک عمیقی نیاز دارید.
👍55🆒7👎3❤‍🔥211👏1
varargs


نیروی جدید گرفتیم؛ حدود ۲۰ ساله چون تازه هم اومده پروژه‌ای نداشتم بهش بدم.
اما یک کد از تیم دیگه بهمون رسیده که هیچکس سراغ تمیز کردنش نمیره؛ بهش دسترسی دادم گفتم این کد رو بخون
یک کد هم از تیم خودمون بهش دادم گفتم اینم بخون

هرکاری اولی کرده تو نکن؛ هرکاری دومی کرده سعی کن درک کنی چرا.

امروز دیدم رفته کلی تغییرات داده اولش ترسیدم گفتم ی تازه کار این حجم تغییر برای pull request مشکوک هست ولی بعد از ی جلسه کوتاه حل شد و بیشترین تغییرش همین
varargs 

بوده؛ برنامه نویس قبلی
packing, unpacking

رو یادش نبوده هرجا توابع کمکی داشته گفته باید لیست بهم بده و توی جاهای دیگه هم مجبور شده توی مواقعی چندین بار for loop بزنه بخشی از پردازش رو انجام بده لیست بسازه بده به تابع کمکی بعد دوباره خروجی رو بگیره و روی اون لیست پردازش رو ادامه بده.

varargs

و کار این نیرو هم سرعت پروژه رو بیشتر کرده هم پروژه رو تمیزتر؛ قرار شد ۲ هفته این کدهارو کار کنه و تمیز که نسخه ایشون بره برای جایگزینی روی پروداکشن.

تصویر بالا یک مثال کوچیک هست (شاید خیلی هم کاربردی نباشه) که خودم الان نوشتم فقط برای اینکه تفاوت رو نشون بدم.
👍413👏3
Python Hints
varargs نیروی جدید گرفتیم؛ حدود ۲۰ ساله چون تازه هم اومده پروژه‌ای نداشتم بهش بدم. اما یک کد از تیم دیگه بهمون رسیده که هیچکس سراغ تمیز کردنش نمیره؛ بهش دسترسی دادم گفتم این کد رو بخون یک کد هم از تیم خودمون بهش دادم گفتم اینم بخون هرکاری اولی کرده تو نکن؛…
قبلاً راجب اینکه چرا نباید
Default value
ورودی یک تابع٫متد رو mutable بذارید صحبت کردیم

یعنی
def scripts_counter(directories = []):
pass
یک باگ بسیار بسیار جدی هست توی پایتون.
نه فقط برای لیست بلکه برای همه mutable ها
👍38
https://twitter.com/pyhints

اولین اکانت من توی توییتر
ایده خاصی براش ندارم هنوز (از نظرات دوستان استقبال می‌کنم)

اما درصورتی که دوباره درگیر حذف ویدئوها توسط یوتیوب شدم (چندسال پیش این اتفاق افتاد)
می‌شه X رو بعنوان جایگزین داشت و اینجا آپلود کرد.
👍406🤷‍♂4👎3❤‍🔥1
#خارج_از_بحث #مهم
این پست طولانی هست و چند پیام خواهد بود.

بیشترین سوالی که این روزا پرسیده میشه از من
چه بچه‌های سنیور چه مدیور چه جونیور و ...

درمورد دستمزد سال جدید هست، آخر سال و طبیعیه خلاصه.

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

اما اطمینان میدم تمام بودجه‌ای که برای افزایش دستمزد بهم داده میشه (براساس همین فرمول، همینجا بگم خودم روی محاسبه دریافتی و افزایش و ... توی سال‌های مختلف و شرکت‌های مختلف متوجه‌اش شدم بچه‌های دیتاهم می‌تونند بدست بیارن) بین نیروها تقسیم میشه و هیچ مبلغی برگردونده نمیشه.

اما داستان اینه :
ی نیرو فقط توی سال قبل اندازه کاری که ازش خواسته شده کار کرده و پیشرفتش عادی بوده
ولی یک نیرو، زحمات بیشتری کشیده باگ‌های مهمتر و فیچرهای سخت‌تری رو کار کرده و پیشرفتش چندبرابر حالت عادی بوده

اون عدم پرداخت سقف افزایش برای این هست که بین نیروها می‌تونه جابجا بشه و یکی بیشتر از سقف افزایش داشته باشه و یکی کمتر.

ازین بگذریم، با توجه به دستمزدهایی که توی ایران دیدم
توی چند پست بعدی برای حالات عادی دستمزد اعلام می‌کنم

این پست‌ها فقط و فقط برای ایران هست
خارج از ایران رو قبلاً سایت معرفی کردم و گفتم چطوری می‌تونید ببینید.
👍82🍾1513🙏5🌚2🦄2❤‍🔥1💔1👨‍💻1🤝1🆒1
Python Hints
#خارج_از_بحث #مهم این پست طولانی هست و چند پیام خواهد بود. بیشترین سوالی که این روزا پرسیده میشه از من چه بچه‌های سنیور چه مدیور چه جونیور و ... درمورد دستمزد سال جدید هست، آخر سال و طبیعیه خلاصه. محاسبه دستمزد و افزایش حقوق که فرمول خودش رو داره و هیچکس…
قبل از اینکه راجب دستمزد بگم،
فرمول‌های متفاوتی برای نوع قرارداد هست که به ترتیب از بیشترین به کمترین مبلغ براتون می‌گم (مواردی که گفته نمی‌شه هم بین این‌ها قرار میگیره)

یک چیزی مثل
Big O
هست خلاصه

بیشترین به کمترین به ترتیب :

قرارداد ساعتی : (۹۰٪ سنیورها)
۳ مدل ساعتی من دیدم و خودم هم کار کردم :

۱- ساعتی و oncall : بالاترین دستمزد برای این مدل هست، هر روز و ساعتی که شرکت به شما نیاز داشته باشه با یک بازه زمانی ۱۰ دقیقه‌ای باید پای سیستم یا جلسه باشید.
اما میزان ساعت کاری و طول قرارداد مشخص نیست.
معمولاً فقط و فقط برای بچه‌های سنیور هست.

۲- ساعتی:
شرکت طبق قرارداد روزهای خاصی رو به شما نیاز داره، اما میزان ساعت کاری ثابت نیست و طول قرارداد هم مشخص نشده (ممکنه ۱ هفته بعد دیگه بهتون نیاز نباشه ممکنه ۱ سال هم قرارداد داشته باشید)

۳- ساعتی با حداقل ساعت رزرو :
مثل مدل قبلی هست، اما از قبل تعیین میشه، مثلاً شرکت میگه من روزی ۲ ساعت روزای کاری حتماً نیاز دارم پس ماهانه ۴۰ ساعت چه شما کار کنید چه نه به شما پرداخت می‌کنه.
اما اگر بیشتر از اون نیاز شد شما بهشون وقت میدید
این مدل حداقل مدت قرارداد رو داره (مثلاً ۶ ماه)
و از ۲ حالت قبلی قیمت پایین‌تری هم داره بخصوص برای تعداد ساعاتی که افزایش پیدا می‌کنه.


بعد از قرارداد ساعتی، بیشترین دستمزد برای قرارداد پروژه‌ای هست که کف و سقف مدت قرارداد مشخص نیست.


و بعد از اون قرارداد پارت‌تایم یا پاره وقت

در نهایت هم قرارداد تمام وقت


اما چندتا نکته دستمزد رو می‌تونه کمتر کنه :

۱- دورکاری :
در صورت نداشتن تسک، شما آزادید هرکاری انجام بدید و وقتتون برای خودتون هست.
اما شرکت موظف به پرداخت شما هست (پاره وقت، تمام وقت یا ...)

۲- طول مدت قرارداد:
مثلاً اگر حداقل مدت قرارداد ۱ ساله هست (البته بعد از ۳ ماه آزمایشی) دستمزدش کمتر از قرارداد ۶ ماهه هست البته وقتی دستمزد ماه رو تقسیم بر تعداد ساعات کاری می‌کنید.
و ...

مواردی که می‌تونید دستمزد رو بیشتر کنید :

۱- جابجایی بین پروژه‌های مختلف (با تخصص مختلف)
۲- پروژه‌های با کد کثیف
۳- درصورت لزوم نیاز به حضور یا دردسترس بودن حتی روزهای غیر کاری


نکته آخر :

سفته که ور افتاده یا حداقل من نمی‌بینم دیگه، اما هرجا از من سفته بخواد از مدیرعامل شرکت تقاضای یک چک ضمانت برای آخر مدت قرارداد می‌کنم به مبلغ مجموع تمام ساعت حقوق.
مثلاً اگر حقوق ماهیانه من ۵۰،۰۰۰،۰۰۰ تومان هست و قرارداد ۱ ساله

شرکتی که تقاضای سفته کنه می‌گم مشکلی نیست به شرطی که یک چک به مبلغ

۱۲ x ۵۰،۰۰۰،۰۰۰ + مبلغ سفته

بعنوان حسن پرداخت حقوق تحویل بدهند.
ولی جایی که از شما سفته دریافت کنه، تجربه نشون داده اگر شما چک متقابل نگیرید، زندگی خوبی و آرامش نخواهید داشت.
👍19632❤‍🔥5🤝3👾21🌚1💋1🦄1
خدایی ؟!
این همه مطلب فوق مهم می‌نویسم فقط
Share to saved messages

بزنید و بدون
Reaction

ادامه ندم اگر دوست ندارید ؟!🤔
185😁20👍11👎7😢5❤‍🔥4🤝3🙊32👾2💋1
Python Hints
قبل از اینکه راجب دستمزد بگم، فرمول‌های متفاوتی برای نوع قرارداد هست که به ترتیب از بیشترین به کمترین مبلغ براتون می‌گم (مواردی که گفته نمی‌شه هم بین این‌ها قرار میگیره) یک چیزی مثل Big O هست خلاصه بیشترین به کمترین به ترتیب : قرارداد ساعتی : (۹۰٪…
#کارآموز

اول با کار آموزی شروع کنیم :

من قیمت‌ها رو برای تهران میگم اما شهرهای متفاوت قیمت‌ها کمی فرق می‌کنه

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

اما ۲ مدل کار آموز داریم :
۱- تا حالا جایی کار نکرده، هنوز درحال یادگیری هست اما توانایی حل مشکلات رو داره
فرض کنید کسی که ۶ ماه داره پایتون و جنگو می‌خونه و دانشجو هست
سطح سواد خوبی هم پیدا کرده جوری که بهش تسک بدید میزنه
اما همیشه یکی باید راهنماییش کنه که مسئله رو چطور حل کنه و یک نفر هم درصورت لزوم باید کد هاش رو بهینه سازی کنه

طبق چیزی که من دیدم، کف پرداختی برای ۱۴۰۳ برای این افراد ۷ میلیون تومان هست و معمولاً هم قرارداد نهایتاً ۶ ماهه بسته میشه (نرمال ۳ ماهه هست)
ماکزیمم پرداختی که دیدم هم (شرایط خاص و نون قرض دادن و ... رو بیخیال بشم)
۱۲ میلیون تومان در ماه هست.

۲- مدل دوم کارآموزی، فرض کنید من یک میدلول پایتون هستم و حالا دنبال یادگیری Rust برای یادگیری بهتر با یک شرکت قرارداد کارآموزی+ آموزش می‌بندم.
توی شرکت قرار نیست بخشی از پروژه رو کد بزنم اما بهم زمان برای یادگیری + دوره و منتور میدهند و بعد از مدت ۱ ماهه کم کم پروژه‌های کوچک رو هم بهم می‌سپارند

این مدل کار آموزی مدلی هست که اصطلاحاً بدون دستمزد هست، دستمزد خاصی توی مدت ۳ ماهه قرارداد به شما پرداخت نمی‌شه اما حداقل استاندارد پرداختی به شما شامل :
هزینه حمل و نقل + هزینه ناهار هست
رنج پرداختی که دیدم ۳.۵ تا ۵ میلیون تومان حداقل هست
بعضی جاها هم تا ۷ میلیون هم پرداخت می‌کنند که بستگی به سواد شما و تجربه شما با یک زیان برنامه‌نویسی دیگه یا .... داره


پ.ن : من همه مبالغ رو + چیزی که برای ۱۴۰۳ آپدیت شده اعلام کردم.
ممکنه جمله‌ بندی‌هام اشاره به زمان حال داشته باشه اما منظورم برای پرداختی سال آینده هست.
👍8515🙏3
Python Hints
#کارآموز اول با کار آموزی شروع کنیم : من قیمت‌ها رو برای تهران میگم اما شهرهای متفاوت قیمت‌ها کمی فرق می‌کنه اکثراً وقتی راجب دستمزد از کار آموز‌ها می‌پرسم، خیلی‌هاشون تعجب می‌کنند مگه کارآموز هم حقوق میگیره ؟ جواب کوتاه : بله، و اگر شرکتی راجب این موضوع…
#آموزشی #تجربه

یک دوستی دیروز که وقفه افتاد باهم صحبت کردیم
اسرار داشت که سطحش جونیور بوده ۱ سال و نیم پیش که وارد شرکت شده
و الان خیلی پیشرفت کرده
اما مبلغ دریافتی که داره روی ۷ میلیون تومان هست.
که توضیح دادم که خب اگر واقعاً همچین سطحی داره شرکت داره سرش کلاه میذاره و از ندانستنش داره سواستفاده می‌کنه

حداقل باید ۱۵ میلیون رو بگیره و ...

ایشون یک مقدار عصبی و ناراحت شد و می‌خواست همون لحظه پیام و استعفا بده که نهایتاً اینور سال آخرین روزهای کاریش باشه.

پیشنهادم به همه دوستان همین هست :

من شمارو تعیین سطح نکردم، و به حرف شما اعتماد می‌کنم و دستمزد رو میگم.
اما اگر باور دارید، قبل از استعفا دادن حتماً دنبال شغل جدید بگردید و اگر قبول شدید مصاحبه جای دیگر رو اعلام کنید که ۱-۲ ماه نیاز دارید برای جایجایی و تحویل کارهای قبلی

به محض بستن قرارداد اولیه، از شرکت قبلی استعفا بدید.


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

با کلماتی مثل وفاداری و .... هم نگذارید که ازتون سو استفاده بشه
👍1115❤‍🔥1🍾1
Python Hints
قبل از اینکه راجب دستمزد بگم، فرمول‌های متفاوتی برای نوع قرارداد هست که به ترتیب از بیشترین به کمترین مبلغ براتون می‌گم (مواردی که گفته نمی‌شه هم بین این‌ها قرار میگیره) یک چیزی مثل Big O هست خلاصه بیشترین به کمترین به ترتیب : قرارداد ساعتی : (۹۰٪…
ی آپدیت بزنم روی این مورد هم
چندتا مورد دیگه که دستمزد شما بیشتر میشه اعلام کنم


مثلاً اگر شرکت بیمه پرداخت نکنه، دستمزد شما بیشتر هست
و اگر پرداخت بکنه دستمزد کمتر (چون یک مقدار از دستمزد شما رو حق بیمه باید بده)

یک راهکار میانه هم هست،
پایه حقوق رو براتون جونیوری میزنند مثلاً ۷ میلیون
و بیمه رو بر اساس اون مبلغ پرداخت می‌کنند
و تفاوت حقوق شما رو بصورت پاداش یا ... بهتون پرداخت می‌کنند.

اینجوری هم از حقوق شما مبلغ کمتری کم میشه
هم شرکت مالیات و سهم بیمه کمتری رو پرداخت می‌کنه
برای هر دو طرف برد هست.
👍617❤‍🔥3👎3👌3
#موقت

پست بعدی دستمزد جونیور و بعد از اون میدیور هست

سنیور، کف و سقف نداره دستمزدش برای همین توضیحی نمیدم

۹۸٪ سنیورهایی هم که بنده بررسی کردم، دستمزدی و آماری و ...
نهایتاً سطحشون مدیور سطح ۲ بوده و تا سنیور شدن بسیار بسیار فاصله داشتند ولی خب شرکت بهشون لقب سنیور داده بود که خنده داره

تعداد سنیور توی تهران، ۱۰ برابر تعداد سنیور کل شرکتهای سیلیکون ولی هست 🤣😂🤣😂
😁82👍227🍓3🗿3
Python Hints
#کارآموز اول با کار آموزی شروع کنیم : من قیمت‌ها رو برای تهران میگم اما شهرهای متفاوت قیمت‌ها کمی فرق می‌کنه اکثراً وقتی راجب دستمزد از کار آموز‌ها می‌پرسم، خیلی‌هاشون تعجب می‌کنند مگه کارآموز هم حقوق میگیره ؟ جواب کوتاه : بله، و اگر شرکتی راجب این موضوع…
#جونیور

برای جونیور هم من حداقل ۳ سطح رو در نظر میگیرم
توی همه‌ی این موارد کار تیمی هم خودش امتیاز داره پس فقط به جنبه فنی نگاه نکنید.

توی شرکت‌های مختلف و با افرادی که می‌شناختم بررسی کردم، حدود ۴۰۰.۰۰۰ شغل فنی رو هم کرال کردم و بر اساس تمام این موارد قیمت میدم.

برای پایتون توی شاخه‌های مختلف :

از ۱۲ میلیون دستمزد شروع میشه
و تا ۱۸ میلیون هم می‌تونه این مبلغ باشه برای جونیوری که رو به پیشرفت هست، بجای ادعا کردن ترجیح میده وقتش رو روی سوادش بذاره
و البته ابزارهای مهم و نیازمندی‌های
Software Engineer
شدن رو رعایت می‌کنه، قبلاً کلی راجبش صحبت کردم برای همین ادامه نمیدهم دیگه
👍5911👎3❤‍🔥2
Python Hints
#جونیور برای جونیور هم من حداقل ۳ سطح رو در نظر میگیرم توی همه‌ی این موارد کار تیمی هم خودش امتیاز داره پس فقط به جنبه فنی نگاه نکنید. توی شرکت‌های مختلف و با افرادی که می‌شناختم بررسی کردم، حدود ۴۰۰.۰۰۰ شغل فنی رو هم کرال کردم و بر اساس تمام این موارد…
#مدیور

بین جونیور سطح بالا (گفتم دسته بندی من ۳ سطحی هست) و مدیور سطح پایین واقعاً مرز باریکی وجود داره و خیلی وقت‌ها راحت نمی‌شه تشخیص داد این موضوع رو

مثلاً صرف اینکه طرف بتونه
Medium Complexity LeetCode


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

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

مثال بزنم :
فرض کنید، یک تیم ۳ نفره از جونیور‌ها زیر دست شما درحال توسعه بخشی از نرم‌افزار هستند و شما هم مدیور بالا سر این افراد هم بهشون کمک می‌کنید، هم اگر نیاز به
Code review

باشه، شما شخصی هستید که تأیید اولیه رو میزنید.

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

برخورد شما چیه ؟
من بسیار مدیور و سنیور دیدم که سریعا گارد میگیرند، به نوعی مخالفت می‌کنند (حتی غیر منطقی) و می‌خوان که توی حالتی که پلن چیده شده پیش بروند و ...

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

بعضی وقتا هم دلایل فنی هست، که مدیور باید اینجا قدرت فنی خودش رو نشون بده اینکه چرا مخالف هست یا موافق حتی.


رنج دستمزد مدیور هم با توجه به وضعیت بازار ایران روی :

از ۲۰ میلیون تومان
تا ۴۰ میلیون تومان در ماه

برای سال ۱۴۰۳ رنج خوبی هست.
35👍24❤‍🔥3👎3
Python Hints
#مدیور بین جونیور سطح بالا (گفتم دسته بندی من ۳ سطحی هست) و مدیور سطح پایین واقعاً مرز باریکی وجود داره و خیلی وقت‌ها راحت نمی‌شه تشخیص داد این موضوع رو مثلاً صرف اینکه طرف بتونه Medium Complexity LeetCode حل کنه نمی‌شه گفت که خب مدیور شده و تمام، اتفاقاً…
#سنیور

سنیور واقعی مبلغ نداره،
هرچقدر تیغ‌اش ببره، بریده

وقتایی هست که دوس داره به یک پروژه و یک نفر حال بده و با دستمزد کم کار می‌کنه
وقتایی هم هست که دستمزد واقعی خودش رو می‌خواد

برای همین من هیچ نظری روی دستمزد سنیورها نمی‌دم
قطعاً خودشون هم گرگی شدند و می‌دونند چطوری قرارداد ببندند.
36👍26❤‍🔥5👎2
#نکات_قرارداد

۱) قرارداد حتماً باید نوشته بشه، اصلا روی حرف و ... هیچ چیزی قبول نکنید

۲) متن قرارداد رو حتماً بطور کامل بخونید، شما موظف نیستید همون لحظه که قرار داد بهتون داده میشه تا ۵ دقیقه بعد امضا بزنید.
(شخصاً یک نسخه از قرارداد و ضمیمه‌هاش رو می‌‌خوام که زودتر برام ارسال بشه و ۱-۲ روز مهلت خوندن به خودم میدم)

۳) بدون قرارداد کتبی هیچ کجا کار نکنید، مگر اینکه مبلغ رو قبل از شروع کار براتون واریز کنند
همه دوستان می‌دونند، شخصاً ممکنه با یک جا هم به توافق برسم.
اما اگر طرف قبل از قرارداد تسک بفرسته، دیگه باهاش همکاری نمی‌کنم، چون ۲ حالت بیشتر نداره
۳-۱ ) یا با هدف کلاهبرداری و از زیر موارد توافق شده فرار کردن قرارداد کتبی به شما تحویل نمی‌ده
۳-۲ ) یا اینکه یک پروژه ۱ ساله گرفته، خواسته با نیروی ۵ میلیونی کار رو در بیاره و حالا توی ماه‌های آخر هست و شدیداً نیاز به خروجی داره پس از ۱ روز هم نمی‌گذره که خب اینجا هم باید فرار کنید.

۴- یک نسخه از قرارداد رو همیشه تحویل بگیرید و پیش خودتون نگهدارید

۵- به تاریخ‌هایی که بیش از مدت قرارداد هست توجه کنید؛ توی ایران متن قرارداد هارو خیلی از شرکت‌ها به وکیل‌ها می‌سپارند و ازونجایی که ۹۹٪ وکیل‌ها برای قراردادهای کامیپوتری و فنی آماده نیستن متون مزخرف زیاد دیده میشه

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

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

اما مسئله این هست، هیچ شرکتی حق نوشتن این موضوع رو نداره.
شما حق استفاده از تجربیاتت رو داری و این یعنی بعد از کار توی هر شرکتی می‌تونی به یک شرکت با بیزینس مشابه بری و اونجا شروع به فعالیت کنی (دستمزد، برخورد یا هرچیزی)
اما طبق NDA شما حق انتقال دانش در مورد فیچرها، جزئیات عملکرد داخلی و ... که بعد از تحقیقات فراوان شرکت قبلی بهش رسیده و تجربه شخصی شما نیست رو به شرکت جدید ندارید.
حتی اگر این موضوع توی متن قرارداد شما نباشه، و اینکار‌ رو بکنید شرکت می‌تونه از شما شکایت کنه و ۹۹.۹٪ موارد هم رأی دادگاه برای شرکت هست.

۶- هر چیزی که از شرکت تحویل می‌گیرید و یا به شرکت تحویل می‌دید
بخصوص تحت عنوان ضمانت نامه، باید حتماً توی ضمیمه‌ای از قرارداد باشه و حتماً مهر و امضا مسئول شرکت رو هم داشته باشه.
مهمتر از اون باید اعلام بشه چه زمان و تحت چه شرایطی این ضمانت می‌تونه به اجرا گذاشته بشه و چه زمان و تحت چه شرایطی این ضمانت باید پس داده بشه.


در نهایت حتماً، حتماً، حتماً از قرارداد و ضمیمه‌های اون باید همیشه ۲ نسخه کاملاً رسمی (مهر، سربرگ، امضا، و ....) وجود داشته باشه
نسخه‌ای دست شما و نسخه‌ی دیگری برای شرکت.

اگر مورد دیگری در آینده یادم افتاد، حتماً به این پیام اضافه می‌کنم.
👍9611❤‍🔥4👌2👎1
پست جدید
SpaceX
رو توییتر رو دیدید ؟
ایلان ماسک هم retweet کرده.

طبق صحبت‌های مهندسان فنی SpaceX برای سال ۲۰۲۵ گوشی‌های همراه می‌تونند از خدمات اینترنت ماهواره‌ای استفاده کنند.

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

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

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

همین الان ۹۰٪ تماس‌ها از طریق سرویس‌های اینترنتی انجام میشه که کیفیت بهتری داشته باشه.
👍108🦄21👎1🌚1
#لینوکس

۳ تا از ابزارهایی که بنظرم هرکسی باید روی سیستم داشته باشه
یکی از همکارا توی میت پرسید؛ انقدر مفید بود که باقی بجه‌ها رو هم صدا زد.

واقعا فکر نمی‌کردم کسی اینارو نداشته باشه برای همین گفتم اینجا هم به اشتراک بذارم:

1- zellij

اگر با tmux کار نکردید که قطعا عمرتون رو خیلی هدر دادید و اگر کارکردید و مثل من خیلی وقتا درگیر کانفیگ کردنش بودید؛ برید سراغ
zellij
خوبی این ابزار اینه که با Rust نوشته شده فوق‌العاده کم حجم و سبک هست
کانفیگ شده و همه چیز رو داره
همیشه هم منو راهنما جلوتون هست
تعداد فیچرهاش بیش از حد زیاده.

2- dust
فقط کافیه یکبار هاردتون پر شده باشه تا سردرد استفاده از du, df , ... رو چشیده باشید یعنی ادمین سرور ندیدم که رضایت داشته باشه.
dust
گوشه سمت چپ پایین؛ کار رو به قشنگی براتون در میاره نمایش درختی + حجم هر پوشه و ...
با زبان Rust نوشته شده و برای ایندکس کردن هارد ۱۶ ترابایتی و پر از فایل من فقط به ۵ دقیقه وقت نیاز داشت ( این هارد چون دیتاست زیادی شامل متن - عکس و ... داخلش هست بسیار ایندکس کردنش سنگین هست خودم روی ۱ ساعت فکر میکردم انجام بشه)


@PyHints
👍60❤‍🔥51
Python Hints
#لینوکس ۳ تا از ابزارهایی که بنظرم هرکسی باید روی سیستم داشته باشه یکی از همکارا توی میت پرسید؛ انقدر مفید بود که باقی بجه‌ها رو هم صدا زد. واقعا فکر نمی‌کردم کسی اینارو نداشته باشه برای همین گفتم اینجا هم به اشتراک بذارم: 1- zellij اگر با tmux کار نکردید…
اضافه کنم که تصویر مربوط به محیط
zellij
هست یا دقت کردید ؟
3- Btop


بخش بالایی عکس که جزئیات cpu, mem, hard, network, gpu رو به خوبی نشون میده مربوط به ابزار مانیتورینگ btop هست که یک جایگزین فوق‌العاده و بسیار قوی برای top, htop محسوب می‌شه.

اما گل سرسبد همه موارد بالا و هرچیز دیگری که می‌شناسید :

4- tldr

تصویر گوشه پایین راست؛ اصلا نمی‌شه شما کاربر لینوکس باشید و از کامند استفاده کنید و نیازمند man نشده باشید.
اونقدری که خوندن و استفاده درست از man page یکی از سرفصل‌های مهم آموزشی RedHat هست؛ اگر می‌گید چه ربطی داره ؟ باید بگم که tldr اومده که شمارو از خوندن man page خلاص کنه مخصوصا وقتی فقط ی مثال کوچیک و سریع + توضیح کوتاه لازم دارید. توی تصویر شما خروجی
tldr dust

رو می‌بینید.


می‌دونم ربطی به پایتون نداشت؛ ولی چون خیلی کمک هست این ابزارها گفتم شاید بدرد کسی بخوره اینجاهم.
امیدوارم مفید باشه 🌹

@PyHints
👍57133❤‍🔥1🎉1
Rust for Python developers
این یکی واقعاً جالبه، جایگزین Flake8, isort, black, pyupgrade, ... با سرعت خیلی بیشتر. Ruff که با Rust نوشته شده، و پروژه Scipy, Pandas, FastApi, ... هم سمتش رفتند.
ابزار جدیدی از astral اومده به اسم uv جاگزینی خواهد بود برای pip, poetry, ...
البته درحال حاضر خیلی خام هست ولی بطور خیره کننده‌ای سرعت بالایی داره حتما یک سری بهش بزنید.

uv: Python packaging in Rust

پ.ن: از cache یک سری پکیج هوش مصنوعی نصب کردم 0.35sec طول کشید همین مورد با pip بیشتر از 30sec زمان می‌بره.
البته بازم میگم؛ هنوز پیشنهاد نمیکنم روی پروژه استفاده بشه.
👍23🔥5