المبرمج، ذلك الكائن القابع خلف تحديات تطوير برمجيات يستطيع المستخدم البسيط ذو المهارة المحدودة استخدامها بحُرِّية، قد تطبع بالعديد من الأفكار، و تجمل بالكثير من المدارك في مجال البرمجة، و بعضهم قد طورها ليصير مطورا و مبرمجاً أفضل، بينما فضل البعض تجاهل مهاراته البرمجية و الإكتفاء بالمعارف البسيطة التي إكتسبها خلال فترة معينة، إلا ان لب المبرمج عاداته و أفكاره، و إن قمنا بإدراج بعض من أهم مميزات و خواص المبرمج في مقالنا السابق حول صادق مبرمجا او مت و أنت تحاول ، و في هذا المقال سنستعرض عليك عادات المبرمجين العشر، عادات تشبع بها أمهر المبرمجين في هذا العالم، عادات نرى انه يجب عليك أنت أيضا القيام بها و البدئ في ممارستها خصوصا وسط مشروع برمجي.
الخوارزميات مجال واسع، من بين مهمات الخوارزميات الـ Problem Solving او حل المشاكل، حين تصادف أحجية برمجية أمامك، لا تتسارع لحلها بالإعتماد على البحث، حاول ان تحضر ورقة و قلما و حاول ان تصنع خوارزمية جيدة لحل المشكل البرمجي، لأن المبرمج المحنك و المحترف هو حلال مشاكل بالدرجة الأولى، عاشق للأحاجي، يستطيع حل أي مشكل برمجي و إن اخذ منه أياما و أسابيع و حتى أشهر، و عليك ان تضم عالم المشاكل الى حياتك و تحاول حلها بالإعتماد على نفسك، لا على Stackoverflow !
المبرمج الجيد يعلم انه لا يمكنه الإطلاع على كل شيئ و أي شيئ في مجال البرمجة ( او اللغة البرمجية التي يختص فيها ) و الحل الوحيد لتطوير مهاراته هو البحث عن مشاكل الآخرين في تلك اللغة و محاولة إيجاد الحل و تقديم المساعدة، فيصير كل من السائل و المجيب مستفيد من ذلك السؤال، المبرمج المحترف يبحث بشتى الأشكال عن المشاكل، و يحاول تقديم المساعدة للجميع عبر الانترنت بما أكسبه الله و نفسه من خبرات في المجال، فهل تساعد الآخرين عبر الانترنت ؟ إن كانت مشكلة لغة في الأساس، فيوجد مجموعات فيسبوك للمبرمجين يمكنك الولوج إليها و تقديم المساعدة من خلالها .
المبرمج الجيد يحاول دائما إبقاء الكود البرمجي الخاص به في آخر إصدار، و يحاول دائما مواكبة جديد الإطارات و المكتبات و غيرها في لغته البرمجية المستخدمة حتى يتعامل معها بإحترافية و يصير خبيرا فيها، و لا يخشى إطلاقا تجربة الأشياء الجديدة، عليك ان تمتثل أنت أيضا لقانون التجديد عزيزي المبرمج.
فالمبرمج المحنك و المحترف يرى ان الإستلهام مادة أساسية في التعلم، يرى ان محاولة تقليد برمجيات كبرى مسار جيد من أجل تقوية المنهج البرمجي الخاص به و إكتشاف أشياء برمجية جديدة أيضا، لان ذلك التطبيق قد إستخدم شيئاً مغايرا لما اعتدنا عليه و محاولة محاكات تعتبر تحدي عليك إجتيازه ... تعلم من المحترفين، لا من المنتقدين !
إذن صديقي المبرمج؟ هل انت من المبرمجين المحترفين ؟ ام لديك عاداتك الخاصة ؟ شاركنا إياها في التعليقات .
سنوفر لك من خلال هذا المقال عشر عادات يقوم بها المبرمجون المحترفون، عادات تساعدهم على المحافظة على الكود البرمجي الخاص بهم، إتمام مشاريعهم بلا هوادة، التعامل التشاركي مع المبرمجين الآخرين و عادات أخرى ستساعدك أنت أيضا على تقوية مهاراتك البرمجية بمجرد إتباعها .
- يكتب كود برمجي نظيف، سهل القراءة و سهل التعديل :
و إن كانت البرمجة أكواد، فهذا لا يعني ان نقوم بكتابة هذه الاكواد بشكل عشوائي لا داعي لتنظيمها، فالخلل في الكود البرمجي يقع دائما، و عليك ان تكون على اهبة الإستعداد لمعرفة مكانه و إصلاحه، المبرمج المحترف و المحنك يقوم بكتابة شفرة برمجية سهلة القراءة، بأسماء متغيرات و أسماء دوال تحترم قواعد الـ Best Practice البرمجية و مفهومة للجميع، لأن المغزى هنا هو كتابة شفرة برمجية يستطيع أي مبرمج في هذا العالم قرائتها، الشفرة البرمجية يجب ان تكون نظيفة، مكتوبة بشكل مهيكل، منظمة أيضا، لا كل كود في جهة و بين كل سطر برمجي و سطر اخر عشرات الأسطر الفارغة، اما الأهم، فأن يكون سهل التعديل، إن كنت تكرر سطرا برمجيا حاول إختصاره، إن كنت تستعمل الكثير من المتغيرات حاول التقليل، حاول ان تجعل الكود البرمجي سهل التعديل و مقسم و مهيكل، فإن اراد العميل او حتى انت تعديل جزء من المشروع او البرمجية فستعدلها مباشرة و لست مضطرا للتأثير على جزء اخر من الكود البرمجي.- يركز على المهمة الواحدة و الوحيدة :
مُشكلة معظم المبرمجين المستجدين انهم لا يقومون بتقسيم المشروع البرمجي على شكل أقسام او مجموعة من الـ Tasks او المهمات من أجل تسهيل برمجة كل جزء على حدة و أخذ الوقت الكافي في التركيز على المهمة الواحدة و الوحيدة، من عادات المبرمجين المحترفين، أخذ كل مهم او Task و إعادة تقسيمه الى مهمات صغيرة (Small Tasks)، يتيح هذا للمبرمج التركيز بشكل مايكروسوكوبي على عمله مما يقلص إحتمالية الوقوع في خطأ، بل و دراسة تلك المهمة من كافة الجوانب، مما يلغي كليا وجود أي خطأ منطقي او ثغرات أمنية في البرمجية، و لأن كل المهمات مربوطة (Linked) و مرتبة حسب الأهمية، يقوم المبرمج المحترف باخذ وقته الكافي في إنجاز كل مهمة حتى الإنتهاء من المشروع كاملا، لذلك عليك ان تقوم أنت أيضا أيها المبرمج بالتركيز على المهمة الواحدة بدل التركيز على الكل في الكل، او التركيز على المشروع بنظرة كاملة، عليك تقسيم اي فكرة او مشروع الى أقسام صغيرة الى حين إنتهاء المشروع البرمجي كاملا.- حلال مشاكل ممتاز !
إن مُعظم المبرمجين الجدد الآن يعتمدون بشكل جزري على منصة Stackoverflow من أجل إيجاد الحل لأي مشكل برمجي يصادفونه، ثم يأتي لمنصات التواصل الإجتماعي و ينشر : " ما فائدة الخوارزميات ؟ لا فائدة منها انا اتقن 4 لغات برمجة و لم استخدمها يوما ! " بالطبع لم تستخدمها لأنك تستخدم الـ Stackoverflow.الخوارزميات مجال واسع، من بين مهمات الخوارزميات الـ Problem Solving او حل المشاكل، حين تصادف أحجية برمجية أمامك، لا تتسارع لحلها بالإعتماد على البحث، حاول ان تحضر ورقة و قلما و حاول ان تصنع خوارزمية جيدة لحل المشكل البرمجي، لأن المبرمج المحنك و المحترف هو حلال مشاكل بالدرجة الأولى، عاشق للأحاجي، يستطيع حل أي مشكل برمجي و إن اخذ منه أياما و أسابيع و حتى أشهر، و عليك ان تضم عالم المشاكل الى حياتك و تحاول حلها بالإعتماد على نفسك، لا على Stackoverflow !
- يبعث المساعدة للآخرين عبر الإنترنت :
عودة بنا للحديث عن منصة Stackoverflow سالفة الذكر، ستجد ان العديد من التساؤلات البرمجيات المطروحة في المنصة و ستجد العشرات و المئات من الأجوبة عليها أيضا، و إن طرحت سؤالك أنت أيضا فلن يخيب ظنك و ستجد ان العديد يتهافت على مساعدتك و تقديم الإجابة لك، لكن هل قدمت يوما أنت المساعدة ؟ هل حاولت الإجابة عن أحد أسئلة السائلين في المنصة ؟المبرمج الجيد يعلم انه لا يمكنه الإطلاع على كل شيئ و أي شيئ في مجال البرمجة ( او اللغة البرمجية التي يختص فيها ) و الحل الوحيد لتطوير مهاراته هو البحث عن مشاكل الآخرين في تلك اللغة و محاولة إيجاد الحل و تقديم المساعدة، فيصير كل من السائل و المجيب مستفيد من ذلك السؤال، المبرمج المحترف يبحث بشتى الأشكال عن المشاكل، و يحاول تقديم المساعدة للجميع عبر الانترنت بما أكسبه الله و نفسه من خبرات في المجال، فهل تساعد الآخرين عبر الانترنت ؟ إن كانت مشكلة لغة في الأساس، فيوجد مجموعات فيسبوك للمبرمجين يمكنك الولوج إليها و تقديم المساعدة من خلالها .
- يحب الإطلاع على الأشياء الجديدة :
صديقنا المبرمج المحترف لا يتعلم الجافا او السي شارب و يخبر العالم كله انها اللغة الأقوى و الأفضل و لا مثيل لها في العالم، صديقنا المبرمج المحترف لا يقارن بين اللغات البرمجية و لا يخبرك ان هذه أفضل من هذه، لأنه يدرك تماما ان لكل لغة برمجة دورها الخاص، و مميزاتها الخاصة و قدراتها الخاصة أيضا التي يمكن إستخدامها حسب الحاجة، ليس هذا فقط، بل انه يقوم بتجربة كل جديد، يطلع على أي شيئ يطرأ في عالم الويب عامة و البرمجة تحديداً، لا يقوم فقط بتعلم شيئ واحد و يتباهى به أمام العالم، بل يدرك انه كلما تعلم أكثر، أدرك انه لا يعرف الا القليل !المبرمج الجيد يحاول دائما إبقاء الكود البرمجي الخاص به في آخر إصدار، و يحاول دائما مواكبة جديد الإطارات و المكتبات و غيرها في لغته البرمجية المستخدمة حتى يتعامل معها بإحترافية و يصير خبيرا فيها، و لا يخشى إطلاقا تجربة الأشياء الجديدة، عليك ان تمتثل أنت أيضا لقانون التجديد عزيزي المبرمج.
- لا يخشى الإستلهام من البرمجيات الكبرى :
في الحقيقة هذه المشكلة لا تتمثل في المبرمج العربي، بل في المجتمع البرمجي العربي عامة، إن قمت بصناعة تطبيق يحاكي او يضاهي تطبيق اخر معروف ( لنقل مثلا تطبيق مثلا سنابشات ) فستتعرض لوابل من الشتائم و الإنتقادات التي تخبرك انك : مقلد، غير مبدع، ليست لديك أفكار ...، و هذا لا يصف إطلاقا عقلية المبرمج العربي .فالمبرمج المحنك و المحترف يرى ان الإستلهام مادة أساسية في التعلم، يرى ان محاولة تقليد برمجيات كبرى مسار جيد من أجل تقوية المنهج البرمجي الخاص به و إكتشاف أشياء برمجية جديدة أيضا، لان ذلك التطبيق قد إستخدم شيئاً مغايرا لما اعتدنا عليه و محاولة محاكات تعتبر تحدي عليك إجتيازه ... تعلم من المحترفين، لا من المنتقدين !
- يستخدم البرمجيات الإحترافية بإحترافية :
نعم، يوجد البرمجيات، و يوجد البرمجيات الإحترافية، يوجد أيضا من يستخدم البرمجيات الإحترافية و من يستخدم البرمجيات الإحترافية بإحترافية، أولها برمجيات العمل التشاركي مثل Git, Slack, Trello و غيرها، إن كنت تسمع بهذا البرمجيات لأول مرة فلربما عليك الإطلاع على هذا المقال الخاص بأدوات العمل التشاركي و التعرف عليها أكثر، أيضا برمجيات أخرى مثل الـ Npm, Composer, Pip او Gem، و هي ما يسمى بمدراء الحزم التي تسمح لك بإدارة الكود البرمجي و كل مصادر المشروع البرمجي بإحترافية، أيضا إختيار أفضل IDE من أجل التطوير، إذ لا يمكنك إختيار محرر أكواد واحد او IDE واحد لكل المشاريع البرمجية، اترى صديقي كيف يهيئ المبرمج المحترف المنصات أولا قبل البدئ في البرمجة ؟إذن صديقي المبرمج؟ هل انت من المبرمجين المحترفين ؟ ام لديك عاداتك الخاصة ؟ شاركنا إياها في التعليقات .