هل ألتحق بالجامعة من أجل تعلم البرمجة؟ النظرية وعكسها!
يوجد فرق شاسع بين المبرمج الذي تعلم البرمجة دون دراسة علوم الحاسب، والمبرمج الذي درس علوم الحاسب.
كلنا سمعنا الرأي القائل بأن دراسة علوم الحاسب لا داعي لها، فكل شخص يستطيع تعلم البرمجة خلال بضعة شهور. فلماذا يضيع أحدهم 4 سنوات ويصل إلى نفس الهدف!!
تبدو وجهة نظر منطقية. ولكنها ملأى بالفخاخ.
في هذه التدوينة أستعرض لك لماذا أختلف مع وجهة النظر السابقة وما هي الفخاخ الموجودة بها.
كيف تتعلم البرمجة
لا يختلف اثنان على أهمية البرمجة في هذا الزمن! مفهوم أفضل الوظائف وأعلى المرتبات وحتى المكانة الإجتماعية بدأت تتحول شيئاً فشيئاً من “طب و هندسة” إلى مجالات الحاسب.
مثلك مثل أي شخص أراد تعلم البرمجة -اياً كان تخصصك- تمتلك خيارين:
- دورات عبر الإنترنت: إذا بحثت في الإنترنت فستجد أن هناك كثيراً من الدورات الخاصة بتعليم البرمجة. لا تزيد مدة هذه الدورات في العادة عن 4 أشهر، وبعضها تكون مدته شهر أو حتى أقل.
- دورات فيزيائية: هي الدورات التي تقام في المعاهد. لا تختلف مدتها عادةً كذلك عن مدة الدورات الافتراضية “أونلاين”.
كشخص يرغب بتعلم البرمجة، هذه الدورات كافية تماماً لتعلم البرمجة. عندما تكملها يجب أن تصبح مبرمجاً يستطيع التحدث مع الحاسب.
وهنا ربما تعتقد أن وجهة النظر الأولى صحيحة. 4 أشهر أفضل من 4 سنوات.
تمهّل قليلاً.. قبل أن تطلق حكمك دعنى أحدثك عن البرمجة
البرمجة هي القدرة على توجيه الأوامر إلى الحاسب بلغة يستطيع الحاسب فهمها.
ماذا يعني أن تكون مبرمجاً؟ وما الذي تستطيع فعله بعد إكمالك لدورة تعلم البرمجة
بعد أن تكمل دورة تعلم البرمجة بلغة ما، تصبح قادراً على توجيه الأوامر للحاسب.
ولأن مفهوم لغات البرمجة مقاربٌ لمفهوم اللغات البشرية من حيث أن الهدف من لغات البرمجة ولغات البشر هو القدرة على التواصل مع كائن آخر لا يتحدث لغتك أخبرك بما تعلمته ضارباً مثالاً باللغة العربية.
افترض أن مارك لا يتحدث العربية و أراد تعلمها أتى بمعجم كلمات اللغة العربية وحفظ وفهم كلماتها جميعاً وطريقة استخدام كل كلمة ومعناها.
عندما يجلس هذا الشخص بين مجموعة من العرب فإنه يستطيع بكل تأكيد أن يطلب منهم تنفيذ ما يرغب به بناءً على مخزونه من الكلمات.
زائداً أو ناقصاً قليلاً يكون هذا وضعُ من يتعلم لغة برمجةٍ ما.
فلنعد إلى صديقنا مارك..
ماذا إذا سألنا مارك أسئلة من النوع،
- ما هي الجملة الإسمية والجملة الفعلية؟
- متى تستخدم كلاً من الكلمات “تعال، هلم، أقبل” والتي تشترك في المعنى وقد تستخدم في مواضع مختلفة بصورة أفضل؟
- هل تعلم شيئاً عن البلاغة؟
- ما هو تاريخ اللغة العربية وكيف تطورت؟
- هل تستطيع تكوين وكتابة الشعر؟
- لماذا كان الموصوف مرفوعاً في جملةٍ محددة؟
سيلتفت مارك يُمنة ويسرة ثم يرفع كتفيه مشيراً بأن لا أدري.
هل تعلم لماذا؟
لأنه تعلم لغة البرمجة… ولم يتعلم علوم الحاسب.
هذا وضعك الآن، تستطيع أن تتحدث مع الحاسب وتأمره بما تريد، وسينفذ حلولك وأفكارك مهما كانت.
ولكن هنالك أسئلة أخرى مثل: هل هذه الحلول صحيحة؟ هل هي فعالة؟ هل هي الأفضل؟ لماذا اخترت هذا الحل دون الآخر؟ ما هي معايير اختيار الحلول؟ والكثير من الأسئلة المشابهة!!
حسناً! ماذا ستفيدني دراسة علوم الحاسب؟!!
تضيف علوم الحاسب أبعاداً أخرى للمبرمج، تحسينٌ كبير في قدراته ومعارفه تؤثر بشكل مباشر وكبير على قدرته على اقتراح الحلول -وهو الجزء الأهم في البرمجة- وحل المشاكل كذلك.
توجد أقسامٌ مختلفة في كليات علوم الحاسب، وكل قسم منهم يؤهل الدارس ليكون أكثر تخصصاً في أحد الاتجاهات العامة من علوم الحاسب.
أما هنا فسأعرض لك مثالاً واحداً وهو قسم علوم الحاسب بكلية علوم الحاسب، لا لشيء إلا لأنه الأكثر مناسبةً لمن يرغب بالتخصص بالبرمجة.
لاحظ أن جميع المواد التالية لا تعتني بـ “تعلّم البرمجة” بل تطرق جوانبها بعدّة طرق.
مواد يدرسها طالب علوم الحاسب
- مقدمة للبرمجة.
- هياكل البيانات.
- الرياضيات المتقطعة.
- نظم قواعد البيانات.
- تحليل وتصميم الخوارزميات.
- مبادئ الذكاء الاصطناعي.
- بناء المترجمات.
- التفاعل بين الإنسان والحاسب.
- التنقيب عن البيانات.
- تصميم وإدارة الشبكات.
- مبادئ التشفير.
هذه المواد عبارة عن أمثلة فقط لبعض المواد التي يدرسها طالب علوم الحاسب بالإضافة إلى تعلم لغات البرمجة بصورة مباشرة، في العادة يتعلم أكثر من لغة برمجة أثناء الدراسة.
كما ترى يا صديقي فإن دارس علوم الحاسب يتحصل على العديد من العلوم التي تحيط بالبرمجة، ولكن…
فلنذهب إلى بُعدٍ آخر.. هل هناك فائدةٌ حقيقية من هذه المواد والمعلومات؟ أم أنها مضيعةٌ للوقت فقط؟!!
تعلّمتُ كل هذه العلوم، ماذا أفعل بها؟!!
من وجهة نظر المستخدم النهائي (أي الشخص الذي يستخدم البرنامج) يستطيع المبرمج أن يطور برنامجاً متكاملاً يؤدي إلى حل مشكلة ما مثلما يستطيع دارس علوم الحاسب فعله.
كلاهما يطور برنامجاً يعمل بالتأكيد. ولكن دارس علوم الحاسب يستخدم معلومات أخرى تحصل عليها أثناء دراسته تعينه على تطوير برنامج أفضل.
مثلاً، بناءً على المعلومات العلمية التي تحصل عليها من دراسة التفاعل بين الإنسان والحاسب يصمم شاشات أفضل، وبناءً على علم الخوارزميات يستطيع تصميم حلول أفضل، وبناءً على التشفير وأمن المعلومات يستطيع تصميم برامج أكثر أمناً … وهكذا..
لذا فإنني أرى أن تسميه خريج علوم الحاسب بـ “مبرمج” تظلمه، فالعلوم التي تحصل عليها تتعدى مسمى مبرمج وتجمع مجالات مختلفة.
وبرغم عدم التفرقة بينهما في المسمى، إلا أنه من السهل جداً التفريق بينهما أثناء المعاينات الوظيفية بطرح الأسئلة التي تدور حول البرمجة والأسئلة الأكثر تخصصية دون السؤال عن المؤهل حتى.
هذه المعلومات التي تملكتها حول البرمجة تؤهلك إلى حد بعيد لأن تكون قادراً على التطور السريع في عالم البرمجة، ليس تطوراً وظيفياً فقط بل من ناحية كفاءة مخرجات. فشفراتك البرمجة تُكتب بناءً على أسباب علمية وليس اعتباطاً.
تعامل سوق العمل مع خريج علوم الحاسب وطالب البرمجة
إلى وقت قريب كانت وظائف البرمجة ترتبط بطلب شهادة البكالريوس. ولكن الأمر آخذٌ في التحول باستمرار.
أصبح من الطبيعي جداً أن تجد في الشركات مبرمجين يحملون شهادات لا علاقة لها بالمجال التقني إطلاقاً أو حتى لم يحملوا شهادات من قبل.
من الطريف أنه كان في أحد فرق العمل التي عملت بها خريجاً في طب الأعشاب ويعمل في مجال تطوير النظم
البرمجة وظيفة تعتمد على الإنتاج، طالما تستطيع أن تبرمج فإنك تستطيع الحصول على وظيفة.. فقط تحتاج إلى إثبات أنك تستطيع البرمجة.
ولكن من زاوية الوظائف المتاحة واحتمالية الاختيار. إذا كنتُ في موقع من يختار المبرمج سأختار وفقاً للوظيفة المطلوبة.
مثالين لحالتين للمفاضلة بين خريج البكالريوس والمبرمج بلا بكالريوس:
- إذا كان لدي فريق متكامل متخصص للعمل على نظام كبير بحيث أن النظام محلل و مصمم بطريقة ممتازة والمطلوب توظيف مبرمج مهمته تقتصر على تحويل الأفكار إلى شفرة مصدرية أفضل أن يكون المبرمج صاحب خبرة أطول (تتوفر عادةً في المبرمج بلا بكالريوس بصورة أكثر).
- إذا كان لدي مشروع ناشئ، والميزانية لا تحتمل توفير متخصصين عندها قد يؤدي المبرمج دور المحلل والمصمم والمبرمج. في هذه الحالة أفضّل أن يكون حاصلاً على شهادة بكالريوس.
فوفقاً لحالة المشروع والوصف الوظيفي المتاح وعوامل أخرى مثل القدرة على الإقناع و العرض المادي وغيرها يختار صاحب العمل المبرمج المناسب للوظيفة.
وفي كل الأحوال، ما زالت الحاجة إلى المبرمجين ماسةٌ جداً.
والآن، السؤال الذي يدور في عقلك.. أدرس علوم الحاسب أم أتعلم البرمجة؟
السؤال الدائم: ما هو الأفضل؟ أن أصبح مبرمج بدون دراسة نظامية أم أتعلم البرمجة وهذا يكفي؟
ليس من السهل الرد على هذا السؤال بطريقة شافية نسبة لاختلاف أحوال السائلين، والأفضل لشخص قد يكون الأسوأ لشخص آخر.
ولكن هناك إجابة موحّدةٌ للجميع وهي
يجب أن تتعلم البرمجة، اقتنص الفرصة الأقرب وتعلمها فوراً. الآن.
البرمجة لغة العصر، والتقنية أصبحت محيطةً بك من كل جانب، تعلم البرمجة كمهارة ومعرفة ستتسع آفاقك المعرفية التقنيّة كثيراً.
بعد أن تتعلم البرمجة ستعلم كيف تعمل التطبيقات والبرامج من حولك، تفهم لماذا وضع هذه الخاصية في هذا التطبيق بهذه الطريقة وما هي الحلول الممكنة.
بعد أن تتعلم البرمجة ستستطيع توقع حل لمشاكل التطبيقات والبرامج بصورة أكبر وأفضل.
وربما تصبح مبرمجاً فذاً كذلك.
دراستك لعلوم الحاسب ستجعل منك مبرمجاً أفضل وأكثر احترافية بالتأكيد، مع القدرة على العمل في مجالات متعددة أخرى مثل تحليل البيانات وتصميم قواعد البيانات وإدارتها و أمن المعلومات وغيرها من المجالات المتعددة.
أرى أن الأمر بهذه البساطة:
- إذا كان هدفك البرمجة فقط لا غير، تستطيع تعلمها من خلال الدورات دون الإلتحاق بالجامعة.
- إذا كان هدفك تعلم علوم الحاسب، تستطيع البدء بتعلم البرمجة الآن أو الانتظار حتى الالتحاق بكلية علوم حاسب وستتعلمها حتماً ضمن منهجك.
وفي النهاية
أهم ما في الأمر، يجب أن تتعلم البرمجة ولا تنتظر. أن تكون مبرمجاً يفتحُ لك آفاقاً أرحب. ستستطيع تنفيذ الأفكار التي تطرأ على ذهنك بين الفينة والأخرى فتصبح لك تطبيقات في متاجر الجوال أو مواقع على الانترنت.
وقد ينتهي بك الأمر إلى التحوّل إلى هذا المجال تماماً!
هل ألتحق بالجامعة من أجل تعلم البرمجة؟ النظرية وعكسها!
Consuitech
on
الجمعة, أكتوبر 19, 2018
ليست هناك تعليقات: