كمبرمج سوف أنصحك بأنه من الضروري أن تفعل التالي:
زد من قوة لغتك الإنقليزية قدر الإمكان؛ فللأسف فإن الإنقليزية هي مصب العلم البشري عامةً و البرمجي خاصةً، و لا يمكنك متابعة الجديد (و أغلب القديم) إلا إذا كانت لغتك الإنقليزية قوية (أو علي الأقل متوسطة مثل حالتي).
تعلم لغة برمجة قوية، أنا أفضِّل أن تكون الـjava أو الـ#C بدلاً من الـ++C، لكن إن كنت تفضل الأخيرة أو فُرضَت عليك في التعليم فلا مشكلة، و يمكنك مراجعة مقالي الذي أوضحتُ فيه سبب تفضيلي للـjava علي غيرها:
و من نافلة القول أنه يجب عليك أن تتعلم كيفية استخدام بيئة برمجة متكاملة IDE تدعم لغة البرمجة التي اخترتَها، فلو اخترتَ الـjava فيمكنك أن تتعلم بيئة الـnetbeans، و لو اخترتَ الـ#C فيمكنك أن تتعلم الـvisual studio، و هكذا. و تعلُّم بيئة البرمجة لا يعني مجرد استخدامها لكتابة البرامج فيها و تنفيذها فقط، بل يعني علي الأقل (بالإضافة إلي ما سبق ذكره) كيفية عمل تنقيح debug لبرامجك، و كيفية استغلال الإمكانيات المختلفة للبيئة لتسريع عملية البرمجة قدر الاستطاعة.
تعلم هندسة البرمجيات software engineering، و من الأفضل أن تقوم في البداية بالتركيز علي الأمور التي تخدمك عملياً، و أن تؤجل الأمور النظرية المحضة لما بعد. و أعني بالأمور التي تخدمك عملياً العديد من الأشياء، كنماذج التطوير البرمجية (مثل نموذج الشلال waterfull ، و البرمجة الرشيقة agile)، و الأدوات البرمجية التي ستخدمك في زيادة إنتاجيتك، إلخ. أما الأمور النظرية فأعني بها الأمور التي ليست لها علاقة كبيرة بالواقع، أو التي لا تحتاجها أنت بصفة شخصية، مثل طريقة تنظيم عمل الفرق البرمجية و إدارتها، فهذا أمر يمكنك تأجيله لما بعد الوصول لمرحلة جيدة في البرمجة بدون أن تخسر الكثير (بل و ربما لا تحتاجه من الأصل إن عملتَ منفرداً).
تعلم هياكل البيانات data structures، و هو من العلوم الغاية في الأهمية بالنسبة لك كمبرمج، و لا يمكن الاستغناء عنه. و يرتبط ارتباطاً وثيقاً بتعلم لغة البرمجة القوية؛ حيث أنه سيجعلك تتعمق أكثر و أكثر في تعلم تلك اللغة و تتقنها أكثر لتكون قادراً علي بناء الهياكل المختلفة.
تعلم الخوارزمات algorithms، و هو علمٌ له نفس ما لهياكل البيانات من أهمية. و ستجد شروحات بالعربية له علي موقع kutub.info، مثل ما علي الروابط التالية:
http://kutub.info/library/b...
http://kutub.info/library/b...
http://kutub.info/library/b...
http://kutub.info/library/b...
جرب مختلف أنواع أنظمة التشغيل التي يمكنك أن تجربها، لا تكتف بالـwindows أو الـgnu/linux، بل جرب هذه الأنظمة و تعود عليها، ثم ابحث عن الجديد لتجربه إن استطعت.
تعلم أساسيات التعامل مع قواعد البيانات databases (يمكنك تأجيل هذا لما بعد التمكن مما ذكرتُه بالأعلي)،
تعلم أساسيات إنشاء مواقع الويب (يمكنك تأجيل هذا لما بعد التمكن مما ذكرتُه بالأعلي)
النصيحة الغاية في الأهمية هي أن تقرأ بنهم في مختلف المواضيع الحاسوبية، اقرأ كأنك لا تجد شيئاً آخر لتفعله؛ حتي تتكون لديك صورة شاملة تربط بها بين كل ما تعلمتَه و ما لم تتعلمه بعد، و يكون بإمكانك ساعتها أن تعرف العلاقة بين مختلف العلوم الحاسوبية و التداخلات بينهن. و يمكنك أن تبدأ بمتابعة المواقع الإخبارية التقنية العربية، ثم بعدما تقوي لغتك الإنقليزية يمكنك متابعة المواقع الغربية المشهورة.
في النهاية: خذ الأمور بالتدريج و لا تتعجل، و من الأفضل أن تتمرن عملياً علي كل ما تدرسه حتي تجيده:
التعليقات