لا تحاول التنبؤ بمشاكل الغد

حسنًا ، أو ابدأ في فعل ذلك بشكل صحيح.

إذا طُلب مني أن أشير إلى مشكلة واحدة قتلت معظم منتجات البرامج ، فسوف أسمي بالتأكيد الرغبة الشديدة للمطورين لتوقع المستقبل البعيد. يمكن التعبير عن ذلك بطرق عديدة ، لكن المخطط العام تقريبًا على النحو التالي:

"نحتاج إلى تنفيذ الحل {X} ، على الرغم من وجود حل أبسط وأكثر ملاءمة لنا {Y} ، لأنه عندما يحدث {Z} في المستقبل ، فإن {X} سيعمل بشكل أفضل بكثير من {Y}" .

علاوة على ذلك ، لا توجد ولا يمكن أن تكون هناك معلومات دقيقة حول احتمال وقوع الحدث {Z}.

إليك بعض الأمثلة:

  • نحن بحاجة إلى استخدام kubernetes و docker! نعم ، يتعامل خادم واحد مع الحمل الحالي ومن السهل تكوينه وصيانته ، ولكن عندما نحتاج إلى عشرة خوادم ، سيكون من الأسهل نشرها باستخدام kubernetes و docker.
  • نحن بحاجة إلى بنية معالجة البيانات الموزعة! نعم ، حتى الآن يتعامل جهاز كمبيوتر عادي واحد مع كل شيء ، ولكن عندما يكون لدينا حل من الدرجة الصناعية ويطلب العملاء وقت تشغيل من خمس تسع في اتفاقية مستوى الخدمة ، سنكون جاهزين لذلك.
  • نحن بحاجة إلى توظيف فريق تطوير وإنشاء موقع ويب من الصفر ، على الرغم من حقيقة أنه سيكون أسرع بكثير لنشر شيء ما بناءً على WordPress ، لأنه عندما يكون لدينا 100 مرة عملاء أكثر من الآن ، فإن Wordpress لن يكون مناسبًا جدًا.
  • نحتاج إلى استخدام الميراث بدلاً من التكوين ، لأنه بعد 5 سنوات ستنمو قاعدة الكود بحيث لن تكون هناك طريقة بدونها.
  • نحتاج إلى كتابة هذا الرمز في C ++ ، على الرغم من حقيقة أنه في Python سيكون أسرع عدة مرات ، لأنه بعد سنوات سيعالج تيرابايت من البيانات وقد لا تتمكن Python من التأقلم هنا.

لقد قمت مؤخرًا بكتابة مقال عن المشاكل الخيالية - أولئك الذين يستمتع الناس بحلهم لأن حلهم أكثر إثارة للاهتمام من المشاكل الحقيقية. وهذا يشمل أيضًا هذه المحاولات لتوقع المستقبل. يمكنك حتى أن تقول المزيد - هذه هي المشكلة الخيالية المفضلة لمعظم الشركات الصغيرة الناشئة.

ولكن دعونا لا نجمع كل شيء معًا: قد تكون محاولة الاستعداد للمستقبل مفيدة إذا تناولت ذلك بحكمة. لكن قلة من الناس تأتي بحكمة - الناس لديهم أوهام ومخاوف وعواطف ومشاعر إنسانية أخرى.

إن تحقيق النجاح أصعب من التعايش مع النجاح الذي تحقق بالفعل


يتخيل كل شخص أحيانًا كيف سيكون كل شيء إذا كان شخصًا آخر. شخص غني ، مشهور ، قوي ، موهوب بالسلطة. التفكير في الأمر مثير للاهتمام ، وهو يحدث بطريقة ما من تلقاء نفسه ، بشكل لا إرادي. لذا رأيت صورة على غلاف المجلة - وفكرت ، ماذا سأفعل في مكان هذا المشاهير؟ أوه ، لذلك سوف أنفق المال على هذا ، وإذا كنت سأفعل ذلك. وكذلك ذلك. وإذا كنت لا تزال تستطيع الطيران وتملك قوى خارقة! نعم ، سيكون ذلك رائعا!

