ولادة مشروع واحد أو كيفية كتابة CMS الخاصة بك

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

عني


سوف أخبركم قليلاً عن نفسي. اسمي ألكساندر ، أعمل كمبرمج منذ أكثر من 10 سنوات. كان عليّ حل المشكلات في مختلف مجالات الأعمال ، مثل الأعمال المصرفية والتجارة الإلكترونية ومشاريع هيكلة البيانات والمحللين وغيرهم من المهام في قطاع المؤسسات.

الغرض من هذا المقال هو إظهار أحد جوانب عالم تطوير البرمجيات وربما فتح باب جديد من الفرص للمبرمجين الآخرين. ماذا اقصد بهذا البيان؟

مراحل تطوير مبرمج


بالتأكيد في وقت سابق كنت تقرأ بالفعل مقالات حول مراحل تطور المبرمجين. في رأيي ، يمر كل مبرمج بمراحل التطوير في حياته المهنية.

قمت بتعريف مسار التطوير هذا للمبرمج في 5 مراحل:

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

أفكار الولادة والموت


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

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

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

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

مجرد CMS


ثم السؤال الذي يطرح نفسه التكنولوجيا التي للقيام بكل هذا. بدون تفكير مرتين ، بدأت أنظر إلى CMS الحالي والأنظمة الأساسية الأخرى للتجميع السريع لهذا النوع من المشاريع. كان الحل هو أنني سأستخدم محركًا نوعًا ما للعمل مع البيانات وأفعل كمامة ويب لاسترداد هذه البيانات عبر REST. لم أكن لنحفر في التنمية الكاملة. في النهاية ، كان لا يزال يتعين علي.

رأيي في تطوير البرمجيات


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

أعتقد أنه من الأسهل تنظيم العمل في المشروع ، وقسم المطورين إلى فرق وفقًا لكفاءتهم.

هذا كل شئ! قررت أن تجعل سفينة الفضاء


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

بعد قضاء أسبوعين في البحث عن شيء مشابه وتجربة اثنين من CMS - Drupal و Wordpress (حاولت استخدامهما كمحرك تكامل لإدارة البيانات و REST API). ولكن لا أحد منهم راض عن متطلباتي. لذلك ، قررت أن أكتب CMS الخاص بي مع "لعبة ورق والعاهرات."

التكنولوجيا


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

ما نوع مكدس التقنية الذي حصلت عليه نتيجة لذلك:

  • إطار ZK (MVVM)
  • جافا (EJB)
  • JAX-RS
  • MongoDB
  • WildFly

حسنا ، تفضل!


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

وحده في هذا المجال ليس محاربًا ، أو ...


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

غالبًا ما أخبرت أصدقائي الذين عملوا في مجال تكنولوجيا المعلومات (تكنولوجيا المعلومات) أو في مجال تكنولوجيا المعلومات.

في النهاية ، تمكنت من العثور على نفس العملاء المحتملين مجنون لمنتجي. قرر ، مثلي ، إنتاج منتجه ، لكنه ليس مبرمجًا. وكان بحاجة إلى منصة لمنتجه. قررت ، ها هو! لم يكن عليّ حتى تقديم عرض لاستخدام نظام إدارة المحتوى (CMS) بنفسي ، فقد طُلب مني إنشاء موقع عليه. خالية بالطبع. كانت فرصتي لتجربة نظام إدارة المحتوى الخاص بي في تطور حقيقي. وأنت تعرف ماذا ، لقد فوجئت بسرور ، لكن تعاملت مع CMS مع هذه المهمة بنسبة 100٪. نعم ، بالطبع ، لقد عملت على الكثير من الأشياء أثناء عملية التجميع ، وقمت بتحسينها ، وببساطة الأخطاء "الثابتة". لكن في النهاية ، تمكنت من سحب أي تصميمات وقوالب بمرونة على الصفحات والاتصال ودمج البيانات والخدمات من مصادر الجهات الخارجية.

والسويسريين ، والريبر ، والمتأنق


من هذه اللحظة أدركت أنك بحاجة إلى تطوير معرفتك في مجال التسويق ، وقراءة الكتب حول بناء عملك. في هذه العملية ، شاركت مع هذا المنتج في hackathon من MongoDB ، تلقيت جزئيًا رد فعل الجمهور على هذا المنتج. في الاجتماعية. لقد استجابت الشبكات وشاركت رسالتي حول ما فعلت CMS. وفقا لنتائج hackathon ، أنا بالتأكيد لم أحصل على جائزة واحدة ، لكنني كنت سعيدًا لأنني شاركت.

بينما كنت أنتظر نتائج hackathon ، ما زلت أجري محاولتين "لتوصيل" المنتج الخاص بي في أحداث ترويج الاستثمار. بعد ذلك رأيت بالفعل استجابة حية من الجمهور. التي جلبت لي تجربة رائعة.

يؤدي


ما في هذه اللحظة لدي:

  1. هناك MVP (منتج الحد الأدنى القابل للتطبيق) الذي يغطي وظائف:
    • توحيد مرنة
    • تخزين الملفات
    • تعديلات طراز البيانات أثناء التنقل
    • التكامل مع خدمات REST
    • دور وإدارة المستخدم في MongoDB

  2. خبرة في تقديم منتج تكنولوجيا المعلومات وردود فعل الجمهور.
  3. شركاء في العمل على منتجات تكنولوجيا المعلومات ، لديهم الحافز لحل المشكلات للفكرة فقط.
  4. وخريطة طريق كبيرة لمزيد من تطوير المنتجات. في الوقت الحالي ، على حزمة التقنية ، لقد تصورت معالجة هائلة ، وتغيير كامل تقريبًا لهذه المجموعة التكنولوجية. ملحقات وظائف زائد.
  5. أترك الإيديولوجية في التنفيذ كما هي.

استنتاج


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

عدة طرق ممكنة لتطوير منتج:

  • اعطائها لفتح المصدر
  • كفريق واحد مع المنتجات ذات الصلة
  • جمع مجتمع من الناس بالجنون مثلي الذين يصنعون منتجاتهم ويحاولون تسويقها.

هنا هو الفيديو الترويجي الرسمي:


هنا هو الموقع التجريبي CMS الرسمي:

MastermindCMS

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

آمل أن تكون قد أحببت قصتي ، وسيجدها شخص ما مفيدًا. أتمنى لك يومًا مثمرًا!

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


All Articles