دروس مستفادة من رحلتي كمطور تطبيقات جوال عصامي: الطريق إلى الاحتراف

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

مقدمة: رحلة التحول من الهواية إلى الاحتراف في تطوير تطبيقات الجوال

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

بداية الرحلة: الشهادة الجامعية ونقطة التحول

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

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

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

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

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

الغوص في عالم البرمجة: تعلم Android و Java

البحث عن المسار التعليمي الصحيح

كان عام 2014 عندما بدأت لأول مرة في التفكير في فكرة تعلم البرمجة. أول شيء فعلته هو البحث في Google عن بعض الدورات التدريبية في بوخارست، ووجدت شركة دعتني إلى مكاتبها. ذهبت إلى هناك، وأتذكر أن لديهم مكتبًا مفروشًا بشكل جميل وبه الكثير من أجهزة iMACs. قلت لنفسي: «هذا ما أحتاجه». بعد عشر دقائق، اكتشفت أنهم يقدمون جميع دوراتهم عبر الإنترنت، وأن المكتب كان أشبه بمكان لبيع الدورات بدلاً من تقديمها. لا أتذكر السعر المحدد، لكنه كان حوالي 1500 – 2000 دولار أمريكي. لم أقبل العرض.

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

تحديات التعلم الأولية

بدأت الفصول الدراسية. كانوا يخبروننا دائمًا أنه لا يكفي القيام بالدروس فقط خلال ساعاتنا معًا. حاولت الاستماع. ولكن في المنزل، لم تكن الأمور منطقية أبدًا. كانت البرمجة صعبة، وكثيرًا ما كنت أعتقد أنني لن أتمكن من إنهاء المعسكر التدريبي. دفعت نفسي بقوة أكبر وأكبر. بعد شهر واحد من الدورات، اكتشفت أننا سنتعلم Java مع Android، لكن مرة أخرى، لم أهتم. كنت أقع في حب Eclipse ورؤية الأشياء تحدث على الشاشة بينما نكتب الكود. Eclipse هي بيئة تطوير متكاملة (Integrated Development Environment) كانت تستخدم في الأصل لتطوير تطبيقات Android. الآن نستخدم Android Studio.

كان الأمر صعبًا. درسًا بعد درس، كنت أحاول تعلم variables و classes و inheritance و encapsulation و for loops وما إلى ذلك. لكنني كنت أعاني. لم تكن لدي صورة واضحة عن كيفية استخدام كل هذه المفاهيم في تطبيق أكبر. لم يكن الأمر منطقيًا في كثير من الأحيان. إذا كنت قد بدأت للتو في البرمجة وتشعر بنفس الشيء، أريدك أن تعلم أن هذا طبيعي. كان مرشدونا يخبروننا دائمًا: «ليس عليك أن تعرف كل هذه الأشياء عن ظهر قلب. فقط حاول أن تفهم ما هي وكيف يمكنك استخدامها». كانوا محقين، لكنني اكتشفت ذلك لاحقًا. في تلك اللحظة بالذات، لم يساعدني ذلك.

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

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

أولى خطوات العمل: مطور Android مبتدئ

مقابلات العمل الأولى

بدأت في إجراء المقابلات، وأتذكر أن أول مقابلة لي كانت لدور في Java في شركة دولية كبيرة تقع في بوخارست. (تلميح: لديهم أكثر من 300,000 موظف، وبلغت إيراداتهم من عام 2019 حوالي 77 مليارًا). لم أقبل المقابلة، لكنني أعتقد أن المحادثة كانت جيدة. ربما لم يتم توظيفي لأنني لم يكن لدي أي خبرة.

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

الانطلاق في المسيرة المهنية

أعتقد أنني بدأت المعسكر التدريبي في نهاية مايو 2015، وبدأت أول دور لي كمطور Android مبتدئ (Junior Android Developer) في يناير 2016. لقد كان إنجازًا كبيرًا. كلفني مديري بمشروع، ثم بدأت أتعلم عن version control (التحكم في الإصدارات) وكيفية العمل بمنهجية Agile، وكيفية العمل في دورات (sprints) مدتها أسبوعان.

إذا كنت قد بدأت تعلم البرمجة أو ترغب في البدء، أوصي بثلاثة أشياء:

  • ابدأ اليوم (اختياري إذا كنت قد بدأت بالفعل).
  • قم بأكبر عدد ممكن من المشاريع.
  • تعلم التحكم في الإصدارات (مثل Git أو Bitbucket أو Gitlab) وادفع جميع مشاريعك هناك.

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

