Python BackendHub – Telegram
Python BackendHub
7.5K subscribers
314 photos
46 videos
11 files
432 links
Learning python & Backend Engineering, with Mani!

Youtube: https://www.youtube.com/@GitOverHere
Github: https://github.com/ManiMozaffar
Linkedin: https://www.linkedin.com/in/manimozaffar

تبلیغات نداریم

Admin: @Mani_nikou
Download Telegram
Forwarded from ‌BenDev
بچه هایی که نگران هوش مصنوعی هستن من حقیقتا نمی خواستم این راهو افشا ولی خب دیگ دلم نیومد به شما نگم

ببینید من یه پلنی دارم که مدت هاست دارم بهش فکر می کنم
فرض کنید یهو یه هوش مصنوعی می‌آد که می‌تونه همه برنامه نویسا رو بی کار کنه مثلا همین https://devin.ai/
فرض کنید خیلی پیشرفته تر شه

حالا من یهو می‌رم ازش می‌خوام که خودش رو بسازه به اسم
https://beni.ai/
بعد منم میلیونر می‌شم

همین دیگ
فقط لطفا به کسی نگین

@BenDevelop
🤣74😁35👍4🔥3👏2👌21🥱1🤝1
Python BackendHub
۲ سال پیش، در همین روز gpt منتشر شد. ۲ سال گذشته و هنوز بعضیا نگرانن جاشون رو GPT ممکنه بگیره تقریبا این سوالو روزی ۱۰ بار میشنوم. اما حقیقت اینه که GPT در حال حاضر یک درصد کاره پروداکت هم نتونسته بکنه بعد از ۲ سال توسعه. توسعه یک پروداکت تو یک تیم پروداکت…
در ادامه این پست... خیلی‌ها این روزا سعی می‌کنن ChatGPT و AI رو خیلی بزرگ‌تر از واقعیت نشون بدن؛ یا برای منفعت شخصی، یا برای ترند شدن و جذب مخاطب، یا شاید واقعاً اینطوری فکر می‌کنن. مثلاً چند روز پیش توی اینستاگرام ویدیویی دیدم که یکی از داخل سوئد می‌گفت ۲۰ درصد برنامه نویس های شرکتشون به خاطر AI layoff شدن و جاشون رو AI گرفته. ولی وقتی رفتم تو لینکدین شرکتشون رو نگاه کنم، نه افتی دیدم و حتی رشد هم داشتن! بعد چند روز ویدیویی زد که توضیح می‌داد برنامه‌نویس‌ها جا به جا نشدن؛ فقط کله پروداکت جابجا شده با AI که از گوگل گرفته بود و هرکی تو اون پروداکت کار میکرد layoff شده 😅 خلاصه هرچیزی که توی اینترنت می‌بینید رو باور نکنید.

بعضی‌ها ادعا می‌کنن که با AI سرعتشون چند برابر میشه. قبلاً وقتی از کسی می‌پرسیدین کد چطور کار می‌کنه و side effectهاش چیه، جواب می‌دادن. حتی اگه از Stack Overflow هم کد می‌آوردن، کد به تنهایی کار نمی‌کرد و نیاز به درک عمیق تری داشتن. متأسفانه امروز بیشتر برنامه نویسا که خیلی به AI وابستن نمی‌دونن کدی که خودشون نوشتن چطور کار می‌کنه.

از طرفی، من بیشتر وقتم رو صرف فکر کردن در مورد چگونگی نوشتن کد خوب و maintainable می‌کنم؛ فقط هدف نوشتن کد نیست، بلکه نوشتن کدی که قابل فهم و نگهداری باشه از یک راه حل منطقی و این هست که اهمیت داره. حتی اگر AI بتونه بهترین کد رو برا شما تولید کنه (که فکر نکنم)، نمی‌تونه چندین راه حل مختلف ارائه بده؛ این نیاز به خلاقیت داره. اگر بیشتر زمانتون رو صرف این فکر کنید که کد کار کنه، بله AI سرعتتون رو چند برابر می‌کنه، ولی با این حال سرعت شما کمتر از بقیه می‌مونه چون کدهای بد و technical debt روی هم جمع می‌شه و هم تیمتون و هم خودتون رو کند تر میکنه.

