عن المبرمج نتحدث – 1

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

من هنا تأتي الأهمية الكبيرة للمبرمج في صناعة البرمجيات، و هي أهمية بالطبع تفوق أهمية العاملين في أي صناعة أخري. أي برنامج هو نتاج عقل المبرمج بشكل رئيسي، و بالتالي فإن المبرمج هو أهم العوامل التي يتوقف عليها نجاح المشروع من فشله.

علي الرغم من أهمية المبرمج بالنسبة لصناعة البرمجيات إلا أن هناك عجز في عدد المبرمجين علي مستوي العالم، و هو ما يعني أن عدد المبرمجين المتاحين أقل من فرص العمل المفتوحة المطلوب لها مبرمجين. للأسف هذا العجز يزيد كل عام بنسبة 12,5 % عن العام السابق.

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

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

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

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

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

1 – طبيعة عمل المبرمج

لفهم المبرمج، كيفية تفكيره، كيفية إختياره و التعامل معه فإننا علينا أن ننظر إلي طبيعة الأعمال و الأنشطة المطلوب من المبرمج القيام بها و ما يميز هذا الأنشطة عن غيرها من الأعمال و الأنشطة الأخري في باقي الصناعات.

1-1 – الإختلاف بين العقل البشري و الكمبيوتر

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

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

1-2 – كيفية تعليم التفكير

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

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

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

1-3- S.D.T.A.G.W

المثل الشعبي الشهير “صاحب بالين كداب و صاحب ثلاثة منافق” يشير إلي أن المرء لا يمكنه التركيز إلا في أمر واحد فقط. علماء النفس خرجوا من دراساتهم بنتائج مشابهة، حيث توصلوا إلي أن العقل البشري لا يمكنه أن يركز في أكثر من 5 – 7 نقاط تتعلق بموضوع واحد في نفس الوقت، و باقي النقاط سيهملها العقل شاء أم أبي.

هذا يتعارض مع طبيعة عمل المبرمج الذي يركز بطبيعة الحال في مئات الأشياء في نفس الوقت أثناء كتابته للكود، يركز في مدي توافق هذا الكود مع القواعد التي توضع لكتابة الكود في المشروع Project Coding Standards، يركز في المشكلة التي يحلها هذا الجزء من الكود، يركز في كيفية توافق هذا الجزء من الكود مع التصميم العام للبرنامج، يركز في كيفية توافق هذا الكود مع الأكواد التي يكتبها باقي المبرمجين في الفريق، يركز في كيفية تلافي الثغرات في الكود، يركز في مدي تأثير هذا الكود علي آداء البرنامج، و …. لو عددت كل العوامل التي علي المبرمج أن يراعيها أثناء كتابة الكود فإني سأحتاج مقالاً منفصلاً لذا نكتفي بما تم ذكره حتي الآن.

لو وضعنا في الإعتبار أن العقل البشري لا يمكنه التركيز في عشرات الاشياء في نفس الوقت لوجدنا أن المبرمج مطلوب منه ما لا يستطيع البشر القيام به ! بالتالي إن أردت المبرمج الذي ينفذ ما هو مطلوب منه بحذافيره فإن عليك أن تبدأ البحث عنه وسط سكان المريخ خضر البشرة الذين يملك كل منهم هوائي إستقبال فوق رأسه.

بالإضافة لهذا فإن كمية المعلومات التي يفكر فيها العقل البشري عند كتابة البرامج الحديثة المعقدة قد تصل إلي 15 الف ميجا بايت. هي معلومات لها درجات مختلفة من العمق و الدقة و التعقيد، و هي المعلومات التي تصف كيفية عمل الكمبيوتر و لغة البرمجة و كيفية تنفيذ الكمبيوتر للأوامر التي يضمها البرنامج. هذا الكم الرهيب من المعلومات الذي يجب علي العقل البشري أن يمر عليه و يختار منه المعلومات التي يحتاجها بمستوي العمق المطلوب في أثناء كتابته للأجزاء المختلفة من البرنامج صُنف علي أنه أكبر التحديات العقلية التي واجهت العقل البشري منذ بداية التاريخ.

هذه بعض الأسباب التي من أجلها يخضع البرنامج لعشرات العمليات الإختبارية و عمليات المراجعة للتأكد من أن جميع النقاط قد تمت تغطيتها. هذه الإختبارات تتراوح من إختبار البرنامج بواسطة مستخدمين عاديين مروراً بقراءة الكود بواسطة مبرمجين آخرين و فحصه و إنتهاء بعلميات الإختبار الآلية التي يقوم بها الكمبيوتر نفسه.