مطورو البرامج هم أيضًا أشخاص ، وهم أيضًا عرضة للأوهام. لذا ، فهذا يعني أن Facebook قام ببناء نظامه الأساسي على مثل هذه التقنيات ومثل هذه المقاييس ويصل إلى مليار مستخدم ... حسنًا ، نحن لسنا أسوأ ، والتكنولوجيات متاحة ، لنفعل كل شيء جيدًا أيضًا ، مع تراكم مليار مستخدم (على الرغم من وجود حتى الآن مائة منهم). لكن سحر Facebook لم يكن في تقنية التوسع إلى مليار مستخدم. كانت قادرة على إعطاء الناس المنتج المناسب في الوقت والمكان المناسبين. كانت البرمجيات ، القادرة على توسيع نطاق ما يصل إلى مليار مستخدم ، جزءًا ثانويًا وأقل أهمية من الشركة. تم إنشاؤه فقط عند الحاجة إليه وفقط حسب الحاجة.

الميدالية لها وجهان:

أ) يعتبر تحقيق النمو أكثر صعوبة من الحفاظ على الحجم.
ب) يعمل معظم المبرمجين المؤهلين والموهوبين بشكل استثنائي على المنتجات التي تحتاج إلى قابلية جيدة للتطوير.

من السهل التعرف على النقطة "أ" . فكر بنفسك - من بين جميع شركات البرمجيات التي تم إنشاؤها على الإطلاق ، فقط ، على الأرجح ، وصلت نسبة 0.05٪ إلى مستوى ملايين المستخدمين ومليارات الأرباح. تحطم الباقي في وقت سابق أو تلقى أقل.

لذا ، فإن معظم التخيلات حول الميزات المطلوبة في المستقبل للبرامج عادة ما تكون في محاولة لحل مشاكل هذه 0.05 ٪ من الشركات. "لدينا هنا فريق من 1000 مطور ، و 10 ملايين مستخدم وعشرات العملاء من الشركات الكبيرة بمتطلباتهم المعقدة ، وبعد ذلك سنحتاج ..." لا ، لست بحاجة. باحتمال 99.95٪.

لكن قول "لا" لمثل هذه الأفكار المغرية أمر صعب - لأنه يدمر الثقة في تلك الأجزاء من نسبة احتمال النجاح. علينا التوقف عن تقديم أنفسنا كمالك لأمازون الجديدة والعودة إلى مشاكل اليوم. واليوم لديك 50 مستخدمًا ، 30 منهم من العائلة والأصدقاء. نعم ، الوعي بالوضع الحالي يمكن أن يحبط.

النقطة "ب" أيضًا لا تساعد على التعامل مع الهوس. من الواضح أن أفضل المبرمجين يعملون في أفضل الشركات. إما لأنه تم إنشاؤها بفضل مواهبهم ، أو لأن أفضل الشركات قادرة على توظيف أفضل المبرمجين. يعمل مبدأ باريتو هنا ضدنا: من الأفضل للمبرمجين كتابة الكتب وتقديم العروض وتصميم أنظمة أفضل. سمع كل واحد منا عن هذه القصص الرائعة حول المجموعات التي تتحمل الأخطاء الموزعة عبر آلاف العقد ، بمعالجة بيتابايت من البيانات باستخدام برامج محسنة لبعض أرقام الأداء المذهلة. لكن معظمنا لا يحتاج إلى التفكير في كيفية بناء مثل هذه المجموعة في شركتنا هنا والآن. ليس هناك حاجة فقط.

لذا ، فإن إغلاق عينيك وتمثيل شركتك في 5 سنوات أمر كبير - أليس هذا مفيدًا؟ هل من الضروري التوقف عن التفكير في المستقبل؟

بالطبع لا. التفكير في المستقبل أمر جيد. كما أن تصميم البرامج مع أساس للمستقبل مفيد أيضًا ، ولكن عليك القيام بذلك بشكل صحيح.

تصميم مرن وغير كامل


من الأفضل أن تفعل أقل ، ولكن جيد. عدد قليل جدا من المنتجات التي تلبي احتياجات عملائها. بحيث فعلت A و 90 ٪ من المستخدمين لديك بحاجة إلى A - لن تكون كذلك أبدًا. 90٪ من المستخدمين المحتملين يحتاجون إلى نوع من B ، و A الخاص بك هو أقرب بديل لـ B ، ولا أحد يقوم ببيع B أو بيعه بنفسه ، لذا سيكون بعض المشترين راضين عن حلمة في يدهم.

