في المقالة ، سأتحدث عن تجربتي كقائد فريق في شركة تطوير مواقع. بحيث يكون من المفيد للجميع قراءتها ، تنقسم المقالة إلى فصول ، كل منها يحكي عن مشكلة منفصلة واحدة وحلها. على الرغم من ذلك ، إذا أمكن ، سيتم الحفاظ على التسلسل الزمني للأحداث.
آمل أن تصبح التجربة الموضحة أدناه أشعل النار في شخص آخر ، وفي التعليقات سأستخلص شيئًا من الزملاء الأكثر خبرة.
ولكن لا توجد أسماء والشركات والعملاء وأسماء الزملاء. اتفاق عدم الإفشاء ، كل شيء.
الخلفية. كيف وأين أصبحت قائد فريق
هذه هي الشركة الأولى التي أتيت فيها على الفور بقيادة الفريق. بالنسبة لي كانت قفزة نوعية من حيث النمو الوظيفي. لقد جئت إلى آخر وظيفة (1.5 سنة) كوسيط وترعرعت هناك إلى كبار. لكن تدرجات المطورين ذاتية للغاية وغالبا ما تعتمد فقط على الشركة التي يعملون فيها. لفترة من الوقت درست مسألة تقييم المبرمجين كثيرًا وأساسا كل ذلك يرجع إلى حقيقة أنه إذا "أخذوا الوسط / كبار / كبار ، أصبحت منتصف / كبار / كبار". عندما بدأت في البحث عن عمل ، كنت سأحصل على ما يكفي من منصب رفيع (وكنت أبحث عنه) ، لكن عرض الجدول الزمني كان يزعجني وكان يشعر بالإطراء قليلاً.
في الواقع ، عندما كنت أبحث عن وظائف شاغرة ، في اليوم الثاني ، تم جذبني إلى شركة حضرية تقوم بتطوير مواقع على Bitrix (لذلك يحدث كل شيء على خلفية تطوير المواقع على Bitrix). على العكس من ذلك ، حلمت منذ فترة طويلة بمغادرة Bitrix ، لكن الفرصة لتحقيق إمكانياتي بجودة جديدة وراتب جيد لم يترك لي أي فرصة للرفض.
حقيقة مضحكة: كان الشرط الوحيد لتوظيفي هو أنني يمكنني اختيار المكدس التكنولوجي بنفسي ، ولكن لا يمكنني رفض Bitrix بأي حال من الأحوال إذا أصر العميل على ذلك.
في مكان جديد
في المكان الجديد كان رئيسًا فنيًا جيدًا جدًا ، ومديرًا فقيرًا ، ويونيو ، ووسط ، والعديد من المشاريع الكبيرة حقًا على Bitrix. إنها حالة غريبة نوعًا ما زلت لا أفهم كيف تطورت ولم تنهار على الفور. ولكن ربما دعيت فقط لبدء الأمور.
في الأيام الأولى ، كانت العديد من مشاكل "الأطفال" مذهلة:
- تم تخزين معلومات المشروع في رؤوس شخص أو شخصين وليس في أي مكان آخر. لم تكن هناك تعليمات ووثائق أيضًا ، ولمعرفة كيف تعمل هذه الوظيفة أو تلك ، كان من الضروري تعذيب الشخص الذي صنعها ، إذا أنشأناها على الإطلاق
- لم يكن هناك أي أنظمة وعمليات راسخة ، تم عمل كل شيء "بطريقة ما" ، "بدافع العادة". ومن هنا ، الغرور ، والارتباك ، وعدم الوفاء بالمواعيد النهائية ، والتوتر
- تم النظر في المهام في الكلمات. كانت أدوات التتبع تحتوي فقط على أسماء المهام ، فقط لتتمكن من حجز الوقت في مكان ما (كان عليك كتابة 40 ساعة في الأسبوع)
- التطور نفسه لم يكن ساخنًا أيضًا:
- في مكان ما ، تم تطوير شيء ما حتى خارج البوابة
- في مكان ما ، يتناوب المبرمجون على تحرير الملفات على خادم واحد
- في مكان ما كانت هناك مواقع تجريبية ، ولكن في مكان ما لم يكونوا كذلك (ولكن على أي حال لم يساعدوا كثيرًا)
- بالإضافة إلى ذلك ، في كل مكان كان هناك govnokod للغاية. توقع التعليقات ، بيتريكس نفسه ، للأسف ، لا علاقة لها به.
- جرت جميع الاتصالات على سكايب. ولكن لدي فقط كره شخصي له
بشكل عام ، كل شيء سيئ بشكل واضح ، يمكن أن تبدأ التحسينات على الفور ، دون إجراء دراسات أولية. لقد جعلني هذا سعيدًا إلى حد ما ، حيث يمكنك التأثير على المؤشرات منذ الأشهر الأولى. حقا لم يتم النظر فيها بعد ، ولكن بسبب باريتو ، هذا ليس مهما بعد.
إلى خيبة أملي ، انتقلت العمليات ببطء إلى حد ما خلال الأشهر الأولى. أولاً ، كان عليّ أن أعمل على مهام العميل لمدة 8 ساعات في اليوم ، كمبرمج ، لأنني ببساطة لم يكن لدي ما يكفي من الأيدي. ثانيًا ، في ظروف مثل هذا الضغط الزمني ، كان من الخطر جدًا إجراء تغييرات كبيرة يمكن أن تؤدي إلى الارتباك وفقدان الرمز أو الوقت.
ننتقل الآن مباشرة إلى المقالة وحل المشكلات. أول شيء في الشركة الجديدة كان التوجه بطريقة أو بأخرى.
سحب المعلومات من أهداف الموظفين
عندما وصلت ، لم أكن أعرف شيئًا على الإطلاق عن المشاريع أو العملاء ، ولم يتم تخزين هذه المعلومات.
في أي مكان في شكل نص. لذلك ، أول شيء بدأت بسحب المعلومات من أهداف الزملاء في النصوص.
بشكل أساسي ، تمتلك شركة تطوير مجموعتين فرعيتين كبيرتين من النصوص المهمة و / أو المفيدة:
- تعليمات ، لوائح ، مقالات ، أوصاف وظيفية ، قصص مستخدم ، ...
- المهام مع الاسم والوصف والتعليقات وسجلات الوقت والتوقيعات للالتزام والتعليقات في التعليمات البرمجية والاختبارات التلقائية ...
في البداية ، طلبت للتو من زملائي الجدد أن يكتبوا لي أشياء محددة من الفقرة الأولى ، ولكن بالطبع كان الجميع كسالى ، خاصة وأن كتابة التعليمات ليست ميزة يمكن قطعها. ولكن منذ البداية كنت لا أزال أبدو تمامًا غير مرتبط تمامًا وكان عليّ دراسة المشاريع ، ورؤيتها للمرة الأولى ، بدأت للتو في ترجمة بحثي إلى نص ، وبالتالي إنشاء تعليمات وأوصاف للوظيفة.
كان من حسن الحظ أيضًا أنه في الوقت نفسه ، بدأت الشركة في الانتقال بنشاط إلى scrum (مجرد مصادفة) ، وكان برنامج العمل يتغير (أيضًا صدفة) ، على التوالي ، تم إنشاء عمليات الأعمال من الصفر. ولسبب ما كان لدي في البداية سلطة كبيرة في أعين زملائي. لذلك ، بدأت للتو في كتابة القواعد بنفسي (ضمن الاختصاص) وأعيد بناء الرجال عليها ، وهذا في الواقع ، يملي القواعد ويكون مثالًا على تنفيذها.
تأخر حل المشكلة مع صياغة وإدارة المهام لأكثر من شهر واحد. وقد تبين أن هذا اختناق وفي الفصول اللاحقة سأثير هذا الموضوع أكثر من مرة.
في بداية عملي ، حدد المدير المهام بشكل رهيب. مثال: اسم المهمة هو "إصلاح الخلل على الموقع" وهذا هو: لا يوجد وصف ، ولا لقطات شاشة ، فقط اسم المشروع ومرجعه. بالطبع ، كانت هناك محاولات لنقل مبادئ SMART وأهمية وصف المهام للمدير ، ولكن تم تفكيك جميع التعهدات على "ليس لدي وقت لرسم المهام".
في إحدى المرات حاولت المشاركة في المسؤولية عن تحديد المهام ، ولكن من السخرية أنه لم يكن لدي الوقت الكافي لهذا أيضًا ، لأنني كتبت الرمز طوال الوقت تقريبًا.
لكن المشكلة ذات الصلة بالحصول على الوضع الحالي للمهام في أي وقت ، قررنا تجاوز ، من خلال تنسيق المكالمات الهاتفية وخطط اليوم.
تجديد الموظفين ، تكامل الفريق
في البداية تقريبًا كان من الواضح أن الناس يفتقرون إلى حد كبير (أنا نفسي كتبت رمز الوقت الكامل ، ولكن لا يزال لدينا الوقت).
قرر الأول أن يأخذ المقدمة ، لأن كلا البروجر في الشركة كانا من الخلف (كما عرفت نفسي أكثر مع الواجهة الخلفية) ، وكانت هناك مهام كافية ، خاصة في التخطيط ، وبدأت المهام المتعلقة برد الفعل والظهور تلوح في الأفق.
كان من حسن الحظ أن لدي (ولدي) جبهة صديقة ، بدأت في الوقت نفسه في التفكير في ترك العمل المستقل ، لذلك تمكنا من ملء الشاغر بسرعة ، وحصلت على مكافأة لجلب موظف (إضافة أخرى إلى السلطات ، قبل ذلك رأيت جوائز hr)).
على الفور تقريبًا بعد المقدمة ، تم العثور على 2 بيكاس. وفي مكان ما في نفس الوقت ، غادر جون (الذي كدسني رمزه بعد بضعة أشهر من رحيله).
في المجموع ، تطورت الحالة التالية:
- رجل عجوز
- ط
- ثلاثة مبتدئين مطلقين
- لم يثبت العمل بعد
- فقدت بعض المعرفة بالفعل
من الطبيعي أن تمطر علي عشرات الأسئلة من الوافدين الجدد فورًا كقائد للفريق. بشكل أساسي ، كانت هذه أسئلة حول دورة حياة الرمز (مكان كتابة الرمز ، وكيفية إظهار مكان إرساله لاحقًا ، وكيفية جمع الإصدار) ، وإدارة المهام (كيفية أداء المهام في العمل ، وكيفية إظهار الحالة ، وكيفية تحديد الأولويات) وكيفية العمل مع بوابة . بالإضافة إلى ذلك ، كان الرجال لا يزالون يحاولون طرح الأسئلة "كيف يعمل A؟" ، "هل لدينا B على موقعنا؟" ، ولكن كل شيء تقريبًا في تلك اللحظة تم اختزاله فقط إلى الحاجة إلى دراسة الرمز.
بادئ ذي بدء ، كان من المهم إعطاء المبرمجين الفرصة للعمل وكتابة التعليمات البرمجية بأنفسهم. لقد أجريت محادثات تمهيدية معهم ، وأجبت على أسئلتهم ، ثم بالطبع قررت تقليل جميع الأسئلة والمخططات إلى مقال ، ثم تحولت إلى محاضرة ، ثم إلى مخطط عمل جديد تمامًا في الشركة ، والذي سأناقشه في الفصل التالي.
هنا يجدر بنا أن نقول بضع كلمات حول عملية التوظيف في شركتنا ، والتي لا تزال تعمل.
عملية التوظيف
أولاً ، لدينا مكافأة لاجتذاب موظف ، وهي ممارسة جيدة جدًا.
ثانياً ، قررنا ألا نرتب امتحاناً في المقابلة ، بل ننجز مهمة ضخمة جداً ، قريبة من مهامنا اليومية. يعد هذا مناسبًا حيث يتم تقليل الوقت المستغرق في التوظيف فقط حتى البحث عن السير الذاتية المناسبة وإجراء مقابلة سهلة مع المتقدمين للتحقق من كفاية وقصة عن مهمة الاختبار ، وبطبيعة الحال ، التحقق من المهمة مباشرة.
يمكن أن يحل شهر يونيو في الواقع المشكلة في أمسيتين ، مما يجعله ضخمًا في الحرية في التنفيذ والتحسينات والرقائق الواضحة. هذه المرونة في التنفيذ هي التي تساعدنا على تقييم مستوى المتقدم. نقول على الفور أن أهم شيء بالنسبة لنا هو الوفاء بالمواعيد النهائية لحل المشكلة (يسمي المنفذ نفسه) وفي النهاية إظهار رمز العمل في المستودع. نحن لا نشترط استخدام أي نهج وتقنيات ، يتم اختيارها من قبل المؤدي ، ولكن من أجل تلبية وإعطاء النصائح ، قمنا بإدراج التحسينات الممكنة في القائمة ، مثل المهام ذات علامة النجمة ، على سبيل المثال ، العمل من خلال Ajax ، ext. التحقق مرة أخرى ، الحماية من البريد العشوائي ، تصميم الوحدة النمطية ، استخدام D7 ، ...
المجموع:
- وفقًا للملخص والمقابلة ، يمكننا أن نحكم على طبيعة الشخص
- بحلول الموعد النهائي لإكمال المهمة ، وحقيقة أن الشفرة تعمل واستخدام gita ، فإننا نتخذ القرار بشأن التوظيف
- من خلال جودة الأداء ، نحدد المستوى ، وبالتالي الراتب الذي يمكننا تقديمه
- بالإضافة إلى ذلك بالفعل في مهمة الاختبار ، نعرض المهام التي يجب حلها في مكان جديد
إنشاء نظام تطوير وتسليم الكود
في ذلك الوقت ، كان لدينا العديد من المشاريع التي تم تطويرها بشكل عشوائي تمامًا:
- في مكان ما في المعركة كان هناك سيد ، في مكان آخر فرع
- في مكان ما كانت هناك مواقع اختبار ، في مكان ما لا
- وإذا كان هناك ، فإن عناوين كل شخص مختلفة
- تم استخدام git ، من حيث المبدأ ، بشكل ضعيف ومع صرير
- تغييرات قاعدة البيانات اليدوية
- ...
في البداية ، حاولت تصحيح الوضع في أجزاء صغيرة ، بحيث احتاج المبرمجون إلى القليل لإعادة التعلم ، وبالتالي ، أصبحوا مرتبكين. على سبيل المثال ، أخرجت مجلد bitrix من تحت gita ، وأعيدت تسمية الفرع الرئيسي إلى الرئيسي.
ولكن عندما جاءنا تجديد كبير ، أصبح الوضع حرجًا. كان علي أن أشرح الكثير ، وأذكر وأكتب تعليمات غير منطقية ، لأن هيكل التطوير الحالي لم يكن بديهيًا على الإطلاق.
أنا لست من محبي التعليمات على هذا النحو ، أعتقد أن وجودهم هو مؤشر على المشكلة في حد ذاتها ، لذلك تقرر إنشاء نظام مشترك لجميع المشاريع التي يجب فهمها مرة واحدة والتي ، بحكم هيكلها ، تزيل العديد من المشاكل والأسئلة.
النظام كما يلي:
- كل مطور لديه منصة عمل شخصية عن بعد حيث يعمل
- هناك منصة حيث يتم تراكم الوظائف للإصدار التالي
- إذا لزم الأمر ، هناك منصة عرض لتوضيح جميع بدايات الوظيفة
- يتم الاحتفاظ بكافة التعليمات البرمجية لمهمة واحدة في فرع منفصل واحد ، حيث يساوي اسم الفرع اسم المهمة في المتتبع
- لملء الرمز على منصة مشتركة ، ما عليك سوى الاحتفاظ بالفرع في مكان ما والدفع
- يتم تخزين التغييرات على قواعد البيانات كملفات ترحيل في فرع المهمة
ألقيت محاضرة كبيرة حول موضوع هذا النظام ، وبدأنا في الانتقال التجريبي له في مشروع واحد ، حيث قمنا للتو بإلقاء كبار المكتسبين حديثًا.
لقد تأخرت عملية نقل جميع المشاريع إلى هذا النظام ، بالطبع (على سبيل المثال ، في مشروع واحد لم نتمكن من الانتقال بشكل رئيسي إلى المعلم في المرة الأولى) ، ولا يزال مستمراً ، ولكن نتيجة لذلك حصلنا على الأقل:
- القدرة على تحرير المهام الضرورية فقط ، وعدم الإفراج عن الوظيفة التي لم تكتمل مع التعليمات البرمجية المفيدة
- قم بإصدار مهمة بدون إشراك كاتب الكود
- العمل الموازي في مشروع بين فناني الأداء
- لا تفقد الرمز
- اختبر الوظيفة المعزولة عن الأخرى ولا تتوقف عن عمل البرنامج
كل هذا ببساطة لم يكن موجودا من قبل. بالإضافة إلى ذلك ، لست بحاجة إلى شرح التفاصيل الإضافية للعمل مع مواقع git أو test للمبرمجين الجدد الآن ، لأن كل شيء عالمي وبديهي.
سكروم ، الاتصالات ، اللوائح
بالطبع ، في المقالة كنت أنوي التحدث عن كيف ساعدت في تطوير الشركة كقائد فريق ، ولكن لا يمكنك التحدث عن تطوير شركتنا دون ذكر رئيسنا ومبادرته ، وإلا فلن تكون صادقة تمامًا.
أولاً ، قدم سكروم ، وفي وقت وصولي ، بدأت العمليات في الشركة تجدد بنشاط. أيضا في تلك اللحظة نقلتها من Bitrix24 إلى Jira.
جلب سكروم بالتأكيد المزيد من الإيقاع للشركة وخفض الفوضى. تم رصد إعادة تدريب المديرين ، وتنفيذ مكالمات التنسيق ، وفتح / إغلاق / التخطيط للسباقات من قبل الرئيس نفسه ، باعتباره الأقدم في هذا الرابط.
كما عمل كثيرًا على المديرين أنفسهم ، خاصةً حول كيفية تواصلهم مع العملاء والمبرمجين ، نظرًا لأن معظم عملهم (ولكن بالطبع لا يقتصر على) يتمثل في التواصل: عزل المبرمجين عن العملاء ، ونقل رغبات العملاء إلى المهام في الأعمال المتراكمة وفي الركض السريع ، والعثور على قصص المستخدمين وإعادة بيعها. كل هذا أدى إلى الكثير من اللوائح: بشأن التواصل مع العملاء ، وتحديد المهام ، والعمل مع تراكم ، وقبول الخلل في العمل. تم التركيز بشدة على الاتصال وأظهر ارتباط الإدارة تقدمًا حقًا.
بالطبع ، يعد الانتقال إلى scrum نفسه أمرًا صعبًا للغاية ، وحتى كتابة هذه المقالة ، لم نكن قد أصبحنا محترفين بعد ، على الرغم من أن كل هذا يذهب إلى ذلك. ويسرني جدًا أنني تلقيت الكثير من المعرفة الجديدة حول المنهجيات المرنة ومنتجات Atlassian.
مدير جديد. النصوص وتحديد المهام والتراكم
في مرحلة ما ، جاء شخص آخر لمساعدتنا على تحقيق قفزة نوعية - مدير جديد (قبل أن يكون لدينا مدير).
لم أكن أتوقع هذه اللحظة ، حيث لم يكن لدينا الكثير من المشاريع والمبرمجين ومن الناحية النظرية كان يجب أن يكون مدير واحد كافياً. كان هذا الرابط نقطة ضعف في الشركة ، لكننا حاولنا حل هذه المشكلة من خلال تطوير الموظفين الحاليين. حدث ذلك أن مديرًا ممتازًا ، وأنا أعلم جيدًا ، قرر تغيير الوظائف ، واكتشفت مديري هذا الأمر ، حيث أجرت مقابلة مفاجئة مع مقاولينا وتحدثت عن هذا الحادث المضحك ، واتصلنا بها لأنفسنا. جائزة أخرى)
في البداية ، كررت المديرة الجديدة جزءًا من مساري ، حيث واجهت نفس المشاكل (لا تعرف شيئًا ولا مكانًا للقراءة) وبدأت من جديد ، ولكن مع اختلاف أنها لم تلمس الكود والبنية التحتية للتطوير ومهارات البرنامج ، لكنها عملت مع تحديد الأهداف ، والتواصل مع العملاء ، وتنظيف الأعمال المتراكمة ، وسحب المعلومات بعناية من رئيس المدير القديم. على وجه الخصوص ، أول شيء قمت بسحبه هو قائمة جهات الاتصال بالعملاء والمقاولين.
لقد عرفها الفريق بالفعل ، حيث قمنا بدعوتها ذات مرة كمحاضر لإخبارنا عن إدارة الوقت. بالإضافة إلى ذلك ، بدأت مهام الفولاذ تطرح بمزيد من التفصيل ، ولم تضيف السلبية ولم تنقلها من العميل ، وأصبحت حالات المهام أكثر صلة في أي وقت. لذلك ، علقنا عليها آمالا كبيرة على الفور.
في الأسابيع الأولى ، قام هو ورئيسه بتنظيف الأعمال المتراكمة في مشروع واحد ، على وجه الخصوص ، وجدوا فترة متأخرة من شهرين وملحمة لم تبدأ بعد. بالإضافة إلى ذلك ، من حيث المبدأ ، ظهرت العديد من المهام التي يجب القيام بها قبل شهر. من الجيد بالطبع أنه تم تنظيف الأعمال المتراكمة ، ولكن تم ذلك بعد فوات الأوان.
لقد قامت هي بالفعل "بإنهاء المكالمة" من الفوضى وحاولت المغادرة بشكل متكرر ، لكننا قمنا بتحسين الرابط الإداري بطريقة أو بأخرى. تقل احتمالات فقدان المهام في الأعمال المتأخرة ، ويقل احتمال أن يسأل المبرمجون مرة أخرى.
ستكون أخلاقية القصة في النهاية.
الأزمة
بعد حوالي نصف عام من بدء العمل ، كان عليّ الذهاب في إجازة. بالمناسبة ، لقد وافقت على إجازة حتى عند التقدم لوظيفة ، حيث تم التخطيط لها على أنها شهر عسل ، لذلك كانت فترة غيابي معروفة جدًا مسبقًا. لكن على أي حال ، بالطبع ، كنت متوترة من الماضي ، لأننا توقفنا مؤخرًا عن العمل "للارتداء".
في الأسبوع الذي يسبق العطلة ، أنهيت تفويض الواجبات ، وعلمت أشخاصًا محددين لأداء مهام محددة خارج الكود ، وكُلفت مسؤولية كل مبرمج لمشروع معين ، أو أكملت أو نقلت جميع المهام الحالية (ما زلت أبرمج معظم اليوم). لا شيء يبشر بالكوارث في منتصف يوليو.
وفي الأيام الأولى من الإجازة أيضًا ، لم يكن هناك شيء ينذر بمشاكل.
ثم حدثت أزمة.
في أحد المشاريع ، نفد صبر العميل لأن توقعاته للمهام (المواعيد النهائية ، القائمة ، الأولويات) لم تتوافق مع الحالة. لاحظنا أنفسنا هذا منذ وقت ليس ببعيد مع المعالجة الكاملة للتراكم والتواصل النشط مع العميل (فصل عن المدير الجديد) ، لكن فات الأوان.
وفي المشروع الثاني ، قبلوا أخيرًا مهمة كبيرة جدًا طال انتظارها ، وأكملوا الاختبار وأطلقوها. لكن الوظيفة الجديدة فجأة أسقطت موقع القتال تحت عبء ثقيل ، ولم يتمكن الوسط والأمام الأوسط من القيام بأي شيء حيال ذلك لمدة أسبوع. .
, . , . , , .
vue, ( , ).
— , , , - , “ / / / ”.
, , , , .
, , , , , .
, . , - . , - .
. ( ), - :
- , - , - , . .
, . , , , .
. , , , . , , .
, vue, .
, - 5. -, . , .
, : , , , .
, - , - . , , , , , .
.
. , , , - , , .
, , , 1 , - , , , , , . , .
,
. .
, , 3-4 “ 3 ”, 40.
, , .
/ — ( ). , . , . , , -, 8 .
. :
- :
( ), :
— . :
:
, . , .
, . .
—
, , , , , “ ” , .
, , “” - .
, , , , , 2 . , , .
, , / , . , , .
, . , , / - , , - .
(, )
- . , , , , , , , .
, , . , , .
: , , , , . , .
, - , . , .
:
, , , .
, , , ( ), , , .
, ( , 2 , ).
, , . “ ”, :
, .
الجزء 2
غطت هذه المقالة حوالي ستة أشهر من عملي في منصب جديد. في الجزء الثاني ، أود أن أتحدث عن كيفية تحركنا نحو الأهداف بمساعدة:
- الاختبارات الذاتية التي بدأنا للتو في تنفيذها. غريب ، ولكن لسبب ما لا توجد أمثلة جديرة بالاهتمام على Bitrix.
- التخلص من الميراث في التعليمات البرمجية
- زيادة تسريع وتبسيط التنمية
- ما سأتعلمه من التعليقات
- العديد من الأشياء السرية الأخرى (فجأة قرأني رفاقي)
شكرا لكم جميعا على القراءة. سأكون سعيدًا جدًا بالتعليق ، خاصة إذا كنت تعرف المزيد من الطرق المثلى لحل المشكلات التي واجهناها.
حظا سعيدا وفرح للجميع في العمل والحياة!