مقالات برمجية

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

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

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

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

 بالطبع الأول، لأن الأول يجيد لغته جيدا، فيستطيع النجاح، وعليه الفوز بالوظيفة .. أما الثاني، فمرة يجيب، و الأخرى يحمر وجهه، ثم يعطس، وبعدها ..؟!

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

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

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

 خطوات تعلم لغات البرمجة

أي لغة برمجة حين تتعلمها تمر بثلاث مراحل:

1- المرحلة الأولى:إدارك المفهوم

1

وفي هذه المرحلة تتعلم فيها الأساس التى بنيت عليه هذا اللغة، وكيفية الاستفادة منها، وكيفية البرمجة باستخدامها، وهذه هي أهم مرحلة فى المراحل الثلاث، وإن كان الوضع حاليا أيسر كثيرا، فكل لغات البرمجة المستخدمة حاليا (تقريبا) تسير على نفس النهج وهو البرمجة الموجهة للكائنات أو object  oriented programming

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

2- المرحلة الثانية: تعلم طريقة استخدام مفردات اللغة

prog-4

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

3- المرحلة الثالثة: التوسع فى اللغة

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

حتى تفهم ما أعنيه جيداً : أنت تتحدث الانجليزية مثلا منذ كم من الأعوام؟ .. وكم تجيد من مفردات تلك اللغة؟

فالأمر سيان فالاثنان لغتان، ولكن الأولى للتعامل مع البشر، والأخرى للتعامل مع آلات.

و بعد تلك الخطوات، هيا بنا إلى الأسباب التى تدفعك إلى التخصص.

أسباب تدفعك إلى التخصص

السبب الأول: التضخم المستمر

3

لغات البرمجة فى الوقت الحالي تتضخم بشكل كبير جدا، وتتطور بشكل مستمر، وأنت إذا أردت أن تتقن لغة من تلك اللغات، عليك أن تواكب تطورها، فإذا أخذنا على سبيل المثال ، الأندرويد تم تطويره فى أخر ثلاث أعوام 13 مرة، فتخيل كم من الوقت تريد لتواكب تطور الأندرويد وحده، فتخيل أنك تريد مواكبة أكثر من لغة!

2011

 

SDK 3.0/3.1/3.2 (Honeycomb) for tablets only

SDK 4.0/4.0.1/4.0.2/4.0.3 (Ice Cream Sandwich)

2012

 

SDK 4.1/4.1.1 (JELLY BEAN)

 SDK 4.2/4.2.2 (JELLY BEAN)

2013

 

SDK 4.3 (JELLY BEAN)

SDK 4.4 ( KITKAT)

السبب الثاني: زيادة الانتاجية

4

دائما تظل مشكلة المبرمجين الكبيرة هي أن يجد معضلة، ولا يعرف كيفية حلها باستخدام لغته التى يبرمج بها، فيضطر للبحث عنها على الانترنت ، فتخيل أن لديك خمسة أو عشرة مثها، فمتي تنتج؟

فأنت إذا استطعت التمكن من لغة واحدة، فستقل معك تلك المعضلات وبالتالي زيادة وقت العمل وعليه زيادة الانتاجية، وتظل القاعدة “جهل معلومة قد يؤدي إلى ساعات من البحث، وبالتالي ساعات من الوقت الضائع”.

السبب الثالث: السيطرة على الكود:

5

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

السبب الرابع: الحصول على الوظيفة

6

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

صـرخـات قادمة من سـوق العمــل !

أخيرا: لست بحاجة لتعلم لغتين يقومان بنفس الوظيفة:

أنت لست بحاجة لتعلم لغتين يقومان بنفس العمل، فعلام التكرار وتضيع الأوقات، أنت فقط تستطيع معرفة أكثر من لغة لتعرف الفرق بينهم ومن ثم تختار الأنسب بالنسبة لك، ولكن أن تتقن اللغتين بنفس القدر، فأظنه تضيع للأوقات.

هذه كانت الأسباب، أما التخصص فى حد ذاته، فهو نوعان:

النوع الأول: التخصص فى لغة واحدة لجميع المجالات

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

  • مجموعة الدوت نت ( سي شارب لبرمجة الديسكتوب، و أيه اس بي لبرمجة الويب، و وندوز فون لبرمجة الموبايل)
  • ومجموعة الجافا ( الجافا لبرمجة الديسكتوب، و الجي اس بي لبرمجة الويب، والأندرويد لبرمجة الموبايل)

و هو أحد الحلول الجيدة للربط الجيد

و النوع الثاني: التخصص فى لغة لكل مجال على حدة:

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

ختاما:

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

منتظر رأيك وتعليقك على الموضوع،  وإذا أعجبك أرجوا أن تعود إلى بداية السلسلة:

مدخَــل إلى عـالم البــرمجــة للمبتـدئيــن

مُعـانـاة (السنـة الأولـى) للمبــرمج العــربي!

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