كيف حصلت على وظيفة مهندس برمجيات في Twitter

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

كيف بدأت رحلتي

انقر فوق كلاك كلاك كلاك .

دوى صوت أصابعي وهو يضغط بشدة على المفاتيح على لوحة المفاتيح طوال الليل.

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

كانت الثانية صباحا.

الآن قد تعتقد أنني كنت أكتب جزءًا من برنامج أو أخترق شيئًا مهمًا. وإلا لماذا سأكون مستيقظا خلاف ذلك؟

لم أكن.

كنت أستعد لمقابلة الترميز الفني القادمة باستخدام موقع ويب يسمى Leetcode. سيطرت علي Fury لأنني لم أستطع عكس قائمة مرتبطة ، والتي تم تصنيفها بسهولة على النظام الأساسي (جربها هنا).

كيف وصلت هناك

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

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

أرسل لي المجند ورقة إعداد شاملة مع روابط للممارسة وتحسين مهاراتي في الترميز والخوارزميات.

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

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

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

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

هذا هو السبب في أنني بدأت دورة تدريبية مخصصة ، تسمى Acing The Technical Interview.

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

وجد العديد من المهندسين الآخرين النجاح من الأساليب الموضحة في الدورة.

خلفيتي

امتلكت 3 سنوات من الخبرة كمهندس متكامل في شركة ناشئة ، معظمها في بناء الخدمات الصغيرة وتطوير API على AWS stack.

ركزت المجموعة بشكل كبير على PHP و NodeJS و AWS SQS كقائمة انتظار للرسائل و Postgres لقاعدة بياناتنا و AWS S3 للتخزين طويل الأجل.

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

حصلت على تعليم رسمي في علوم الكمبيوتر - تخرجت من كلية يسوعية خاصة صغيرة في ولاية واشنطن في 4 سنوات بدرجة البكالوريوس في علوم الكمبيوتر.

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

لقد تقدمت بطلب إلى أكثر من 30 شركة مختلفة ، وأجريت مقابلة مع 15 ، ورُفضت من قبل 6 ، وتلقيت عروضًا من 6 ، ورفضت 5 ، وقبلت 1. إذا كنت تقوم بالعد ، فإن الرياضيات لا تتماشى تمامًا لأن بعض الشركات شبح بعد الموقع في الموقع .

يمكنك قراءة المزيد هنا إذا كنت مهتمًا بكيفية حصولي على عروض من شركات FAANG رفيعة المستوى دون الحصول على درجة Ivy League.

كيف استعدت للمقابلات

قضيت معظم وقتي في Leetcode ومع كتاب بعنوان عناصر مقابلات البرمجة (موصى به بشدة).

لقد أمضيت أيضًا حوالي 10٪ من وقتي في تصفح موقع YouTube لإجراء مقابلات حول تصميم الأنظمة ، مثل Jack Gabbard و Gauran Sen.

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

إجمالي وقت التحضير

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

اعتدت أن أواصل دفعات الترميز: 3 ساعات من الترميز القوي متبوعًا بأسبوع راحة. لقد وجدت أن هذا غير فعال ودفعت الثمن الباهظ لتبديل السياق عدة مرات.

في المجموع ، قضيت حوالي 3 ساعات يوميًا في أيام الأسبوع (بسبب العمل) ، ومن 4 إلى 6 ساعات في عطلات نهاية الأسبوع لما مجموعه حوالي 20 ساعة في الأسبوع لمدة شهر .

كيف تقدمت للوظائف

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

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

يمكنك قراءة المزيد هنا حول كيفية صياغة سيرتي الذاتية لجعل مديري التوظيف يلاحظونني.

بعد بضعة أسابيع ، تواصل معي المجند أخيرًا وأراد جدولة شاشة هاتف أولية.

الجدول الزمني لعملية طلبي

  • 10 فبراير 2017 - اتصل المجند بجدولة TPS
  • 8 مارس 2017 - TPS الأولي
  • 13 أبريل 2017 - TPS الثانية
  • 18 أبريل 2017 - في الموقع
  • 2 مايو 2017 - تم تمديد العرض
  • 23 مايو 2017 - تأكيد تويتر
  • 24 يوليو 2017 - تاريخ البدء الرسمي

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

بعد الجولتين الأوليين ، انتقلت إلى الجولة التالية من المقابلات في الموقع في Twitter Seattle.

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

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

المقابلة في الموقع

كان في الموقع 3 جولات في المجموع مع غداء محصور بينهما (يقصد التورية):

  • اتساع (75 دقيقة)
  • العمق (75 دقيقة)
  • غداء
  • أعلى تصنيف (90 دقيقة ، اختياري )

الشيء الوحيد الذي يجب ذكره هو أن جولات Twitter في الموقع كان لها مقابلا 2 في كل جولة.

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

اتساع (تصميم النظام)

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

سألوا أسئلة مثل هذا:

هل أنت قادر على بناء نظام موثوق به مع فترة توقف معقولة من البداية إلى النهاية ، من إعداد واجهة المستخدم إلى التواصل عبر واجهة برمجة تطبيقات HTTP ، إلى بناء خدمة خلفية؟

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

انتهينا بسؤال ترميز في النهاية. بصراحة لا أستطيع أن أتذكر ما كان عليه ، لكنه لم يكن شيئًا غير عادي.

العمق (استئناف)

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

ما هو المشروع الذي قمت ببنائه مؤخرًا؟ لماذا قمت ببنائه؟ ما هي البدائل التي تم النظر فيها؟ هل نجحت في النهاية؟

قادمًا من خلفية بدء التشغيل ، كنت مسؤولاً عن بناء العديد من الأشياء من البداية ، مثل إعداد مجموعات AWS ، وإعداد SQS لمهام المعالجة.

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

أعلى الدرجات / الثقافية

كانت الجولة الثقافية عبارة عن مقابلة لمدة 90 دقيقة مع مدير التوظيف والقيادة العليا.

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

لا توجد أسئلة الترميز لهذه الجولة أيضا.

عملية المقابلة بأثر رجعي

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

فيما يلي بعض النصائح الأخرى:

تعرف على الخوارزميات الخاصة بك بعمق

افهم كيف تعمل المقايضات بين تعقيد الوقت وتعقيد المكان .

تعرف لغة واحدة بشكل جيد

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

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

قم بمراجعة السيرة الذاتية

تأكد من ذلك لصقل المشاريع المدرجة في سيرتي الذاتية. هذا يعني

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

كن منضبطًا في تحضيرك

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

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

فكر في الأنظمة التي تتفاعل معها يومًا بعد يوم

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

الموارد التي أوصي بها

  • الحصول على المقابلة الفنية: تدريبي المخصص لمساعدتك في الحصول على المقابلة الفنية في أفضل شركات التكنولوجيا.
  • Leetcode.com: تدرب على مشاكل الترميز هنا.
  • تحقق من صفحة الموارد هذه لمزيد من المعدات والأدوات والكتب التي أوصي بها بشدة.

يمكنك قراءة المزيد من مقالاتي حول التكنولوجيا في مدونتي الشخصية ، حيث أشارك رحلتي في أن أصبح مهندس برمجيات محترف.

إذا استمتعت بهذا ، فالرجاء التفكير في مشاركة هذا مع شخص قد يستفيد منه ، ومتابعي على Youtube و LinkedInk و Twitter.

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