2008/07/23

New technology but old style...

كانا ياما كان في قديم الزمان (مش زمان هلبة)، كان في حطاب في الغابة وارث الخدمة أب عن جد، وكان يستخدم في الفأس والمنشار اليدوي، وخدمته ماشية لكن بمجهود عضلي كبير ومردود مالي قليل، في يوم من الأيام مر تاجر بهذا الحطاب وأستغرب لما لقاه يقوم بالعمل بطريقة يدوية تقليدية، وقام بتسليمه منشاراً كهربائياً حديثاً وعلمه كيف يستخدمه بحيث سهل المنشار الكهربائي من عمل الحطاب، وقلل المجهود عليه وزاد من إنتاجيته وبالتالي من مردوده المالي، بعد ذلك سافر التاجر وترك الحطاب، بعد مدة نسى الحطاب كيفية تشغيل المنشار الكهربائي ولم يتمكن من الوصول للتاجر لسؤاله عن ذلك، فما كان منه إلا أن أستخدم المنشار الكهربائي الحديث بطريقة يدوية (بنفس أسلوب إستخدمه للمنشار اليدوي سابقاً)، أي أستخدمه كفأس لتقطيع الحطب يدوياً وقطع به الأشجار يدوياً بنفس الطريقة التي كان يقطع بها الأشجار عندما كان يستخدم المنشار اليدوي (كل ذلك والمنشار الكهربائي مقفل)، فماذا كانت النتيجة؟ زاد المجهود العضلي عليه أضعاف مضاعفة، وقل مردود العمل وبالتالي نقص مردوده المالي إلى أقل من إستخدامه للمنشار اليدوي.

مالحكمة من هذه القصة؟

هناك عدة حكم (كل حسب وجة نظره) لكن الحكمة الرئيسية التي وصلتني (بطبيعة عملي) هي أنه إذا غير االإنسان (أو المبرمج) من الأدوات التي يستخدمها في مجال عمله فيجب عليه أن يغير طريقة تفكيره أولاً ليتلائم تفكيره مع طريقة التعامل مع هذه الأدوات الحديثة.

ففي البداية كنت أتعامل مع لغة البرمجة Visual Basic 6.0 وأعرف كل عيوبها ومميزاتها وخفاياها، لكن كما هو معروف فهي لغة بسيطة من ناحية البناء البرمجي ولا تستخجم تقنية (لغة البرمجة بالكائنات - OOP)، ومنذ حوالي السنة قمت بتعلم لغة (C# 2.0) وهي إحدى لغات (Microsoft Framework.NET) المصممة بالكامل بتقنية (OOP)، وبالرغم من قرائتي لكتب عديدة عنها والتحادث والإحتكاك مع مبرمجين جيدين يعملون أساساً بها وحصولي على أمثلة برمجية كثيرة أغلبها من موقع Microsoft، إلا أن تفكيري الرئيسي عند برمجة أي حل يذهب مباشرة نحو التفكير البرمجي الخاص بلغة Visual Basic وأنسى تطبيق تقنيات OOP في حلولي البرمجية أغلب الوقت.

لعل أبرز الأمثلة عندما أريد الحصول على بيانات من قاعدة البيانات وحفظ هذه البيانات في الذاكرة (لتقليل وقت جلبها من قاعدة البيانات) وتطبيق بعض جمل الإستعلام عليها لتشكيلها حسب رغبتي، فلا زلت أجد التعامل مع ADO 2.8 وكائن البيانات Recordset الخاص بها أسهل بكثير جداً من التعامل مع ADO.NET وماتحمله من Dataset و Datareader السريعة والمخصصة للعديد من الإحتمالات والقابلة للتخصيص بطريقة غريبة، لكنني بحكم أنني تعلمت تقنية ADO في شبابي (هنا يأتي عامل السن) فإنني الأن أجد صعوبة في التعامل بسهولة مع تقنية ADO.NET الأحدث برمجياً

فلا يكفي المبرمج الحصول على أحدث التقنيات وأمثلة الإستخدام (وهو أمر سهل عن طريق الإنترنت) لكي يكون عبقرياً بها، بل يجب عليه تغيير تفكيره جذرياً (وهو الأمر الأصعب) ليكون متمكناً من هذه التقنيات.

Post a Comment