الكل يخبرك انه لتصبح مطور محترف و ناجح عليك تعلم لغة البرمجة هذه و ذاك، عليك ان تتعلم تقنيات قواعد البيانات و إحتراف مسار الـ Front End و الـ Back End و الـ Full Stack و لما لاتعلم طريقة صناعة البيتزا و صيانة محرك السيارة، لكن لا أحد يخبرك انه يجب عليك تعلم تقنيات الـ Soft Skills، و قد يكون هذا أول مقال يدعوك لتعلم تقنيات الـ Soft Skills بدعوى ان تصير مطور جيد و أفضل.
ان بعضاً من هذه الدعوات حقا مفيدة و ستفيدك كمطور في تعزيز قدراتك البرمجية، المشكلة هنا تبقى مشكلة أولوية، فأيٌ من هذه التقنيات يجب ان تتعلم أولا؟ و أيها ثانيا؟ و يمكننا إضافة تعلم تقنيات الـ Soft Skills في المركز الثاني بالنسبة للمطور، فهو لا يحتاجها دائما بالضرورة، لكنها ستقوي عوده في البرمجة و التطوير إن كان يجيدها، فهلا غصنا أكثر في هذا الأمر ؟
- ما هي الـ Soft Skills ( المهاراة اللينة ) :
الـ Soft Skills او المهارات اللينة، و هي مهارات لا تمث للمهارات التقنية بصلة، فأنت - كمطور و سنبقي الحال كذلك طيلة هذا المقال - لديك مجموعة من المهارات التقنية مثل التعامل مع قواعد البيانات مثلا، او تجيد إستخدام الـ HTML/CSS بشكل إحترافي و تعتبر مهارات عملية (Practical Skills) مفيدة لك في مجال عملك، بينما الـ Soft Skills هي مهاراة نفسية (Moral skills) تقوم بتعزيز ذاتك في مجال محدد.
في هذا المقال سنوفر لك مجموعة من هذه القدرات المهمة التي يجب ان يكتسبها أي مطور مع الوقت.
- العمل الجماعي (Teamwork) :
دعني أخبرك ان هذه المهارة يجب ان تضمها في أقرب وقت، فأنت كمطور لا تشتغل على مشروع بمفردك ( أجزم انك ان فعلت ففي الغالب لم تتممه )، لكن إدراج مجموعة من الأفراد في فريق عملك لا يعني بالضرورة ان فريقكم ناجح و سيحقق المستحيل، بل أحيانا يخرب المشروع بأكمله لأن البعض من فريقك او فريقك بكامله ليست لديه مهارة العمل الجماعي.
منصة Github / Bitbucket مثلا مخصصة بشكل كبير لأولائك الأشخاص الذين يحسنون التعامل وسط الفريق، و مشروع برمجي لن يكتمل إلا بإضافة الكود و المهمات التي تم تقديمها لكل فرد في مشروع واحد ليخرج للعالم.
- التواصل (Communication) :
المطور بشكل خاص يكره التواصل او التفاعل مع أي شخص آخر، خصوصا ان كان يقضي جل وقته أمام الحاسوب متأملا أكواد لا بادئ لها و لا نهاية، و يجد الكثيرون راحتهم في هذا الأمر خصوصا انه و بذلك سيتجاهل محادثات كثيرة حول شخص يحكي كيف وصلت بقعة الكاتشاب الى ملابسه الذي قد يأخذ دقائق طويلة من التركيز و الإستماع التافه لقصة لن تفيدك لا الآن و لا مستقبلا.
و بالرغم من مدى أريحة هذه الفكرة، إلا ان التواصل إجباري بالنسبة للمطور، و إلا كيف ستفهم متطلبات العميل؟! كيف سيمكنك ان تفهم ما الذي يرغب به العميل في برمجيته ان لم تتجاذب معه أطراف الحديث حول هذا و ذاك، و كيف ستحاول إقناع العميل ان إمكانية إضافة شيئ ما في المشروع قد يؤدي الى خرابه من وجهة نظرك، و كيف ستقنع العميل من أساسه انك أنت المناسب للعمل ؟
التواصل هو الحل، بالرغم من كونه صعبا، ساما، مؤرقا، تافها، و لا تستأنس به، إلا انه ضروري.
- إدارة الوقت (Time Management) :
إن أسوأ شيئ على الإطلاق بالنسبة للمطور ان يصل وقت الـ Deadline الخاص بالمشروع و أنت لازلت في بدايته حتى!، إن هذا يؤثر على مصداقيتك كمطور و بالطبع يؤثر على إنتاجيتك، و الخطأ ليس له أي علاقة بقدراتك و مهاراتك كمطور، بل له علاقتك بسوء خبرتك في إدارة الوقت.
إدارة الوقت يعتمد على نقطتين أساسيتين إن إستطعت إحترافهما أضمن لك - شخصيا - ان تصير محترفا في هذه المهارة:
- اما النقطة الثانية فهي تحديد أوقات إستراحتك بشكل جيد، العمل المستمر قد يرهقك و يؤدي الى تأجيل العمل شيئا فشيئا في كل مرة تجلس أمام الحاسوب، لذلك حاول تقسيم وقت فراغك + وقت الإستراحة + وقت العمل على المشروع بأكمله.
- الطاقات الإبداعية (Creativity) :
قد لا تعتبر حقا Soft Skill من الناحية التقنية، لكنها حتما أداة ضرورية لكل مطور و مبرمج، صحيح ان المطور يتعامل بشكل كبير مع المنطق و الأكواد الصحيحة و محاولة تحقيق نتيجة فعالة و سريعة للكود البرمجي، لكن هذا لا يخلو من الإبداع أبدا خصوصا حين يكون المطور مهتما بجانب الواجهات (UI/UX) أكثر، بحيث يجب ان يمتثل لآخر الإبداعات في المجال و يوفر شيئاً جديدا للعميل الذي يسعى هو الآخر للتميز عن باقي منافسيه.الإبداع مادة يجب ان تكون تقريبا في كل المجالات و ليس فقط التطوير و البرمجة، فالمصمم يحتاج للإبداع، و الهاكر يحتاج للإبداع، و رجال الأعمال يحتاجون للإبداع، فكيف تتجاهل هذه التقنية؟
تبقى مشكلة الإبداع في كونها غريزة أكثر من كونها مادة يمكن إكتسابها، فمن الصعب على أي شخص لا يمتلك غريزة الإبداع أن يأتي بشيئ جديد او يفكر في أشكال إحترافية و تنسيقات جيدة، إلا انه يمكن إكتسابها ببعض الممارسة الشديدة و الإطلاع على أعمال الآخرين و تصفح مواقع و منتديات إبداعية.
- تقبُل الإنتقادات و محاولة تحسينها :
ستتعرض للكثير من الهجمات حول برمجيتك، سيقوم الـ Testers بإظهار الكثير من العيوب فيها، فهذه لا تشتغل، و هذا يؤثر على هذا، و هذه إضافية لا يوجد أي هدف منها، و ستحصل على قائمة بكل هذه المشاكل و الإنتقادات في برمجيتك التي صنعتها من الصفر و التي تعتقد أنت انه لا يوجد مثيل لها إطلاقا و لا يوجد مطور يمكنه صناعتها بكل كفاءة، كل هذا قد يفقدك جنونك، و قد تبحث عن ذلك الـ Tester الذي إنتقد برمجيتك و تحاول التلصص به لضربه ضربا مبرحا أيضا !- ان تكون صبورا :
لا داعي لأن أخبرك بالطبع انك ستقضي أياما تحدق في كود برمجي كتبته بنفسك لغرض معين فيقوم بإظهار غرض آخر كليا، سيمزقك هذا الأمر إربا إن كنت تفتقد للصبر و المثابرة و إستكمال الكود البرمجي، فحتى المطورون حاليا الذين يفتقدون للصبر و المثابرة لا يسعهم سوى العمل قليلا على مشروع برمجي جديد او فكرة جديدة حتى يتخلون عنها كليا بدون أي سبب يُذكر.الصبر يُكتسب بالإتزان العقلي، عليك ان تحظى بطقوسك أثناء التطوير، كوب قهوة مثلا، موسيقى هادئة، جو عاتم و مُظلم، كل هذا يساعدك على الإرتخاء من أجل التركيز أكثر في عملك و بذلك الصبر صبراً طويلا على أي مشكلة تقعه فيها، فلا يوجد أي شيئ سيعكر صفوة مزاجك او سيجعلك تفقد صبرك الآن بما انك تحظى بالجو الملائم للعمل.
- القابلية للتجديد :
لن نختلف ان التقنيات التي تعلمتها في المدرسة او اكتسبتها في فترة محددة ستدوم للأبد خصوصا في مجال التطوير و البرمجة، فربما أثناء تحرير أسطر هذا المقال قد بزغت مجموعة من مكتبات الجافاسكربت التي أصبحت مطالبا بتعلمها ( مثلا )، لذلك من الـ Soft Skills التي يجب عليك ان تتمتع بها هو عدم التشبث بأي تقنية محددة و ان تكون لديك القابلية لإدراج تقنيات جديدة في كل مرة تبدأ مشروعاً محددا.لكل مشروع تقنياته الخاصة، فلن تستطيع صناعة أي شيئ يطلبه العميل بلغة برمجة محددة او تقنية محددة بشكل دائما، قد يسعفك الأمر لبعض الوقت لكنه ليس دائم، بدل ذلك يجب ان تكون لديك القابلية لتعلم أي شيئ جديد بسرعة و كفاءة.
لا يخفى عليك انه يوجد الكثير من المهارات اللينة التي يجب عليك إكتسابها كمطور، لكن أساسها هذه السبعة، فحاول تعلمها و إكتسابها ببطئ أثناء مسيرتك.