كيف تصبح مبرمجا ؟
إن طريق لكي تصبح مبرمجا طريق طويل وشاق . وبخلاف ما قد تجده في بعض الكتب أو المقالات، لا يمكن تعلم البرمجة بصورة فعلية في غضون 7، أو21 أو حتى 365 يوما. والبرمجة عبارة عن عملية تراكمية بحيث تطور من مهاراتك يوما بعد يوم وسنة بعد سنة. ومع ذلك ، يمكنك أن تجعل من البرمجة أمرا مسليا ومجزيا في الوقت نفسه (عقليا ،وروحيا وماديا). سيرشدك هذا المقال من خلال وضع النقاط الأساسية لكيف تصبح مبرمجا في إحدى مجالات البرمجة الحديثة. كما لا يعدك هذا المقال بطريقة سحرية ، سهلة التطبيق لأن تصبح مبرمجا ، كما أن ترتيب الخطوات المذكور ليس ملزما البتة.
الخطوات
1. هيئ نفسك لكي تصبح مبرمجا:
أ. خذ دورة تمهيدية واحدة على الأقل في الرياضيات (رياضيات تمهيدي على سبيل المثال حيث سيحسن من خبرتك كمبرمج بشكل ملحوظ).
ب. خذ دورة تمهيدية في المنطق ، الرياضيات المنفصلة (Discrete) أو كلاهما.
ج. تعرف على واحدة على الأقل من تقنيات مفاهيم البرمجة التالية: (كلما تعمقت في البرمجة ستحتاج لتعلم جميع التقنيات المذكورة تقريبا. تم ترتيبهم حسب الترتيب المتعارف عليه).
• رسوميات التحكم Flow Charting (عالميا تعتبر الأسهل للتعلم).
• البرمجة بأسلوب أشباه الأكواد (Pseudo-Code).
• لغة النمذجة الموحدة (UML).
• نموذج العلاقات الكائنية (ORM).
د. تعرف على مفاهيم قواعد البيانات البسيطة مثل الجداول ، views/queries ، والإجراءات. يمكنك استخدام أي تطبيق قواعد بيانات للقيام بذلك مثل MS access, DB V, Fox Pro, Paradox.
هـ. تعرف على أساليب البرمجة (ستكون مقدمة كافية للوقت الحالي) ، ومن أهمها الاجرائية ، الكائنية التوجه ، الوظائفية ، المنطقية أو البرمجة التصريحية.
2. قرر أي نوع من المبرمجين تريد أن تكون/تصبح!! المبرمجون بصفة عامة يندرجوا تحت واحدة من الفئات التالية:
أ. مبرمج ويب
ب. مبرمج تطبيقات مكتبية
• موجهة حول نظام تشغيلي (مرتبطة بنظام تشغيلي واحد أو مجموعة من أنظمة التشغيل).
• مستقل متعدد المنصات.
ج. مبرمج تطبيقات موزعة.
د. مبرمج إطار عمل/منصة/مكتبة
هـ. مبرمج أنظمة
• مبرمج نواة (كيرنل)
• مبرمج تعريفات الأجهزة
• مبرمج مترجمات
و. عالم برمجة .
3. تعلم لغات البرمجة والتقنيات ذات الصلة بالمجال الذي قمت باختياره. في الفصول القادمة سنقوم بتقسيم الخطوات الثلاث الرئيسية إلى مهام أكثر تحديدا. مبرمجي الويب:تكمن تطبيقات الويب في خادم ويب ويتم الوصول إليها عن طريق متصفح ويب.
تطبيقات الويب عبارة عن أجزاء برمجية صممت للعمل على أساس الهندسة المعمارية للشبكة المعلوماتية. وهذا يعني أنه يتم الوصول لهذه التطبيقات عن طريق استخدام متصفحات الويب مثل فايرفوكس أو انترنت اكسبلورر. على الرغم من أنها بنيت على أساس الهندسة المعمارية للانترنت ، الا أنها لا تتطلب بالضرورة اتصال نشط بالانترنت. وانما يعني ذلك أن تطبيقات الويب مبنية على معايير تقنيات الشبكة مثل HTTP ، FTP ، POP3 ، SMTP ، TCP وبروتوكول IP ، ولغات مثل HTML ، XML ، ASP ، JSP ، PHP و ASP.NET إلى جانب العديد من تقنيات الانترنت. شبكات الانترانت المتعلقة بالشركات تعد أمثلة على تطبيقات الويب التي لا تحتاج لتشغيلها اتصال نشط بشبكة الانترنت.
1. تصفح العديد من مواقع الانترنت المتنوعة لتتعلم كيف تبدو هذه المواقع في العادة. نعني بالتنوع في هذا السياق هو من ناحية النوع/المحتوى الذي يتضمنه الموقع وليس عدد المواقع التي تمت زيارتها. عموما ، فأنت بحاجة لزيارة موقع واحد على الأقل من كل الأنواع التالية لمواقع الانترنت:
o مواقع الشركات (الشركات التجارية ، المنظمات/الشركات الغير ربحية و المنظمات الحكومية)
o محركات فهرسة الويب (محركات البحث ، مواقع بحث البيانات الوصفية ، محركات البحث المتخصصة و الأدلة)
o مواقع تنقيب البيانات
o المواقع الشخصية
o صفحات الموسوعات/المعلومات (ويكي ، صفحات البيانات ، المواصفات التقنية ، أدلة سرد كتيبات الإرشاد ، المدونات والمفكرات ، المواقع الإخبارية ومواقع الوكالات الإخبارية والأدلة التجارية)
o المواقع الاجتماعية (البوابات الاجتماعية ، مواقع التصنيف ومواقع التدوين)
o المواقع التعاونية (وهذا يشمل الفئات الأخرى المذكورة أعلاه مثل الويكي والمدونات)
2. تعلم واحدة عى الأقل من تقنيات/طرق تبادل الأفكار (العصف الذهني) وبرنامج يقوم بتطبيق هذه الطريقة (على سبيل المثال:رسوم العصف الذهني البيانية و MS Visio)
3. تعرف على هيكلة مواقع الانترنت (إنشاء تخطيطات الويب التخيلية ، خرائط الموقع وطرق الإبحار في الويب).
4. خذ دورة سريعة في التصميم وتعلم استخدام تطبيق واحد على الاقل من تطبيقات تحرير الرسوميات (هذا البند اختياري ولكنه موصى به بشدة)
5. تعلم أساسيات البنية التحتية للانترنت. ويشمل هذا الحصول على فكرة أساسية عن كل من:
o قاعدة بروتوكولات خدمات الشبكة (HTTP, FTP, SMTP, و POP3 أو IMAP4)
o برامج خادم الويب (ويفضل واحد للمنصة التي ستعمل عليها في الغالب)
o برامج تصفح الانترنت
o برامج البريد الإلكتروني.
6. تعلم لغات مثل HTML و CSS إلى جانب بعض تطبيقات "ما تراه هو ما ستحصل عليه(WYSIWYG)” لتحرير صفحات HTML.
7. تعلم XML والتطبيقات ذات الصلة مثل XSL و XPath (اختياري ولكن يوصى به)
8. قم بإنشاء مواقع بسيطة ساكن حتى تكون لغة HTML مألوفة لديك ومرتاح لاستخدامها.
9. تعلم لغة تفاعلية -من جانب الزبون- (يتعلم أغلب المستخدمين أما لغة ********** أو VB****** ، ولكن يفضل البعض تعلم لغة بيرل أو لغة أخرى بدلا من ذلك) كما تعلم DHTML.
10. عوّد نفسك على استخدام اللغة التفاعلية التي قمت بتعلمها. حاول الوصول لهدفك عن طريق استخدام تلك اللغة فقط. انتقل للخطوة التالية فقط عند إتقانك للغة التفاعلية.
11. تعلم لغة تفاعلية -من جانب الخادم-. إذا اخترت أن تحد نفسك بتطبيق خادم واحد ، فتعلم لغة واحدة مدعومة من قبل ذلك التطبيق. أما إذا لم تقم بذلك ، فعليك تعلم لغة برمجية واحدة على الأقل على كل خادم تعمل عليه.
12. قم بإنشاء مشروع تجريبي لك بعد الانتهاء من تعلم اللغة التفاعلية -المتعلقة بالخادم-.
13. احصل على موقعك الشخصي وابدأ تجاربك الخاصة من على صفحتك بالشبكة. مبرمجي التطبيقات المكتبية :
تطبيقات سطح المكتب لا تحتاج لمتصفح وتعمل بشكل مستقل. متصفح الإنترنت نفسه هو أحد تطبيقات سطح المكتب ، وأغلب مبرمجي تطبيقات سطح المكتب يكتبون برامج كحلول تجارية ، فلذلك أخذ فكرة عن الأعمال التجارية والهيكل التنظيمي والمالي للمؤسسات سيوفر لك الوقت والجهد الكثير.
1. الوقوف على مختلف بنيات أجهزة الحاسب الآلي. وأخذ دورة تمهيدية في تصميم الدوائر الرقمية وأخرى في هندسة الحاسب المعمارية أمر مفيد ، الا أن البعض يرى أنها صعبة كنقطة بداية في هذا المشوار ، ولذلك تكفي قراءة مقالين تعليميين أو ثلاثة ، ثم يمكنك العودة لهذه الخطوة في وقت لاحق ، بعد أن تتقن لغتك البرمجية الأولى.
2. تعلم لغة برمجية بسيطة (للأطفال). لا تخجل من تعلم مثل هذه اللغة فقط لأنك أكبر سنا من أن يطلق عليك "طفل”. بحيث يمكن لمثل هذه اللغات البرمجية أن تسهل من ألم تعلم لغتك البرمجية الأولى بصورة ملحوظة. ولكن هذه الخطوة اختيارية ويمكن القيام بها قبل الخطوة السابقة.
3. الحصول على مدخل في أساليب البرمجة الوظيفية ، الكائنية المصدر والبرمجة الإجرائية.
4. أخذ دورة تمهيدية في واحدة من لغات البرمجة الإجرائية. بغض النظر عن اللغة التي ستختارها لاحقا ، فأنك ستحتاج للبرمجة الإجرائية عند مستوى معين. كما أن أغلب المبرمجين يرونها بأنها الأسهل للاستعمال كنقطة بداية ولتكوين فكرة عن البرمجة عموما.
5. تعرف على واحدة على الأقل من تقنيات النمذجة المتقدمة مثل UML أو ORM.
6. ابدأ بكتابة بعض تطبيقات سطر الأوامر الصغيرة (يمكنك الاستفادة من التمارين العامة في كتب لغات البرمجة).
7. خذ دورة متقدمة في اللغة البرمجية التي قمت باختيارها في الخطوة رقم 3. تأكد من فهمك المفاهيم التالية جيدا مع إمكانية التطبيق دون صعوبة تذكر قبل المضي قدما:
o إدخال وإحراج المعلومات إلى مستخدمي البرنامج.
o الانسياب المنطقي وانسياب تنفيذ تعليمات البرامج بالنسبة للبرمجة الاجرائية.
o تصريح ، وتعيين ومقارنة المتغيرات.
o تراكيب البرمجة الشرطية مثل if..then..else و select/switch..case.
o التراكيب التكرارية (الحلقية) مثل while..do ، do..while/until ،for..next.
o القواعد اللغوية للغتك البرمجية الخاصة بإنشاء واستدعاء الإجراءات والدوال.
o أنواع البيانات وطرق استعمالها.
o أنواع البيانات المعرفة من قبل المستخدم (الوحدات/التراكيب/السجلات) واستخدامها.
o إذا كانت اللغة المستخدمة تدعم overloading functions ، فافهمها.
o طرق وصول اللغة المستخدمة للذاكرة مثل (المؤشرات ، الخ...)
o اذا كانت اللغة المستخدمة تدعم operators overloading ، فافهمها.
o اذا كانت اللغة المستخدمة تدعم مؤشرات الدوال/المندوبين ، فافهمها.
8. قم بتطبيق التقينيات المتقدمة التي تعلمتها.
9. خذ دورة تمهيدية في لغة برمجية واحدة على الأقل ضمن نموذج برمجي مغاير ، ويفضل في إحدى النماذج التالية (نوصي بتعلم لغة برمجية واحدة من كل مسار ، وأغلب المبرمجين المحترفين يقومون بذلك ، ومع ذلك ، فأنك عادة ما تبدأ مع نموذج واحد ، والعمل عليه مع تطبيق وممارسة ما قمت بتعلمه ، ثم وفي وقت لاحق قم بتعلم اللغة الأخرى بعد أن تكون لديك خبرة عملية في البرمجة).
o البرمجة الكائنية المصدر
o البرمجة المنطقية
o البرمجة الاجرائية
10. حاول إجراء مقارنة بين أي لغتين برمجيتين تعلمتهما حتى الآن للوقوف على مواطن القوة والضعف لكل منهما. وعادة ما يتم ذلك عن طريق:
o أخذ عينات بسيطة من أعمالك المبكرة في اللغة البرمجية الأولى وإعادة كتابتها مستخدما اللغة البرمجية الثانية.
o أنشأ مشروع جديد وحاول تنفيذه باستخدام كل من اللغتين. أحيانا ، وحسب اختيارك للمشروع واللغات البرمجية المستخدمة في تنفيذه ، قد لا تكون قادرا على تنفيذ المشروع باستخدام إحدى اللغات!
o كتابة ورقة سريعة أو جدول تلخيصي للمقارنة بين التراكيب المتشابهة في كل من اللغتين والخصائص المميزة لكل منهما.
o حاول إيجاد طرق لمحاكاة الخصائص المميزة بكل من اللغتين باستخدام اللغة الأخرى.