رحلتي من المبيعات إلى تطوير الواجهات الأمامية: 16 شهراً نحو التحول المهني

دقائق القراءة: 12

في الثامن عشر من أغسطس عام 2015، استقليت طائرة متجهة من مطار Toronto Pearson الدولي إلى Copenhagen، لبدء فصليّ دراسة في كلية Copenhagen Business School. أتذكر هذا التاريخ جيداً لأنه كان عيد ميلاد أخي، الذي اضطر لقضائه في المطار مع عائلتنا وهم يودعونني إلى Denmark، لما اعتقدوا أنها ستكون فترة ثمانية أشهر فقط.

كانت معرفتي الوحيدة بمدينة Copenhagen آنذاك مقتصرة على مشاهدة فعاليات CPH Open عبر قناة Thrasher Magazine على YouTube. لحسن حظي، وقعت في حب المدينة تماماً، وبعد فصلي الدراسي الأول في الخارج، جعلت البقاء فيها لفترة أطول مهمة شخصية لي. كان من المقرر أن أبدأ تدريباً عند عودتي إلى Canada، لكنني تحديت نفسي لإيجاد فرصة تدريبية في Copenhagen بدلاً من ذلك.

من كوبنهاغن إلى عالم البرمجة: بداية رحلة غير متوقعة

الخطوات الأولى في عالم الشركات الناشئة

لم يكن لدي خطة واضحة، لذا بدأت بالبحث عن أدوار كممثل لتطوير المبيعات (sales development representative - SDR). كنت قد تعلمت للتو عن هذا الدور المبتدئ في إحدى فصولي الدراسية. وبما أن خبرتي السابقة كانت كلها في المبيعات وخدمة العملاء، اعتقدت أنه سيكون مناسباً. أرسلت طلبي إلى شركة ناشئة شابة، وفي غضون أربع ساعات، كنت أتحدث عبر الهاتف مع مدير المبيعات المستقبلي. كانت تلك أول لمحة لي عن مدى سرعة سير الأمور في عالم الشركات الناشئة!

بعد حوالي شهر، كان يومي الأول في العمل. وكانت هذه أيضاً المرة الأولى التي ألتقي فيها بمطورين محترفين. لطالما كان لدي اهتمام عميق بالتكنولوجيا، على الرغم من أن أقرب ما وصلت إليه لتطوير البرمجيات في تلك المرحلة كان في فصلي الدراسي Visual Basic في المدرسة الثانوية! كان بدء وظيفتي الجديدة هو المرة الأولى التي أعمل فيها مباشرة جنباً إلى جنب مع المطورين. كان من المثير الاستماع إلى حديثهم عن عملهم. كانوا يتحدثون دائماً عن الكثير من المصطلحات والتقنيات الرائجة مثل React، Ember، Scala، Python، TypeScript، boilerplate-code، compilers، وrendering. كان من المخيف التفكير في أنك بحاجة إلى معرفة الكثير لتطوير البرمجيات.

صورة لمكتب مبيعات في شركة ناشئة، تظهر بيئة العمل الديناميكية والتفاعلية.

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

اكتشاف freeCodeCamp: نقطة التحول الكبرى

تساؤلات حول المستقبل المهني

على الرغم من نجاحي في دوري الحالي كمدير حسابات، لم أكن متأكداً مما إذا كان مستقبلي في المبيعات هو ما أريده بالضبط. كان الأمر أيضاً يحد من فرص عملي المستقبلية إذا أردت البقاء في Denmark – فليس من السهل العثور على وظيفة جيدة في المبيعات باللغة الإنجليزية في بلد تكون لغته الأم هي الدنماركية (Danish)! وجدت نفسي أقرأ أكثر، باحثاً عن هواية أو تحدٍ جديد. في تلك اللحظة، عثرت على مدونة freeCodeCamp (التي كانت لا تزال على منصة Medium في ذلك الوقت).

الانغماس في تعلم البرمجة مجاناً