حتي مع هذه الإختبارات فإن هناك حقيقة ثابتة هي أن البرنامج الخالي من الثغرات هو البرنامج الذي لم يكتب بعد! عندما قامت مايكروسوفت بنشر النسخة التجريبية من أحد إصدارات فيجوال ستوديو قام المبرمجين الذين إستخدموه بإرسال عدد من المشاكل و الأخطاء التي واجهتهم أثناء إستخدام البرنامج للشركة. عندما أصدرت الشركة النسخة النهائية من البرنامج كتبت علي موقعها “تم إصلاح كل الثغرات و المشاكل المعروفة”. لم يقل أحدهم ” البرنامج بلا مشاكل أو ثغرات” لأنه وسط المبرمجين المحترفين هناك ثقافة عامة بأنك إن لم تجد ثغرات في البرنامج فهذا يعني أن هناك ثغرات أنت لا تعرفها و ليس معناه أن البرنامج بلا ثغرات.

أحد شخصيات رواية (كونغو) لمايكل كريشتون كان يضع علي مكتبه لافتة صغيرة كتب عليها S.D.T.A.G.W و هي إختصار لعبارة “لابد من أن يحدث خطأ لعين ما” “Some Damn Thing Always Goes Wrong“. ربما كانت البرمجيات هي أكثر ما تنطبق عليه هذه العبارة.

مهما كان حجم الشركة و مهما كان مستوي المبرمج فلابد من ثغرات. بالطبع هذه الثغرات تقل مع الشركات العملاقة عن الشركات الصغيرة و تقل مع المبرمج المحترف عن المبرمج المبتديء أو ضعيف المستوي و لكن لابد من ثغرات. في برامج الشركات العملاقة (مثل مايكروسوفت، جوجل، إنتل) فإن الثغرات و المشاكل في الكود تكون في 5% من الكود. لدي معظم الشركات في صناعة البرمجيات فإن 15% من الكود يضم ثغرات. علي مستوي المشروعات التي قد تمثل الثغرات فيها خطورة علي حياة البشر (مثل البرامج التي تستخدم في الطائرات، المفاعلات النووية، رحلات الفضاء) فإن الثغرات تكون في أقل من 5% من الكود، لأن هذه البرامج تخضع لكم مرعب من التدقيق و الفحص و الإختبارات التي ترفع من تكلفة هذه البرامج بنسبة مهولة، ولكن حتي مع هذا فإنها لا تصل أبداً إلي مرحلة اللا ثغرات، مثال علي هذا مركبة الفضاء (Mars Climate Orbiter) التي أرسلتها ناسا عام 1999 لإستكشاف مناخ المريخ و التي تحطمت علي سطح الكوكب الأحمر بسبب ثغرة في برنامج قيادة المركبة.

1-4 – إقرأ إلي الأبد

هناك قانون شهير في عالم الهاردوير هو قانون مور الذي وضع لقياس مدي التطور في صناعة البروسيسور، و الذي يقول أن قدرة البروسيسور تتضاعف كل 18 شهر. هذا يعني أنه إن كانت أسرع بروسيسور في الوقت الحالي سرعته 1 جيجا هيرتز، ففي خلال 18 شهر سيتم إنتاج بروسيسور سرعته 2 جيجا هيرتز.

علي الرغم من هذه السرعة الفلكية في زيادة قدرات الهاردوير فإن السوفتوير يستغلها كلها. قارن السرعة التي كان يقوم بها جهاز قديم محمل بويندوز 95 بتلك التي يقوم بها جهاز جهاز حديث محمل بويندوز فيستا و ستجد أن كلاهما يستغرق نفس الوقت. السبب أن السوفتوير يزداد تعقيداً و بالتالي يستغل كل التطور الذي يأتي به الهاردوير.

هذا التعقيد المهول في السوفتوير يعني تعقيداً في لغات البرمجة، تعدد في أدوات البرمجة و تعقيدها و بالتالي زيادة رهيبة في كمية المعلومات التي علي المبرمج أن يتعلمها بإستمرار لأنها تتغير بإستمرار و تزيد من يوم لآخر بسرعة فلكية.

