كيف بنيت مشروع أتمتة تقنية المعلومات كمطور برمجيات عصامي

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

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

رحلة التحول: من الشغف إلى الاحتراف في تطوير البرمجيات

الخطوات الأولى نحو عالم البرمجة

بدأت رحلتي في تطوير البرمجيات باستخدام موقعين إلكترونيين رائعين: freeCodeCamp و The Odin Project. من خلالهما، تعلمت HTML و CSS و Git و Bash و GitHub. كانت هذه أولى خطواتي الحقيقية نحو عالم التكنولوجيا الفريد، حيث بنيت مشاريع صغيرة، مثل إعادة إنشاء الصفحة الرئيسية لـ Google. كنت أستخدم أوامر Bash، ثم أدفع تغييراتي في Git إلى GitHub. كان من الرائع أن أرى شيئًا ملموسًا ينبض بالحياة ببضع أسطر من التعليمات البرمجية فقط!

إتقان بايثون: اللغة الأم للأتمتة

نظرًا لأن HTML و CSS هما لغتا ترميز وتصميم، كان عليّ تعلم لغة برمجة حقيقية. بعد بحث مكثف عبر الإنترنت (معظمه على Reddit)، استقريت على Java أو Python. اخترت الأخيرة. بدأت بقراءة كتابين تمهيديين عن Python أثارا حماسي حقًا تجاه هذه اللغة الجميلة. كانا Automate the Boring Stuff with Python للمؤلف Al Sweigart و Python Crash Course للمؤلف Eric Matthes. هذان المؤلفان بارعان ومرحان، وقد استمتعت تمامًا بالمرور بكل فصل وإكمال المهام المطلوبة. كنت أعرف الأساسيات في هذه المرحلة، لكنني أردت أن أتعلم كيفية البناء بهذه المعرفة الجديدة.

لذا، التحقت بتخصص مكون من خمس دورات على Coursera يسمى Python for Everybody Specialization للمبدع Charles Severance، المعروف أيضًا باسم Dr. Chuck. كان هذا بالضبط ما أحتاجه لسد الفجوة بين مستوى المبتدئين والمتوسطين في Python. استغرق هذا التخصص ما يقرب من شهرين لإكماله. تعلمت SQL، وبروتوكولات الإنترنت، و JSON، و XML، ومجموعة متنوعة من مكتبات Python، بما في ذلك Beautiful Soup و Urllib (المستخدمة في استخراج البيانات من الويب). Dr. Chuck أسطورة مطلقة في عالم التكنولوجيا، وليس من المستغرب أن تكون دوراته من بين الأكثر التحاقًا بها على Coursera. في هذه المرحلة، كان لدي ما يكفي من المعرفة في HTML و CSS و SQL و Python لأقول بثقة أنني مطور برمجيات متوسط المستوى.

خارطة طريق تعلم تطوير البرمجيات

بناء مشروع أتمتة تقنية المعلومات: من الفكرة إلى التنفيذ

لماذا مشروع الأتمتة؟ البحث عن قيمة حقيقية

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

بينما كنت أجهد عقلي بالتفكير، تذكرت وظيفتي السابقة كمدير لتطوير الأعمال. هناك، كُلفت بمهمة شاقة وروتينية تتمثل في العثور على الحسابات المكررة في نظام Salesforce CRM الخاص بنا (كان هناك أكثر من مليون سجل!). كم تمنيت لو كان بإمكاني كتابة نص برمجي بسيط لجعل جهاز الكمبيوتر يقوم بالعمل في دقائق، بدلاً من أسابيع. ثم خطرت لي الفكرة – لماذا لا أبني أداة مساعدة تمر عبر جميع الملفات على جهاز الكمبيوتر الخاص بي وتبحث عن التكرارات؟ من المحتمل أن يكون لدى الشخص العادي الكثير من الملفات على جهاز الكمبيوتر الخاص به، وكثير منها يتم إنشاؤه عدة مرات ويتم نسيانه تمامًا. بدأت الأفكار تتدفق. فكرت في العديد من حالات الاستخدام للصناعات مثل التمويل والرعاية الصحية التي يمكنها بالتأكيد الاستفادة من شيء كهذا للمرور عبر سجلاتهم في وقت قصير جدًا. قررت البدء في VS Code، وإنشاء ملف .py، وتسميته duplicate_files. لقد حان الوقت أخيرًا لارتداء قبعة مصمم البرمجيات وبناء تحفتي الفنية.

واجهة أداة البحث عن الملفات المكررة في VS Code

مقتطف من أداة البحث عن الملفات المكررة على GitHub

تصميم وتطوير أداة البحث عن الملفات المكررة

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

جزء آخر صعب في تصميم مشروعك هو تحديد هياكل البيانات التي تعمل بشكل أفضل. بعد بعض التجربة والخطأ، اخترت قاموسين وقائمة واحدة (والتي ستطبق الدلائل التي يتجاهلها المستخدم عبر أنظمة Windows و macOS و Linux). كان من المهم للغاية بالنسبة لي أن يشمل هذا بالفعل “برنامجًا بسيطًا ولكنه قوي يبحث عن الملفات المكررة ذات التجزئة الفريدة على جهاز الكمبيوتر الخاص بك الذي يعمل بنظام Windows أو macOS أو Linux“. ولهذا السبب أردت استخدام اللبنات الأساسية التي توفرها Python – الحلقات (loops) والشروط (conditionals) والدوال (FUNCTIONS). لم أستخدم أي برمجة كائنية التوجه (Object-Oriented Programming) معقدة قد تراها في مشاريع أخرى. هذا البرنامج يحتوي ببساطة على ثلاث دوال رئيسية، هذا كل شيء!

أنهيت تصميمي بإضافة ملف README، كما قمت بتضمين ملف .gitignore في كل مرة دفعت فيها تغييراتي إلى GitHub. اختبرت هذا البرنامج بدقة عبر مصحح الأخطاء في VS Code Debugger (عن طريق تعديل ملف launch.JSON)، وكذلك على أجهزة كمبيوتر متعددة تحتوي على جميع أنظمة التشغيل الرئيسية. في الواقع، تم تشغيل هذا البرنامج على جهاز يعمل بنظام Windows، حيث كان المسار المحدد يحتوي على ملف بحجم 6 جيجابايت. بدا أن البرنامج يتوقف مؤقتًا عندما وصل إلى هذا الملف، ثم استمر وانتهى في وقت سريع للغاية. في هذا المثال، احتوى المسار على 100,000 ملف، وانتهى في خمس دقائق. قبل أشهر، كنت مندهشًا من كيفية عرض شيء كتبته بلغة HTML و CSS الأساسية على موقع ويب. بعد تشغيل هذا البرنامج في الوقت الحاضر، أنا مفتون حقًا بالسرعة والتعقيد الذي يمكن لأجهزة الكمبيوتر أن تعمل به عندما تُعطى بضعة أسطر من التعليمات البرمجية فقط!

صورة نافال رافيكانت، أحد ملهمي الكاتب

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

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

خاتمة وتطلعات مستقبلية

لقد كانت ثمانية أشهر (وما زالت مستمرة) صعبة للغاية، ولكنها مجزية بشكل لا يصدق في تعلم كيفية أن أصبح مطور برمجيات. لفترة من الوقت، فكرت في الالتحاق بمعسكر تدريبي (bootcamp). حتى أنني فكرت في برنامج ماجستير في علوم الكمبيوتر. لكن مع توفر المواد المجانية والمفتوحة المصدر الممتازة على الإنترنت، شعرت بالثقة في أنني أستطيع التعلم بمفردي. أود أن أتوجه بشكر كبير لـ Quincy Larson لتحفيزي على بدء رحلتي في freeCodeCamp. كما أود أن أشكر Al Sweigart، و Eric Matthes، و Charles Severance، و Guido van Rossum، الذين كانوا، بشكل مباشر أو غير مباشر، فعالين في مساعدتي طوال رحلتي حتى الآن. آمل أن يحقق هذا المنشور أمرين:

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

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

يمكنك العثور عليّ على Twitter و LinkedIn و GitHub.

اترك تعليقاً

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