من از کدهای AI استفاده می‌کنم و بعد ریفکتور می‌کنم.

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

در نهایت، وقتی می‌شنوید که AI کد خوب تولید می‌کنه، این حرف‌ها رو از برنامه‌نویسان خوب که منفعتی براشون نداره، نمی‌شنوید مثل Linus. مثلاً در پروفایل‌های گیت‌هاب برنامه‌نویسان خوب، شاید ۱۰-۲۰ درصد افزایش کامیت در ۲ سال دیده شده؛ تازه باز هم این به معنای تأثیر AI نیست، چون correlation does not imply causation.

و همچنان، گوگل سرچ خیلی بهتر از AI کار می‌کنه. چند روز پیش می‌خواستم بدونم چطور با zoxide به دایرکتوری A بروم که parent اش B باشه؛ با اینکه GPT سرچش روشن بود، جواب نادرستی داد. تو گوگل سرچ کردم fuzzy search zoxide و issue گیت‌هاب نتیجه اول سرچم بو که همه چیز توضیح داده بودن maintainer ها.

استفاده‌های منطقی از AI توی برنامه‌نویسی هم هست

۱. وقتی نمی‌دونید دقیقاً چی می‌خواهید، می‌تونید از GPT بخواید تا ۱۰ عنوان خوب برای سرچ ارائه بده.
۲. نوشتن داکیومنت؛ حتی اگر کامل نباشه، بهتر از هیچیه و می‌تونید ادیتش کنید.
۳. ریویو کردن کد؛ نه برای اینکه نحوه رسیدن به هدف رو اصلاح کنه، بلکه برای جلوگیری از اشتباهات ساده برنامه نویسی یا اشتباهات لغوی
۴. افزایش سرعت تایپتون با Auto complete

هدف من کوبیدن AI نیست بلکه هدفم اینه که استفاده صحیح رو از دید خودم توضیح بدم. در نهایت توصیه میکنم این ویدیو از Linus رو حتما ببینید. که دقیقا تو راستای همین صحبت هاست.

@PyBackendHub
👍59👎95👏2🤣2
Python BackendHub
در پی این کامنت...
توصیه میکنم اولا همیشه وقتی چیزی تو اینترنت میخونید حتما برین دنبالش و تحقیق کنید. ببینید چه کسی اونو گفته, رزومه اش رو ببینید یا لینکدینشو ببینید یا صفحه گیت هابش یا ... . اینطور افراد ۹۹درصد پروفایل های کاری بسیار ضعیفی دارن چون اگه نداشتن نیاز نبود دست به همچین کار هایی بزنن.

تو کامنتا یک سری reply زده شد در خصوص نیروی جونیور, ببینید من اگه یک تسک دارم نمیام تسک رو توضیح بدم به نیروم. سعی میکنم بهش توضیح بدم چرا داره این کد رو مینویسه و هدف نهایی چیه. و راه حل رو میذارم به عهده خودش. من اگه بخوام requirement engineering کنم و تا کوچیک ترین if elif کد رو توضیح بدم, اون نیرو رو اخراج میکنم و خودم تسکو انجام میدم چون زمان کمتری ازم میگیره. من از نیروم انتظار دارم که وقتی هدف رو نشون دادم مسیر رو خودش پیدا کنه, مشورت کنه و راه حل خلاقانه پیدا کنه. ۹۵درصد software engineering پیدا کردن یک راه حل خلاقانه و درست برای حل مسئله هست با تحقیق و ..., نه تایپ کردن کد. و هیچ AI ای نمیتونه به شما راه حل خلاقانه بده یا باهاتون بحث کنه و ... . ولی اگه از AI بخواین یک requirement حسابی تعریف شده رو تبدیل به کد کنه, بله میتونه. در واقع AI یک زبون برنامه نویسی abstract شده تر هست با احتمال خطا بالا.

بار اول احتمال خیلی زیاد نیروی جونیور خطا داره در راه حل دادن یا پیاده کردن راه حل خودش ولی در نهایت بعد از چند ماه به سطحی میرسه که نیروی ارزشمندی برای شرکت میشه.