هذا يعني أن المبرمج لا يمكنه أن يتعلم البرمجة لعدة سنوات ثم يتوقف عن التعلم و يكتفي بالتطبيق و الممارسة، بل يعني أن التوقف عن القراءة لبضع سنوات كفيل بإفقاد المبرمج عمله. أحد خبراء السوفتوير (ستيف ماك كونيل Steve McConnell) يري أن المعدل المطلوب لكي يصير المرء مبرمجاً متميزاً هو أن يقرأ كتاب كل شهرين و هو معدل من التعلم ليس مطلوباً في أي صناعة أخري، حيث تعتمد الصناعات الأخري علي أن يقضي المرء فترة من عمره في التعلم ثم يقضي باقي العمل في الممارسة مع القليل من القراءة من حين لآخر لمتابعة أخر التطورات.

المشكلة أن متوسط ما يقرؤه المبرمجون علي مستوي العالم هو أقل من كتاب واحد سنوياً. هذا يعني فجوة رهيبة بين كمية العلم المطلوبة ليكون المرء مبرمجاً جيداً و بين كمية العلم الموجودة بالفعل لدي المبرمجين.

1-5-العمل الجماعي

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

للأسف البرمجة ليست كذلك. البرنامج النهائي يعتمد علي الكود الذي كتبه عدد من المبرمجين، و هذا الكود لابد من التنسيق فيه بين المبرمجين لكي يكتب كل منهم الجزء الخاص به بشكل يمكن له الإندماج مع باقي الكود، و يؤثر فيه كل سطر كود علي البرنامج النهائي.

هذا يعني أن هناك بالإضافة إلي مجهود كتابة الكود هناك مجهود خاص بالإتصال بين المبرمجين بعضهم البعض من أجل التنسيق فيما بينهم. هذا المجهود لا يزيد بصورة خطية بل يتناسب مع مربع عدد المبرمجين في المشروع. إن كان عدد المبرمجين في المشروع هو n فإن عبء التواصل بين المبرمجين يساوي n(n-1)/2.

علي سبيل المثال إن كان المشروع يضم ثلاث مبرمجين فإن هذا يتطلب ثلاث درجات من التواصل بين المبرمجين بعضهم البعض. إن أضفنا مبرمجاً رابعاً فإن هذا يتطلب ست درجات من التواصل. إن أضفنا مبرمجاً خامساً فإن هذا يتطلب عشر درجات من التواصل بين المبرمجين بعضهم البعض. عندما يصل العدد لعشر مبرمجين فإن عدد درجات التواصل بين المبرمجين يصل إلي 45 !

شكل 1: زيادة عبء التواصل بين المبرمجين مع زيادة عددهم

حاول أن تتخيل كيف يمكن أن يكون عبء التواصل بين المبرمجين في مشروع مثل ويندوز فيستا الذي ضم ما يقرب من 3000 مبرمج أو فيجوال ستوديو الذي تعمل فيه فرق في 5 أماكن منفصلة حول العالم و عندها ستدرك أن التواصل بين المبرمجين هو فن في حد ذاته يحتاج لمهارة، مهارة من مديري المشروع في إستخدام أساليب إدارية تحد من عبء التواصل بين المبرمجين، و مهارة من المبرمج نفسه الذي ينقل أفكاره و يصف عمله من خلال وثائق المشروع project documentation و من خلال تواصله الشفهي و رسائل البريد الإلكتروني المتبادلة بينه و بين باقي الفريق.

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

في نهاية العام ترك هذا المبرمج مايكروسوفت و إنتقل إلي جوجل، التي تتميز من ضمن ما تتميز به بأن عدد المبرمجين في أي مشروع محدود بدرجة كبيرة، عادة ما يكون في حدود 5 مبرمجين.

في حالة تأخر المشروع عن الجدول المخطط له فليس الحل دائماً في أن تضيف المزيد من المبرمجين إلي المشروع لأن هؤلاء المبرمجين قد يزيدوا من عبء التواصل بين أعضاء الفريق و بالتالي قد يزيدوا من التأخير الموجود أصلاً. هذا يتعارض مع الفكرة البديهية في مختلف مجالات العمل عن أنه كلما زاد عدد العاملين فإن هذا يعني تقليل الوقت المطلوب لإنهاء المشروع. حين تأخر فيجوال ستوديو عن جدوله و سألوا أحد المديرين بالفريق عن الحل كان الحل في رأيه هو التخلص من نصف الفريق !

إنتظروا الجزء الثاني قريباً بإذن الله!

Comments

13 Responses to “عن المبرمج نتحدث – 1”

  1. وليد على on February 8th, 2009 3:15 am

    موضوع منظم جدا و من أكثر المواضيع الشيقة بالنسبة لى و التى أحب ان أقرأ عنها.

    من اكثر النقط التى شدت انتباهى و التى لم اتطرق لها من قبل هى زيادة العجز فى عدد المبرجين, قبل قرأة الموضوع كان من البديهى بالنسبة إلى ان مهنة المبرمج من أكثر المهن
    المشوقة ولذلك فإنها تجذب عدد كبير إليها.

    موضوع الإختلاف بين العقل البشرى و الكمبيوتر واحدة من النقط التى أفكر فيها دائما, إلى أى مدى يمكن توجيه هذة السرعة والدقة الهائلة فى الحسابات المعقدة ألى شئ محسوس
    او له معنى, عادة أفكر فى الإختلاف بين الطرق التى يستخدمها العقل البشرى او الكمبيوتر فى استنتاج أقصر طريق بين نقطتين فنجد ان كلا الطرفين يستخدمون طرق مشابة فى هذا
    النوع من الحسابات مثل الHeuristics او التجربة والخطأ فنجد ان العقل البشرى أسرع بكثير فى حل المشاكل البسيطة و العكس بالنسبة للكمبيوتر فى حل المشاكل الصعبة.

    نقل طريقة التفكير فعلا من أصعب الأشياء التى ممكن ان يقوم بها أى شخص. عندما كنت طالبا فى الكلية كنت ألاحظ ان معظم الطلبه يتوجهون الى المحضرات التى يستخدم المحاضر
    كثيرا من الأمثلة المحلولة و عادة يأتى الإمتحان مشابه جدا لهذة الأمثلة التى استخدمها المحاضر فقط ولكن قليل جدا من المحاضرين الذين كانوا يحالوا نقل مفهوم معين او لماذا وجد هذا النوع
    من العلوم على سبيل المثال.

    فى رأى إن العمل الجماعى من أكثر الأشياء التى يحتاجها المبرجين و غير المبرجين فى العالم العربى عامة. فدائما نجد شخص واحد عبقرى او مبدع و لكن من الصعب ان تصف فريقا
    بأكمله بهذا الشكل فى العالم العربى للأسف.

  2. سامح حمدي on February 15th, 2009 10:19 am

    السلام عايكم ورحمة الله وبركاته :المقاله جامده جدا

  3. Khaled.Alshaya on March 12th, 2009 8:16 pm

    ======================================================
    من هنا تأتي الأهمية الكبيرة للمبرمج في صناعة البرمجيات، و هي أهمية بالطبع تفوق أهمية العاملين في أي صناعة أخري. أي برنامج هو نتاج عقل المبرمج بشكل رئيسي، و بالتالي فإن المبرمج هو أهم العوامل التي يتوقف عليها نجاح المشروع من فشله.
    ======================================================
    في الحقيقة كلام سليم مئة بالمئة.

    يجب أن لا يكون هدف شركة البرمجيات حل مشكلة معينة في عالم البرمجة… و لكن إيجاد أفضل المبرمجين القادرين على حل أي مشكلة :)

    تحياتي, و مقال رائع بمعنى الكلمة.

  4. محمد ربعي on March 13th, 2009 2:27 am

    من أجمل ما قرات من المقالات حول المبرمجين …

    رائع يا حبيب و إلى الامام

  5. اسلام on March 18th, 2009 12:15 pm

    مقال اكثر من رائع ولكن لي تعليق صغير …

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

    اخي لماذا لم تنظر الي انظمة تشغيل اخري مثل لينوكس

    غرضي من الحديث هنا عن لينوكس هو ان ويندوز فيستا ليس كما تعتقد ازداد تعقيدا بل ازداد حماقة
    انظر الي اي توزيعة من لينوكس و قوتها وادائها الجبار حتي مع تفعيل اعلي ميزات الجرافيكس والمؤثرات نظام التشغيل الذكي هو من يستغل الجهاز ولا يضعفه وفيستا لا يستغل ولكنه يضعف والفرق كبير وواضح

  6. مهند الغامدي on March 18th, 2009 1:25 pm

    لي تعليق بسيط بخصوص العمل الجماعي

    أرى في هذا الجزء أنك أهملت بشكل كبير هندسة البرمجيات

    حيث أنه من المسلم به أن هندسة البرمجيات قامت بحل الكثير من الإشكاليات بهذا الخصوص ولم يعد المبرمج هو الــone man show بل أصبحت صناعة البرمجيات تعتمد على فريق كامل

    كما ساعدت الـcomponent على تسهيل الترابط بين البرمجيات

    مشكور على المقالة الرائعة أخي الكريم

  7. محمد عادل on March 18th, 2009 10:11 pm

    إسلام:
    إخترت ويندوز فيستا كمثال، و لكن المبدأ نفسه قائم حتي لو إستثنينا فيستا. كلما ظهرت قدرات للهاردوير ظهرت إحتياجات للسوفتوير تستغل هذه القدرات.

    مهند الغامدي:
    هندسة البرمجيات تقدم حلولاً بالفعل.يمكنك أن تقرأ هذا المقال لي عن إستخدامي لأحد الأفكار التي تعلمتها من أحد أشهر كتب هندسة البرمجيات
    http://blogs.edraksoftware.com/softwarethoughts/?p=12

    و لكن تذكر أن التطبيق دائماً صعب. ليس هذا مبدأ خاص بنقطة العمل الجماعي فقط بل بكل مباديء هندسة البرمجيات، و إلا لما فشلت الكثير من مشروعات البرمجيات في العالم.

  8. غسان - يافع اليمن on March 22nd, 2009 6:06 am

    الموضوع شيق و ممتع و مهم ويجب على شركة برمجة ان تقوم بتطوير قدرات مبرمجيها و اعطائهم دورات تدريبية قصيرة حتى يتم مواكبة التطور السريع في عالم البرمجة و كذلك البحث عن طرق ابسط و اسهل في إدارة مشاريع البرمجيات و كيفية الربط بين المبرمجين في نفس المشروع وكذلك تحديث طرق هندسة البرمجيات و رفع مستوى الادء عند تطبيقها عمليا.

  9. سامح محمد أمين on March 27th, 2009 10:36 am

    بارك الله فيك و أكثر من أمثالك يا أخي الكريم……
    فعلا مهنتنا صعبة جدا جدا … و لكن اذا نظرت الي الصحابة رضوان الله عليهم و قوة عزيمتهم و علو همتهم مثل الصحابي حسان بن ثابت رضوان الله عليه الذي تعلم اللغة العبرية في أسبوعين عندما طلب منه النبي صلي الله عليه و سلم ذلك و أنظر الي أمثلة كثيرة من روائع المسلمين و تخيلوا يا أخوتي ان الاقتصاد العالمي الان أصبح يعتمد بصفة أساسية علي البرمجيات … حتي في ظل النكسة الاقتصادية الحالية لم تتأثر بفضل الله صناعة البرمجيات كثيرا و ما زالت من أعلي الصناعات استقرارا … فلو طلب منك النبي صلي الله عليه و سلم ان تنصر أمتك و تصبح من أفضل المبرمجين في العالم لكي تزيد من رفعة أمتك هل تبخل بذلك أم ستبذل الغالي و النفيس و تقرأ كل شهر كتاب لو تطلب الأمر لكي تنفذ وصية نبيك صلي الله عليه و سلم … أنا أري ان متعة الحياة في النضال و في التفاني في الوصول لهدفك و هذا رأي و الله أعلم

  10. محمد عادل on March 27th, 2009 1:38 pm

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

  11. Delphawi on July 14th, 2009 7:13 am

    أحب اشكرك في البداية على مقالاتك الرائعة جدا جدا جدا

    ولي تعليق على نقطة ذُكرت في هذا الموضوع , وهي نقطة القراءة
    حيث أنك يجب ان تقرأ في هذا المجال طبعاً , لأنه متجدد وواسع
    لكن لا يجب قصر القراءة على الكتب

    فالمنتديات مثلاً , قد تتعلم منها في شهر أكثر مما كنت ستتعلمه من كتاب معين

  12. belal on August 30th, 2009 6:59 am

    اشكرك على هذا المقال ومضمون المقال يدل على انك مبرمج كويس وزى ما بيقولة استطعت التوغل فى اعماق مهنتنا الشيقة والصعبة جدا فى نفس الوقت والصعوبة هنا ليست صعوبة التعلم ولكن صعوبة الاستمرار والتطوير فكم قلت نحن دائما مطلوبة مننا البحث والقراءة عن كل ما هو جديد وجزاك الله كل خير

  13. RMD on July 13th, 2010 8:21 am

    والله مقالة في غاية الروعة
    من اجمل ما قرات في هذا المجال

Leave a Reply




© 2010 Software Thoughts. Theme by WordPress Themes and Linux Web Hosting