استغرق الأمر مني بضعة أيام قبل أن أدرك أن freeCodeCamp لم تكن مجرد مدونة، بل كانت منصة كاملة متاحة لتعلم البرمجة عبر الإنترنت، مجاناً! وكأن الاسم لم يكن يتحدث عن نفسه… لم يستغرق الأمر سوى إكمال عدد قليل من تحديات HTML حتى أصبحت مدمناً تماماً. حينها قررت أن أقضي كل وقت فراغي في العمل على منهج freeCodeCamp، بهدف أن أصبح مطوراً في يوم من الأيام في المستقبل البعيد. أحببت فكرة القدرة على التحدث مع زملائي حول React، مهما بدا ذلك بعيد المنال.

تحديات البدايات: صراع مع أساسيات البرمجة

من الإحباط إلى طلب المساعدة

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

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

الانتقال إلى JavaScript

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

بعد العمل على جميع وحدات Codecademy، بدأت دورة JavaScript أخرى، وهذه المرة اشتريت “The JavaScript Bootcamp” عبر Udemy. وبما أن هذه كانت المرة الثالثة التي أعمل فيها على الأساسيات، فقد غادرت تلك الدورة بأساس أكثر استقراراً وثقة أكبر في قدرتي على العمل مع JavaScript.

الانضمام إلى Pleo: الفرصة الذهبية

