أنت هنا

يوميات مبرمجاتي - الجزء الأول

يوميات مبرمجاتي - الجزء الأول

يقول بوب نايت مدرب كرة السلة الأمريكي الملقب ب"الجنرال"، "ليست الرغبة في الفوز هي التي تحدث الفرق الكبير، بل الرغبة في التدريب بهدف الفوز،" وهكذا هي الحياة. العبرة ليست في الآمال أو الرغبات التي تعقِدُها ولكن العبرة بالطريق الذي تسلُكه والمهارات التي تكتسبُها أثناء رحلة ممتعة لا تنتهي،  بل تستمر معك طوال حياتك، فالمتعة الحقيقية تجدها في ثنايا هذه الرحلة، رحلة التعلم وتطوير الذات.
 
اسمي أحمد أبو الدهب، أحد خبراء Google في مجال تطوير تطبيقات الجوال ولدي شركة برمجيات خاصة بي، بالإضافة إلى عملي كمستشار تقني لشركات ومؤسسات مختلفة سواء داخل مصر أو خارجها. بدأت رحلتي مع البرمجة  منذ حوالي أربعة وعشرين عاماً مضت، كان قُوامُها التعلم الذاتي ووقودها حب المعرفة، وتعلمتُ فيها العديد من التقنيات ولغات البرمجة وتدرجت فيها في العديد من الوظائف والأدوار.
 
أكسبتني هذه السنوات خبرات متراكمة ودروس مهمة اكتسبت بعضها بأخطاء فادحة دفعت ثمنها، وبعضها من خلال التجربة والخطأ. دائماً ما كنت أتمنى أن يوجد من يرشدني على الطريق الصحيح للوصول لهدفي فلربما اختصرت هذه الرحلة في أقل من ٥ أو ١٠ سنوات فقط.
 
"يوميات مبرمجاتي" هي سلسلة من المقالات أدونها لأول مرة محاولاً فيها أن أُجيب عن بعض الاستفسارات المتكررة التي تصلني على وسائل التواصل الإجتماعي،  سواء ممن يتلمس طريقه لتعلم البرمجة، او من يأمل أن يتعلمها يوماً ما أو حتى من المحترفين الذين يأملون الوصول إلى العالمية والتميز بإذن الله تعالى،  آملاً من الله عز وجل أن تكون كلماتي هذه شُعلة تُنير الطريق لهم وتوفر عليهم سنوات كثيرة قضيتها في بداياتي أتخبط هنا وهناك ولا أدري أين السبيل، وسوف ننتقل بعد ذلك إلى موضوعات تقنية تهم كل من يسلك هذا الطريق وأسأل الله أن يرزقني الإخلاص في القول والعمل.
 
أحب في البداية أن أبشرك وأنت تقرأ كلماتي هذه بأنك إخترت الوقت الصحيح للتعلم، فالموضوع ليس سراً حربياً أو أمراً معقداً يتطلب قدرات خاصة، بل من كثرة مصادر تعلمه أصبحت أكثر شكوى وعائق أمام ممن يبدأ هذا الطريق، أي المصادر يختار؟! وأيهما أفضل؟! صار أغلب هذه المصادر مُتاحاً للجميع ومجانياً، سواء كنت طفلاً في العاشرة من عمرك أو شيخاً كبيراً تجاوزت الستين. التعلم ليس له حد أو عُمر محدد طالما هناك عزيمة وإرادة، ولكن دعنا نتفق على بعض الأمور أولاً:
 
- لا تظن أن النجاح سهلاً أو طريقاَ معبداً بالورود وإلا لكان كل الناس ناجحين، ولكن يحتاج الطريق إلى مثابرة ومداومة، فخير الأعمال أدومها وإن قل.
 
- سوف تقابلك أمور كثيرة تُحبطك وسوف يقف البعض حجر عثرة في طريقك، ولا تتفاجأ لو كان من أقرب الناس إليك، طالما لديك هدف تمسك به،  وستصل مهما طال الطريق، إن الله لا يُضيع أجر من أحسن عملاً.
 
- حينما تبدأ الطريق إبدأ بأبسط الأشياء، ليس من الضروري أن تبدأ بأمور معقدة، ما يهم هو أن تبدأ و تخطو أولى خطواتك على الطريق وتستمر في المسير لا تتوقف.
 
- البرمجة هي المستقبل وأياً كان تخصصك لابد من تعلم البرمجة لأنها سُتفيدك وتُكسبك الكثير من المهارات المفيدة أياً كان مجال عملك .
 
-  دائماً ما اعتبر مجال البرمجة والتخصصات التقنية هي من أنسب الوظائف للبنات، لما توفره من مميزات وخيارات متنوعة تناسب طبيعتهن وبعض الاشتراطات التي قد تضعها إحداهن في وظيفة الأحلام .
 
