صناعة السوفتوير اللى العملاء بتوعه نفسهم سوفتوير انجينيرز كل سنة بيزدهر عن السنة اللى قبلها، لأسباب كتير منها ان الستارت ابس عاوزة تطلع بسرعة time to market او قلة خبرة الديفلوبرز فى ستارت ابس كتير، او ان الحاجة هتاخد وقت كبير، او الوهم ان خبرة الديفلوبرز قليلة على الفيتشر او الوهم ان الحاجة هتاخد وقت كبير وده الجرح اللى عاوز افتحه وادوس عليه المرة دي.
فيه سوفتوير كتير الديفلوبرز بيستخدموه اليومين دول وبيتدفع قدامه فلوس بالهبل، بيزود تعقيد الأنظمة، وبيبطأ الأنظمة دي ومنها اللى بيأثر على تجربة المستخدم من سرعة وحجم الابليكيشن وحتى مشاكل فى الخصوصية.
مثال على ده:
الامثلة كتير ومتأكد ان كل ديفلوبر بيستخدم على ابليكيشن واحد على الأقل من اللى فوق دي، وحياته بتضيع قدام عينيه فى الintegrations لأيام مع ان ممكن اللى محتاجه يخلص فى ساعتين وشوية تنظيم وتحديد للي محتاجه.
اكبر سبب من وجهة نظرى اللى مالهاش اي لازمة هو الخوف، الديفلوبرز فى خوف مستمر بيتدخل تقريبا فى كل قرارات التكنولوجيز، رغم ان كل الناس بتدعي ان قرارتهم منطقية ومبنية على مميزات وعيوب ومناقشات واخد ورد وفوق وتحت وهنا وهناك وكل الكلام الجميل ده، بس فى الاخر الroot cause هو الخوف، مثال على كده:
معظم الخوف بيتركز فى قلة الثقة فى النفس والتيم انهم يعملوا حاجة تقضى الغرض وان اكيد حد غريب ماعرفوش على الانترنت بيشتغل فى linkedin او فيسبوك هيكتب حاجة احسن للسيستيم بتاعي من اللى انا هكتبه للسيستيم، انا اللى عارف احتياجاتي والسيستيم اللى ببنيه عارف اقل من اللى بيبني سيستيم generic على الطرف التاني من الكوكب.
طريقة التفكير دي مش بس بتنتج انظمة معقدة وبطئية وتحكم الديفلوبر فيها صفر (لأن 90% من الكود مايعرفش عنه حاجة) ، لا ده بيبقى سيستم هش وفى اي وقت اي حاجة من دي ممكن تولع وماتعرفش تطفيها او تقع وماتعرفش تقومها زي ما كان شركات كبيرة مستخدمه حاجة زي fastly ولما وقعوا وقعوا نص الانترنت معاهم.
مشكلة تانية فى التفكير ده ان الداتا بتاعة المستخدمين بتعدي فى كود انت ماقريتوش وماتقنعنيش انك قعدت تقرا كل سيستيم اوبن سورس استخدمته، او SDK استخدمتها، ممكن الكود ده وانت مش واخد بالك يسرق اي حاجة من الداتا دي او يكون ليهم privacy policy بتسمح بمشاركة المعلومات اللى انت طبعا ماقريتهاش، فوانت مش واخد بالك الكود ده حرفيا ممكن يقلعك هدومك ويخسرك شغلك نفسه.
مشكلة كمان الطريقة دي انها بتقتل اي فرصة للأبداع، لأن كل لما تقابل حاجة المفروض تعملها بتشك فى نفسك وتروح تدور على شركة عاملاها علشان تستخدمها وخلاص، بنفس المنطق ده كان المفروض الناس فى linkedin يروحوا يستخدموا اي حاجة موجودة بدل مايكتبوا kafka او جوجل راحت تستخدم اي سيستيم عاملاه شركة تانية بدل مايكتبوا borg.
فى رأيى ان طريقة كتابة السوفتوير واخدة منحى اننا نجمع شوية components مكتوبة من third parties وتكتب كود يوصلهم ببعض دي بتقتل الديفلوبرز وبتحولهم لgrunts، الطريقة اللى شايفها احسن هي growing software ، بالتدريج بنبني اللى محتاجينه بحيث يحل المشكلة اللى عندنا دلوقتي ويكون مكتوب كويس بحيث يسمح بتعديلات فى المستقبل، لكن فكرة اننا نبني السوفتوير زي العمارة كده ولما يكمل ابقى اسكنه واجيب لكل دور مقاول شكل ومتصممة من معمارى مختلف مش هيكون ليها رجلين تمشيها لفترة طويلة، الكود اللى ماكتبتوش بنفسك كود مش هتعرف تdebug بنفسك ولا تتحمل مسئوليته وبالتالى السيستيم كله بقى مسئولية حد تاني غيرك ولا شوفته ولا شافك ولا بيشتغل فى نفس المكان ولا مهتم اصلا انت بتعمل ايه.
الشركات اللى بتقدم السوفتوير المذكور سابقا عارفين كويس الهشاشة اللى عايش فيها الديفلوبرز طول الوقت وانهم دايما عندهم الimposter syndrom دي والماركتينج بتاعهم بيدوس قوي على النقطة دي لأن دي اللى بتخلق الأحتياج اللى بيخليك تفتح محفظة شركتك وتدفع لهم اشتراك شهرى مقابل خدمتهم. بس المشكلة بقى ان قبل مابتاخد بالك بتبقى دافع ل 30 شركة علشان 30 خدمة مختلفة، مع كل خدمة السيستيم بتاعك بقى orders of magnitude اعقد وابطأ وهش وبيسرب داتا العملاء زي قربة مخرومة 100 خرم