يوجد فرق شاسع بين المبرمج الذي استغل وقت فراغه و تعلم البرمجة دون دراسة علوم الحاسب، والمبرمج الذي درس علوم الحاسب.
كلنا سمعنا الرأي القائل بأن دراسة علوم الحاسب لا داعي لها، فكل شخص يستطيع تعلم البرمجة خلال بضعة شهور. فلماذا يضيع أحدهم 4 سنوات ويصل إلى نفس الهدف!!
تبدو وجهة نظر منطقية. ولكنها ملأى بالفخاخ.
في هذه التدوينة أستعرض لك لماذا أختلف مع وجهة النظر السابقة وما هي الفخاخ الموجودة بها.
كيف تتعلم البرمجة
لا يختلف اثنان على أهمية البرمجة في هذا الزمن! مفهوم أفضل الوظائف وأعلى المرتبات وحتى المكانة الإجتماعية بدأت تتحول شيئاً فشيئاً من “طب و هندسة” إلى مجالات الحاسب.
مثلك مثل أي شخص أراد تعلم البرمجة -اياً كان تخصصك- تمتلك خيارين:
- دورات عبر الإنترنت: إذا بحثت في الإنترنت فستجد أن هناك كثيراً من الدورات الخاصة بتعليم البرمجة. لا تزيد مدة هذه الدورات في العادة عن 4 أشهر، وبعضها تكون مدته شهر أو حتى أقل.
- دورات فيزيائية: هي الدورات التي تقام في المعاهد. لا تختلف مدتها عادةً كذلك عن مدة الدورات الافتراضية “أونلاين”.
كشخص يرغب بتعلم البرمجة، هذه الدورات كافية تماماً لتعلم البرمجة. عندما تكملها يجب أن تصبح مبرمجاً يستطيع التحدث مع الحاسب.
وهنا ربما تعتقد أن وجهة النظر الأولى صحيحة. 4 أشهر أفضل من 4 سنوات.
تمهّل قليلاً.. قبل أن تطلق حكمك دعنى أحدثك عن البرمجة
البرمجة هي القدرة على توجيه الأوامر إلى الحاسب بلغة يستطيع الحاسب فهمها.
ماذا يعني أن تكون مبرمجاً؟ وما الذي تستطيع فعله بعد إكمالك لدورة تعلم البرمجة
بعد أن تكمل دورة تعلم البرمجة بلغة ما، تصبح قادراً على توجيه الأوامر للحاسب.
ولأن مفهوم لغات البرمجة مقاربٌ لمفهوم اللغات البشرية من حيث أن الهدف من لغات البرمجة ولغات البشر هو القدرة على التواصل مع كائن آخر لا يتحدث لغتك أخبرك بما تعلمته ضارباً مثالاً باللغة العربية.
افترض أن مارك لا يتحدث العربية و أراد تعلمها أتى بمعجم كلمات اللغة العربية وحفظ وفهم كلماتها جميعاً وطريقة استخدام كل كلمة ومعناها.
عندما يجلس هذا الشخص بين مجموعة من العرب فإنه يستطيع بكل تأكيد أن يطلب منهم تنفيذ ما يرغب به بناءً على مخزونه من الكلمات.

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

لذا فإنني أرى أن تسميه خريج علوم الحاسب بـ “مبرمج” تظلمه، فالعلوم التي تحصل عليها تتعدى مسمى مبرمج وتجمع مجالات مختلفة.
وبرغم عدم التفرقة بينهما في المسمى، إلا أنه من السهل جداً التفريق بينهما أثناء المعاينات الوظيفية بطرح الأسئلة التي تدور حول البرمجة والأسئلة الأكثر تخصصية دون السؤال عن المؤهل حتى.
هذه المعلومات التي تملكتها حول البرمجة تؤهلك إلى حد بعيد لأن تكون قادراً على التطور السريع في عالم البرمجة، ليس تطوراً وظيفياً فقط بل من ناحية كفاءة مخرجات. فشفراتك البرمجة تُكتب بناءً على أسباب علمية وليس اعتباطاً.
تعامل سوق العمل مع خريج علوم الحاسب وطالب البرمجة
إلى وقت قريب كانت وظائف البرمجة ترتبط بطلب شهادة البكالريوس. ولكن الأمر آخذٌ في التحول باستمرار.