ما هو الجيد في هذا السيناريو؟ بمجرد الحصول على المشترين ، لا يزال بإمكانك محاولة فهم ما يحتاجونه حقًا وتحقيق ذلك في النهاية. حسنًا ، أو بديل أفضل قليلاً من ذلك. تساعدك قاعدة المستخدمين على دراسة السوق وإيجاد منافذ عليه وتعبئتها. بمجرد أن تتلمس مكانًا معينًا ، ابدأ في العمل فيه - هنا يبدأ نموك.

وهذا النهج مثمر حقًا. أنت تنفذ شيئًا صغيرًا ، ولكنه يعمل بشكل جيد ، ويقدمه للمستخدمين - ثم يستمع إلى أفكارهم حول منتجك. لم تعد تخمن ، لا تحل مشاكل وهمية ، لا تضيف تعقيدات غير ضرورية. تكيف ، تضيف شيئًا ، تزيل شيئًا. وهذا يخلق منتجك الفريد.

وبهذه الطريقة - كلما كانت قاعدة التعليمات البرمجية أصغر في الأصل ، كان من الأسهل تكييفها مع شيء جديد.
"أنا أكره الكود وأريد أن أرى القليل منه في منتجنا" - جاك ديديريتش
إذا قمت بعمل ما بشكل مثالي ، فأنت فعلت ذلك بشكل خاطئ. كان عليك تقديم تضحيات كبيرة جدًا على طول الطريق. ربما كان مضيعة للوقت أو المال ، ربما تخليت عن المرونة ، أو ربما شيء آخر. لم يتم تحقيق المثل الأعلى مجانًا.

البرنامج المثالي ليس أكثر قابلية للتطبيق. من الممكن إنشائه في وقت معقول وبسعر معقول. غالبًا ما يكفي كل شيء أو كل ما هو ضروري تقريبًا. كونها غير كاملة ، بحكم تعريفها ، تترك مجالًا لتطورها وحرية المناورة.

تصميم هندسة البرمجيات المتفائل - يمكن للمستقبل أن يستيقظ بسرور


من المهم أن تتذكر أن العالم من حولك ليس ثابتًا. يمكن حل المشكلات التي تظهر أمامك بعد بضع سنوات بسهولة بمساعدة التقنيات المتاحة بعد بضع سنوات. يصمم الكثير من الناس شيئًا ما ، ليس فقط مع مراعاة الفرص المستقبلية ، ولكن الاعتماد بشكل عام فقط على الأدوات القديمة بالفعل. إنهم لا يحدون أنفسهم حتى اليوم ، ولكن بالأمس.

دعني أتحدث عن مثال واحد محدد: تصميم أنظمة موزعة مع توقع أن تكون جاهزًا لأي نمو. أحد المخاوف الشائعة التي تؤدي إلى إنشاء مثل هذه الأنظمة هو الخوف من أن خادمك في مرحلة ما لن يتمكن من خدمة جميع المستخدمين. ويحدث ذلك حقًا. في بعض الأحيان. ولكن ليس في الشركات الصغيرة ، وليس في الشركات الناشئة. بالإضافة إلى ذلك ، فإن معظم الأشخاص الذين يكتبون البرامج في عام 2018 ، لسبب ما ، على يقين من أنها ستعمل على الخوادم التي تم إنشاؤها في عام 2005. تتحسن أجهزة الكمبيوتر كل عام ويمكن استئجار خوادم جيدة ليست باهظة الثمن.

اسمحوا لي أن أصف مثل هذا الخادم "الحقيقي" الأولي:

  • زيون E5-2680v4 (28 درجة و 56 خيطًا ، يتم تثبيتهما بسرعة 2.4 جيجا هرتز إلى 3.3 جيجا هرتز)
  • 512 جيجا بايت من DDR4-2400 RAM
  • محركا أقراص NVMe SSD بسعة 1.2 تيرابايت لكل منهما (قراءة 3 جيجابايت / ثانية و 1.5 جيجابايت / ثانية لكل منهما).

نعم ، أراهن على أن نصف الأنظمة الموزعة في العالم ستعمل على هذا الخادم تمامًا ، مع جميع مكوناته وتبعياته ، وتعمل كقاعدة عامة لجميع مستخدميهم الحاليين. وهذا بعيد عن أروع خادم حتى الآن. يمكن أن يتم ذلك بسعر 800 إلى 1300 دولار شهريًا (اعتمادًا على مكان الحصول عليه). يمكنك استئجار عشرات منها مقابل راتب مهندس مؤهل في لندن.

