دروس اكاديمية

14/11/2012 21:57:58

كيف أصبحت مبرمجاً في عشر سنوات .

إن عملية اختيار المسار الوظيفي الصحيح في مجال المعلوماتية تعد واحدة من أكثر الأمور صعوبة وتشعباً بسبب كثرة التخصصات وتطور التكنولوجيا بشكل سريع وخلق فرص عمل جديدة لم تكن موجودة من قبل.

سنتناول اليوم دراسة المسارات المختلفة الذي يجب أن تسلكها لتصبح مبرمج جيد وماهي الطرق بالتفصيل التي تناسب كل نوع من أنواع التطبيقات التي تريد برمجتها .

ولكن قبل ذلك يجب أن نوضح بعض النصائح الأساسية التي يجب ان تؤمن بها خلال مسيرتك البرمجية قبل الدخول في شرح المسارات الوظيفية.

لن تتعلم البرمجة في 24 ساعة

ليس بالأمر السهل أن تصبح مبرمجاً جيداً ولن أدعي بوجود حلول سحرية وسريعة كما يدعى البعض , فحقيقةً اتعجب كثيراً ممن يسمون مؤلفاتهم تعلم البرمجة في 24 ساعة وهي في الحقيقة نوع من أنواع التسويق والترويج للكتاب لا أكثر فهذا إن دل على شيء فهو يدل على أحد أمرين فإما مجال برمجة الكمبيوتر هو أمر سهل للغاية ويمكن لأي شخص تعلمه في يوم واحد أو إما الناس على عجلة من امرهم ويريدون شيء سريع للتعلم , يمكن تشبيه هذا الامر بالتعلم من الكتب والفيديو فدوماً باعتقادي التعلم من الكتب يتطلب وقتاً اطول ولكنه ربما في الكثير من الأحيان أفضل.

من المهم أن تعرف أن قدرة اكتساب الانسان على المهارة في أي حرفة ومهنة يتطلب وقت وزمن كبير ولايمكن تعلم أي شيء بسرعة فالأمر يتطلب مثابرة وعمل متواصل ومضن ولا تتعجب من القول إن تعلم البرمجة في 10 سنين هو أمر منطقي للغاية وفقاً لـدراسة أجراها كل من  
(Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973) .

في النهاية أحب ان اسأل لم لا نجد كتب لتعلم الرياضيات أو الفيزياء أو الكيمياء في 24 ساعة ؟

أحبب البرمجة كما لم تحب أحداً من قبل :

إن لم تكن تحب هذا المجال حب أعمى فصدقني لن تبدع فيه لأنك ستجد نفسك في كثير من الأوقات في مشاكل برمجية عصيبة قد تخرجك عن طورك وتثير اعصابك لذا ذكر نفسك وسجل على ورقة لم تريد أن تصبح مبرمجاً وتذكر هذه الأسباب كلما تواجهك هذه المشاكل .

اكتسب خبرة وأنت في المنزل :

العديد من الشركات تطلب خبرة عند التوظيف ولكن لحسن حظ المبرمجين فإنه بإمكانك أن تكتسب خبرة وأنت في المنزل عكس العديد من المهن الأخرى والتي تتطلب وجود فيزيائي في الشركات لتكتسب خبرة في مجال العمل.

إن أفضل طريقة للتعلم هي عن التعلم عن طريق التنفيذ learn by doing ولتحقيق هذا الأمر يجب عليك تحديد مهام متدرجة بالصعوبة وتقدير للاخطاء والمشاكل بشكل دقيق وقم بالعمل على مشاريع شخصية منفردة وانشرها على الانترنت في مواقع هامة كـ codeproject أو github أو sourceforge وغيرها.

ابق على تواصل مع مبرمجين آخرين :

