قسمت دهم گپ و گفت | مهدی خسروی از دیجیاتو


قسمت قبلی گپ و گفت با مینا ربطی از دنیای تخصصی جاوااسکریپت تا حدودی فاصله گرفتیم و به داده کاوی و مسائل مربوط به اون پرداختیم که با استقبال و بازخورد خیلی خوبی هم روبه رو شد . اما این قسمت از گپ و گفت کاملا تخصصی شده و قراره با مهدی خسروی عزیز گپ بزنیم و یک سری سوال هارو در مورد اینکه چرا اصلا دیجیاتو به سمت ری اکت نیتیو رفت ،جاوااسکریپت و آیندش ، معایب ری اکت نیتیو و …. مطرح کنیم . در ادامه گفت و گو من و مهدی خسروی رو مطالعه میکنید
مهدی عزیز قطعا گفت و گو با تو برای ما و کاربرانمون اتفاق بسیار خوشایندی هست و از این بابت خوشحالیم ، لطفا در مورد خودت و فعالیت های کاریت برامون بگو.
ممنونم، برای من هم همینطور هستش ،خب من مهدی خسروی هستم یک علاقه مند به تکنولوژی. خیلی معتقد نیستم که صرفاً توسعه دهنده هستم یا حتی توسعه دهنده ی خوبی هستم. چهار پنج سالی هست که تقریبا به صورت تمام وقت دارم کار میکنم. به واسطه ی مدرسه ای که توش تحصیل کردم، حدود ۱۲ سال هستش که با برنامه نویسی آشنا شدم و انقدر با سیستم های مختلف ور رفتم که یه چیزی یاد گرفتم. یکی از اولین چیزهایی که باهاش درگیر بودم تا یاد بگیرم کامپیوتر شخصی پدرم بود که حاصل گشت و گذارم توش پاک شدن ۶ ماه کارش بود . طبعا بعدش دیگه اجازه دست زدن به کامپیوتر پدرم رو نداشتم ولی خانواده برای من و برادرم یک سیستم دیگه گرفتن که حداقل اینجوری کار کسی پاک نشه .کارشناسی رو مهندسی کامپیوتر گرایش سخت افزار خوندم و الان هم دانشجوی ارشد مدیریت کسب و کار گرایش استراتژی هستم(بیشتر به علت فرار از سربازی).
تجربه ی کاری اصلی من توی شرکت های رهنما و پگاه(تپسل، مدیا اد) و همچنین همکاری با دیجیاتو بوده.
خب دیجیاتو یک برند شناخته شده هستش، اگه قرار باشه به تیم فنی دیجیاتو نیرو اضافه بشه چه ویژگی هایی رو مد نظر قرار میدی؟ چه اولویت هایی برای شمااهمیت داره؟
دیجیاتو تیم بزرگی داره و چون تمرکزش روی تولید محتواست به همین دلیل تیم فنی کوچیکه. هر شرکت خوبی از جمله دیجیاتو بیشتر به رفتارهای کاری اهمیت میده تا سطح دانش. ما هم بیشترین چیزی که برامون اهمیت داره اینه که همکارامون به خوبی و خوشی کنار هم فعالیت داشته باشن . درنتیجه همواره تلاش شده افرادی که پتانسیل دارن و باهوشن رو جذب کنیم هرچند اگه به اندازه کافی تجربه نداشته باشن. این موضوع شاید باعث کند شدن فرآیند ها بشه ولی به هدف اصلی دیجیاتو که کمک به پخش کردن دانش و پیشرفت افراد هست نزدیک تره.
ولی از نظر فنی اینکه افراد با ReactNative ، Wordpress و Linux آشنا باشن مزیت محسوب میشه.
یه سوالی که شاید این روز ها خیلی از دولوپرها رو درگیر کرده رفتن به سمت جاوااسکریپت هست، تو به عنوان کسی که چند ساله داره کار میکنه آینده جاوااسکریپت رو چطور میبینی و نظرت در موردش چی هست ؟
خب این سؤال خیلی کلیه. اما من اگه بخوام نظرم رو بگم جاوااسکریپت به دلیل اینکه از بیرون خیلی ساده به نظر می رسه افراد زیادی رو جذب کرد .ساختار توسعه با جاوااسکریپت نسبت به java و python خیلی ساده تر هستش . اما همین موضوع باعث میشه احتمال خطا کردن هم بیشتر بشه.به شخصه اگر کسی بخواد برنامه نویسی رو شروع کنه پیشنهاد نمی کنم از جاوااسکریپت شروع کنه.
در سال های اخیر به دلیل رشد node js و react این حس به وجود اومده که افراد اگر جاوااسکریپت بلد باشن هر کاری می تونن بکنن و دیگه نیازی نیست چیز دیگه ای یاد بگیرن. این تفکر خیلی درست نیست.هر زبان برنامه نویسی یک ابزار هستش و با توجه به اینکه چه افرادی برای چه مخاطبی چه کاری می خوان انجام بدن باید تلاش کنن ابزار مناسب رو انتخاب کنن.
جاوااسکریپت پیشرفت های زیادی در سال های اخیر کرده. انتظار شخص من اینه که در سال های آینده فریمورک ها و کتابخانه های قوی تری برای جاوااسکریپت توسعه داده بشه . با توجه به وضعیت فعلی احتمالا در پنج سال آینده هم بازار کار خوبی داشته باشه . ولی همیشه باید حواسمون به زبان ها و ابزارهای جدید باشه که از قافله عقب نمونیم و فسیل نشیم.
خب اپلیکیشن دیجیاتو به سمت react native رفت و میشه گفت این انتخاب یه تصمیم بزرگ برای دیجیاتو بود،خیلی دوست دارم نظرتو در مورد این انتخاب بدونم .
سال گذشته وسط یه گفتگوی دوستانه با مانی به این نتیجه رسیدیم که اپلیکیشن دیجیاتو رو بکوبیم دوباره بسازیم. به خاطر همون تیم کوچیک، تصمیم گرفتیم بریم به سمت استفاده از react native . من تجربه ی استفاده ازش رو نداشتم با دوستام که تجربه داشتن صحبت کردم کسی مخالفت بزرگی ابراز نکرد درنتیجه ما هم کار رو شروع کردیم.
مثل هر پروژه ی دیگه ای مشکلات زیادی سر راهمون بود. دیزاین هایی که ما تا الان انجام داده بودیم بیشتر زبان Material توشون رعایت شده بود ولی ری اکت نیتیو دست مارو باز می ذاشت که بتونیم هر کاری دوست داریم انجام بدیم. از طرفی دیزاینی که هم روی Android و هم iOS خوب بشینه یکم پیچیده تر هستش .
از طرف دیگه، ما توی هر مرحله ی توسعه انتظار داشتیم با یک سری مشکل مواجه بشیم،ولی با یک سری مشکل دیگه مواجه می شدیم. در نسخه ی اولی که منتشر کردیم کتابخانه های زیادی استفاده کرده بودیم. ولی هرچی جلوتر رفتیم از این کتابخانه ها کم کردیم و خودمون نوشتیمشون. یکی از مشکلات بزرگ همینه که کیفیت کتابخانه های ReactNative به خوبی کتابخانه های android خالص با ios خالص نیست .
اکثر کاربران ما در مورد performance برنامه های react native میپرسند ، نظر شما چیه؟
هرچقدر از زبان ماشین فاصله بگیریم، عمل کرد ضعیف تر میشه.طبعا اگر با جاوا توسعه داده بشه عمل کرد خروجی بهتر خواهد بود. در واقع زمانی که ما از ابزاری مثل ReactNative استفاده می کنیم یک اعتماد بزرگ به تیم توسعه دهنده ش کردیم که عملکردش رو روز به روز بهتر کنه و نسبتا دست خودمون بسته میشه . اگر بخوام خیلی کلی صحبت کنم، اگر پروژه ای که دوستان می خوان پیاده سازی کنن خیلی قسمت های پیچیده ای داره، پیشنهاد می کنن سراغ ReactNative نرن . به عنوان مثال، اگه می خوان محصولی مثل اینستاگرام به عنوان یک شبکه ی اجتماعی پیاده کنن، ایده ی خوبیه که برن سراغ ReactNative .ولی برای قسمتی که می خوان عکس ویرایش کنن و افکت های خاص بدن بهتره که اون Module ها Native با جاوا یا swift پیاده سازی بشه .
تجربت در استفاده از انیمیشن ها در react native چطور بوده ؟
از اونجایی که خودم خیلی از انیمیشن های عجیب و غریب در اپلیکیشن ها خوشم نمیاد، اپلیکیشن دیجیاتو هم انیمیشن های زیادی نداره. انیمیشن های بی جا هم دیزاین اپلیکیشن رو بهم می ریزن وهم عمل کرد رو دچار اختلال می کنن. خلاصه تجربه ی شخص من توی انیمیشن ها زیاد نیست و نمی تونم در موردش نظر بدم .
از چه روش هایی برای دیباگ برنامه هنگام توسعه استفاده کردین؟
یک روش خیلی قدیمی برای دیباگ کردن هستش اونم گذاشتن log و print وسط کده.من خیلی خیلی این روش رو دوست دارم ولی همه جا پاسخگو نیست.برای دیباگ کردن بیشتر از log های خود ReactNative استفاده میکنم ولی زمانی که خیلی اتفاق های غیرعادی رخ میده،سراغ پنل Profilerای که توی Android Studio هستش میرم .
برای تست کردن محصول بیشتر روی گوشی خودم امتحان می کنم.بقیه ی نیازها رو هم تلاش می کنم با Genymotion یا emulator خود Android Studio رفع کنم .وقتایی که هیچ کدوم از این روش ها جواب نده یا مشکل روی یک دستگاه خاص باشه، دیگه می گردم دوستی رو پیدا می کنم که اون دستگاه رو داشته باشه بتونم روش تست کنم. تا زمانی که وضعیت اقتصادی انقدر پیچیده نبوداین جور مواقع به خرید دستگاه هم فکر می کردم ولی دیگه امکان پذیر نیست 🙂
یکی از مباحث پیچیده در reactnative استفاده از statemanager هاست شماهم از ریداکس یا موبیکس در برنامتون استفاده کردید؟ اگه استفاده کردی لطفا تجربت و علتشو برامون بگو.
بله ما از ریداکس استفاده کردیم . همونطور که می دونید وضعیت های اپلیکیشن در ReactNative با state ها و props ها کنترل میشه . هر component برای خودش این دو سری اطلاعات رو نگه میداره . بعضی وقت ها نیاز هست که اطلاعاتی رو بین تمام قسمت های اپلیکیشن به اشتراک بذاریم.redux به ما اجازه میده که خیلی راحت تر این کارو انجام بدیم.
پیاده سازی ریداکس برای من همواره با اشک و خون همراه بوده . خیلی به نظرم پیچیده میومد و اگر تمیز پیاده نشه دیباگ کردنش مکافاته . ولی با تمام این ها انقدر تمیز میشه و کارکردن ساده میشه که به زحمتش می ارزه . خیلی از دوستان وقتی به ریداکس می رسن از پیچیده بودنش تعجب می کنن و بی خیال می شن. از طرفی مستندات سایت ریداکس هم خیلی سر راست نیست . شانسی که من داشتم این بود که یکی از دوستانم که خیلی وقته ری اکت نیتیو کار میکنه (حامد ولی زاده) ریداکس رو به من یاد داد . به دوستانی هم که با ریداکس مشکل دارن پیشنهاد میکنم نمونه های پیاده شدش رو توی برنامه های مختلف ببینن احتمالا بهتر درکش میکنن
ترجیح میدید هر دو نسخه android و ios از لحاظی طراحی ظاهری شبیه به هم باشند یا که نه؟
این موضوع هم کاملاً بستگی به برنامه داره. دیزاینی که بتونه روی هر دو سیستم عامل Android و ios خوب بشینه پیچیدگی زیاد داره.ولی اگه بشه این دیزاین خوب پیاده بشه،به سلیقه ی من نزدیک تره. اگر کسی این توانایی رو در خودش نمی بینه، پیشنهاد می کنم دو دیزاین مختلف پیاده کنه .
به نظرتون چه مواردی در react native به خوبی کار نمیکنه؟
مشکل دیباگ کردن و نبود IDE خوب برای توسعه بزرگترین مشکل هستش. از طرفی سن ReactNative خیلی کمتر از Android و iOS هستش . باید به اندازه سنش ازش انتظار داشته باشیم 🙂
ممنون که این گفت و گو رو قبول کردی ، به نظرت سوالی باقی مونده که من نپرسیده باشم؟ یا اگه نکته ای هست که دوست داری بگی خیلی خوشحالمون میکنه
کامیونیتی react در کشور ما خیلی کوچیکه ، امیدوارم عزیزانی که میتونن کمک کنن بچه ها بیشتر باهم آشنا بشن و بتونیم دور هم کارهای بهتری انجام بدیم .
خیلی خوشحال شدم که فرصت گپ و گفت با شما رو داشتم .
مهدی عزیز خیلی ممنونیم ازت بابت این گفتگو ، فکر میکنم از بهترین های گپ و گفت شد و امیدوارم که برای دوستان دیگه هم این صحبت ها مفید باشه . کاربران عزیز reactapp میتونید از طریق توییتر و اینستاگرام با مهدی خسروی در ارتباط باشید
مطالب زیر را حتما مطالعه کنید
قسمت دوازدهم گپ و گفت | اشکان اهرابی از SnappQ
قسمت یازدهم گپ و گفت | گفت و گو با علیرضا گودرزی
قسمت نهم گپ و گفت | مینا ربطی متخصص داده کاوی
قسمت هشتم گپ و گفت | مهرنوش دشتی از تیم ایوند
قسمت هفتم گپ و گفت |گفت و گو اکوموتیو با تیم reactapp
قسمت ششم گپ و گفت | مسعود صدری و فرانت کست
4 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
خسته نباشید میگم
ممنون مهران عزیز
واقعا عالی بود و جای تشکر داره
ممنون بابت بیان حقیقت ها و روشن صحبت کردن اقای خسروی
ممنون رضای عزیز
موفق باشی