أصبح من الطبيعي جداً أن تجد في الشركات مبرمجين يحملون شهادات لا علاقة لها بالمجال التقني إطلاقاً أو حتى لم يحملوا شهادات من قبل.
من الطريف أنه كان في أحد فرق العمل التي عملت بها خريجاً في طب الأعشاب ويعمل في مجال تطوير النظم 🙂
البرمجة وظيفة تعتمد على الإنتاج، طالما تستطيع أن تبرمج فإنك تستطيع الحصول على وظيفة.. فقط تحتاج إلى إثبات أنك تستطيع البرمجة.
ولكن من زاوية الوظائف المتاحة واحتمالية الاختيار. إذا كنتُ في موقع من يختار المبرمج سأختار وفقاً للوظيفة المطلوبة.
مثالين لحالتين للمفاضلة بين خريج البكالريوس والمبرمج بلا بكالريوس:
- إذا كان لدي فريق متكامل متخصص للعمل على نظام كبير بحيث أن النظام محلل و مصمم بطريقة ممتازة والمطلوب توظيف مبرمج مهمته تقتصر على تحويل الأفكار إلى شفرة مصدرية أفضل أن يكون المبرمج صاحب خبرة أطول (تتوفر عادةً في المبرمج بلا بكالريوس بصورة أكثر).
- إذا كان لدي مشروع ناشئ، والميزانية لا تحتمل توفير متخصصين عندها قد يؤدي المبرمج دور المحلل والمصمم والمبرمج. في هذه الحالة أفضّل أن يكون حاصلاً على شهادة بكالريوس.
فوفقاً لحالة المشروع والوصف الوظيفي المتاح وعوامل أخرى مثل القدرة على الإقناع و العرض المادي وغيرها يختار صاحب العمل المبرمج المناسب للوظيفة.
وفي كل الأحوال، ما زالت الحاجة إلى المبرمجين ماسةٌ جداً.
والآن، السؤال الذي يدور في عقلك.. أدرس علوم الحاسب أم أتعلم البرمجة؟
السؤال الدائم: ما هو الأفضل؟ أن أصبح مبرمج بدون دراسة نظامية أم أتعلم البرمجة وهذا يكفي؟