حقيقة هذا الأمر مهم للغاية فالتواصل الاجتماعي مع المبرمجين مهم للغاية على عدة أصعدة فالتواصل مع المبرمجين يكسبك خبرة على الأقل بنصائح حول الطريق الذي يجب أن تسلكه في بعض الاحيان أو حول آخر التقنيات الجديدة .
يمكن ان يتخذ التواصل عدة اشكال فيمكن التواصل الشخصي أو التواصل عبر برامج الدردشة أو حتى بإمكانك ان تتواصل مع مبرمجين مهمين بمتابعة صفحاتهم على شبكات التواصل الاجتماعي او مدوناتهم الشخصية مثلا هذه المدونة قد تجدها مفيدة.

صفحة المبرمجون السوريين. ومجموعة الملعوماتييون السوريون و مجموعة طلاب كلية الهندسة المعلوماتية وويكيتيكي ولا تنسى صفحتنا العزيزة الرقميات ^_^.

ليس كل المبرمجين هم خريجوا جامعات :

إن البرمجة هي حرفة ويجب أن تؤمن بهذا الأمر فالبرمجة حرفة وليست هندسة فيمكن ان يتقنها أي شخص طموح ولا ترتبط بدراسة مجال محدد كعلوم الحاسب والمعلوماتية وغيرها من التخصصات الأكاديمية.

من مميزات الدخول إلى الجامعة انك ستتواصل مع أشخاص يملكون نفس الرغبات والميول البرمجية ومن المهم عندها تكوين وبناء شبكة علاقات مع زملائك وقم باختيار الأفراد الذي لهم مستقبل واعد وابق على تواصل قوي معهم .

ننصحك بالإطلاع على هذا المقال لتتعلم حول بعض المواقع المفيدة التي من الممكن ان تتعلم منها بشكل ذاتي .

العمل الجماعي :

قم بالعمل على مشاريع برمجية مع مبرمجين آخرين وكن المبرمج الافضل والاسوأ على حد سواء فعندما تكون الافضل ستقود غيرك وعندما تكون الاسوأ ستكتسب خبرات . وكما يقال يد الله مع الجماعة.

ابدأ حيث انتهى الآخرون :

قم بالعمل على مشاريع منتهية وتعلم كيف تكمل عمل غيرك وتصلح الاخطاء وتعلم كيف تصمم بشكل جيد "مبادىء هندسة برمجيات " بحيث يصبح برنامجك قابل للتطوير فيما بعد.

تعلم عدة لغات برمجة وأنماط البرمجة متنوعة:

يوجد عدد قليل من أنماط البرمجة وعدد كبير جداً من لغات البرمجة . يمكن القول بأن انماط البرمجة هي منهجية تفكير سير عمل البرنامج وبناء مكوناته فالنمط الذي يعتمد على مفهوم البرمجة غرضية التوجهه الأكثر شهرة OOP يعتمد على نمذجة مفهوم الكائنات في هذا العالم وكيف نمثل مجموعة من الاغراض وكيف تتفاعل هذه الاغراض فيما بينها بينما يوجد العديد من لغات البرمجة الذي تحقق هذا المفهوم كلغة الجافا java وC# والبايثون ...الخ .

يوجد نمط آخر يتناول مفهوم سير البرنامج بشكل مجموعة من الوظائف المتلاحقة وهو مايعرف بالنمط الدالي functional programming بحيث يكون البرنامج مؤلف من تابع يقوم بوظيفة محددة وعندما ينتهي يبدأ عمل تابع آخر كلغة Scala ننصحك بهذا الكورس .
وهناك نمط آخر يدعى النمط المنطقي
Logical وهو يعتمد على أن تقوم بتوصيف المشكلة للحاسوب وهو يقوم بحلها لا ان تقوم بتوصيف الحل كلغة برولوغ.
ننصحك بالتعرف على هذا الكورس

تذكر هناك كمبيوتر في علوم الكمبيوتر :

لن أنسى ذلك اليوم عندما قمت ببرمجة أول لعبة شطرنج ثلاثية الأبعاد تعمل بالصوت البشري وكيف كانت بطئية للغاية رغم أنها تعمل على حاسب ذو امكانات خارقة إلا أن اكتشفت ان العطل كان مني ومن كتابتي للكود البرمجي بشكل سيء وتم إصلاح المشكلة .

المبرمج الجيد هو الذي يعرف كيف يكتب برنامج بشكل يستثمر فيه قوة أداء العتاد فمثلا من المعروف بأن القرص الصلب هو عنق الزجاجة في كل عمليات البرمجة فلا يجب على المبرمج ان يقوم بعمليات جلب معلومات كثيرة من القرص الصلب لأن هذا سيبطىء من عمل البرنامج . كنا قد كتبنا عن سبب اختلاف سعر كرت الشاشة المخصص للألعاب وكرت الشاشة المخصص للأعمال الاحترافية وبينا ان السبب الرئيسي لاختلاف السعر والفارق الكبير بينهما هو ببرنامج التعريف لا العتاد الهاردوير . ننصح بهذا الكورس

تعلم معايير البرمجة standardization

يوجد معايير لكتابة الأكواد البرمجية ويجب ان تكون على إطلاع جيد عليها كما ننصحك بدراسة هندسة البرمجيات أيضاً .

 

بعد هذه المقدمة الطويلة سنخبرك على الوصفة السحرية لتصبح مبرمج جيد وهي مؤلفة من 4 خطوات وسنتوسع بشرح الخطوة 3 :

1: تعلم علوم أساسية مرتبطة بعلوم الحاسب

الرياضيات : الرياضيات المتقطعة والتحليل العددي والجبر الخطي والاحتمالات.

علم المنطق . وكلا منهما هو يعد أساس لجميع التخصصات والمسارات اللاحقة ويمكن تعلم علوم اخرى بحسب نوع البرمجة التي تريد العمل عليها .

2: تعلم مفاهيم في قواعد المعطيات

كالجداول والاجرائيات procedures و الطلب queries يمكنك ان تختار احد هذه البرمجيات لتتعلم عليها

MS Access,DB V,Fox Pro,Paradox,MySQL

وننصح دوماً بتعلم MySQL لعدة أسباب أهمها مجانيته وهو مستعمل بشكل شائع وأكثر مايتم تعليمه في المدارس والجامعات .ننصحك بالاطلاع على هذا الكورس التفاعلي والمميز .

3- قرر أي نوع من التخصصات البرمجية تريد ان تتخصصها

عادة يصنف عمل المبرمجيون ضمن واحدة من هذه الفئات

1- مبرمج الويب web programmer

2- مبرمج تطبيقات مكتبية desktop application programmer

-         مبرمج متخصص بنظام تشغيل معين .

-         مبرمج مستقل عن نظم التشغيل .

3- مبرمج تطبيقات موزعة distributed applications

4- مبرمج مكتبات و منصات platforms أو framework

5- مبرمج نظم system programmer

          - مبرمج نواة kernel

          - مبرمج برامج تعريف driver

          - مبرمج كومبايلر compiler

6- عالم برمجة programming scientist

4- تعلم التقنيات البرمجية ولغات البرمجة المرتبطة بالمجال الذي اخترته في 3 .

 

برمجة الويب web programming :

1- اعرف ماهي برمجة الويب وتطبيقات الويب :

من المهم ان تفهم ماهي تطبيقات الويب والتي يمكن تعريفها بشكل بسيط بأنها مكونات صممت لتعمل باستعمال بنية الانترنت والتي هي بشكل مبسط شبكة مؤلفة من شبكات network of networks . إن عملية بناء تطبيقات ويب لا تتطلب ان تكون متصلاً بالانترنت فبرمجة تطبيق ويب يعني أن تقوم ببناء تطبيق باستخدام إحدى هذه البروتوكولات كـ :

HTTP,FTP,POP3,SMPT,TCP,IP

باستعمال أحد هذه اللغات البرمجة مثلا HTML,XML,ASP,JSP,PHP,ASP.NET,COLDFUSION