بدايةً ، أعترف بأنّ هذا المقال سوف لن يحوي على أفكارٍ ” متقولبة ” من كتبٍ أو مقالاتٍ قرأتها ، ببساطة أنا لم أقرأ أبدًا أيّة كتبٍ في هذا الموضوع ، لكنّ تخصصي الأكاديميّ ” هندسة البرمجيّات ” قد يشفع لي التحدّث في موضوعٍ كهذا .
ثمّ إنّي أؤمن بأنّ البرمجة فنّ وفلسفة .. والفنّ لا يمكن تعلّمه بقراءة الكتب وحسب ، إنّه شيءٌ روحيّ وعقليّ ، كلّ إنسانٍ له بصمته وطريقته الخاصّة في ممارسة هذا الفنّ ، لا يمكن تحديد نقاط معيّنة وتقييد الآخرين بها – كما تفعل هندسة البرمجيّات نفسها أحيانًا – لكنّي أعتقد أيضًا أنّ فهم فلسفة البرمجة ودراسة طرقها ومبادئها أهمّ بكثيرٍ من تعلّم الأكواد البرمجيّة !
.كيف أصبح مبرمجًا ؟ من أين أبدأ ؟ ما هي اللغة الَّتي تنصحينني بالبدء بها ؟يجب عليك أن تزيل كلّ الترسّبات الفكريّة الخاطئة الَّتي تخبرك بأنّ إتقان البرمجة هو إتقان كتابة الأوامر بإحدى لغاتها .. هذا خطأ !
البرمجة مثل الشعر ، أن تكون لديك حصيلةٌ لغويّة كبيرة وأن تحفظ عددًا لا يُحصى من المفردات العربيّة قد يساعدك على التبحّر في آدابها ، لكنّه لن يحوّلك إلى شاعر !
هناك فرق كبير بين البرمجة كممارسة ذهنية وعقلية وبين كتابة الأوامر في لغة برمجية ، اللغات البرمجيّة – بالذات الحديثة منها – قريبة جدًا من لغة الإنسان العادية ، ومعرفة أساسيات برمجيّة مع اتقانك للغة الانجليزية واستخدامك لبيئة عمل جيدة ، يكفيك لكتابة تطبيقات وبرامج متوسطة المستوى .. لكنّه لن يصنع منك مبرمجًا !
شخصيتك وصفاتك وقدراتك الذهنيّة ، إنّها أوّل ما يجب صقله وتغييره إذا أردتَ أن تصبح مبرمجًا حقيقيًا ، على سبيل المثال مهما كانت حصيلتك العلميّة مرتفعة في البرمجة ، فإنّك لن تصبح مبرمجًا ناجحًا إذا كنت عديم الصبر أو ملولاً يرهقك التفكير بشكلٍ سريع !
برأيي الشخصي ، المبرمج المتفوّق هوَ /
1 : شخصٌ لا يكتفي بإيجاد الحلول للمشاكل ، لكنّه يختار أفضلها ، ليس على المستوى التقني فقط ، إنّما على جميع المستويات الحياتية .
2 : مدركٌ تمامًا للتسارع التقني المجنون ، لذلك هو لا يتذمّر من التطوّر السريع للغات البرمجيّة والتقنيات التي يتعامل معها ويتقبّل الأمر بتحدّي .
3 : تحليلي ، عميق ، لا يكتفي بالنظر إلى سطح المشكلة او الفكرة بل يدرس تفاصيلها الصغيرة الَّتي قد لا ينتبه لها عامّة النّاس .
4 : يفهم طبيعة عمله والجهد الذهني الَّذي يتطلبه ، لذلك هوَ لا يتذمّر أو يُحبط امام الأخطاء والمشاكل الَّتي تواجهه بل يعتبرها جزءاً بديهيًا ومهمًا من عمله .
5 : لديه قدرة على تحويل أفكار الآخرين ومتطلّباتهم إلى أفكارٍ تقنية مجرّدة ، وربّما تكون هذه مسؤولية ” محلل الأنظمة ” أو ” مهندس البرمجيات ” في الشركات البرمجية الضخمة ، لكن على الواقع العملي وبالذات على مستوى الـ Freelancers ، تصبح هذه ” إحدى ” مسؤوليّات المبرمج .
6 : سريع البديهة ، ولنقل أنّه لاقط معلوماتٍ متحرّك ! إذا أعجبه تطبيقٌ مثلاً ، يدرس الخطوات والطرق البرمجيّة الَّتي سلكها مبرمج التطبيق – سواء أكان التطبيق مغلق المصدر أم مفتوحًا – وبالمناسبة قد يستخفّ بهذا الكثير من الأشخاص او يجدون فيه مبالغة لكنّه من أكثر أساليب التعليم الذاتي نجاحًا .
7 : لديه حسّ عالي تجاه ” المخاطر ” وقدرة على إدارتها منذ المراحل الأولى للمشروع للخروج بأقلّ ما يمكن من الأخطاء والمشاكل .
8 : يهتمّ بالعامل الزمني ويتعامل معه بذكاء ، لا يُكلّف نفسه ما لا يطيق من العمل خلال فترة زمنيّة قصيرة ولا يفعل العكس !
9 : له فلسفته البرمجيّة الخاصّة ولا يتكّئ على أفكار وجهود الآخرين تمامًا ، قد يستفيد منها لكن يظلّ له أسلوبه الخاصّ .
10 : يدرك أنّ المعرفة البرمجيّة ليست هدفًا يسعى إليه إذ أنّها معرفةٌ متوسّعة لا حدود لها ، بل يستمرّ بالدراسة والتحصيل المعرفي والتطوير الذاتي أثناء حياته العمليّة .
.
.
أخيرًا ، ما ذكرتُه يعبّر عن وجهة نظر خاصّة جدًّا قد يخالفها الكثيرون ، لكن أتمنى أن أكون قد قدمتُ الفائدة .