متاسفانه تو خیلی شرکت های ایرانی/خارجی همین روند وجود داره و در نهایت نیروی جونیور هیچ پیشرفتی نمیکنه. اکثرا پروسه های جدید میسازن و optimize میکنن که اون requirement عه بیشتر مهندسی شه قبل از رسیدن به برنامه نویس که سریعتر تبدیل به کد شه, جای اینکه بخواد روش فکر شه و برنامه نویسا اصلا نمیدونن برای چی دارن این کد رو مینویسن و کارشون اینه که مثل یک ربات یک تیکت از جیرا بردارن و تکمیلش کنند. انگار دارن به مسیر اشتباهی خیلی بهینه حرکت میکنن.

There is nothing so useless as doing efficiently that which should not be done at all - Peter Drucker


@PyBackendHub
👍422👏1🤝1
شرکتی که توش کار میکنم در حال استخدام Senior frontend engineer هست

https://join.com/companies/noah-labs/13793716-senior-frontend-developer

@PyBackendHub
👍17🔥6
Forwarded from Sadra Codes
گشت گرداگرد مهر تابناك، ايران زمين
روز نو آمد و شد شادى برون زندر كمین

اى تو يزدان، اى تو گرداننده مهر و سپهر
برترين‌اش كن برايم اين زمان و اين زمين

سال خوبی داشته باشن! ❤️
41🔥3👏1
شاید باورتون نشه ولی این ته یک جواب به یک سوال بود وقتی داشتم مدل رو تست میکردم 😂😂
نمیدوستم AI هم زده تو کاره قهوه. این روزاست که جای انسانارو بگیره 😂
@PyBackendHub
🤣41👍2❤‍🔥1
Forwarded from Django Expert (Majid A.M)
ینی یه نفر پیدا نشد جای این همه سر و صدا و داد و بیداد و هوار و هیاهویی که توی یوتیوب فارسی راه انداختن که آی هوش مصنوعی اومد بدبخت شدیم فلانب ها دارن لی آف میکنن فلان و بهمان چهار تا کورس آموزشی خوب کد زدن با copilot و cusror بسازید.

™️ @DjangoIR
〰️〰️〰️〰️〰️〰️
© @DjangoEx
👎19👍141
Django Expert
ینی یه نفر پیدا نشد جای این همه سر و صدا و داد و بیداد و هوار و هیاهویی که توی یوتیوب فارسی راه انداختن که آی هوش مصنوعی اومد بدبخت شدیم فلانب ها دارن لی آف میکنن فلان و بهمان چهار تا کورس آموزشی خوب کد زدن با copilot و cusror بسازید. ™️ @DjangoIR 〰️〰️〰️〰️〰️〰️
واقعا متوجه نمیشم استفاده از AI برای یک برنامه نویس چه آموزشی میخواد؟ کوه قرار نیست بکنید که.

اگه برای نصب یک cursor یا auto complete نیاز به دوره یوتیوب دارین، واقعا باید یک مرحله برگردین عقب و فعلا کد نزنید.

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

خودم شخصا در حد یک اتوکامپلیت و یک وقتا به جای گوگل وقتی نمیدونم چیو باید سرچ کنم استفاده میکنم.
@PyBackendHub
👍80👎7
This media is not supported in your browser
VIEW IN TELEGRAM
یکم حق بشنوید از پرایم
@PyBackendHub
👍296
علیرضا یه ابزار درست کرده برای نوشتن ماژول های پایتون با زبان Go.
یعنی چیزی شبیه به pyo3 اما خب برای گو.

https://github.com/alireza-hariri/go4py

@PyBackendHub
👏22👍7👎2🙏1
ری اکت که خب واسه وب هست
و react native برای گوشی هست. که تقریبا ری اکته ولی برای native application ها. که خب طبیعتا نمیتونید اینو بذارین رو مرورگر چون دپندنسی هایی داره که رو دیوایس گوشیه.

حالا react native web میاد که میذاره شما اونی که تو component های native ای که نوشتی رو دوباره تو وب ازش استفاده کنی 😂

احساس میکنم باید یک فریم ورک بدم به اسم react native web native :))

@PyBackendHub
😁55🤪4👍2
دو تایپ چکر جدید اومدن که جفتشون با راست نوشته شدن 😍

یکی از astral
https://github.com/astral-sh/ty

یکی هم از meta
https://github.com/facebook/pyrefly

بالاخره دارن مارو از دست pyright و mypy خلاص میکنن‌ : )

@PyBackendHub
21👍6🔥6🕊2
یک پروداکت MVP خیلی قشنگ دیدم که ۲ تا سافتور انجینر نوشتنش
https://www.hypertune.com/

فیچر فلگی هست که تایپ سیفه!‌ اگه نمیدونید فیچر فلگ چیه توصیه میکنم گوگل کنید. ولی تایپ سیف بودنش یعنی چی؟ یعنی شما یک سری فلگ میسازین, بعد از روش تایپ میسازه براتون. مثلا میدونه فلگ x ورودی تایپ y و z میگیره و خروجی مثلا بولین میده.

قبلا تو کورس پرسونال برندینگ گفته بودم سعی کنید بلاگ و اینا نسازین چون چالش و ارزشی نداره :) خیلیا پرسیده بودن چی بسازیم. کافیه به اطرفاتون نگاه کنید و سعی کنید یک مشکلی که دولوپر ها دارن رو حل کنید.
@PyBackendHub
👍16
من هرچی تو حوزه گیم بیشتر تحقیق میکنم بیشتر جذبش میشم اینقدر که جزئیات داره. اخیرا ویدیو و کنفرانس های زیادی رو دیدم راجب اینکه بازیای آنلاین (مثلا شوتینگ) چطوری تجربه زنده رو میدن. مثلا شما میبینی یک آبجکت (یا پلیر مثلا) داره حرکت میکنه این تو بک گراند چطوری کار میکنه.اصلا چیت چیه و چطور چیت پیاده سازی میشه. چطوری مثلا اشیای رندوم جلوتون تو مپ ظاهر میشه که تقریبا consistent هست. مثلا شما رد میشین از یک جایی پر از چمن و رندوم گل هست. ترتیب کنار گرفتن اینا چطوریه. آیا همه اینا واقعا هاردکد میشن پیکسل به پیکسل؟ یا on-fly جنریت میشن؟ خیلی تاپیک های جالبیه در کل.

برای اینکه با کرنل آشنا بشین توصیه میکنم یک چیت بنویسید برای یک بازی رو لینوکس. خیلی کمکتون میکنه که عمق دانشتون بیشتر شه.

@PyBackendHub
👍70❤‍🔥7🔥43
#آف_تاپیک‌

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

یک نقل قول خیلی خفن ببینید از برتراند راسل :)

@PyBackendHub
👎60👍49🤔4🤮3
تو نسخه های ۳ اتفاقات جالبی نیافتاده ظاهرا :))
@PyBackendHub
😁23🤣131
یه نگاهی کلی به سورس کد نوبیتکس انداختم و واقعاً اسپاگتی بود. تو این یک سال فهمیدم که خروجی یک تیم به تعداد نفراتش ربطی نداره؛ ممکنه ۵ نفر آنقدر بهینه‌کار باشن که ۵۰۰ نفر هم نتونن بهشون برسن. نکته کلیدی چیه؟ بهینه‌سازی پروسه‌ها و حذف کارهای وقت‌گیره.

منظورم چیه؟ وقتی تصمیم می‌گیرید یک فیچر بنویسید، باید ببینید چقدر از وقتی که صرف کدنویسی می‌کنید به کسب‌وکار سود می‌رسونه، نه صرفاً پیچیدگی تکنولوژیک.

مثلاً به جای اینکه تیم فرانت و بک‌اند دائم با فایل پست‌من ور برن، بک‌اند می‌تونه OpenAPI رو خودکار تولید کنه و موقع دیپلوی سرور تایپ‌سیف بگیره. بعد تیم فرانت اون رو Pull می‌کنه و یک کلاینت HTTP اتوماتیک می‌سازه. این ساده‌ترین و بی‌دردسرترین راهه. قبل از هر ریلیز، یک بار تایپ‌ها رو Pull می‌کنیم و اگه TypeScript ارور نده یعنی Breaking Change نداریم. این تسک شاید ۲ ثانیه طول بکشه، اما اگه دستی چک بشه می‌تونه ساعت‌ها وقت و هزینه کسب‌وکار رو هدر بده. سوال مصاحبه‌ای که ۹۰٪ کاندیدای فرانت اشتباه جواب میدن هم دقیقاً اینجاست!

حالا فرض کن تیم فرانت می‌خواد پاسخ‌های خطایی که Status ۲۰۰ نیست رو ترجمه کنه. تیم بک‌اند می‌تونه هر دفعه که یک کد خطای جدید اضافه می‌کنه، اینو به فرانت اطلاع بده یا اصلاً کل ترجمه رو بسپره به بک‌اند (که اشتباهه؛ ترجمه برای End Userه نه برای کلاینت). راه بهتر اینه که OpenAPI رو Extend کنیم و Errorها رو اونجا تعریف کنیم، یه discriminator بذاریم مثلاً error_type. حالا تیم فرانت خیلی راحت می‌تونه همه حالت‌های خطا رو هندل کنه و error_type رو مستقیم به یک کلید ترجمه تبدیل کنه. این پروسه که قبلاً ساعت‌ها طول می‌کشید، با همین روش می‌تونه خیلی سریع بشه.

ممکنه اون کلید ترجمه تو یه سری زبان‌ها تعریف شده باشه و تو یه سری، نه. یا از اول تو فایل پیش‌فرض (مثلاً انگلیسی) یادت رفته باشه تعریفش کنی. اینجا می‌تونیم با استفاده از کتابخونه‌ی intl-t یک تایپینگ خیلی قوی‌تر کنار i18n داشته باشیم و جلوی این مشکلات رو بگیریم!

کلا هروقت دارین زیاد با یک مشکل دست و پنجه نرم میکنید دنبال راه حلی باشید که با اون مشکل دیگه دست و پنجه نرم نکنید. و اینطوری شما تبدیل به اون تیم خیلی بهینه میشید.
@PyBackendHub
28👍6👌2👎1
یک نکته دیگه هم که من همیشه خیلی بهش اعتقاد دارم اینه که شما باید از تایپ سیستم یک زبون استفاده کنی که invariant های برنامه ات رو داخلش جا بدی. صرفا اگه قراره تایپینگ داشته باشی دلیل به maintainable بودن کدت نیست!
مثلا از من خواسته شده که یک دیتاکلس بسازم که state یک درخواست و دیتاش رو بذارم اونجا.
خب یک درخواست یا میتونه تو استیت اولیه باشه که هنوز اتفاقی نیفتاده. یا در حال لود شدن هست. یا دیتا رو میگیره. یا ارور میگیره.

اینجا invariant برنامه من چیه؟
اگه چیزی در حال لود شدن باشه میتونه دیتا داشته باشه؟ نه.
اگه ارور بیاد ایا دیتا اصلی رو دارم که انتظارشو داشتم؟ نه.
و ...

شما یا میتونید به سبک بالا بیاین همرو تو یک دیتاکلس بذارین و همه جا if elif elif استفاده کنید.
یا به سبک پایین کد بزنید و به جای اینکه ۲۴ حالت داشته باشین درواقع فقط ۴ حالت دارین.

تو این ویدیو از دوره ام بیشتر راجبش حرف زده بودم یک سال پیش.
@PyBackendHub
21👍8🤔1👌1
Forwarded from ‌BenDev
رفقا من نمی‌خواستم اینقدر صریح اینو بگم چون استثنا زیاد وجود داره، منتهی من چند تا کد از شرکت های به اصطلاح پولدار تک ایرانی دیدم و مجبورم بگم.

به صورت یه قاعده کلی جدا سعی کنید از فلسک و جنگو دوری کنید، با همون fast api نود درصد بیزینس های پایتونی باید اوکی باشه، modern python استفاده می‌کنه انعطاف پذیر هم هست دیگ، بی خیال لطفا

@BenDevelop
👍42👎30🤔4💩21🤣1