لأنك ستحتاجها في العديد من الأمور لكن للدقة درجة الاحترافية ستختلف بحسب التخصص الذي تريد أن تحترفه. الهاكر ليس قسم واحد بل هو بحر بحد ذاته ويوجد له تخصصات فاذا أردت أن تكون Penetration Tester مثلا بهذه الحالة مهمتك ستكون اختبار امكانية اختراق النظام عن طريق استخدام نفس البرامج والأدوات التي يستخدمها الهاكرز (تركيزك سيكون على الـ Vulnerability Assessment) وهنا كل ما تحتاجه من البرمجة معرفة بسيطة في حال احتجت لبرمجة استغلال ثغرة أو تعديل استغلال مبرمج مسبقاً أو لبرمجة أداة تقوم بمهمة معيّنة تحددها أو لتقوم ببعض المهام بشكل أوتوماتيكي وهذا ضروري لاختصار الوقت طبعاً. أما اذا أردت اكتشاف ثغرات تطبيقات الويب في سكريبتات PHP مثلاً بهذه الحالة يجب عليك تتعلّم أساسيات هذه اللغة والتركيز على الجانب الأمني المتعلّق بكيفية تعامل السكريبت مع مدخلات المستخدم, فلترتها, ادخالها لقواعد البيانات وعرضها ثم ستتطوّر أكثر وتنتقل لثغرات Clinet Side-Attack وبهذه الحالة سيصبح هدفك المستخدم وليس السكريبت بحد ذاته لذلك قد تضطّر لتعلم أساسيات لغة Javascript وتعلم مبدأ عمل ثغرات XSS و CSRF مثلاً ثم تنتقل لتعلم اكتشاف ثغرات المتصفّح والبرامج والخدمات بشكل عام وهذا هو الجزء الأصعب لأنك انتقلت لمرحلة مختلفة تماماً عن لغة php وأنواع الثغرات السابقة وهذه المرحلة تتطلّب منك معرفة قويّة باللغات المنخفضة المستوى مثل لغة C و Assembly بالاضافة لاجادة الهندسة العكسية Reverse Engineering والتعامل مع برامج التنقيح (Debugging) وتتبع الأخطاء مثل GDB , DDD , OllyDBG , IDA Pro… عليك أن تعلم كيف يتعامل البرنامج والنظام مع الذاكرة, لماذا ومتى حدث Buffer Overflow مثلا وهل نستطيع استغلال هذا الخطأ للتحكم بسير البرنامج وتشغيل Shellcode يمكننا من اختراق النظام أم أنها ستؤدي لتوقفه عن العمل فقط, هل يستخدم النظام تقنيات تمنعنا من استغلال الثغرات وما هي التقنيات التي نستطيع استخدامها لتخطي الحماية وتطوير الاستغلال؟… كل هذا ان دل على شيء فهو يدل على أن البرمجة ضرورية بل ضرورية جداً وكلما تطوّر مستواك في مجال الحماية والاختراق ستحتاج لاحتراف البرمجة أكثر.