صورة لفريق عمل <code>Pleo</code> خلال مخيم تدريبي في ديسمبر 2019، تعكس بيئة عمل تعاونية ومحفزة.” style=”max-width: 100%; height: auto; border-radius: 8px; margin: 20px auto; display: block;”/></p>
<p>من هناك، انتقلت مباشرة إلى دورة أخرى، هذه المرة عن <code>Node</code>، تلتها مباشرة دورة عن <code>React</code>. في مكان ما بين دورتي <code>Node</code> و <code>React</code>، كنت قد بدأت وظيفة جديدة كمدير حسابات (<code>account manager</code>) في ما أعتبره حتى الآن أروع شركة ناشئة في <code>Denmark</code>. كان وما زال من المثير للغاية أن أكون جزءاً من شركة تنمو بهذه السرعة. وكان الأمر أكثر إثارة أن ألتقي بالعديد من المطورين الجدد والموهوبين لأتعلم منهم.</p>
<h3>الشفافية والدعم الإداري</h3>
<p>بعد حوالي ثلاثة أشهر من وظيفتي الجديدة، كنت أنا ومديرتي نناقش كيف يمكن أن يتطور دوري في المستقبل. كنت صريحاً معها وقلت إنني لست مهتماً بأي مسؤوليات إضافية. أردت قضاء أي قدرة زائدة لدي في تعليم نفسي البرمجة، على أمل أن أصبح مطوراً في يوم من الأيام. هذا ليس شيئاً ترغب في سماعه من ممثل مبيعات جديد نسبياً في فريقك. ولكن لدهشتي، كانت داعمة بشكل لا يصدق والتزمت بمساعدتي بأي طريقة ممكنة، طالما أنني أحقق أهدافي.</p>
<h2>تحدي البرمجة الداخلي: إثبات الذات</h2>
<h3>التحضير المكثف والتفاني</h3>
<p>بعد التحدث مع أحد مديري الهندسة لدينا، كان واضحاً أنه لكي نواصل الحديث حول كيف سيبدو الانتقال من المبيعات إلى المنتجات، سأحتاج إلى إكمال تحدي التوظيف في الواجهة الأمامية (<code>frontend hiring challenge</code>) الخاص بنا، تماماً كما يفعل أي مرشح خارجي. كانت فكرة محاولة هذا الأمر مخيفة ومحفزة في آن واحد.</p>
<p>هذا هو الوقت الذي بدأت فيه البقاء متأخراً في المكتب كل ليلة. لم أكن أرغب في إضاعة الوقت في ركوب الدراجة إلى المنزل، لذا بمجرد أن تدق الساعة 17:00، كنت أهرع لإيجاد بعض العشاء، وأعود إلى مكتبي في أقرب وقت ممكن، لأبدأ يومي متظاهراً بأنني مطور. كنت قد أنهيت للتو دورة <code>React</code> قبل عطلة عيد الميلاد مباشرة وكنت أعمل على بعض المشاريع الجانبية، على الرغم من أنني لم أتابع أياً منها حقاً. كنت أعرف أنني بحاجة إلى البدء في تطبيق معرفتي ولكنني وجدت صعوبة في إكمال مشروع بدون هدف نهائي حقيقي.</p>
<h3>مراجعة الكود والتعلم المستمر</h3>
<p>مع بعض الوقت الإضافي المتاح لي خلال فترة العطلة، بدأت في مراجعة تحدي الواجهة الأمامية مرة أخرى. كنت لا أزال أشعر بأنني بعيد عن القدرة على تقديم إنجاز يستحق، ومع ذلك، شعرت أنه أعطاني نوعاً من الهدف النهائي للعمل نحوه حتى أتمكن بالفعل من إنجاز شيء ما. لحسن حظي، كان تحدي الواجهة الأمامية لدينا مشابهاً جداً للمشروع النهائي لدورة <code>React</code>، لذا تمكنت من إعادة استخدام الكثير من الكود الأساسي (<code>boilerplate</code>) والمكونات (<code>components</code>) لتقديمي. شعرت بالتأكيد وكأنني أغش. لكنني أرسلت مشروعي على أي حال وانتظرت بفارغ الصبر التعليقات.</p>
<p>كانت مراجعة الكود الخاص بي من قبل اثنين من كبار المهندسين لدينا مخيفة للغاية، وكنت مستعداً لبعض التعليقات القاسية. بعد بضعة أسابيع، جاءت درجتي، ولم يكن تقديمي فشلاً كاملاً! لقد تلقيت بعض النقاط النقدية الرائعة والقابلة للتنفيذ. حتى أن أحد زملائي أمضى ساعة معي بعد العمل، يشرح لي كل سطر من التعليقات. سارت جلسة مراجعة الكود بشكل جيد لدرجة أننا قررنا الاجتماع مرة أخرى، أسبوعاً بعد أسبوع، حتى بعد فترة طويلة من انتقالي لأصبح مطوراً.</p>
<h2>أول طلب سحب (<code>Pull Request</code>): خطوة نحو الإنتاج</h2>
<h3>العمل على الأدوات الداخلية</h3>
<p>واصلت مديرة المبيعات ومدير الهندسة متابعة تقدمي خلال الأشهر التالية. في أبريل، أتيحت لي الفرصة للعمل بشكل جانبي مع فريق الأدوات الداخلية لدينا. كانت هناك العديد من المهام الصغيرة وغير العاجلة التي تحتاج إلى اهتمام في نظام المكتب الخلفي (<code>back-office system</code>) الخاص بنا. كنت متحمساً – ستكون طريقة رائعة لاكتساب بعض الخبرة الحقيقية في العمل مع فريق المنتجات، وقد تم توضيح أن هذا لن يتعارض مع عملي في المبيعات. كانت فكرة العمل على كود إنتاجي حقيقي أمراً جنونياً!</p>
<h3>مواجهة تعقيدات الكود الحقيقي</h3>
<p>بعد قليل من التنسيق، وتقديم للفريق، ودعوة إلى منظمة <code>Github org</code> لشركتنا، حصلت على أول مهمة للعمل عليها. كان علي إضافة حقل إدخال (<code>input</code>) لجعل حقل قابلاً للتحرير لفريق الامتثال لدينا. كان واضحاً على الفور أنني لا أعرف كيف أفعل ذلك. بالتأكيد، لقد أضفت حقل إدخال من قبل وكنت أعرف بشكل غامض كيف تعمل النماذج (<code>forms</code>) في <code>React</code>، لكن هذا الكود لم يكن يشبه أي شيء رأيته في أي من دروسي التعليمية. وجدت نفسي فجأة أمام محيط من الأسئلة: كيف يعمل <code>TypeScript</code>؟ ما هو الفرع (<code>branch</code>)؟ كيف أقوم بإنشاء طلب سحب (<code>PR</code>)؟ ما الذي تفعله كل هذه المكتبات (<code>libraries</code>)؟ كيف يتم بناء الكود الخاص بي وإرساله إلى مستخدمينا؟ ماذا يحدث إذا أفسدت شيئاً مهماً؟</p>
<h3>الإنجاز الأول: شحن الكود إلى الإنتاج</h3>
<p>استغرق الأمر مني بضعة أيام لأجد طريقي، ولكن بعد الكثير من الصبر والمساعدة من قائد الهندسة، تمكنت من الحصول على موافقتين وشحن الكود إلى الإنتاج. كان هذا إنجازاً كبيراً في رحلتي.</p>
<h2>التحول الرسمي: من المبيعات إلى الهندسة البرمجية</h2>
<h3>التحديات الإدارية للانتقال</h3>
<p>على مدى الأشهر الخمسة التالية، واصلت روتيني المتمثل في البقاء في المكتب متأخراً، حيث أعمل من الساعة 09:00 إلى 17:00 في المبيعات ومن الساعة 17:00 حتى وقت متأخر متظاهراً بأنني مطور أعمل بما اعتبرته كوداً حقيقياً. كما تتوقعون، تضاءل رغبتي في الاستمرار في المبيعات يوماً بعد يوم، وبدأت أضغط لمعرفة ما إذا كان بإمكاننا الاتفاق على موعد لانتقالي رسمياً. بالتأكيد لم يسر الأمر بسلاسة. لم يكن لدى أحد خبرة في معنى نقل شخص من المبيعات إلى فريق المنتجات (<code>product team</code>) لدينا. أولاً وقبل كل شيء، كان علي أن أحقق أهدافي. أعتقد أن هذا صحيح في معظم منظمات المبيعات – كل شيء يعود دائماً إلى تحقيق حصتك (<code>quota</code>).</p>
<h3>عقد العمل الجديد وبداية مسيرة مهندس البرمجيات</h3>
<p>بعد الكثير من الأخذ والرد، تم التوصل إلى اتفاق بأنني أستطيع الانتقال رسمياً في الأول من أغسطس، بشرط أن أظل أحقق أهدافي. كان هذا هو الضوء في نهاية النفق بالنسبة لي. كان من المذهل تماماً التفكير في أنني سأحصل قريباً على عقد عمل لدوري الجديد كمهندس برمجيات (<code>software engineer</code>). مرت الأسابيع التي سبقت ذلك بسرعة. بحلول الساعة 17:00، يوم الأربعاء، 31 يوليو، لم أعد مدير حسابات (<code>account manager</code>).</p>
<p>كانت هناك بالتأكيد فترة انتقالية للتأقلم مع دوري الجديد. شعرت وكأنني وسيط أسهم يعمل في قاعة التداول، ثم أصبحت فجأة أمين مكتبة. بغض النظر عن الضوضاء، لم يمر يوم واحد لم أشعر فيه بالحماس للقدوم إلى العمل. واصلت العمل في فريق الأدوات الداخلية لدينا، وبناء أنظمة المكتب الخلفي للامتثال ودعم العملاء.</p>
<h2>دروس مستفادة من رحلة التحول المهني</h2>
<p>الخبرة التي اكتسبتها في المبيعات مفيدة بشكل لا يصدق في عملي اليوم. فمهارات التواصل القوية، وإدارة الوقت، والعرض التقديمي كانت لا تقدر بثمن كمطور (<code>dev</code>). لكنني وجدت أن هذه المهارات تفتقر إليها معظم مجتمعات المطورين التي لاحظتها.</p>
<h3>أهمية العمل على كود الإنتاج والتوجيه</h3>
<p>أدرك أنني محظوظ للغاية لأنني أتيحت لي فرصة للعمل على كود إنتاجي (<code>production code</code>) في وقت مبكر جداً. لقد كانت بلا شك قفزة هائلة في تعلمي وساعدت بشكل كبير في تسريع فهمي لحقائق العمل كمطور، وهو أمر يستحيل اكتسابه من الدروس التعليمية عبر الإنترنت. وجود مرشد (<code>mentor</code>) للعمل معه سرّع تعلمي بشكل كبير وكان مفيداً للغاية في إبقائي مسؤولاً عن وجود مشروع قيد التنفيذ دائماً، بحيث كان لدينا دائماً شيء نعمل عليه. بدون كل الدعم من حولي، أعتقد أنني كنت سأظل أقضي كل ليالي وعطلات نهاية الأسبوع في العمل على الدروس التعليمية أو بناء مولدات <code>Pokemon</code> عشوائية.</p>
<h3>نصائح للمطورين الطموحين</h3>
<p>لقد التزمت في وقت مبكر بقضاء كل وقت فراغي في مواصلة تطويري. أعتقد أنه من السهل جداً التقليل من حجم الالتزام الزمني الذي تتطلبه هذه الرحلة. الوصول إلى مرشد مساعدة كبيرة، على الرغم من أن مجرد وجود شخص لديه معرفة كافية للإجابة على الأسئلة من حين لآخر يمكن أن يوفر لك ساعات من الإحباط. لا تخف من طلب المساعدة.</p>
<p>بالنظر إلى الوراء، أتمنى لو أنني قضيت وقتاً أطول في بناء مشاريع صغيرة وتطبيق الأشياء التي تعلمتها. كنت أبدأ المشاريع بشكل متكرر ولكنني لم أتابع أياً منها لأنني شعرت أنني لا أستطيع كتابة الكود بالطريقة الصحيحة. قضاء الوقت في الصراع مع شيء ما كان أكثر فائدة لتعلمي. هناك بالتأكيد أمان في البقاء على مسار دورة تعليمية تفاعلية للبرمجة، لكنها يمكن أن تضع سقفاً على قدرتك على تطبيق معرفتك في العالم الحقيقي. لقد وقعت بالتأكيد في هذا الفخ. استغرق الأمر مني بعض الوقت قبل أن أدرك أن لا أحد يعرف ما هي الطريقة الصحيحة، كل شيء مصنوع. كمطور مبتدئ، هناك قيمة في المنظور الجديد. إذا كانت هناك نصيحة واحدة أتمنى لو أنني حصلت عليها في وقت مبكر، لكانت بذل جهد أكبر لتطبيق معرفتي أثناء التعلم. لا يوجد شيء اسمه كود حقيقي أو طريقة صحيحة للقيام بالأشياء، خاصة عندما تتعلم. أي فرصة لديك لتطبيق ما تعلمته على طول الطريق هي قيمة. أنت لست مطوراً بمجرد أن يدفع لك شخص ما لتكون مطوراً، أنت مطور في اللحظة التي تبدأ فيها البرمجة.</p>
<p>لا تكن غريباً! لا تتردد في الكتابة إذا كان لديك أي أسئلة، أو أرسل لي توصيات كتبك المفضلة عبر البريد الإلكتروني، أو تواصل معي على <code>Linkedin</code> أو تابعني على <code>twitter</code>!</p>
<h2>الخلاصة التقنية</h2>
<p>تُظهر رحلة التحول المهني هذه أن الانتقال من مجال غير تقني إلى تطوير الواجهات الأمامية ليس مستحيلاً، ولكنه يتطلب مزيجاً فريداً من المثابرة، التعلم الذاتي، والقدرة على تطبيق المعرفة النظرية في سياقات عملية. تبرز القصة أهمية المهارات الشخصية (<code>soft skills</code>) مثل التواصل وإدارة الوقت، والتي غالباً ما يتم تجاهلها في المجتمعات التقنية، لكنها حاسمة لنجاح المطور. كما تؤكد على قيمة العمل على كود إنتاجي حقيقي في وقت مبكر، وتأثير التوجيه (<code>mentorship</code>) الفعال في تسريع منحنى التعلم. الرسالة الأقوى هي أن المطور الحقيقي هو من يبدأ في كتابة الكود، وأن التحديات والمشاريع العملية هي المحرك الأساسي للنمو، حتى لو بدت النتائج الأولية غير مثالية.</p>
</div>
</div>

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *