shahin
4 سال پیش توسط shahin مطرح شد
6 پاسخ

به دور از تعصب بنظرتون بک راحت تره یا فرانت

به دور از تعصب بنظرتون بک راحت تره یا فرانت ؟


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
5

حجم مطالبی که برای تعامل با بک اند باید یاد بگیرید بیشتره و میشه گفت کمی پیچیده تره

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

تمام این موارد به کنار فرض کنیم کدهای بک رو مینویسی و همه چیز کار میکنه
تازه باید بری سراغ مطالبی مثل

  • تبعیت از قوانین معماری نرم افزار
  • الگوهای طراحی (design patterns)
  • ساختاردهی کدها برای نگه داری نرم افزار (software maintainibility)
  • ریفکتورینگ و ...

البته فرانت هم در حال حاظر به خاطر ابزارهای جاوااسکریپتی جور وا جور، کمی مباحثش شلوغ شده.. اما از اونها که بگذریم برای فرانت کار خوب بودن باید ۲ نکته رو خیلی خوب یاد گرفت:

  • جاواسکریپت (ترجیحا اکما اسکریپت ۶ یا بالاتر)
  • ساختار درختی DOM (Document Object Model)
    البته HTML و CSS هم هستند اما موارد خیلی ساده ای هستند و براحتی قابل یادگیری هستند

میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 4 سال پیش مطرح شد
0

با درود
جناب @ali.bayat به نظرتون اگر شخصی تخصصی بخواد وقت بزاره برای سرفصل های زیر در طراحی رابط کاربری، کارش مشکل تره؟ یا با توجه به نکات بالا، همچنان نظرتون روی سختی و پیچیدگی بیشتر در برنامه نویسی سمت سرور هستش؟

یادگیری اصول طراحی ui و ux و توانایی ایجاد طرح اولیه بر اساس آنها
html5, css3, responsive design, flexbox, css grid, bootstrap
js, es6, es7, 8, 9, 10, webpack و (typescript در صورت نیاز)
angular یا react یا vuejs. یکی ازین سه تا، بهمراه تمامی کتابخانه های جانبی مورد نیاز
pwa


Reza Jashnsaz
تخصص : مهندس نرم افزار
@rezajashnsaz0011 4 سال پیش مطرح شد
0

طراح فرانت اند باید از طراحی ظاهر لذت ببره و استعدادشو هم داشته باشه !چون تو ایران معمولا گرافیک سایت رو هم خود فرانت اند کار باید بزنه
ولی بک اند در سطح پیشرفته کلا هیچ ارتباطی با ظاهر یه سایت نداره دیگه .. شما همش باید api بزنی و درگیر دیتابیس باشی! باید منطقت قوی باشه
.
تو دانشگاه به شخصه هیچ سلیقه ای برای طراحی ظاهر نداشتم ولی منطق قوی داشتم بخاطر همین رفتم سمت بک اند


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
2

@milad

من در پاسخم نخواستم، کار فرانت اند کارها رو ساده نشون بدم..
مسلما فرانت اند رو هم اگر به شکل حرفه ای دنبال کرد، مباحث زیادی درش هست.

اما مثلا responsive design, flexbox, grid و .. اینها با درک خوب CSS قابل پیاده سازی هستند.
و اگر جاوااسکریپت رو بخوبی درک کرده باشیم یادگیری فریم‌ورک هایی مثل Vue و یا Angular میتونه به سرعت انجام بشه.
یا مثلا تنظیمات وب‌پک کلا یه آبجکت هست (البته این مورد پیچیدگی های خاص خودش رو داره)

اما مطالبی مثل UI/UX میتونه زمان بر باشه


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

  • ساخت UI
  • کار کردن با Vue, React
  • ساخت اپلیکیشن های SPA

در کل کار فرانت برای من پیچیدگی کمتری به نسبت کار بک‌اند داشته.

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

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

  • بعضی بک اند کارها فکر میکنند، بک سخته
  • و بعضی فرانت اند کارها فکر میکنند، فرانت سخته
  • و بعضی ها هم برعکس این نکته رو فکر میکنند

اما در کل یه سری پیچیدگی ها و الگوها رو در کدهای بک‌اند مون باید رعایت کنیم تا پروژه در آینده قابل توسعه باشه..
همونطور که یه فرانت کار خوب نمیاد به صورت inline کدهای css رو به المان ها اضافه کنه..
یک بک اند کار خوب باید نکته های خیلی زیادی رو در حین تولید ساختار برنامه بهشون دقت کنه; تا کدی که می‌نویسه قابل نگه‌داری و توسعه باشه.

یا مثلا در جاوااسکریپت ما به ندرت سراغ کلاس ها میریم.. اکثرا ابزارهایی مثل Vue و ری‌اکت از یه کلاس دیگه ارث‌بری میکنند و همین...
اما در نقطه مقابل مثلا در PHP ... اگر قرار باشه کدهای تمیز و خوب بنویسیم:

  • باید بخوبی از کلاس ها استفاده کنیم.
  • مفهوم وراثت خیلی مهم میشه.
  • Encapsulation باید بدرستی رعایت بشه.
  • Interface ها بسیار بسیار مهم هستند.
  • مفهوم انتزاع (Abstraction) خیلی مهمه.
  • و تازه میرسیم به مبحث الگو های طراحی و قواعد مختلف...

علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
4

در ادامه جا داره متنی رو از مقدمه یکی از کتابهای خیلی خوب Robert C Martin (معروف به Uncle Bob) به نام
"Clean Architecture: A Craftsman’s Guide to Software Structure and Design "
با دوستان به اشتراک بگذارم:

دانش و مهارت زیادی لازم نیست تا یک برنامه نوشت. بچه‌های دبیرستانی نیز این کار را در دبیرستان انجام می‌دهند. مردان و زنان جوان در دانشگاه با سر هم کردن چند خط کد PHP یا Ruby کسب و کار‌های میلیارد دلاری را شروع کرده اند. برنامه نویسان تازه کار زیادی در دفاتر کاری مکعبی شکلشان در سرتاسر دنیا در بین اسناد حجیم نیازمندی‌های موجود در سیستم‌های issue tracking خود در حال تقلا هستند تا سیستم هایشان را با صرف فعل خواستن توانستن است به کار بیندازند. کدهایی که تولید می‌کنند ممکن است زیبا نباشند ولی کار می‌کنند. کار می‌کند به این دلیل که چیزی بتواند یک بار کار کند، خیلی سخت هم نیست.
این که چیزی واقعا به درستی کار کند موضوعی کاملا متفاوت است. پیاده سازی صحیح نرم افزار سخت است چرا که دانش و مهارت هایی نیاز دارد که هنوز بیشتر برنامه نویسان جوان به آن دست نیافته اند. این کار به بینش و تفکری احتیاج دارد که بیشتر برنامه نویسان وقتی برای توسعه آن‌ها نمی‌گذارند. همه‌ی این‌ها به سطحی از انضباط و تعهد احتیاج دارد که بسیاری از برنامه نویسان حتی خوابش را نمی‌دیدند که به آن‌ها احتیاج پیدا کنند و در بیشتر موارد اشتیاق به مهارت و تمایل به حرفه ای شدن است.
وقتی که برنامه را به شکل صحیح پیاده سازی کنید، چیزی جادویی اتفاق می‌افتد: دیگر به لشکری از برنامه نویسان برای این که آن را در حال کار کردن نگه دارند نیاز ندارید. دیگر به سندهای نیازمندی‌های حجیم و سیستم‌های issue tracking بزرگ احتیاج ندارید. شما دیگر به اتاق‌های کاری مکعبی شکل زیاد و برنامه نویسی 24 ساعت و هفت روز در هفته نیاز ندارید.
نرم افزاری که یه شکل صحیح تمام شود، تعداد کمتری از منابع انسانی برای ایجاد و نگه داری نیاز دارد. تغییرات به سرعت و ساده هستند. نقص‌ها کم و فاصله‌ی بین آن‌ها کم است. تلاش کاهش می‌یاد، عملکرد و انعطاف پذیری افزایش می‌یابد.
بله، همچین چشم اندازی به نظر خیال پردازی می‌آید. ولی من آن جا بوده ام، من دیدم که اتفاق افتاد. من بر روی پروژه هایی کار کرده ام که طراحی و معماری سیستم، نوشتن کد و نگهداری آن را آسان کرده بود. پروژه هایی را تجربه کرده ام که به کسری از نیرو‌های انسانی پیش پینی شده احتیاج پیدا کرده بود. بر روی سیستم هایی کار کرده ام که نرخ نقص به شدت پایینی داشته اند. من تاثیرات خارق العاده ای که یک معماری نرم افزاری خوب می‌تواند بر روی سیستم، پروژه و تیم داشته باشد را دیده ام.
اما حرف‌های من را در نظر نگیرید. به تجربه خودتان نگاه کنید. آیا خلافش را تجربه کرده اید؟ آیا بر روی سیستم هایی کار کرده اید که جوری به هم پیوسته و پیچیده اند که هر تغییری جدای از این که چقدر واضح و ساده باشد، هفته‌ها طول می‌کشد و خطر‌های بزرگی را شامل می‌شود. آیا طراحی سیستم هایی که با آن‌ها کار کرده اید تاثیر منفی بزرگی بر روی روحیه تیم، اعتماد مشتریان، سازمان‌ها و حوصله‌ی مدیران گذاشته اند؟ آیا تیم ها، سازمان‌ها و حتی شرکت هایی که به وسیله‌ی ساختار نرم افزاری فاسد خود نابود شده اند را دیده اید؟ آیا تا به حال در جهنم برنامه نویسان بوده اید؟
من بوده ام و تا حدودی بیشتر ما نیز بوده ایم. تفاوت بسیار زیادی است بین وقتی که شما دارید با طراحی‌های نرم افزاری افتضاح کلنجار می‌روید تا وقتی که دارید از کار با یکی از طراحی‌های خوب لذت می‌برید.

پیروز باشید.


سعید
@saeidengine 4 سال پیش مطرح شد
0

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


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام