من أين تبدأ البرمجة؟

صورة


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

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

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

نتيجة لذلك ، وجدنا الأشخاص الذين نحتاجهم ، ولكن عند تحليل هذه التجربة ، تساءلت عن غير قصد: من أين ينتهي تحليل الأعمال وتبدأ البرمجة؟

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

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

يبدو أن على المبرمجين كتابة البرامج. ما يمكن اعتبار البرنامج؟ واحدة من الشكليات المستخدمة في النظرية هي آلة تورينج. هذا هو أبسط جهاز كمبيوتر يمكنك من خلاله وصف الخوارزميات. هذا ، بدوره ، يشير إلى أن إحدى خصائص البرنامج أمر حتمي. البرنامج لديه حالة وعملية التنفيذ. واحدة من السمات الرئيسية لل SQL كانت طبيعتها التصريحية. كان من المفترض أن الناس العاديين سوف يستخدمونه ، لأنهم لن يضطروا إلى كتابة "برنامج" ، ولكن في SQL وصف ما يريدون الحصول عليه.

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

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

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

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

  1. المجمع. لغة آلة المنحى.
  2. لغة إجرائية.
  3. C ++. برمجة الكائنات ..
  4. جافا / C # / بيثون وغيرها. الأجهزة الافتراضية والذاكرة المدارة.
  5. 1C / Access / SAP NetWeaver ، إلخ. هنا من متاعب المطور إزالة إدارة الذاكرة والقرص والشبكة وغيرها من التفاصيل. تحتاج إلى التفكير حصرا في منطق الأعمال. في مكان ما على هذا المستوى يقع lsFusion كمنصة.

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

إلى حد كبير لهذا السبب ، كقاعدة عامة ، يحترم المطورون دائمًا أولئك الذين يستخدمون تقنيات المستوى الأدنى ، ويحتقرون أولئك الذين يكتبون إلى المستوى الأعلى. أنا لست عمريًا لدرجة أنني استحوذت على تلك الأوقات عندما كره مطورو المجمعات الفتاحات. لكنني أتذكر أيضا sishnikov الذي يعتقد أن C ++ هو من الشرير. لا يزال بعض مطوري C ++ يعتبرون أن مطوري Java هم مبرمجون أقل من اللازم ، نظرًا لأنهم لا يديرون الذاكرة بالفعل ، وتتطلب برامج Java الكثير من الذاكرة الإضافية بسبب هذا. حسنًا ، جميع مطوري المستويات الأربعة الأولى ، بالطبع ، يحتقرون مبرمجي 1C ، والذي ينعكس بشكل أفضل في الحكاية الملتحية:

صورة


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

تجدر الإشارة إلى أنه في المستوى الخامس توجد لغات عالية المستوى وتوضيحية مثل SQL و HTML + CSS. بالمناسبة ، مطوري SQL أكثر ولاءً لمطوري SQL. على الأرجح ، نظرًا لحقيقة أنهم يعملون معهم جنبًا إلى جنب ، مع حل مجموعة منفصلة من المهام ، على عكس المبرمجين 1C الذين يتعاملون مع قاعدة البيانات والخلفية والواجهة الأمامية في نفس الوقت.

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

صحيح أن لاحظ أن السائق مع ناقل حركة أوتوماتيكي لديه القدرة على التبديل إلى الوضع اليدوي. وبالمثل ، يمكنك تضمين رمز التجميع في C ، أو يمكنك النزول إلى مستوى في lsFusion وكتابة تعليمة Java البرمجية.

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

لماذا لم نبحث عن المبرمجين المكتملة بالفعل؟ هناك على الأقل بضعة أسباب لذلك.

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

ثانياً ، يعد التطوير على نظام lsFusion ، بالإضافة إلى التطوير على 1C ، أقرب إلى تحليل الأعمال من التطوير على الأنظمة الأساسية ذات المستوى الأدنى مثل Java و .Net و Python. هناك مهام ومشاكل وأساليب أخرى.

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

على هذه الخلفية ، يقف مجال تكنولوجيا المعلومات منفصلًا. من الأفضل رؤية هذا في الصورة التالية:

صورة

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

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

ليس من المستغرب أن يزداد اتجاه "Enter IT" في بيلاروسيا. قررنا الاستفادة من هذا ومحاولة توظيف أشخاص من المهن الأخرى ، وتعليمهم كيفية تطوير على lsFusion. بالمناسبة ، لدينا الآن مطورو lsFusion يعملون لمديري المبيعات السابقين ومسؤولي النظام والاقتصاديين والاستشاريين لأنظمة ERP وما إلى ذلك.

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

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

لحل المشكلة ، كان مطلوبًا تنزيل النظام الأساسي وتثبيته (كان المثبت في الموقع) ، وربط الكود من المثال هناك وإصلاحه في IDE. سوف يستغرق أي من مطورينا lsFusion حوالي 15 دقيقة ، ويستغرق المبرمج العادي 3 ساعات كحد أقصى لفهم المثال والتحميل والتشغيل والحل ، لأن الحل لا يتطلب معرفة إضافية بالمنصة. تم كل شيء هناك عن طريق القياس مع المنطق الحالي.

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

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

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

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

عندما يسألونني عن التكنولوجيا لبدء المسار إلى البرمجة ، أجيب: ابدأ بـ SQL. في أي حال ، لن تؤذي معرفته ، ولا يتطلب الأمر أكثر من يوم واحد لتعلم الوظيفة الأساسية (SELECT / JOIN / UNION). بعد ذلك تحتاج إلى محاولة حل المشكلات من الإنترنت. لا يعمل هذا الأمر - لذا يجب ألا تبدأ البرمجة على الإطلاق. إذا أمكن حل شيء ما ، فيمكن أن يصبح 1C أو lsFusion مبرمجًا على الأقل. ثم ، كيف ستسير الامور.

استنتاج


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

Source: https://habr.com/ru/post/ar471378/


All Articles