جنگو بهتر است یا لاراول ؛)


کار و تحصیلات من طراحی مبل و صندلی بوده و الان مدتی است که برنامه نویسی شروع کردم (دلایلش اینجا). امروز حدودا 6 ماه از زمانی که جنگو را به عنوان یک فریمورک توسعه وبسایت انتخاب کردم و به شدت مشغول یادگیری هستم می‌گذرد. به نظرم رسید بد نیست تجربیات آموزشی خودم رو به اشتراک بگذارم.

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

اما برای یاد گرفتن هردو به چندتا چیز احتیاج قطعی داریم:

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

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

... مهم نیست چه ایرادی پیش اومده مهم اینه که چطوری باهش برخورد میکنی ...

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

google: PostgreSQL
google: PostgreSQL features
google: PostgreSQL vs sqlite3
google: PostgreSQL compatibility with django
google: PostgreSQL limitations in django

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

من: یک حالت دیگر باقی میمونه که جواب شما در هیچ کدام از روش های فوق پیدا نشه. اینجا دیگه مثل یک کاوشگر سرزمین های ناشناخته باید تنهایی بنشینید و هی بگردید هی تست کنید و متروکه ترین گوشه های مستندات و راهنماهای برنامه مورد نظر رو بخونید بلکه کورسوی امیدی باشه و راهی پیدا بشه. جالب اینجاست که بعد از کمی که با مقدمات آشنا بشید اکثر مشکلات برنامه نویسی این مدلی حل می‌شوند. من اسمشون رو گذاشتم مشکلات 24 ساعته یعنی هربار که برام پیش میاد تقریبا 24 ساعت یا 3 روز وقت مفید میگیره تا بالاخره بفهمم این مشکل از کجا دراومده. بسیار کار خسته کننده ایست ولی خوب اگر بخواهیم به نیمه پر لیوان نگاه کنیم بهترین روش یادگیری و بسیار آموزنده است. جواب سوال های سخت رو آخرش خودتون باید پیدا کنید.

البته خبر خوب اینکه کم کم دیگه داره از اون 24 ساعت کم میشه ؛).

اما چند نکته در مورد یادگرفتن جنگو:

به نظرم به این ترتیب سراغ یادگرفتن جنگو با هدف توسعه وبسایت بروید البته ترتیب خیلی دقیقی نیست و ممکن است یکی را زودتر از دیگری یا همزمان با بعدی لازم داشته باشید:

  • آشنایی با پایتون در حد دانستن OOP
  • مطالعه تمرین اولیه جنگو در خود وبسایت جنگو
  • آشنایی با Bootstrap، java script، CSS، HTML مثلا از اینجا
  • مطالعه کتاب جنگو 2 به کمک مثال (Django 2.0 by example ) از انتشارات Packt
  • مطالعه و رجوع به مستندات جنگو
  • انتخاب یک موضوع واقعی و طراحی و ساخت یک پروژه شخصی


خیلی دنبال آموزش‌های فارسی نباشید که من همه چیزهایی که پیدا کردم یا به دستم رسید رو دیدم اما اکثرا کامل نیستند (مقاله های زیاد و متفرقه در وبلاگ ها یا در همین ویرگول) یا کمک زیادی نمی‌کنند(مثل آموزش جنگو مکتبخونه). مثلا پروژه بستون از جادی هم در آپارات هست اما متمرکز بر جنگو نیست و هدف دیگری داشته. اون پروژه کلی چیزها نیاز داره که ممکنه وسطش گیر کنید و کدی که شما میزنید با کد جادی هماهنگ نباشه و مثل اون کار نکنه اما دیدن ویدئوهاش بعد از اینکه کمی با جنگو آشنا شدید بسیار مفیده.

در یوتیوب آموزشهای انگلیسی خوبی هست اما اکثرا با جنگو 1.8 یا 1.9 نوشته شده اند.

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

در ضمن می توانید با بخشی از جامعه داخلی جنگو مثلا در این گروه یا جامعه کاربران جهانی جنگو نیز در ارتباط باشید.