1. خذ دورة سريعة في أنظمة الاتصال الهاتفية وأجهزتها. هذه الخطوة اختيارية. مع ذلك ، تعتبر مفيدة لفهم علوم الشبكات.
2. تعرف على الهندسة المعمارية للشبكات والاجهزة المستخدمة مثل المجمعات ، و المبدلات ، والراوترز.
3. خذ دورة في أساسيات وبروتوكولات الشبكات. فأنت بحاجة لفهم جيد لكل من نموذج OSI ، شبكة الإيثرنت ، IP ، TCP ، UDP و HTTP قبل البدء ببرمجة مثل هذه التطبيقات.
4. تعلم لغة XML وتعرف على حيثياتها.
5. قم بالخطوة الثانية والثالثة من خطوات إعداد نفسك لبرمجة تطبيقات سطح المكتب.
6. ابدأ من خلال تعلم لغة نصية -سطر الأوامر-. في إذا كنت تبرمج تحت نظام ويندوز ، فيمكنك اختيار أي لغة نصية تعمل ضمن مضيف ويندوز للغات النصية. أما بالنسبة للبرمجة على نظام لينكس ، فيكفي استخدام كل من نصوص Bash و Perl. كما يوصى بشدة اعتماد ********** لهذه المهمة في كل من المنصتين (لينكس/ويندوز) وذلك للأسباب التالية:
o توفر الدعم من قبل أي مضيف نصي في أي نظام تشغيلي (يدعم نظام ويندوز ****screipt بشكل افتراضي ، كما أن اغلب توزيعات لينكس تحتوي على حزمة لدعم برمجة **********).
o تعتبر الأسهل للتعلم من قبل العديد من المطورين.
o تحتوي على قواعد مستمدة من ALGOL والذي يجعل من اللغات الأخرى أمرا مألوفا عند رغبتك باختيار لغة برمجية ثانية (تحتوي كل من C, C++, C#, **** و J# على هذه الخاصية)
o عن طريق تعلم ********** ، ستعرف نفسك على البرمجة -الموجهة للعميل- والتي تعتبر اثر جانبي إضافي.
7. قم بتطبيق البرمجة الإجرائية فقط باستخدام اللغة البرمجية النصية كبداية. بعد ذلك ، يمكنك استخدام نماذج وتقنيات برمجية متقدمة أكثر حسب اللغة المستخدمة والتقنيات التي تدعمها. جميع اللغات البرمجية النصية تحتوي على بعض سمات البرمجة الإجرائية.
8. استخدم اللغة النصية التي تعلمتها في كتابة نصوص برمجية تقوم باتصالات بين الأجهزة. تعرف على النقاط الأساسية للقيام بذلك. ويكفي القيام باتصالات بسيطة.
9. انتقل لاستخدام لغة برمجية/نصية مكتبية. من المفضل اختيار لغة تدعم عدة أساليب برمجية مثل بايثون. خذ مقدمة بسيطة لهذه اللغة البرمجية الثانية. تعتبر لغة جافا من اللغات المفضلة لأغلب المبرمجين في هذا المجال لأسباب عدة ، ومع ذلك فإن لغة #C اكتسبت زخما سريعا في هذا المجال. يفض استخدام لغة جافا و #C وذلك للأسباب التالية:
o تعتبر من اللغات البرمجة الكائنية التوجيه ، والتي تحمي المبرمجين - بشكل عام - من الاهتمام بتفاصيل التنفيذ لأنهما على حد سواء تدعم وحدات (الوحدات هي عبارة عن مجموعة من الشفرات المصدرية شبه مترجمة ، و تقوم بمهمة محددة مع امكانية استخدامها في برامج أخرى).
o تدعمان البرمجة الموجهة بالأحداث كما تدعمان كل من البرمجة الكائنية و البرمجة الاجرائية على نفس المستوى.
o إطار العمل الذي بني عليه اللغة موزع بطبيعته (يعمل على الكثير من المنصات) (في حالة لغة جافا).
o توفر العديد من الحزم الجاهزة والتي تتعامل مع الشبكات سواء كشفرة مصدرية مفتوحة المصدر أو كحزم مدمجة باطار العمل على حد سواء ، بحيث يسهل للمبرمجين امكانية البناء على عمل الأخرين.
10. ركز أكثر على الميزات الرئيسية للغة ، خاصة تلك التي تدعم الربط الشبكي. أولِ اهتمام أقل على عناصر واجهة المستخدم مثل الاخراج ، تقنيات تصميم النوافذ ، وعناصر واجهة المستخدم الرسومية.
11. خذ دورة في تصميم والهندسة المعمارية للبرامج التوزيعية. يمكن القيام بذلك من خلال الاستعانة بالكتب ، دروس تعليمية من على الشبكة أو مقررات دراسية. على أية حال ، فهم مفاهيم الهندسة المعمارية لمثل هذه البرامج أمر ضروري.
12. تعلم بناء الخدمات و المكونات الخدمية باستخدام لغتك البرمجية.
13. تعرف على واحدة أو أكثر من التقنيات التالية. يفضل بأن تحصل على مقدمة على الأقل لكل منها. أغلب مبرمجي هذا المجال لا يتوقفوا عند حد لغة برمجية واحدة أو اثنتين ، ولكن يتعلموا لغة برمجية واحدة على الأقل لكل نظام تشغيلي. ولذلك في حالة رغبتك أن يكون تطبيقك "موزعا” ، عليك بتوفير نسخة من التطبيق لكل نظام تشغيلي رئيسي على الأقل.
CORBA
SOAP
AJAX
DCOM
NET Remoting
XML Web Services مبرمجي منصة/اطار عمل/مكتبة مبرمجي الأساس عبارة عن مبرمجي ذو خبرة فحسب حيث انتقلوا من برمجة التطبيقات لبرمجة شفرات مصدرية يمكن استخدامها من قبل مبرمجين آخرين.
1. تعلم لغة برمجية تدعم بناء حزم/مكونات قابلة لاعادة الستعمال اذا كنت لم تقم بذلك في رقم 1.
2. خذ دورة متقدمة في كل من UML و ORM. أغلب مطوري المكتبات يستخدمون احداهما أو كلاهما.
3. خذ دورة في هندسة البرمجيات.
4. تعرف على الأقل على مفاهيم وتقنيات كل من التراكيب ، كائنية المصدر ، والبرمجة الموجهة بالأحداث. فكلما زاد اطلاعك على عدد من اللغات والنماذج البرمجية ، كلما زادت فرصتك بأن تكون مبرمج حزم/مكتبات ناجح.
5. تعرف أكثر على الأنظمة التشغيلية المختلفة وأطر العمل البرمجية المدعومة من قبل هذه الانظمة التشغيلية.
6. ركز جهودك على منصة معينة وتعرف على كل من التقنيات واللغات البرمجية وأطر العمل التي تدعمها.
7. اذا كانت اللغات البرمجية التي تعلمتها حتى الآن تدعم كل من معايير ANSI/ISO/IEEE. فعليك باتقانها ومحاولة استخدامها عند الإمكان.
8. حاول تقليد مكتبات بسيطة موجودة مسبقا ، خاصة اذا كانت مفتوحة المصدر. فهذه النقطة مفيدة خلال المرحلة المبكرة في مشوارك لكي تصبح مبرمج حزم/مكتبات. ابدا مع حزم بسيطة مثل مجموعات وحدات التحويل وحزم الحسابات العلمية المتوسطة. اذا كنت طالب جامعي ، حاول الاستفادة من المواد غير برمجية عن طريق محاولة معاملة المعادلات والجانب العلمي كمكتبات.
9. حاول استخدام الحزم المفتوحة المصدر في مجالك البرمجي. في بداية الأمر قم بتنزيل الحزم الثنائية/القابلة للتنفيذ ،حاول استعمالها والتركيز على نقاط القوة والضعف. بعد ذلك ، حاول فهم طريقة عمل البرنامج وكيف تم القيام بذلك من خلال قراءة الشفرة المصدرية للبرنامج. حاول اعادة كتابة هذه المكتبات أو أجزاء منها. في البداية قم بذلك بعد الاطلاع على الشفرة ، وبعد ذلك حاول القيام بذلك قبل الاطلاع عليها. في المراحل المتأخرة ، حاول اضافة بعض التحسينات لهذه المكتبات.
10. تعرف على النهج المختلفة المستخدمة في نشر وتوزيع مثل هذه العناصر على المبرمجين.
11. عادة ما يميل مبرمجو الحزم/المكتبات على التفكير بشكل متكرر بكل المشاكل التي تواجههم.عند قيامك بذلك ، حاول التفكير بكل مشكلة على أنها مجموعة من المشاكل الصغيرة (تسلسل من المهام البسيطة) أو كعملية متكررة في تضييق نطاق المشكلة لمجالات أصغر نطاقا ثم تقوم بعد ذلك بتجميع هذه المجالات مع بعضها البعض.
12. يميل مبرمجي الحزم/المكتبات إلى التعميم. وذلك ، عندما تعرض عليهم مشكلة بسيطة ومحددة ، يقوموا بالتفكير في مشكلة أشمل ويحاولوا معالجة هذا المشكلة العامة والتي بدورها تقوم بمعالجة المشكلة اﻷصغر بصورة تلقائية. مبرمجي نظم التشغيل يتعامل مبرمجي نظم التشغيل مع نواة النظام التشغيلي التي تدير العتاد ، و مع التعريفات الأجهزة و التطبيقات المنخفضة المستوى مثل المترجمات .
1. اتبع الخطوات الثلاث الأولى في برمجة تطبيقات سطح المكتب.
2. خذ دورة تمهيدية في الجبر الخطي (linear Algebra).
3. خذ دورة في التكامل و التفاضل.
4. خذ دورة في المنطق و/أو الرياضيات المنفصلة (Discrete).
5. عرف نفسك لعدة أنظمة تشغيلية مجردة. ويمكن القيام بذلك من خلال:
o معرفة طريقة تثبيت الأنظمة التشغيلية.
o معرفة طريقة تثبيت عدة أنظمة تشغيلية على جهاز واحد (خطوة اختيارية ولكنها مستحسنة).
o قم تثبيت عدة أنظمة تشغيلية. لا تثبت أي حزم خدمية مساعدة ،وانما حاول الاعتماد على القدرات الوظيفية المجردة التي تقدمها الأنظمة التشغيلية نفسها.
6. خذ دورة (أو اقرأ كتب بدلا عن ذلك) في هندسة مكونات الحاسب المعمارية.
7. توسيع مداركك لمنصات أجهزة الحاسب المختلفة.
8. الحصول على فهم مبدئي للغة التجميع/الآلة لنظامك التشغيلي/منصة الأجهزة المستخدمة. (ستتعلم لاحقا لغة التجميع الخاصة بالأنظمة/المنصات الأخرى).
9. تعلم لغة ANSI C ، جنبا إلى جنب مع مفاهيم البرمجة الاجرائية.
10. قم بفهم وممارسة المكتبات الافتراضية للغة C خاصة STL وربما ATL أيضا.
11. قم بالبحث في مصادر الشبكة ، الكتب والمواد الدراسية لمعرفة الصفات المميزة للغة C ضمن منصتك التشغيلية.
12. قم بممارسة لغة C من خلال كتابة شفرة متقدمة.
13. انتقل لاستخدام لغة ++C.
14. تعلم خصائص متقدمة من لغة التجميع (Assembly).
15. خذ دورة في تصميم نظم التشغيل.
16. قراءة وثائق نظامك التشغيلي (ستكون هذه العملية سهلة اذا كان نظامك التشغيلي مبني على نظام يونكس التشغيلي). افهم طريقة عمل نظامك التشغيلي بصورة جيدة.
17. قم بممارسة المعرفة النظرية المكتسبة. قم بانشاء برامج خدمية متواضعة. وهي عادة ما تكون مفيدة لـ:
o حاول اعداة انشاء أدوات ضغيرة والموجودة مسبقا بالنظام.
o حاول نقل بعض الأدوات الموجودة على الأنظمة التشغيلية الأخرى لنظامك التشغيلي.
18. هذا هو المكان الوحيد الذي عليك أن تكون حذرا في اختيار لغتك البرمجية الأولى. فعليك بتعلم لغة ANSI C ، وليس لغة ++C ، ولا #C ، ولا **** ، ولا حتى لغة D.
19. التقيد بلغة C فقط لأن برمجة الأنظمة التشغيلية لأن ذلك يتطلب فهم كل من المفاهيم التالية:
o تجميع كامل وحقيقي من الشفرة المصدرية.
o التعامل مع ملفات اخراج كائنية منخفضة المستوى.
o الربط بين الملفات الثنائية.
o برمجة لغة التجميع/لغة الألة من اللغات المنخفضة المستوى. بحيث تعتبر لغة C لغة تنكرية/سهلة للتعلم مقارنة مع لغة التجميع (Assembly). كما يمكنك اضافة شفرات من لغة اﻷلة ضمن الشفرة المصدرية متى رغبت بذلك ، و تعتبر لغة اجرائية شأنها في ذلك شأن لغة التجميع. علماء البرمجة علماء البرمجة عبارة عن مبرمجين متمرسين ذو خبرة ، حيث عكفوا على تطوير تقنيات الحاسوب مثل التشفير ، لغات البرمجة وخوارزميات البحث في البيانات بدل العمل على تطوير التطبيقات. ونادرا ما يتم الوصول لهذا المستوى دون تفان ودراسة أكاديمية.
1. الحصول على خبرة معرفية علمية توازي درجة الباكلوريوس/الدبوم في علوم الحاسب الآلي. ويمكن أن يتم ذلك عن طريق سلوك أحد المنحيين التاليين:
o الحصول على درجة أكاديمية فعلية ( وهذا ما يتم عادة).
o الحصول على خطة دراسية لدرجة أكاديمية مماثلة من احدى الجامعات الحديثة ، وتقوم بعد ذلك بدراسة هذه المواد بنفسك أو كمواد دراسية منفصلة. نظريا يمكن تحقيق ذلك ، ولكن يفضل سلوك المنحى الأول.
2. تحديد مجال التخصص. وكلما كنت أكثر تحديدا في اختيارك كلما كان أفضل لك. يعتمد الاختيار حسب ميولك ، ولكن ، هذه قائمة ببعض المواضيع الرئيسية في علوم برامج الحاسوب:
o تصميم الخوارزميات مثل (البحث ، الفهرسة ، التشفير ، فك التشفير ، واكتشاف الأخطاء في الاتصالات).
o تحسين/تصميم المترجمات/لغات برمجية.
o مجالات الذكاء الاصطناعي (التعرف على الأنماط ، التعرف على الكلام ، معالجة اللغات الطبيعية والشبكات العصبية).
o علوم الروبوتات
o البرمجة العلمية.
o أجهزة الحاسب الفائقة السرعة.
o التصميم/النمذجة بمساعدة الحاسوب.
o الواقع الافتراضي.
o علوم رسوميات الحاسوب. عادة ما يخلط بين هذا المجال ومجال التصميم الرسومي أو تصميم واجهة المستخدم الرسومية. مجال رسوميات الحاسوب عبارة عن العلم المختص بكيفية تمثيل الرسوميات في أنظمة الحاسوب.
3. حاول الحصول على درجة علمية عليا مثل الماجستير أو حتى الدكتوراة
4. تعرف على اللغات البرمجية والتقنيات المستخدمة ضمن التخصص الذي قمت باختياره.