ما لا يزال جيدًا في هذا الخادم هو أن سعر تأجيره في عامين سينخفض ​​مرتين.

تتطور أجهزة الكمبيوتر وتتطور بشكل خطي جدًا ويمكن التنبؤ بها وستستمر في التطور كما هو متوقع ، في مكان ما حتى نهاية عام 2020. من الصعب التكهن أكثر ، ولكن من غير المحتمل أن تأتي البشرية بشيء جديد. ولا يزال الناس يتذكرون الحديد في بداية القرن ويخشون أنه لن يكون كافياً بالنسبة لهم لخدمة بضعة آلاف من الطلبات في اليوم.

لكننا نتحدث عن الحديد. وفكر في جميع البرامج التي تظهر وتتطور. قلة من الناس فكروا بجدية في التحكم الصوتي قبل 20 عامًا. وانظر إلى عالم اليوم - "OK Google" و "Hello، Alexa" و "ما هو الطقس الآن ، Siri؟" أي شخص بدأ في كتابة واجهة صوتية في العام 2016 - تمكن للتو من 2018.

ما تبدأ الكتابة في 2018؟ آه ، إذا كنت أعلم :) هذا شيء ظهر بالفعل في الأفق ، لكنه لم يصبح كبيرًا بعد بحيث يحجب الشمس. انظر حولك ، ربما تلاحظ شيء من هذا القبيل؟

التقدم في البرمجيات أمر لا يصدق. مع ظهور WASM ، أصبحت المتصفحات أجهزة افتراضية عالمية دون أن يلاحظها أحد. بعد عامين ، يمكنك إنشاء تطبيق متعدد الاستخدامات ومعقد وعالي الأداء من خلال تجميعه لنظام أساسي واحد: تجميع الويب. وسوف تبدأ في كل مكان.

لكن لا يزال الناس يعيشون في مكان ما في عام 2012. يستخدمون Babel ، على الرغم من أن 99٪ من المستخدمين لديهم متصفح واحد على الأقل مع دعم ES6.

تظهر لغات البرمجة الجديدة باستمرار. وبعضها جيد جدًا. فقط في السنوات الثماني الماضية ، حصلنا على Go و Rust و Scale و D - وكلها وجدت مكانتها. في العامين المقبلين ، أتوقع أن أرى كيف ستساهم جوليا في البرمجة العلمية. وهذا ما يقلقني شخصيًا وما أتبعه. المبلغ الإجمالي للتكنولوجيا والمعرفة أمر لا يصدق.

لكني أتطرق ...


إن إلهام المستقبل أمر سهل نسبيًا. ولكن بصراحة ، بالإضافة إلى التقدم الخطي لنمو الإنتاجية ، من الصعب تخيل ما سيحدث في 2 أو 5 سنوات. تطفو بعض الأفكار في الهواء ، وتعمل الفرق على مشاريع برامج وأجهزة مختلفة ، ولكن ما الذي سيطلق النار من هذا؟

ومع ذلك ، إذا كنت ترغب في إعداد برنامجك للمستقبل ، يجب عليك أولاً فهم الحاضر. ما هو جيد في الوقت الحاضر هو أنه موجود بالفعل ، ويمكن ملاحظته وقياسه. وما زالت صامدة لبعض الوقت. إن جعل برنامجك مناسبًا على الأقل اليوم فكرة جيدة. لن تكون مستعدًا لواقع 2020 باستخدام نهج 2000. لكن البرامج المكتوبة بالأساليب ذات الصلة لعام 2018 يمكن أن تعمل جيدًا لنفسها في عام 2020.

لذلك لا تحرم نفسك من متعة تطوير البرمجيات مع أساس للمستقبل. فقط افعلها بشكل صحيح. لا تفكر فقط في تطوير منتجك المستقبلي ، ولكن أيضًا في تطوير النظام البيئي المحيط به. كل شيء يمكن تصميمه بمرونة يجب أن يتم تصميمه بمرونة. سيعطيك هذا فرصة للمناورة في اللحظة التي تكتشف فيها الطريقة التي يجب أن تكتمل بها هذه المناورة. وهذا سيوفر عليك من قضاء الوقت في التحضير لشيء لن يحدث أبدًا.

Source: https://habr.com/ru/post/ar421901/


All Articles