هل إتفقنا؟ إذاً فلنبدأ بتناول بعض الأسئلة والإستفسارات التي قد تدور في ذهنك.
 
هل هناك سن معين لتعلم البرمجة؟
 
ليس هناك سن مُحدد ويمُكنك دائماً أن تبدأ أياً كان عُمرك طالما لديك المهارات الأساسية التي تحتاجها. يمكن أن يبدأ تعلم البرمجة من وجهة نظري منذ الطفولة في سن ٨ أو ١٠ سنوات بعد أن يتعلم الطفل القراءة والكتابة واللغة الإنجليزية بشكل جيد وبعض مهارات حل المشكلات، بعد ذلك يتم تعليم البرمجة، وكذلك لو كنت قد تجاوزت الخمسين من عُمرك فأيضاً لم يفت الوقت وأنا أعرف من بدأ هذا الطريق بعد ان تجاوز الـ ٣٥ عاماً بل وأعطيت دورات برمجية لمن تجاوز الخمسين من عمره.
 
هل تعلم البرمجة يقتصر على التخصصات العلمية أو التقنية فقط؟
 
بكل تأكيد لا، فهناك من غير مساره من مجالات وتخصصات أدبية أو طبية وأبدع في مجال البرمجة، بل وأصبحت الكثير من الشركات العالمية الآن لا تهتم بمؤهلاتك أكثر من خبراتك وما أنت قادر على عمله .
 
هل يجب علي أن يكون لدي خلفية رياضية قوية أو قدرة على حل مسائل رياضية معُقده للدخول إلى هذا المجال؟
 
يعتمد ذلك على التخصص الذي ستختاره، وبنسبة ٨٠٪ أياً كان مجال البرمجة الذي ستختاره لن تحتاج إليها، ولكن تعتبر الرياضيات مهمة جداً إذا اخترت مجال الذكاء الاصطناعي (AI) وتعلم الآلة (ML) او رغبت أن يكون لك أوراق بحثية في هذه المجال، حينها الرياضيات واللوغاريتمات أمر مهم جداً.
 
دائما ما أسمع عن algorithms and data structures هل لابد أن أبدأ بها في بداية تعلم البرمجة؟
 
يتوقف على المجال الذي سوف تختاره ومثل النقطة السابقة لن تحتاج إليها أيضاً بنسبة كبيرة إلا عند الوصول إلى مستوى مُتقدم أو إذا أردت الإنضمام إلى شركات عالمية مثل Google & Microsoft & Amazon وغيرها من الشركات فأغلب أسئلة ومقابلات هذه الشركات تكون مركزة على Algorithms and Data structures وليس على لغة برمجة بعينها، وعموماً كل هذه النقاط سوف نتناولها بالشرح المبسط بإذن الله  في المقالات التالية.
 
هناك مجالات كثيرة في البرمجة ولا أدري أيهما أختار؟
 
للإجابة على هذا السؤال يجب أن تعلم أولاً لماذا تتعلم؟ هل هي من باب المتعة وحب المعرفة؟ أم من أجل الحصول على وظيفة؟ يجب أن تحدد هدفك أولاً ثم يمكنك إختيار الطريق  وإذا كان سؤالك التالي هل أتعلم برمجة تطبيقات سطح المكتب Desktop ام الجوال Mobile أم المواقع الإلكترونية؟ يعتمد الموضوع على المكان الذي تُريد أن تعمل به أو الوظائف المُتاحة من حولك وعموماً في الغالب برمجة مواقع الإنترنت أو تطبيقات الجوال هي الأكثر طلباً ونصيحتي لك إبدأ بتعلم الأمور البسيطة ولغات البرمجة السهلة مثل HTML & CSS لأن تعلمها سهل ويمكنك أن تجد نتيجة تعلمك بسرعة فتزداد حماستك وثقتك بنفسك وهذا هو المطلوب، ثم إنتقل بعد ذلك الى تعلم javascript وأياً كان المجال الذي ستسلكه بعد ذلك يُعتبر تعلم التقنيات السابقة مقدمة جيدة لك للتعرف على مجال البرمجة، يمكنك بعد ذلك الإنتقال إلى لغات أخرى مُتقدمة حسب الطريق الذي ستختاره.
 
أكتفي بهذا القدر حتى لا تُصاب عزيزي القارئ بالملل، ولنا لقاءات أخرى إن شاء الله تأتي إستكمالاُ لسلسلة "يوميات مبرمجاتي."
 
للتواصل، حسابي هو Dahabdev على جميع مواقع التواصل الإجتماعي.

انضم كرائد أرسل ملاحظاتك