هل انت مبرمج ام مطور؟

الناقل : elmasry | الكاتب الأصلى : تركي العسيري | المصدر : www.al-asiri.com

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


تعريف مبدئي:
المبرمج: هو شخص يقدر الاكواد بشكل جنوني، وجل وقته وكل اهتماماته وتركيزه في كتابتها. أسعد لحظات حياته عندما يقرأ كود لشخص آخر او فك شيفرة مصدرية لتطبيق شهير. يميل المبرمج إلى التصميم منخفض المستوى Low Level Design ككتابة الدوال Functions والبارامترات وكل عبارات التكرار وجمل الشرط التي بداخلها. ويثير غريزته الفطرية الاحتكاك واللعب مع الذاكرة Memory كثيرا.

المطور: الكود يكون شيء ثانوي دائما في حياته، وفكرة الكود هي الأهم. أسوأ لحظات عمره عندما يطلب منه تنقيح كود Code Debugging وقراءته (فهو يكره حتى قراءة الشيفرات التي كتبها!). يميل المطور الى التصميم عالي المستوى High Level Design، ويعطي جل اهتماماته في التصميم الكائني Object Oriented Design او المعماري Architecture Design، كما يحب أن يرى التطبيق من الخارج اكثر من الداخل.



في البرمجة:
المبرمج: يكتب الكود دائما بطريقة احترافية وممتازة ومختصرة جدا وعالية الكفاءة Optimized أيضا، كما انه يستهلك جميع إمكانيات اللغة بكافة مكتباتها التنفيذية. ولكن لو قرأت شيفراته المصدرية، فهي ليست منظمة ويصعب فهمها او تتبعها (كما لو أنها مخطوطة فرعونية).

المطور: يكتب الكود بطريقة احترافية لكنها اقل اختصارا واقل كفاءة من المبرمج. تنظيمه للشيفرات ممتاز، ولو تقرأ كوده ستفهمه بسرعة (كما لو أنها قصة أطفال).



في كتابة التعليقات:
المبرمج: ذكرت قبل قليل ان المبرمج دائما ما يستهلك ويستفيد من جميع إمكانيات اللغة، ولكن التعليقات Comments هي الميزة الوحيدة في اللغة التي لا يستخدمها!

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




اختيار اللغات:
المبرمج: يحب اللغات ((الغير)) مستخدمة بكثرة والتي يبتعد عنها أكثر الناس، كلغة التجميع Assembly او C، وإن تطور أكثر وأراد ان يخفف الضغط على نفسه، تعامل مع C+‎+‎ أو Delphi.

المطور: يفضل اللغات التي تزيد من إنتاجيته Productivity، لغة Visual Basic هي أول وآخر اهتماماته، والـ Java اختيار ممتاز بالنسبة له أيضا. ولو تعامل مع لغات معقدة اكثر، فتأكد وثق ثقة تامة ان له حاجة ما في نفس يعقوب ولن يستخدمها في مشروعه الحقيقي!



بيئات التطوير:
المبرمج: المفكرة Notepad اختياره الأول، ويفضل الادوات التي تعمل على DOS Prompt (او حتى التي تحاكيها على Windows Environment).

المطور: Visual Studio 2005 من افضل الخيارات لديه (حاليا)، أو اي بيئة تطوير تزيد من إنتاجيته وتقدم له خدمات 5 نجوم 5‎ Stars.




نوعية المشاريع:
المبرمج: يعشق المشاريع الدنيا Low Level كمشاريع النظم System Projects، او كتابة المشغلات Devices، او تلك البرامج التي تتعامل مع الموارد System Resources بشكل جريء. كما يعتبر الشخص المناسب لمشاريع الالعاب او الوسائط المتعددة.

المطور: تطبيقات الأعمال Business Applications (والتي ركن من اركانها التعامل مع قاعدة بيانات Database) هي حلمه وشغله الشاغل فقط -ولا يريد سواها. ومع تطور خدمات ويب Web-Services، اصبح من عشاقها.





في كتابة المستندات Documents:
المبرمج: من عاشر المستحيلات! وقد يقدم استقالته إن طلبت منه ذلك.

المطور: يكره كتابة المستندات (كثيرا)، ولكنه لن يقدم استقالته إن طلب منه ذلك.




إن سألته سؤال:
المبرمج: يظن أنك تقرأ أفكاره وتفهم كثيرا في الأمور الفنية وقد تسمع عبارات مثل: لا أستطيع ارسال قيمة المؤشر Pointer مع مكتبة DLL بسبب خروجها عن مساحة العنونة Address Space خاصة ان كانت خارج العملية المنفذة Running Process (او حتى بحقن المكتبات DLL Injection) والتي قد تسبب خطأ Fatal Error في حالة تطبيق رد CallBack او اعتمادي على خطف الرسائل Message Hooking بسبب مسالة الـ Protected Mode!

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



في المظهر الخارجي:
المبرمج: تجده صاحب قصات شعر غريبة وليست تقليدية كما لا يحب الملابس الرسمية Uniform.

المطور: يعطي مظهره الخارجي اهتمام لا بأس به، صحيح أنه لا يصل لاهتمام مسئولو خدمات العملاء ولكنه يستعمل العطور أيضا.



في التعامل:
المبرمج: قليل الابتسامة، وعندما تتحدث معه فلا ينظر إليك بالعادة، وتجده يراقب شاشته او أي شيء آخر في قاعة الاجتماعات.

المطور: يبتسم لك (حتى لو كان لا يطيقك)، وعندما تتحدث معه فلا تنزل عينيه من وجهك.



أكثر موضوع يتجنبه ولا يفقه:
المبرمج: المواضيع التي تتحدث عن هندسة البرامج وتصميم التطبيقات كنماذج التصميم Design Pattern او حسابات التكلفة Cost Managment او أوقات التسليم Deadlines.

المطور: يقدر المواضيع السابقة ولكنه لا يطيق التحدث عن الأمور الدنيا كالمسجلات في المعالج Registers in the Proccessor ولغة الـ Assembly، او ادارة الذاكرة Memory Managment وتطوير النظم Systems Development، او جتى اجراءات Windows API.



أكبر عيبوبه:
المبرمج: عنيد وجرئ، ان لم يقتنع في مسالة معينة فلا تتوقع انه سيتنازل من أجلك. التفاوض Negotiation صعب جدا معه.

المطور: يناقشك وقد يحاول اقناعك بحلول اخرى، ولكن ان وجد منك العناد، فسينهي المسالة ويغير كلامه. التفاوض معه بحاجة إلى مغريات وحوافز حتى تكسبه.



أخيرا، هذا السؤال (تهمني إجابته من الجميع)، اين تجد نفسك؟ وهل تظن انك مبرمج أم مطور؟ بالنسبة لي، فأنا مطور Developer وأميل اكثر لتطوير وبناء التطبيقات، كما أني في حالات كثيرة أبتعد أكثر وأجد نفسي محلل Analyst والقيام بمهام التحليل Analyzing، ولكني أكره ((جدا جدا)) مهام المبرمجين وكتابة ألا كواد.

-- تركي