آفاق جديدة: لندن ومزيد من فرص تطوير Android

التحديات والتعلم في بيئة جديدة

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

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

  • ما هي بنية مثل Model-View-Presenter وكيفية استخدامها في تطبيق.
  • كيفية إجراء Unit Testing (اختبار الوحدات) بشكل صحيح.
  • مبادئ SOLID.
  • وغيرها.

لقد تعلمت كل ذلك في العمل وفي وقت فراغي. كنت أعمل، وفي وقت فراغي، كنت أبني تطبيقات لنفسي. حتى يومنا هذا، جميع تطبيقاتي (5 على Android) لديها أكثر من 100 ألف عملية تنزيل، معظمها عضوي، لكن واحدًا فقط منها حقق أكثر من 2000 دولار أمريكي.

العمل في مشاريع أكبر

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

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

بدأت العمل في البنك في فريق Scrum منظم. كنا 4 مطوري Android، و 4 مطوري iOS، ومدير مشروع (Project Manager)، ومالك منتج (Product Owner)، و 2-3 مهندسي ضمان الجودة (Quality Assurance Engineers)، ومحلل أعمال (Business Analyst)، وكاتب محتوى (Copywriter)، ومصممين (Designers). كل هؤلاء الأشخاص كانوا يطورون جزءًا حيويًا من التطبيق. كان المشروع ضخمًا. في فريق التطوير وحده كان هناك أكثر من 30 مطور Android وأكثر من 30 مطور iOS.

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

  • كيفية إجراء مراجعات الكود (code reviews).
  • كيفية العمل في مشروع يتطلب تغطية كود بنسبة 100% لاختبار الوحدات (Unit Testing).
  • كيفية تسليم الميزات في الوقت المحدد.
  • ما هي الهندسة المعمارية النظيفة (clean architecture) وكيفية كتابة كود سهل القراءة دون ترك الكثير من التعليقات.
  • والعديد من الأشياء الأخرى التي ربما لا أتذكرها.

العودة إلى الوطن ومعرفة متجددة

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

لقد عملت مع الشركة الحالية لأكثر من عام ونصف. ماذا تعلمت في هذا المشروع؟

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

لقد كانت رحلة جنونية حقًا.

الخلاصة والدروس المستفادة من مسيرة مطور عصامي

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

اليوم، هناك عدد أكبر من المطورين أكثر من أي وقت مضى على استعداد للمساعدة. يمكنك بسهولة العثور على مجموعات Discord حيث يسعد الناس بالإجابة على أسئلتك البرمجية. هناك الكثير من مجتمعات Reddit التي ستكون مفيدة. ربما يمكن أن تعمل قنوات Slack أيضًا من أجلك. قد يكون العثور على مرشد (mentor) حلاً أيضًا. مواقع الويب وقنوات YouTube مثل freeCodeCamp هي كل ما تحتاجه للبدء.

إليكم جميع الأشياء التي آمل أن تكونوا قد تعلمتموها في هذا المقال:

  1. البدء صعب، لكن كل يوم من تعلم شيء جديد سيمنحك رضا هائلاً.
  2. تحتاج إلى القيام بجميع أنواع المشاريع. معرفة الأساسيات أمر جيد، لكن بناء الأشياء والعمل مع التحكم في الإصدارات (version control) سيساعدك على الاستعداد لوظيفة مستقبلية.
  3. الناس على استعداد للمساعدة (سواء عبر الإنترنت أو الزملاء المستقبليين).
  4. ستكون هناك أيام لن يعمل فيها أي شيء. لن تجد حلاً بسهولة. إما أن تسترخي وتعود إلى المشكلة لاحقًا أو تطلب المساعدة.
  5. جميع المطورين (junior، mid، أو senior) يبحثون عن حلول على Google ويعلقون بشكل متكرر.
  6. ستشعر بمتلازمة المحتال (impostor syndrome)، لكن صدقني عندما أقول إنني قابلت مطورين حاصلين على شهادات في علوم الحاسوب (CS degrees) أسوأ مني.
  7. كونك مطورًا لا يتعلق فقط بالبرمجة. المهارات الشخصية (soft skills) مهمة أيضًا.

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

الخلاصة التقنية

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

اترك تعليقاً

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