چگونه مدرن شد؟

Android
Android


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

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


پیش به سوی تغییرات

The business changes. The technology changes. The team changes. The team members change. The problem isn't change, per se, because change is going to happen; the problem, rather, is the inability to cope with change when it comes. -kent beck



AndroidX
AndroidX


اولین تغییری که انجام دادیم و خیلی هم به موقع بود مهاجرت از لایبرری های ساپورت به اندروید x بود

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



Kotlin
Kotlin


دومین تغییری که دادیم شروع به کد زنی با کاتلین بود و مسئله ای که وجود داشت این بود که این یه تغییر مهم بود ولی ما شدیدا درگیر توسعه بودیم یجورایی یک تصمیم گرفتم و خب موافقت شد اینکه کد های تست برنامه با کاتلین نوشته بشه و این باعث شد کاتلین وارد پروژه بشه البته ما هنوز نتونسته بودیم برای توسعه سراغ کاتلین بریم تا اینکه شروع کردیم به استفاده از جت پک!!!



JetPack
JetPack


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

این تغییر یک مزیتی که داشت این بود که ما از کدهایی استفاده می کردیم که وقت توسعه و بهبودش پیدا نمی شد ولی الان از جت پک استفاده می کنیم که توسط گوگل در حال توسعه هست و بهبود پیدا می کنه:)




Room
Room


اولین کامپوننتی که استفاده کردیم روم بود روم یک orm هست که به راحتی با annotation یک سری کد می زنیم و خودش کد های لازم برای sqlite رو تولید می کنه شاید تا قبل استفاده از روم قسمت ذخیره سازی دیتا ترسناک ترین جای پروژه بود :)



Live Data
Live Data


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



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


راستی یک چیز دیگه

ما توی فرآیند جذب نیرو های جدید یک کار مفیدی که کردیم این بود که پروژه های تستی تعریف کردیم که باید با استفاده از کاتلین و کامپوننت های جت پک می زدن این کار رو کردیم چونکه اکثر کسایی که میومدن با کاتلین یا به خصوص جت پک آشنایی نداشتن این کار رو کردیم که حداقل بتونیم مهارت همکارامون رو ارتقا بدیم هرجایی که باشن :)


خلاصه توصیه ای که می تونم بکنم اینه که نسبت به تغییر مقاومت نکنید:)