ليس من السهل الرد على هذا السؤال بطريقة شافية نسبة لاختلاف أحوال السائلين، والأفضل لشخص قد يكون الأسوأ لشخص آخر.
ولكن هناك إجابة موحّدةٌ للجميع وهي
يجب أن تتعلم البرمجة، اقتنص الفرصة الأقرب وتعلمها فوراً. الآن.
البرمجة لغة العصر، والتقنية أصبحت محيطةً بك من كل جانب، تعلم البرمجة كمهارة ومعرفة ستتسع آفاقك المعرفية التقنيّة كثيراً.
بعد أن تتعلم البرمجة ستعلم كيف تعمل التطبيقات والبرامج من حولك، تفهم لماذا وضع هذه الخاصية في هذا التطبيق بهذه الطريقة وما هي الحلول الممكنة.
بعد أن تتعلم البرمجة ستستطيع توقع حل لمشاكل التطبيقات والبرامج بصورة أكبر وأفضل.
وربما تصبح مبرمجاً فذاً كذلك.
دراستك لعلوم الحاسب ستجعل منك مبرمجاً أفضل وأكثر احترافية بالتأكيد، مع القدرة على العمل في مجالات متعددة أخرى مثل تحليل البيانات وتصميم قواعد البيانات وإدارتها و أمن المعلومات وغيرها من المجالات المتعددة.
اطلع على هذه النصائح فيما يخص دراستك وعملك.
أرى أن الأمر بهذه البساطة:
- إذا كان هدفك البرمجة فقط لا غير، تستطيع تعلمها من خلال الدورات دون الإلتحاق بالجامعة.
- إذا كان هدفك تعلم علوم الحاسب، تستطيع البدء بتعلم البرمجة الآن أو الانتظار حتى الالتحاق بكلية علوم حاسب وستتعلمها حتماً ضمن منهجك.
وفي النهاية
أهم ما في الأمر، يجب أن تتعلم البرمجة ولا تنتظر. أن تكون مبرمجاً يفتحُ لك آفاقاً أرحب. ستستطيع تنفيذ الأفكار التي تطرأ على ذهنك بين الفينة والأخرى فتصبح لك تطبيقات في متاجر الجوال أو مواقع على الانترنت.
وقد ينتهي بك الأمر إلى التحوّل إلى هذا المجال تماماً!
دارسُ علوم الحاسب متخصص، والبرمجة إحدى العلوم التي يمتلكها، ولكنك لا تحتاج إلى كل هذه العلوم لتبدأ الطريق،
كما عليك ان تتذكر ان تعلم البرمجة وعلوم الحاسوب لا يعتمد علي سن معين.
أريد أن أعرف أو أتعلم البرمجة
انصحك بأن تبدأ بقراءة تدوينة تعلم البرمجة من الصفر: [الدليل الشامل] أهم 13 نصيحة و معلومة للمبرمج المبتدئ.
لحل مشكلة ما هل احتاج الى معرفة المزيد من الخوارزميات للغة البرمجة او هناك معادلات اخرى لحل المشكلة
استاذي شكرا لك
أريد أن اسئلك سوئل انا اريد ان اتعلم أ نظمة المعلومات الحاسوبية في الجامعة لكن هناك تخصص اسمو التسويق الكتروني من هاد التخصص بعطي 27 ساعة من تخصص انظمة المعلومات الحاسوبية وتخصص انظمة المعلومات الحاسوبية الكثير من الرياضيات وانا ضعيف بلرياضيات يمكن ان اتعلم التسويق الاكتروني واكمن البرمجة من المعاهد أم اخد انظمة المعلومات الحاسوبية واخد التسويق من المعاهد
مرحباً عمرو، فهمت أنك بين خيارين، دراسة الأنظمة الحاسوبية بالجامعة ودراسة التسويق الإلكتروني بأحد المعاهد أو العكس.
إذا كان فهمي لسؤالك صحيحاً فسيعود الأمر لك في النهاية، ما هو التخصص الذي تريد أن تتعمق به؟ الأنظمة الحاسوبية أم التسويق الالكتروني؟ في الغالب المجال الذي تقضي به عدة سنوات من الدراسة يجب أن يكون المجال الذي ترغب أن تتطور به وتعمل به مستقبلاً.
الدراسة الجامعية لا تعطيك أساسيات المجال فقط، بل تؤهلك كذلك لكثير من الأمور حول المجال مثل المجالات المتعلقة والعلاقات في المجال من زملاء وأساتذة وعمل العديد من المشاريع داخل الجامعة وربما خارجها أيضاً مما يجهزك لسوق العمل.
مختصر النصيحة، ادرس المجال الأهم بالنسبة لك في الجامعة.
كل التوفيق عمرو
احسنت بارك الله بك ، وجعلها في ميزان حسناتك
انا في اول الطريق الى البرمجة
وعسى ان تكون انت معلمي الاول ، لان انا لم ادرس البرمجة لكن من عشاق البرمجة والبرامج
وكان امنيتي ان اصمم برنامج
وبارك فيك. ومرحباً بك في عالم البرمجة. راجعي قسم التدريب.
كلامك يأستاذي أفادنا كثيرا نفع الله بعلمك
لدي سؤال :
هل الإطلاع على هذه المواد دون الالتحاق بالجامعة تفيدني في علوم الحاسب أم أنها مضيعة للوقت وأكتفي بتلعم البرمجة فقط
“مواد يدرسها طالب علوم الحاسب
مقدمة للبرمجة.
هياكل البيانات.
الرياضيات المتقطعة.
نظم قواعد البيانات.
تحليل وتصميم الخوارزميات.
مبادئ الذكاء الاصطناعي.
بناء المترجمات.
التفاعل بين الإنسان والحاسب.
التنقيب عن البيانات.
تصميم وإدارة الشبكات.
مبادئ التشفير.”
ما شاء الله . أنا سأبدأ من اليوم بإذن الله 12/1/2020 بتعلم البرمجه وأسأل الله التوفيق في هذا العام وأن يمكننا الله من تطوير أنفسنا وتطوير الكون من حولنا .
جزاك الله خيرا .
ولو فيه نصيحه وعندك مواد يمكن البدء بها بكون شاكر لك . أنا سأبدأ بتعلم لغة جافا من الصفر علما بأنني ليس لدي أي معرفه سابقه عن البرمجه .
كلامك غير منطقي وغير صحيح وغير قابل ، الحقيقة أن أكبر مبرمجي العالم تعلمو البرمجة عن طريق الدورات والتعلم الذاتي بواسطة الإنترنت وأخص بالذكر اليوتيوب وخير مثال على ذلك :
استيف جوبز ، بيل جيتس ، بيل بارنت وهذا الأخير (بيل بارنت) تعلم البرمجة وهو في سن الأربعين وأصبح من كبار المبرمجين وكون شركة خاصة بالبرمجيات وصار مليونير
من الجميل يا مصطفى أن نتفق في إمكانية تعلم البرمجة دون دراسة علوم الحاسب.
وبغض النظر عن الأسماء المذكورة، أجرِ مسحاً لمن يتبوأون مناصب برمجية عليا في الشركات الكبيرة وصنفهم إلى.
(1) مبرمج تعلم البرمجة دون علوم الحاسب.
(2) مبرمج تعلم البرمجة مع علوم الحاسب.
ستجد الإجابة واضحة.
أما ناحية عملية فجودة إنتاج (برمجة) الدارس يختلف عن إنتاج غير الدارس (غالباً). ولكن يظل عدم الدراسة لا يمثل مانعاً من تعلم البرمجة إطلاقاً.
أتابع مدونك لانى ارد ان اكون مبرمجا .. شكرا على التوضيح .
وأتمنى أن يأتي اليوم الذي تكون فيه هذه الأمنية واقعاً. كل التوفيق لك.
شكرا استاذي الجليل
فقد كنت وما زلت أبحث عن شخص ينير لي هذا الطريق الشائك وأظنك لا تمانع في أن تكون عونا لي. ورغم أني رجل متقدم في السن الا اني أؤمن بأنه يتحتم علينا معرفة التكنولوجيا التي تحيط بنا من كل جانب ولا مفر من التعامل معها اضافة الى تسهيل تعليم هذه العلوم للاجيال القادمة.
اكرر شكري وتقديري لك.
مرحباً بك أخي الكريم أحمد،
هذه هي الروحُ والعزمُ الذي يفيد. يُسعدني لك أخي أحمد وأتمنى لك كل التوفيق.
لا احمل اي مؤهل اكاديمي لكني بدات افهم منك الكثير..
مرة اخري ممنون لجمالك شرحك
وشكراً لك مرة أخرى على وحودك الجميل 🙂
شكرا على مجهودك يا استاذ مصطفى
شكراً على وجودك محمود 🙂