إذا ندبت حظك وقلت : لقد هربت من شبح البرمجة سابقًا وها هو يطاردني في كل مكان حتى بعد أن تخصصت في الشبكات! إذا كان لك خبرات سابقة فاشلة في البرمجة فدعني أطمئنك بأنها في الشبكات اختيارية وليست إلزامية أما إذا كنت أول مرة تقرأ عن البرمجة فلا تقلق ودعنا نأخذ جولة متخصصة في هذا المقال عن البرمجة، هذا المقال سوف يأخذ بيديك خطوة بخطوة على سلم البرمجة حتى نصل إلى غايتنا وهي برمجة الشبكات.
لماذا يجب أن أتعلم البرمجة ؟
سوف أقتبس إجابة أحد مؤلفي كتب البرمجة عندما قال: ينبغي عليك تعلم البرمجة حتى لا تقع تحت رحمة مبرمج قام ببرمجة البرامج التي تستخدمها دون الأخذ في الاعتبار رأيك في البرنامج أو الإضافات التي تحب أن تراها أو إن كان حتى هذا البرنامج مفيد لك أم لا. بالضبط عندما تدخل مطعم لتطلب وجبتك فأول ما يسألك عليه النادل: ماذا تحب أن تأكل ؟ وتكون إجابتك بالطعام الذي تريده بالإضافات التي تحبها، هذا هو الواقع الذي نعيشه نحن مهندسي الشبكات، فنحن نستخدم عشرات الأدوات في عملنا لا نعرف كيف تمت برمجتها أو إن كان شكلها يعجبنا أو إن كانت الأداة يحصل بها مشاكل على جهازك فكل ما بيدنا هو الإنتقال إلى أداة أخرى تقوم بنفس الوظيفة ، لذلك يمكنك القول أننا مجرد مستخدمين.
لذلك يمكننا تعريف البرمجة بأنها أسلوب عمل لا غنى عنها في أي شيء تستخدمه فكل شيء مبرمج ومُعَد مسبقًا لتأدية الوظيفة المطلوبة منه .
عالم البرمجة كبير جدًا ويستحيل عليك معرفة كل أسراره وخباياه فمثلما يوجد في عالمنا مهندس شبكات ميكروسوفت أو مهندس شبكات سيسكو أو غيرهم تستطيع أيضًا أن تصنّف البرمجة من حيث الوظيفة أو الغرض منها فيوجد برمجة تطبيقات سطح المكتب أو برمجة تطيبقات الويب أو حتى برمجة تطبيقات الموبايل مثل الآيفون والآندرويد.
بإمكاننا تصنيف لغات البرمجة المختلفة عن طريق وظيفتها مثلما وضحت سابقًا فبإمكانك برمجة تطبيقات سطح المكتب عن طريق لغات مثل: C++, C#, Visual Basic, Java, …
وغيرهم من اللغات الأخرى التي تؤدي نفس الوظيفة مع اختلاف طريقة كتابتها وعملها، أما برمجة تطبيقات الويب تكون عن طريق لغات مثل: PHP, Java Script, HTML5, … وغيرها الكثير.
كمهندس شبكات يريد أن يبرمج أدواته بنفسه ينبغى عليك الأخذ في عين الاعتبار بعض النقاط :
- فى البداية تحديد المنصة التي سيعمل عليها برنامجك .. هل هو تطبيق سطح مكتب؟ بمعنى يتم تحميله من على الانترنت ثم تسطيبه على الجهاز المضيف ثم يبدأ في استخدامه، أم هو تطبيق ويب يعمل على الانترنت مباشرة عن طريق الوصول إلى عنوانه على الانترنت دون الحاجة إلى تحميله وتسطيبه على الجهاز المضيف؟
- إذا كان برنامجك سيعمل على سطح المكتب فينبغى عليك مراعاة منصات سطح المكتب المختلفة، بمعنى هل هو مخصص لنظام تشغيل ويندوز أم لينكس أم ماك؟
- لأن لكل نظام ملفاته الخاصة المفروض تواجدها في البرنامج عند برمجته حتى يستطيع العمل على النظام المضيف.
- نفس الشيء لو كان برنامجك عبارة عن تطبيق ويب فسوف يتم رفعه على سيرفر خاص على الانترنت فينبغي عليك معرفة مواصفات هذا السيرفر وهل يدعم لغة البرمجة التي كتب بها البرنامج أم لا.
- تحديد الشريحة المستهدفة من برنامجك، هل هو للمبتدئين أم لمتوسطي الخبرة أم للمحترفين؟ يُعَد تحديد شريحة المستخدمين بمثابة صمّام الأمان لبرنامجك حتى ينتشر بشكل أكبر وأوسع حيث أن تحديد درجة المستخدمين سوف تسهل عليك عملك في برمجة الأداة فتستطيع برمجة الأداة كما تراها أنت كمهندس شبكات ولكن يشترط وصولك للمرحلة التي تبني برنامجك لها ، بمعنى إذا كنت تبني برنامج للمحترفين فيبنغي عليك في المقام الأول أن تكون محترف حتى ترى البرنامج من وجهة نظرك أنت.
- تحديد المستخدمين أيضًا يوفر عليك مستقبلاً في حالة أردت أن تحدث في برنامجك بما تراه من تقنياتٍ وخواصٍ جديدة تمت إتاحتها للمستخدمين، فكل ما يلزمك هو إضافتها لبرنامجك على هيئة تحديثات دورية حتى يكون برنامجك كامل متكامل.
- مثلما حددت المستخدم يمكنك أيضًا تحديد الشركات إذا كان برنامجك يخدم الشركات فيمكنك تحديد برنامجك إذا كان للشركات الصغيرة أم المتوسطة أو حتى الكبيرة عن طريق إضافة خواص ومزايا أكتر في كل نسخة.
- برنامجك لن يكون له قيمة إذا لم تقم بتسويقة بشكل جيد .. قم بنشر نسخة مجانية لبرنامجك ولتكن للمستخدمين العاديين، وقم بنشر نسخة تجريبية للشركات ليقوموا بتجريب برنامجك ورؤية مدى كفاءته وإذا كان سيسهل عملهم أم لا وإذا أثبت كفاءة فسوف يطلبوا شراءه منك بأي ثمن طالما أن الناتج مضمون.
كثير من الشركات الناشئة بدأت ببرنامج واحد وبرمجته على أكمل وجه مما كان له الأثر فى شهرتها وتزاحم المستخدمين على برامجها وشراء مئات الرخص لأجهزتها أذكر من هذه الشركات شركة: Solar Winds
المتخصصة في برامج الشبكات ولا سيّما برامج إدارة الشبكات التي تثبت كفاءتها يومًا بعد يوم.
قليلةٌ هي الشركات التي لا تستخدم أحد أدوات سولار ويندز إن كان بشكل متقطع أو حتى بشكل مستمر،لأن الشركة استطاعت في سنين معدودة الاتساع بطريقة جعلتها متربعّة على عرش برامج إدارة الشبكات.
بعض الشركات العالمية أمثال سيسكو وجونيبر وفورتي نت يوجد بها فريق محترف من المبرمجين يقوم على عمل برامجهم ولكن لفائدتها الشخصية فقط بمعنى أنها برامج احتكارية لا تعمل إلا على الهاردوير الخاص بالشركة فقط ولا تصلح للعمل مع أي أجهزة أخرى.
شركة سيسكو توفر شبكة خاصة للمطورين تعطى لهم النصائح وتوجههم إلى ضرورة العمل على حلول برمجيات تخدم أجهزتها سواء كانت حلول حماية أو انتقال الصوت عن طريق الإنترنت.
ليس شرطًا عليك أن تكون مبرمج تطبيقات ضخمة تُستخدم من قبل الآلاف حول العالم، فيكفي فقط أنك قمت ببرمجة أداتك التي ترغب بها شاملة كل الخيارات التي كنت تبحث عنها في أي برنامج وتغنيك عن العمل الطويل كمثال: يمكنك التفكير في تطبيقٍ لسطح المكتب يساعدك في عمل إعدادات لأجهزة سيسكو عن طريق الواجهة الرسومية بدلاً من سطر الأوامر كل مرة.
فى الشكل الموضح قمت بعمل برنامج بسيط اسمه: Easy Cisco Configuration
هذا البرنامج يمكنك إتمامه بأي من لغات برمجة سطح المكتب طالما أن الفكرة موجودة وقمت بعمل تصميم لها وحدّدت الخيارات التي تريدها في برنامجك.
لعل الفائدة الأكبر للغات البرمجة عند مهندسي الشبكات تظهر عند برمجة برامج تعتمد على عناوين وبروتوكلات الانترنت مثل عمل برنامج شات داخلي في الشركة أو في الشبكة لبعض المستخدمين بعينهم مثل المديريين وبإمكانك أيضًا إضافة خاصية التحدث عن طريق الصوت والفيديو في هذا البرنامج لذلك ينبغي عليك فهم بعض مواضيع الشبكات فهمًا جيدًا أولا مثل مواضيع الـSubnetting, Ports and VOIP Protocols ومن ثم تبحث عن كيفية تنفيذها برمجيًا عن طريق إحدى لغات البرمجة.