اشکان محمدی
اشکان محمدی
خواندن ۴ دقیقه·۳ ماه پیش

پروژهء دو ساله ام، Questify رو تموم کردم + Github Repo + Demo

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

منم که در به در دنبال یه ایده میگشتم برای اینکه یه پروژهء درست و حسابی توی رزومه ام داشته باشم، این فکر به سرم زد که «چرا من خودم یه سایت برای برطرف کردن این مشکلات نزنم؟».

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

تصمیم گرفتم که این پروژه رو تا انتها ادامه بدم، هرچقدر هم که طول بکشه!

ولی این وسواس فکری لعنتی جلوی پیشرفت پروژه رو می گرفت. یه مدت زمان زیادی رو صرف پیدا کردن بهترین تکنولوژی و فریمورک ها برای پروژه ام کردم. مثلا بک اند رو یه بار با Django نوشتم، یه بار دیگه با Nest Js هر دو هم یه بار به صورت REST API و یه بار هم به صورت GraphQL. فرانت هم که یه بار با Vue، یه بار با Next یه بار هم React خالی + Vite، کتابخانه UI هم یه بار خودم از صفر طراحی کردم و یه بار هم React MUI رو استفاده کردم. تازه یه دفعه هم سعی کردم به صورت full stack اپ رو با .net core 6 بنویسم.

درگیر یه روند خیلی مزخرف و بی خود شده بودم. شاید براتون سوال پیش بیاد که چرا این همه بین تکنولوژی های مختلف جا به جا می شدم؟ علتش این بود که مثلا میومدم بخش احراز هویت رو با NestJS پیاده سازی کنم، بعد که میدیدم چقدر سخته با خودم می گفتم ای کاش با Django پیش می رفتم. یا مثلا وقتی میدیدم Vue کتابخانه های ui اش در حد React نیستند و هم اینکه با typescript مشکل دارن هی به سرم می زدم برم سراغ React

البته این مواردی که یادم میاد مال 2 سال پیشه و ممکنه الان دیگه رفع شده باشه ولی من حقیقتا خبر ندارم. از یه جایی به بعد دیگه تصمیم گرفتم که با همون technology stack ای که باهاش پروژه رو شروع کردم باقی بمونم و زیاد پیگیر تکنولوژی های دیگه نشم که هی فکر از صفر شروع کردن به سرم نزنه (پروژه اونقدر طول کشید که ورژن Django ای که باهاش پروژه رو شروع کرده بودم، یعنی ورژن 3.2 الان منسوخ شده و پشتیبانی نداره XD. آخرین نسخه Django الان 5.1 هست.)

وقتی دیدم این وسواس فکری چقدر داره بهم ضربه میزنه و چقدر از عمرمو به باد داده فهمیدم که اینطوری نمیشه و واقعا باید از اساس یه فکری به حالش بکنم. مثلا به خودم قول میدادم که «اول کد هاشو هرچند کثیف پیاده سازی میکنم بعد برمیگردم و طوری refactor اش می کنم که تبدیل به نمونه ای بی بدیل از ظهور مفاهیم clean code بشه». یه عالمه هم ایده داشتم برای امکانات سایت که نهایتا از بینشون چندتایی رو انتخاب کردم و بقیه شو به خودم وعده دادم که «اینا مال ورژن های بعدی اپلیکیشنه».

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

صفحه اول سایت
صفحه اول سایت

این هم repository گیتهاب:

https://github.com/Amohammadi2/questify-community/

امکانات و اهداف پروژه به علاوه تکنولوژی های استفاده شده رو نوشته ام. داکیومنت های پروژه رو هم می تونید توی فولدر `Questify Docs` پیدا کنید. البته این فولدر رو باید با نرم افزار Obsidian بازش کنید وگرنه لینک ها کار نمی کنن و دیاگرام های mermaid اش رندر نمی شن.

دمو

https://www.aparat.com/v/gwslv1c


دانش آموزانclean codeمدیریت پروژهبیزنس پلنپرسش و پاسخ
یه برنامه نویس ساده که از تجربیات و آموخته هاش می نویسه
شاید از این پست‌ها خوشتان بیاید