العودة إلى المجتمع

مرشد غزير الإنتاج ومؤتمت الأنظمة

هل يُصنَّف سلبًا بأنه ملمّ بكل شيء؟ ربما يكون ذلك في الواقع أمرًا جيدًا، خاصة عند إرشاد أشخاص من خلفيات وخبرات برمجية وثقافات متنوعة! Isaac تقني يصف نفسه بذلك، وملمّ بكل شيء... بين أمور أخرى كثيرة!

شاهد على YouTube
المدة 37دقيقة

Jonathan: مرحبًا بالجميع وأهلًا بكم في بودكاست مجتمع Exercism. يشرفني أن ينضم إليّ Isaac، وهو أحد مشرفينا ومساهمينا، وقد قام مؤخرًا بالكثير من الإرشاد لكثير من الطلاب في GoHort، دفعات التعلّم لدينا، التي أطلقناها لمدة 30 يومًا، مرتين على ما أظن حتى الآن، خاصة في Go و Elixir. وقد ساعد Isaac في مسار Go، وكان ذلك رائعًا. إذًا Isaac، مرحبًا حارًا بك. هل تخبرني قليلًا عن المكان الذي تقيم فيه، ومن أين أنت، وكيف دخلت مجال التقنية؟ Isaac: أجل، أنا مقيم في كاليفورنيا. أعيش في سان هوزيه، كاليفورنيا. والحقيقة بصراحة أنني دخلت مجال التقنية لأن أخي الأكبر كان مهتمًا بالتقنية، وكنت أفعل كل ما يفعله. كان لديّ عدد كبير من الأشقاء. أحببنا أن نتسكع معًا، أو كان بعضنا يحب التسكع مع بعض أكثر من غيرهم. كان لديّ أخ أكبر أحببت حقًا أن أتسكع معه. لم يكن يستمتع بالتسكع معي بالقدر نفسه بالضرورة، لكنني كنت أتبعه كثيرًا وأريد أن أفعل كل ما يفعله. التقط كتاب C for Dummies كان مرميًا في المنزل عندما كان في الخامسة عشرة تقريبًا، وكنت في التاسعة إن لم تخني الذاكرة. فكان يكتب بلغة C، وقلت لنفسي إن كان يفعل ذلك فسأفعله أنا أيضًا. كانت برامجي بسيطة جدًا وأساسية في ذلك العمر. كانت أشبه بتمارين من نوع "ما اسمك؟ مرحبًا يا Bob". لم تكن معقدة أكثر من اللازم. لا بد أن تبدأ من مكان ما. لا بد أن تبدأ من هناك. قلت لنفسي: أوه، يمكنك أن تطبع حرف المرئيات، فيصدر صوت. هذا رائع جدًا. كتبت برنامجًا يطبع حرفيًا فقط الرمز \a. لكنني كنت أبدأ في التاسعة. كنت أكتب برامج بلغة C. كان لدينا جهاز قديم بنظام Windows 3.1 يُقلع إلى DOS، ثم أعدّ أخي سكربت دفعي بحيث يُظهر الحاسوب عند إقلاعه قائمة يمكنك أن تختار منها تشغيل Windows أو تشغيل الألعاب، هناك قائمة للألعاب. يمكنك أن تكتب مثلًا 5 لتشغيل Warcraft أو أيًا كان. فكنت أكتب سكربتات دفعية بحسب الألعاب الأخرى المثبتة وما إلى ذلك. ومن هناك بدأ كل شيء ينحدر. ذهب أخي إلى الجامعة لدراسة هندسة الحاسوب، ومرة أخرى قلت إن كان يفعل ذلك فسأفعله. فبدأت أكتب بلغة C وعمري 9 سنوات. كنت أكتب... Visual Basic 6 في المدرسة الثانوية. كان لديّ جهاز POM Pilot كنت أكتب عليه برامج متنوعة في المدرسة الثانوية. وكان أستاذ الرياضيات رائعًا جدًا. كنت في واحدة من تلك المدارس القديمة... Jonathan: هل كان ذلك نوعًا ما، أتذكر أنهم حاولوا إطلاق شيء يشبه ما قبل iPad، ونوعًا ما، حصل عليه عدد قليل من الناس وكان فيه تلك الكتابة الصغيرة بالقلم. وظن الجميع أنه رائع جدًا لأنه يخرج في النهاية، وكان الأمر مثل "زووب"، ثم يمكنك أن تنقر عليه. كان نوعًا ما، لم يكن، أتذكر ذلك دائمًا لأن iPad بدأ يظهر بعدها وظن الجميع: آه، كان مبكرًا قليلًا. كان جهاز Pilot متقدمًا قليلًا على زمانه، أتفهم ما أعنيه؟ Isaac: كان رائعًا لعقد من الزمن أو نحو ذلك، لكن أجل، هناك كتابة Graffiti الخاصة بـ Palm التي كنت تستخدمها للإدخال. هناك لوحة إدخال صغيرة، وكان عليك أن تكتب الحروف، لكنها كانت مبنية نوعًا ما على الأبجدية. فكانت A مجرد مثلث، وكانت F مثل الزاوية القائمة. أجل، أستاذ الرياضيات في الثانوية قال لي: إن كتبت البرنامج، فلا بأس إن أردت استخدامه في الاختبار. فكنت أكتب برامج لجهاز POM Pilot في الثانوية، وكان ذلك رائعًا حقًا. ذهبت إلى الجامعة لدراسة هندسة الحاسوب. كان الناس يتحدثون عن لغات السكربتات. لم أكن أعرف تمامًا ما هي، فاخترت Perl عشوائيًا. ثم انتهيت من الدراسات العليا، وذهبت وعيّنتني Google. في 2013 نقلوني من الساحل الشرقي إلى كاليفورنيا. وهناك تعلمت Python قبل نحو عقد. وظلت Python لغتي الأساسية خلال العقد الأخير. عملت في Google، فأسلوبي متأثر جدًا بأسلوب Google. ولهذا كنت أكتب أساسًا بهذه الطريقة. ثم قبل نحو... أربع سنوات، أظن في 2018 أو نحو ذلك، بدأت Google تدفع بلغة Go داخليًا، فتعلمت Go في تلك المرحلة. Jonathan: رائع. ويا Isaac، عندما تتحدث عن أسلوب Google، هل كانت هناك فكرة محددة بأن هذه هي الطريقة الصحيحة لفعله، أم كان الأمر أشبه بـ... كيف، وسّع قليلًا في ذلك لأنه موضوع مثير للاهتمام. Isaac: أسلوب كتابة الكود ليس بالضرورة الطريقة الصحيحة لفعله، بقدر ما هو طريقة موحدة يفترض أن يتبعها الجميع. يقولون إن الصفقة الجيدة أو التسوية الجيدة هي صفقة لا يكون فيها أحد سعيدًا. لا أحد راضٍ تمامًا عن دليل الأسلوب، لكن ما دام الجميع يتبعه، يبدو الكود موحدًا. وهذا يعني أن أي شخص يمكنه أن يأخذ أي جزء من الكود في قاعدة كود Google ويعدّله، وما دام يتبع الإرشادات الأسلوبية نفسها، يكون الكود كله موحدًا، فلا يضطر إلى القول: أوه، قاعدة الكود هذه تستخدم إزاحة بأربع مسافات وهذه تستخدم مسافتين، أو أن هذه لها اصطلاح تسمية كذا وتلك كذا. كل شيء في قاعدة الكود بأكملها يُفعل بالطريقة نفسها. لا أحد راضٍ عن أي منه. لكل شخص مجالات يتمنى لو كانت تُفعل بطريقة مختلفة، لكن بما أن هناك دليل أسلوب موثقًا ومتاحًا للعموم، يمكنك ببساطة أن تبحث في Google عن دليل أسلوب Google لـ Python، فيخبرك بأن هذه هي طريقة كتابتنا للكود في Google. وما دام الجميع يلتزم ذلك الدليل، يبدو الكود كله موحدًا جدًا، وهذا شيء جميل حقًا: يمكنك أن تفتح أي قاعدة كود فلا تجد مفاجآت مثل: أوه، هؤلاء يكتبون هذا بشكل مختلف. Jonathan: أهذا هو السبب في أن Go ربما تنسجم جيدًا مع هذا السياق؟ لأنها منسّقة، والأمر ببساطة هكذا. يمكنك بالتأكيد أن ترى تأثير Google فيها. Isaac: أجل، لا أعرف إلى أي مدى تأثر Rob Pike بأسلوب Google أو إلى أي مدى أثّر هو في أسلوب Google. لست متأكدًا من أيهما أفضى إلى الآخر، لكن Go تأخذ ذلك بالتأكيد إلى مستوى آخر... هناك أكثر من ذلك، ففي Python مثلًا توجد أساليب مختلفة، ويعدّل الناس أدوات فحص الكود لديهم لتقبل أشياء مختلفة. فمثلًا، تستخدم Google داخليًا إزاحة بمسافتين في Python لأن هناك الكثير من الكود المتداخل بعمق، ولا يريدون جدارًا هائلًا من المسافات. أما خارجيًا، فيستخدم معظم الناس أربع مسافات، وهذا مكتوب نوعًا ما في توثيق Python. لكن أجل، عندما يتعلق الأمر بـ Go، أخذوا ذلك إلى مستوى آخر، فقالوا إن اللغة نفسها تتضمن التنسيق. لا توجد إلا طريقة واحدة للتنسيق. ولا توجد خلافات لا تنتهي على الإنترنت حول ما هي الطريقة الصحيحة. هناك طريقة واحدة فقط. Jonathan: إنها توفر قدرًا هائلًا من الأخذ والرد. لنقلها بهذه الطريقة ربما. أجل. هذا جيد. Isaac: أجل. Jonathan: حسنًا، إذًا عندما بدأت العمل في Google، هل لم تكن قد استخدمت Python قط، أم كنت قد جرّبتها قليلًا، أم كانت قفزة سهلة؟ كيف، لأنك جعلت الأمر يبدو وكأنك حصلت على الوظيفة في Google ثم قلت: حسنًا، رائع، لنتعلم Python، هيا بنا. Isaac: هذا صحيح. أعتقد أنني لم أكتب Python قط قبل انضمامي إلى Google. كنت أكتب Perl لمدة سنة أو سنتين. أظن أنني بدأت أكتب Perl قبل ذلك بعامين، في أول عمل صيفي لي. تلك قصة مختلفة تمامًا. بدأت أكتب Perl قبل ست سنوات من انضمامي إلى Google، فكنت أكتب قدرًا لا بأس به من Perl حينها. وكنت أكتب قليلًا من Bash، فكنت ملمًا بلغات السكربتات. لكنني لم أكتب Python قط. لكن حين تجرب عددًا كافيًا من اللغات... يصبح منحنى التعلّم أقل حدة عند تعلّم لغة أخرى، لأنك رأيت معظم التراكيب من قبل، والأمر مجرد صياغة مختلفة قليلًا، وعدة أدوات مختلفة قليلًا. لكنه في معظمه الشيء نفسه، مختلف قليلًا فقط، مكتوب بطريقة مختلفة. تميل التراكيب إلى أن تكون متشابهة جدًا. فبعد أن تتعلم أربع لغات، يصبح تعلّم الخامسة أشبه بـ: أوه، هذا مكتوب بشكل مختلف قليلًا فقط. Jonathan: أجل، أجل. هذا مثير للاهتمام. الآن ضحكت قليلًا بشأن أول عمل لك، بعد الثانوية. إذًا، هل كنت دائمًا تقول: سأكون في الهندسة، سأعمل في مجال الحاسوب؟ هل كان ذلك تفكيرًا واعيًا دائمًا، أم كان دائمًا مجرد: هذا هو المكان الذي أنتمي إليه بطبيعتي وأستمتع به وهذا كل شيء. كيف كان ذلك... Isaac: أظن ذلك. كنت أحاول بشدة أن أسير على خطى أخي. ذهب لدراسة هندسة الحاسوب. بدأ كتابة البرامج. بدأ البرمجة عندما كنت طفلًا. تبعت خطاه. كنت أكتب البرامج منذ صغري. ذهب إلى هندسة الحاسوب، وكان ذلك، كما تعلم، أردت أن أفعل الشيء نفسه الذي فعله، كما أنني كنت أستمتع كثيرًا بكتابة البرامج وكل ذلك. فمنذ دخولي الثانوية، وكان أخي قد ذهب إلى الجامعة بالفعل، كنت أعرف أن هذا هو المكان الذي أريد أن أنتهي فيه. Jonathan: إذًا هو أكبر منك ببضع سنوات، ويبدو أنه كان له تأثير هائل عليك كشخص. كم عدد أشقائك الآخرين؟ أم كان هو الأفضل في نظرك؟ Isaac: لديّ ثمانية أشقاء، لكنه بالتأكيد كان الشخص الذي أتفق معه جيدًا. أظن أنني أتفق مع بعضهم أفضل من غيرهم. عندما يكون لديك ثمانية، تكون هناك دائمًا تفاوت. كنت أتفق معه جيدًا. نميل إلى التفكير بطريقة متشابهة كثيرًا. ولدينا اهتمامات متشابهة. كنا نتحدث عن الحواسيب بشغف طوال الوقت. وما زلنا نفعل ذلك. زوجته لا تحب حين يصبح ذلك حديث مائدة العشاء. تقول: لا عمل على مائدة العشاء. نحن نتحدث عن البرمجة بشغف ونتكلم عنها طوال الوقت. من الصعب حقًا أن تحدد كم كان الأمر مجرد رغبة مني في تقليده وكم كان تشابه اهتمامات بيننا. لدينا بالتأكيد اهتمامات متشابهة الآن. لا أعرف كم من ذلك طبيعة وكم منه تنشئة. لا أستطيع حقًا أن أقول كم منه تقليد له وكم منه تشابه اهتمامات. لكن بما أنني كنت أسير على خطاه منذ سن مبكرة، كنت أتبعه، وكان هو يرسم الطريق إلى حد ما، وكنت أسير فيه. Jonathan: أجل، هذا رائع حقًا. وأين هو الآن؟ مجرد فضول، هل هو على الساحل الشرقي؟ Isaac: ما زال على الساحل الشرقي، ويعمل في مجال التقنية. عملنا في الشركة نفسها لفترة قصيرة. Jonathan: أجل، حسنًا، رائع. إذًا هذا هو الحال. هذا رائع. كنت فقط مهتمًا بالسؤال. الآن، أحد الأمور التي، لقد شاركت حقًا في الدفعة التي أطلقناها للتو. أحدث دفعة تعلّم، خاصة مع Go، كنا نطلق شيئًا لمدة 30 يومًا مع Go، كيف، ثم كانت مشاركتك في Exercism سابقًا مرتبطة تحديدًا بالصيانة، ولكن أيضًا بالكثير من الإرشاد بحسب ما أفهم. فكيف وجدت هذا التقسيم؟ أعني، كيف تعرفت على Exercism، وما هي الجوانب المختلفة التي تستمتع بالمساهمة فيها؟ Isaac: تعرفت على Exercism في الأصل لأنني كنت أحاول إعادة تعلّم Haskell. أخذت صف Haskell 101 في Google وكان ممتعًا جدًا. ثم قلت: أوه، ينبغي أن أقضي وقتًا أطول في هذا. ثم تركته. ثم حاولت أن أعود إليه. Jonathan: وإلى اللقاء في المرة القادمة. Isaac: مع أي لغة، أجد أن أسهل طريقة لتعلّمها هي أن تكتبها فعليًا. وأسهل طريقة لكتابتها هي أن يكون لديك هدف لكتابتها. لم أجد هدفًا رائعًا لكتابة Haskell، وهذا ما جعل تعلّمها صعبًا حقًا. لكنني اكتشفت Exercism وقلت: أوه، قد يساعدني هذا في كتابة المزيد من Haskell. فبهذه الطريقة اكتشفت Exercism في الأصل. وحين وصلت إلى هناك، قلت: أوه، هناك مسار Python ومسار آخر، وتمارين من هذا القبيل هنا، فانزلقت في جحر الأرانب. Jonathan: وانزلقت في جحر الأرانب. Isaac: أجل. بدأت أحل التمارين في Python. وبدأت أحل التمارين في Bash. وحللت بضعة تمارين من تمارين Go. وحين أُطلقت GoHort وكنت أتصفح بعض حلولي السابقة، رأيت أن كثيرًا منها أُرسل قبل ثلاث سنوات. ففعليًا، سجّلت أول مرة في مسار Go في 2019 وحللت جزءًا كبيرًا من تلك التمارين حينها. وبحلول هذه المرحلة كنت أعمل بـ Python منذ عقد. فشعرت بارتياح نسبي للانضمام كمُرشد لـ Python، وهو المجال الذي أقضي فيه معظم وقتي في التمارين هذه الأيام. ثم بدأت أرسل طلبات السحب (PRs) إلى مسار Python لأن هناك أشياء كانت في غير موضعها. ثم بدأت أشارك في مسار Bash. ولست متأكدًا تمامًا كيف حدث ذلك، لكنني انتقلت من إرسال إصلاحات إلى مسار Bash إلى أن أصبحت مشرفًا على Bash. Jonathan: بهذه البساطة، أعني الأمر أشبه بـ: احترس مما تسجّل فيه، أليس كذلك؟ Isaac: أجل، ثم كتب Glenn مسار Ock فقلت: أوه، أنا أعرف Ock، أنا أحب Ock، دعني أركب هذه الموجة. فساعدت في بناء التمارين في مسار Ock. لست متأكدًا تمامًا، لكنني أظن أنني قبل ثلاث سنوات، حين رأيت تمارين Go، أكملت المسار بأكمله، ثم قال أحد المرشدين: أوه، لقد أنهيت كل التمارين، ربما ينبغي أن تصبح مرشدًا. أنا لست كفؤًا بما يكفي، فأنا لا أكتب Go بوتيرة تكفي لأشعر بالارتياح للإرشاد فيها. فلم أكن مرشدًا لـ Go فعليًا. لكن حين انضممت إلى GoHort وكان هناك مجموعة من الناس يريدون إرشادًا، قلت: حسنًا، أظن أنني أستطيع التسجيل للإرشاد خلال الشهر والمساعدة هناك. لكنني في الحقيقة انضممت مؤخرًا إلى GoHort كطالب. ثم سأنزلق من قسم الطلاب على ما أظن. Jonathan: لقد انزلقت من قسم الطلاب على ما أظن. احترس مما تسجّل فيه. أقول لك، يبدو أن هناك نمطًا يتكرر: تسجّل في شيء ثم ينتهي بك المطاف في شيء آخر، لكن هذا رائع حقًا. حسنًا، عندما كنت ترشد الطلاب في مسار Go تحديدًا، ما هي أكثر الأمور الشائعة التي تراها؟ أعني، مسار Go، من المحتمل أن هناك عددًا كبيرًا من المطورين المخضرمين، كما أقول، ممن فعلوه، أشخاص لديهم سجل في التطوير، لكن ما هي بعض الأمور التي لاحظتها وقلت: حسنًا، هذه هي الأمور الشائعة التي يبدو أن الناس يعلقون عندها؟ هل كانت هناك أنماط أو أمور وجدتها وقلت: حسنًا، هذا شائع، هذا يظهر...بشكل ثابت نسبيًا، ربما. Isaac: لا أعرف. لم أرَ، معظم الإرشاد الذي رأيته كان على أشخاص قدموا حلولًا مكتملة. في أغلب الحالات يكون الناس قد حلوا التمرين قبل أن يطلبوا الإرشاد. فالناس عمومًا ليسوا عالقين في معظم التفاعلات التي أخوضها. إذًا الأمر في الأغلب، كما تعلم، أنهم أكملوا التمرين بنجاح، ثم يكون جزء كبير من الملاحظات: هل هناك طريقة أكثر كفاءة لفعل هذا؟ هل هناك خوارزمية أفضل؟ أحد الأمور الشائعة التي تتكرر أكثر من اللازم هو بناء السلاسل النصية في لغات مثل Go و Python حيث السلاسل النصية غير قابلة للتغيير، فإن كثرة دمج السلاسل النصية ليست فعالة. فيكون الأمر كثيرًا: يمكنك بناء هذا باستخدام مصفوفة ثم دمج السلاسل النصية، أو يمكنك استخدام أداة بناء السلاسل النصية في Go. فثمة الكثير من، كما تعلم، دفعهم نحو أنماط أفضل، أفضل الممارسات والأنماط. شكرًا لمشاهدتكم. Jonathan: حسنًا، هذا رائع. هذا مذهل. الآن، ما الذي يبدو عليه يومك المعتاد في العمل، ومن أين يدخل التطوير في الصورة؟ قل إنك في مجال التقنية منذ فترة، كيف يبدو اليوم؟ ما هي التحديات؟ وما هي الأجزاء التي تستمتع بها في عملك حاليًا؟ Isaac: إذًا أنا في دور هندسة موثوقية المواقع، وهو يشبه DevOps بشكل غير دقيق. وفيه بعض أعمال إدارة الأنظمة. كنت أحمل جهاز نداء في نظام مناوبات على مدى العقد الأخير تقريبًا. فيومي المعتاد يعتمد كثيرًا على ما إذا كان أسبوع مناوبتي أم لا. حين أكون في المناوبة، يكون الأمر مراقبة جهاز النداء كثيرًا، وهناك طابور تذاكر، وطابور دعم، والتأكد من تشخيص أي عمليات فاشلة أو مشكلات وإصلاحها. وهذا نحو أسبوع من كل ستة، أو بحسب حجم الفريق حاليًا. وفي بقية الوقت، أكون في المناوبة. Jonathan: ممم. Isaac: أقضي وقتًا طويلًا في العبث بالأتمتة، فيكون الأمر كثيرًا تحديد العمليات المرهقة وجعلها أقل إرهاقًا. قد يكون... قد يكون هناك سبب لوجودها، لكن عمومًا أجد أنه، حتى يبدأ شيء ما، كما تعلم، عندما تحدث هذه المشكلة، علينا أن نشغّل، كما تعلم، نُصلح يدويًا بتنفيذ هذه الأوامر وتلك الأوامر، فأقول: حسنًا، لماذا ننفذ هذه الأوامر يدويًا؟ ألا يمكننا كتابة سكربت Python يفعل كل ذلك عنك؟ أو ألا يمكننا تحسين الأدوات حتى لا تفشل وتلتقط تلك المشكلة بنفسها؟ وكثير من مجرد محاولة تحسين الروتين اليومي لكيفية تشغيلنا للأنظمة بحيث يشارك البشر أقل، أو لا يحتاجون إلى أن يكونوا، كما تعلم، متورطين بعمق إلى هذا الحد لإبقاء الأمور تعمل بسلاسة. Jonathan: إذًا، هل تستمتع بمحاولة إيجاد تلك المجالات الصغيرة حيث يمكن تحسين الأمور؟ ما مقدار وظيفتك الذي هو رد فعل على أشياء، ثم من رد الفعل تقول: رائع، هذه فرصة، مقابل البحث الاستباقي عن تلك المجالات الصغيرة؟ ما هو التوازن عادة؟ Isaac: أستمتع بالأتمتة، وهذا على الأرجح أكثر ما أستمتع به في وظيفتي: القدرة على أتمتة الأشياء. وهو ليس دائمًا رد فعل. أعني أن رد الفعل قد يعني أن شيئًا ما يتعطل، وقد يعني أيضًا: أوه، كما تعلم، الناس ينفذون هذا الأمر حيث اكتشفت أن هناك أمرًا نميل إلى نسخه ولصقه، هل يمكنني تحسينه؟ حيث أرى أحدًا يعدّل دليل تشغيل في مكان ما أو يحسّن أمرًا في مكان ما، فأقول: أوه، ذلك الأمر فوضوي جدًا، هل يمكنني إعادة كتابته من الصفر؟ وبالطبع، التجريد مبالغ فيه أحيانًا؛ لا بد من موازنته بالتطبيق العملي، ولا بد من كلمات أقل ضخامة ولغة أفضل وكل ذلك من الأمور. عليك أن تتقن ذلك بمحاولة فعله. بصراحة، أعني أن كل شيء في وظيفتي يبدو مناسبًا إن فكرت في الأمر. فأنا شخص شديد الدافعية، لا، وظيفتي على ما أظن موجودة في أي مكان، لكن في أي عمل أحب قضاء الوقت فيه، هي هناك فقط لمحاولة و Jonathan: التصنيع، إن جاز القول Isaac: إعادة الهيكلة، وملاحظة أن هناك أدوات، كما تعلم، مرهقة الاستخدام، وتقرر أن تعيد كتابتها أو تكتب أغلفة حولها. سأرى، أجل، سأرى تغييرات في الكود في برنامج كبير ومعقد وأقول: أوه، ذلك البرنامج فوضى. هل يمكنني أن أدخل وأعيد كتابته أو إعادة هيكلته؟ أو إنشاء أدوات جديدة، أعني أنه ليس دائمًا إعادة هيكلة، بل أحيانًا مجرد إنشاء أدوات جديدة. مثل: أوه، لدينا عملية تتضمن 20 خطوة، دعني أحشر ذلك كله في برنامج. كثير من ذلك يميل إلى أن يكون، كما تعلم، عليّ أن أكتشف هذه الأمور بطريقة ما. أحيانًا أكتشفها لأنني مكلّف بتنفيذ مجموعة مهام، فأقول: لا أريد تشغيل هذه يدويًا. وأحيانًا أكتشفها بمجرد الملاحظة، مثل أن أبحث عن قطعة كود في مكان ما، فأقول: أوه، هذا الكود الآخر هنا، الذي يصونه فريق آخر، يفعل الأشياء بشكل سيئ، دعني أعيد هيكلته، أو أستخدم مكتبات حديثة أو أيًا كان، أجل. Jonathan: إذًا الكثير من... مجرد القدرة على الرؤية. إذًا ما مقدار الحرية التي تملكها؟ هل تملك حرية كبيرة للتجول والانقضاض والتعديل هنا؟ أعني، لا بد أن ذلك ممتع جدًا. Isaac: مديري يمنحني حرية كبيرة، وهذا لطيف حقًا. لا أعرف كم من ذلك جاء من كوني، أنا لست في Google حاليًا، لكنني لا أعرف كم من ذلك جاء من خلفيتي في Google. في Google، كان الناس منفتحين جدًا على الانقضاض والقول: أوه، لاحظت كذا، كما تعلم، استخدمت هذه المكتبة بطريقة ما ويمكن تحسينها بهذه الطريقة. دعني أصلحها. وقد عملت لفترة قصيرة جدًا في شركة ناشئة كانت ثقافتها مختلفة تمامًا، وكانت أقل انفتاحًا بكثير. وفي الشركة الناشئة، كان الناس شديدي الحرص على قواعد الكود لديهم، ولم يكن مقبولًا أن يعدّلها آخرون. فكنت أقول: أوه، هناك مشكلة في قاعدة الكود هذه. هل يمكنني تغييرها في تلك القاعدة؟ Jonathan: أجل، تراجع. لكن ذلك مثير للاهتمام لأنك تفترض أن شركة ناشئة ستكون أكثر ميلًا إلى: حسنًا، لننجز العمل فقط ونفعله بأقل تكلفة ممكنة، كما تعلم، لكن في الواقع، ربما كانت Google أقدر بكثير على التعامل مع ذلك كمفهوم. وهذا، آسف، لقد أضأت الأنوار للتو لأننا، لا توجد أنوار حاليًا لكل من يستمع، لا توجد كهرباء في كيب تاون كل حين. الآن أنا أعمي نفسي، لكن لا بأس. لكن ذلك مثير للاهتمام بالعودة إلى تلك النقطة عن ثقافة الشركات الناشئة وكيف أن الناس، بصورة ساخرة، أكثر تعلقًا بامتلاك الأشياء ثم ربما يعيقون الأمور قليلًا، كما تعلم؟ Isaac: أجل، لا أعرف إن كان كون الشركة ناشئة يرتبط بالضرورة بكونها... كانت ثقافة عمل قائمة على اللعب. في Google، كان كثير مما يفعله الناس لعبًا حيث استمتعوا بما يفعلونه. يفعلونه لأنهم يستمتعون به. وكانوا ودودين جدًا في ذلك أو منفتحين جدًا. بعض ثقافات أماكن العمل الأخرى لا تتعلق بالضرورة بفعل الأشياء لأنك تستمتع بها، بل أكثر بأنها وظيفة، أو بأن هذا كودي وأنا أعرف كيف يعمل، ولا أريد أن يعبث به آخرون. لست متأكدًا تمامًا مما يدخل في إحداث هذه التغييرات في ثقافة مكان العمل. لكن Google رعت كثيرًا إحساسًا بأن الجميع لديه إمكانية الوصول إلى كل الكود. وأنكم جميعًا مخوّلون بتعديله. فامضِ قدمًا وافعل ما تراه صوابًا. ثم في وظيفتي الحالية مع مديري الحالي، منحني أيضًا حرية كبيرة. يقول: بالتأكيد، وجدت شيئًا لإصلاحه، فاذهب وأصلحه. وجدت مجالًا يمكن تحسين الأمور فيه، سأتنحى عن طريقك. أخبرني بما يمكنني فعله للمساعدة. فأنا قادر إلى حد كبير على توجيه الكثير مما أفعله بنفسي، وكما تعلم، إن وجدت مجالًا أقول فيه: أوه، يمكنني تحسين هذا. يقول: أجل، هذا رائع، افعل ذلك. Jonathan: حسنًا، جيد. وأنت، الشركة مقرها على الساحل الشرقي، هل يصح أن أقول إنك تعمل عن بُعد فعليًا؟ أظن أنني أتذكر أنك قلت إنك على وشك الانتقال، ثم ضرب كوفيد وبدا الأمر وكأن ذلك كله انتهى. كيف تجد العمل عن بُعد، والمسافة، والفارق الزمني، وكل ذلك؟ هل يؤثر عليك أم...؟ Isaac: أفتقد بالتأكيد وجودي في مكتب والتفاعل مع الناس وجهًا لوجه. فهذا جانب. أما الفارق الزمني، فقد كان فريقي متعاونًا جدًا مع اختلاف التوقيت. أنا متأخر بثلاث ساعات عن بقية فريقي. هناك اجتماع يومي قصير أفوّته. لدينا اجتماعان يوميان لمنتجين مختلفين. فأول اجتماع أفوّته، وقد كان فريقي جيدًا جدًا في مراعاة ذلك. ونستخدم Slack كثيرًا داخليًا. فكانوا جيدين جدًا في إنشاء محادثة يومية على Slack بالمشكلات التي تظهر حتى أبقى على اطلاع، وإن احتاجوا شيئًا يراسلونني. وأنا أحاول بجد أن أكون سريع الاستجابة، وأعالج أي من ذلك بأسرع ما أستطيع في الصباح. فالأمر نوعًا ما، الفارق الزمني ليس رائعًا، لكنه أيضًا ليس، فقد تمكنا من التعامل معه جيدًا. وعلى الجانب الآخر، يعرفون أن لديهم في الفريق شخصًا مستيقظًا في وقت متأخر قليلًا. فكان بعض زملائي، كما تعلم، تكون الساعة السادسة مساءً على الساحل الشرقي ويقولون: أوه، هذا معطّل. كما تعلم، Isaac على الساحل الغربي، يمكنه مساعدتي في هذا لأن الساعة هناك لا تزال الثالثة فقط. فهو يعمل في الاتجاهين. أجل، و... Jonathan: أجل. Isaac: كنت، أجل، تركت Google في 2019، آسف، 2020. أجريت المقابلة في 2019. كان من المفترض أن ألتحق في 2020 في مايو. كنت أخطط للانتقال في أغسطس، أبريل 2020، لكن كوفيد بدأ وكل ذلك، وأُغلق المكتب، وكان الأمر كثيرًا من: أوه، المكتب لم يُفتح بعد. سينتقل بمجرد أن يُفتح المكتب. ثم بعد عامين من الجائحة، بدأوا يفتحون المكتب من جديد. فقلت: كما تعلم، لست متأكدًا أنني أريد الانتقال بعد الآن. بدت نيويورك مثيرة حقًا، لكن كان هناك كل هذه الأعمال مفتوحة، كما تعلم، أماكن وفعاليات وكل ذلك. لكن الآن بعد وجود جائحة، لم يعد كثير من ذلك يبدو مثيرًا بالقدر نفسه. فانتقلت إلى وظيفة عن بُعد بعد أن عملت عن بُعد لعامين. Jonathan: وهل أنت شخص يحب المدينة أم الريف أم شيء بينهما؟ مثل ماذا؟ لأن نيويورك مدينة. إنها مدينة بنسبة 100%. أعني، لا جدال في ذلك. أتفهم ما أعنيه؟ فكان ذلك سيكون تحولًا كبيرًا، على ما أظن. أجل. لكنه مثير للاهتمام رغم ذلك. Isaac: لقد كبرت في منطقة حضرية كبيرة، فلست غريبًا عن حياة المدينة. أعيش حاليًا في الضواحي. أستمتع بالمشي لمسافات طويلة وركوب الدراجات، وأحاول أن أخرج إلى الطبيعة قدر ما أستطيع. فأنا أستمتع بالعيش في الضواحي قرب مسارات رائعة للمشي وركوب الدراجات وكل ذلك. الانتقال إلى نيويورك سيكون تغييرًا كبيرًا. لكنني أرى أن تغيير الأجواء من وقت لآخر ليس أمرًا سيئًا. وإن كرهت حياتي في نيويورك فيمكنني دائمًا أن أنتقل بعيدًا. Jonathan: ليس الأمر بهذه الصعوبة. لكن هذا رائع. الآن على الأرجح، صححني إن كنت مخطئًا، تقضي وقتًا طويلًا أمام الشاشة في مكتب، مثل مكتب منزلي أو ما شابه. هل تخرج كل يوم نوعًا ما، كيف توازن بين عالم الشاشة وبين، هل لديك وقت يومي تقول فيه: لا بد أن أخرج وأقضي وقتًا في الخارج وأفعل شيئًا آخر؟ Isaac: أتمنى لو كنت أفعل. في بعض الأيام أو الأشهر أو السنوات أكون أفضل من غيرها. في 2020 كنت جيدًا في ركوب الدراجة كل يوم تقريبًا. أخرج في معظم عطل نهاية الأسبوع. أحاول أن أقوم برحلة مشي واحدة في الأسبوع. لم أكن رائعًا في ذلك، لكنني ذاهب في رحلة مشي. يعتمد على الفصل. أنا في كاليفورنيا. بعض الأسابيع شديدة الحرارة. مررنا للتو بموجة حرارة كانت... فوق 40 درجة مئوية لنحو أسبوع متواصل. وهذا يجعل الخروج صعبًا. نحن في كاليفورنيا حيث الحرائق، فكما تعلم أحيانًا نمضي أسبوعًا أو أسبوعين تكون فيه جودة الهواء في الخارج غير آمنة تمامًا للتنفس. وهذا يجعل التواجد في الخارج في كاليفورنيا صعبًا في بعض الأسابيع. ثم البقاء داخل المنزل في جائحة أمر صعب أيضًا. فمن المؤكد أن هناك أسابيع أكون فيها داخل المنزل أكثر بكثير من غيرها. لكنني أحب الخروج. كانت هناك، كما تعلم، فترات امتدت ستة أشهر كنت أذهب فيها للمشي، مرة كل أسبوعين على الأقل. Jonathan: ثم. Isaac: مررت بفترات تخييم مرة في الشهر، كما تعلم، ستة أشهر متواصلة. فهناك فترات أكون فيها أفضل من غيرها، وهناك فترات أكون فيها في المنزل لنحو أسبوعين متواصلين. Jonathan: أجل، هذا رائع. إذًا يا Isaac، ما هو النوع التالي من... ربما، لا أعرف، ربما لم تفكر إلى هذا الحد، لكن كيف تبدو السنوات الخمس القادمة بالنسبة لك، هل لديك أي فكرة أم أنك تقول: أريد أن أبدأ عملًا خاصًا بي أو أريد أن أفعل هذا، أم أنك فقط: آه، أستمتع بالحياة وأستمتع بمكاني الحالي. Isaac: قبل أن أنتقل إلى الساحل الغربي، ظننت أنني أفهم مستقبلي بشكل أفضل. لكن انقلاب كل ذلك رأسًا على عقب علّمني أنه من الصعب حقًا التنبؤ بما سيحدث في السنة القادمة، فضلًا عن خمس. أنا سعيد جدًا. غيرت وظيفتي مؤخرًا نسبيًا. غيرت وظيفتي قبل نحو سنتين أو سنتين ونصف. أنا أستمتع كثيرًا بوظيفتي الحالية، فلا أرى ذلك يتغير قريبًا. سأكون سعيدًا بالبقاء في الوظيفة نفسها للسنوات القادمة، سنتين أو ثلاثًا، أو خمسًا. أحب العيش في كاليفورنيا. أحب قدرتي على المشي وركوب الدراجة والتخييم وكل ذلك. فلا أرى نفسي مغادرًا كاليفورنيا قريبًا. ولا أرى نفسي مغادرًا تلك الوظيفة قريبًا لأنني أستمتع بالعمل هناك كثيرًا. فأنا راضٍ تمامًا ولا أرى أي تغييرات كبيرة مخطط لها، لكن من الصعب حقًا أن أجزم. Jonathan: هذا رائع. حسنًا، لديّ سؤالان آخران أحب أن أعرف رأيك فيهما. الأول على الأرجح ليس الذي جهزتك له، لكن... إذًا لو كنت ستفعل... لو دخل عشرة أشخاص إلى مكتبك الآن، عشرة غرباء تمامًا، وهم لا يعرفون شيئًا عن البرمجة، وكان بينهم عازف قيثارة وبستاني وأيًا كان، فما أهم ثلاث نصائح ستعطيها لهم لتعلّم كيفية البدء بالبرمجة؟ إن أمكنك اختصارها إلى: افعل هذا مهما كان الثمن، فما بعض تلك النصائح؟ Isaac: إذًا أهم توصية لديّ هي أن تحاول إيجاد مشكلة يمكنك حلها بالبرمجة. فيصبح لديك مشروع ملموس يمنحك الدافع. فبدون هدف محدد يدفعك إلى الأمام، يصعب تعلّم البرمجة صعوبة بالغة؛ فمثل أي مهارة أخرى، يتطلب تعلّم البرمجة قدرًا لا بأس به من المثابرة والجَلَد. عليك فقط أن تستمر. قد يكون الأمر صعبًا جدًا في البداية. وقد يكون محبطًا جدًا. وبدون شيء يدفعك إلى الأمام، يسهل جدًا أن تستسلم. فإن أمكن، وجود شيء تريد فعله فعلًا بهذه المهارة يساعد كثيرًا. إنها كلها في المنظومة نفسها من النصائح. الأمر فقط أن عليك، عليك أن تستمر. ويساعد كثيرًا أن تكون صبورًا مع نفسك وتدرك أنك تتعلم مهارة جديدة وأنك ستفشل كثيرًا. قابلت بعض الناس الذين يحاولون تعلّم البرمجة فيُحبَطون. يقولون: أوه، أنا عادةً جيد في الأمور وهذا لا يعمل من أول مرة. فأقول: أجل، الفشل جزء من عملية التعلّم. وإن لم تكن مرتاحًا للفشل في شيء، فقد تجد صعوبة كبيرة في اكتساب مهارات جديدة. عليك أن تكون صبورًا مع نفسك ومع العملية، وأن تستمر كثيرًا. Jonathan: هذا مفيد. أعني، أقول إن ذلك نوعًا ما، لم أدرك إلا الآن كيف تعمل الطرق. وقد جاء ذلك من خلال المتابعة فقط، لأن كثيرًا من المعرفة التي، حسنًا، عندما يتحدث الناس عن الأمور، هناك الكثير من المعرفة المفترضة عندما يعلّمون، خاصة. فجأة يرمي الجميع كلمة "طرق" في كل مكان. أقول: ما هذا الذي يُسمى طريقة؟ ما الذي يجري؟ ولم أبدأ أدرك إلا من خلال الدفعة مع Go أن الطرق تعمل بهذه الطريقة. لكن كان الأمر أشبه بسقوط العملة، إلا أنني اضطررت إلى الانغماس في هذه البيئة وهذا المصطلح طويلًا حتى يتسرب إليّ. أقول إن ذلك كان أحد أكبر ما تعلمته: ألا أحاول تعلّم كل شيء، بل أن أنحت مفهومًا بسيطًا واحدًا. لأن كل شيء مترابط لدرجة أنك في النهاية تتمكن من ربط النموذج الذهني، وهذا مهم جدًا. فهذه أداة رائعة. سأخبر الناس بها، توصية Isaac: كن صبورًا وكن لطيفًا مع نفسك وانحت شيئًا شيئًا. هذا رائع حقًا. حسنًا. ثم السؤال الأخير لدي، وقبل أن أتركك تواصل بقية يومك، تحدثنا كفريق عن مفهوم المبدأ الذي تموت عليه في مجال التقنية. يبدو ذلك دراميًا جدًا وفيه الكثير من الدراما. والفكرة أساسًا: ما هو الشيء الوحيد الذي تعتقد أنه مفتاح مطلق، والذي تراه عقلية أو منظورًا غير قابل للتغيير في مجال التقنية. مثال جيد سيكون، لا أعرف، على مستوى تافه جدًا، أضع دائمًا دواليّ ثم أكتب CSS إن كنت أعمل على الواجهة الأمامية. أي الوظائف، ثم المنطق، ثم أيًا كان. قد يكون، كما تعلم، كان لدينا مثال، Rebecca التي تدير مسار Unison. قالت إنها تفضل أن يكون لديها عبقري ذو آراء صارمة وصعب التعامل معه. كانت تفضل 50 شخصًا يحبون العمل في فريق وحل المشكلات معًا، على عبقري واحد يستهلك كل موارد الإدارة. فكان ذلك أحد آرائها، وقد صغتها بلطف، لكن ما هو المبدأ الذي تموت عليه في مجال التقنية والذي تعتبره غير قابل للتفاوض؟ Isaac: هذا على الأرجح متأثر جدًا بطريقة عمل Google. في Google، لديهم مفهوم قابلية القراءة، حيث يُفترض أن يكون الكود سهل القراءة. وكثير مما أفعله حين أكتب الكود أنني أريد أن يكون كودي بسيط القراءة والفهم. وقد رأيت الكثير من الكود، خاصة، هناك تركيز كبير على الكفاءة وقياس الأداء وجعل الكود أسرع. وكثيرًا ما أعترف بأن الطريقة التي أفعل بها الأمر ليست بالضرورة الأكثر كفاءة، لكن إن وجدت أن الكود أسهل قراءة، فأنا أفضّل كودًا غير فعال سهل القراءة على كود فعال للغاية. فمثلًا، كما تعلم، هناك مقولة شائعة، لست متأكدًا ممن تُنسب إليه بالضبط، بأن أصل كل الشرور، بأن التحسين المبكر هو أصل كل الشرور. وكلما قال الناس: أوه، كيف يمكن أن يكون هذا أكثر كفاءة؟ أقول: وهل يحتاج أن يكون أكثر كفاءة؟ هل واجهت، كما تعلم، هل تشغّله في الإنتاج وتصطدم بمشكلات في الكفاءة؟ هل هذا بطيء جدًا للاستخدام في الإنتاج؟ إن لم تكن قد واجهت مشكلة فعلية في الكود في الإنتاج تتطلب أن يكون أكثر كفاءة، فلماذا تجعله أكثر كفاءة؟ إنه أسهل قراءة كما هو. وأسهل صيانة. ويمكن لآخرين أن يفهموا ما يجري. فلماذا تتخلى عن كود مكتوب جيدًا، سهل التعامل وسهل الصيانة، لتوفير دورة معالج؟ هل الكهرباء رخيصة بما يكفي والمعالجات رخيصة بما يكفي حتى لا نحتاج إلى تحسين الكود؟ لمجرد تحسينه. Jonathan: أجل، الأمر مضحك دائمًا لأنه أحد تلك الأمور التي أقول فيها... برنامجنا تُرجم وعمل في 30 مللي ثانية. فيقولون: أوه، لكننا جعلناه ينزل إلى 20 مللي ثانية. أقول: لا أستطيع أن أخبرك. لم أكن لأستطيع أن أخبرك أيهما كان أسرع وأيهما أبطأ. يبدو ذلك سريعًا. فأظن أنها نقطة جيدة. أنا متأكد أنني سأستمتع بقراءة كودك، لكن هذا رائع. Isaac، شكرًا جزيلًا على وقتك، وعلى استيقاظك مبكرًا، وعلى تحمّلك فصل الأحمال في نصف الكرة الجنوبي. وعلى جلوسي في ظلام دامس، أنا متأكد أن ذلك مضحك جدًا بالنسبة لك. لكن شكرًا جزيلًا على وقتك. وأتطلع لرؤيتك في دفعات التعلّم المقبلة وفي بثوث الإرشاد وكل ذلك. وشكرًا على كل ما تساهم به في Exercism وعلى كل الأصعدة. أقدّر ذلك. وأجل، شكرًا جزيلًا مرة أخرى. وسأراك بعد لحظات. لا، بكل سرور. اعتنِ بنفسك يا Isaac. إلى اللقاء. Isaac: شكرًا جزيلًا مرة أخرى. لا، بكل سرور. اعتنِ بنفسك يا Isaac.

المزيد من قصص مجتمعنا

استمع وتعلّم واستلهم من أعضاء مجتمعنا.