يا جماعة الخير، السلام عليكم ورحمة الله.
خليني أحكيلكم قصة صارت معي قبل كم سنة، قصة بتجسد معنى “الورطة” الحقيقية للمبرمج. كنا شغالين على مشروع ضخم لعميل مهم، والموعد النهائي للتسليم كان “خانق” زي ما بنحكيها بالعامية. في نص الليل، وقبل يوم واحد من التسليم، ظهر “بَغ” (Bug) غريب عجيب في النظام، إشي بخلي السيرفرات تنهار بشكل عشوائي.
تذكرت وقتها إني مريت بنفس المشكلة بالزبط قبل حوالي سنة في مشروع ثاني. وتذكرت إني كتبت الحل، مع الأوامر والشرح، في ملف نصي على جهازي. بلشت رحلة البحث اليائسة. فتحت الـ Terminal وصرت أضرب أوامر find و grep زي المجنون في كل مجلدات النظام. notes.txt، temp_solution.md، fix_for_that_thing.txt… مئات الملفات النصية المبعثرة اللي كنت أرمي فيها معلوماتي على أمل أرجع الها يومًا ما.
مرت ساعة، وساعتين… والعرق يتصبب. وأنا عارف إن الحل موجود، على بعد كم كبسة زر، بس ضايع في جحيم المعلومات المبعثرة اللي صنعته بإيدي. بالنهاية، استسلمت. اضطريت أنا وفريقي نعيد البحث عن حل للمشكلة من الصفر، وسهرنا لطلوع الشمس. سلمنا المشروع متأخرين كم ساعة، والحمد لله الأمور مشت، لكن الشعور بالعجز والإحباط وقتها ما بنساه. يومها قررت، خلص، لازم ألاقي حل لهاي الفوضى. ومن هنا بدأت رحلتي مع مفهوم “العقل الثاني”.
ما هو “العقل الثاني” وليش كل مبرمج بحتاجه؟
ببساطة شديدة، “العقل الثاني” (Second Brain) هو مش جهاز بتزرعه في مخك، ولا هو إشي من أفلام الخيال العلمي. هو عبارة عن نظام خارجي، موثوق، ومنظم، بتستخدمه لالتقاط، وتنظيم، واسترجاع كل المعلومات والأفكار اللي بتمر عليك.
فكّر فيه زي الـ Cache تبع المعالج، أو الـ RAM الخارجية لذاكرتك. دماغنا البشري رائع في التفكير الإبداعي وربط الأفكار، ولكنه سيء جدًا في تخزين كميات هائلة من المعلومات الدقيقة واسترجاعها بأمانة (زي أسماء الدوال، أوامر لينكس معقدة، أو حل لمشكلة واجهتك قبل 6 أشهر و 3 أيام).
كمبرمجين ومطورين، حياتنا عبارة عن تدفق مستمر للمعلومات: أكواد، مقالات، توثيق لمكتبات، حلول من Stack Overflow، ملاحظات اجتماعات، أفكار لمشاريع جانبية… إلخ. بدون نظام، هاي المعلومات بتصير عبء بدل ما تكون أصل من أصولك القيمة.
كيف تبني “عقلك الثاني” كمطور برمجيات: منهجيّة بسيطة
بعد بحث وتجربة، استقريت على منهجية بسيطة ومستوحاة من أفكار كثيرة، أهمها منهجية “CODE” لـ Tiago Forte، لكن مع لمستي الخاصة كمبرمج. المنهجية بتتكون من أربع خطوات رئيسية، سهلة الحفظ والتطبيق.
1. الالتقاط (Capture): لا تدع فكرة تفلت منك
هاي هي القاعدة الذهبية الأولى. أي معلومة بتشوفها مفيدة، أو ممكن تكون مفيدة في المستقبل، لازم “تلتقطها” فورًا. لا تقول “بتذكرها بعدين”. صدقني، ما راح تتذكرها.
- قصاصات الكود (Code Snippets): هل وجدت دالة بايثون عبقرية لتحليل البيانات؟ التقطها!
- الأوامر الطرفية (Terminal Commands): أمر
ffmpegأوawkمعقد استغرق منك نصف ساعة لتكتبه؟ التقطه! - حلول الأخطاء (Bug Fixes): حلّيت مشكلة غريبة في Docker؟ وثّق المشكلة والحل والتقطها.
- روابط ومقالات: مقال ممتاز عن الـ Large Language Models؟ لا تكتفي بحفظه في الـ Bookmarks اللي عمرك ما راح تفتحها. التقطه مع ملخص بسيط.
- أفكار وملاحظات: فكرة مشروع جديد خطرت ببالك وأنت تشرب القهوة؟ ملاحظة من اجتماع؟ التقطها.
نصيحة من أبو عمر: اجعل عملية الالتقاط سهلة جدًا. استخدم أداة تتيح لك حفظ المعلومات بكبسة زر من المتصفح أو من أي مكان في جهازك. كلما كانت العملية أصعب، كلما قلّ التزامك بها.
2. التنظيم (Organize): من الفوضى إلى الوضوح
هنا مربط الفرس، وهنا بتميز النظام الفعّال عن مقبرة المعلومات. بعد ما تلتقط المعلومة، لازم تضعها في سياقها الصحيح حتى تتمكن من إيجادها عند الحاجة. أفضل نظام وجدته هو نظام “PARA” (Projects, Areas, Resources, Archives).
- المشاريع (Projects): أي شي شغال عليه حاليًا وله نهاية محددة. مثلاً: “تطوير واجهة برمجة تطبيقات للعميل X”، “كورس تعلّم React”، “التحضير لشهادة AWS”. كل الملاحظات المتعلقة بهذه المشاريع توضع هنا.
- المجالات (Areas): هي مسؤولياتك المستمرة في الحياة والعمل. مثلاً: “البرمجة (Development)”، “الصحة (Health)”، “إدارة الفريق (Team Lead)”، “الاستثمار (Finances)”. هاي مجلدات عامة تضع فيها ملاحظات لا ترتبط بمشروع معين.
- الموارد (Resources): هي المواضيع اللي بتهتم فيها وبتحب تجمع معلومات عنها. مثلاً: “الذكاء الاصطناعي”، “وصفات طبخ”، “Docker”، “أفضل ممارسات لغة Go”.
- الأرشيف (Archives): أي شي انتهيت منه من الفئات الثلاث السابقة. المشاريع المكتملة، المجالات التي لم تعد من مسؤولياتك، الموارد التي لم تعد تهمك. لا تحذفها، بل انقلها للأرشيف.
هذا التنظيم بسيط ولكنه قوي جدًا، لأنه بيشبه الطريقة اللي بتشتغل فيها بالحياة الواقعية.
3. التقطير (Distill): استخلاص الزبدة
لما تحفظ مقال أو ملاحظة، لا تنسخها وتلصقها كما هي. هذا خطأ شائع. الهدف ليس تجميع المعلومات، بل فهمها. خذ دقيقتين إضافيتين واعمل التالي:
- اكتب عنوانًا واضحًا للملاحظة: بدلاً من “مقال عن بايثون”، اكتب “كيفية استخدام Decorators في بايثون لتحسين الأداء”.
- استخدم التنسيق: قم بتعليم الأجزاء المهمة بالخط العريض (Bold).
- اكتب ملخصًا من سطرين في الأعلى: اكتب “الزبدة” بأسلوبك الخاص. هذا الملخص هو ما ستقرأه بعد 6 أشهر لتتذكر محتوى الملاحظة بسرعة.
مثلاً، بدلًا من حفظ خطأ برمجي كما هو، يمكن أن تبدو ملاحظتك كالتالي:
---
title: حل مشكلة "Permission Denied" عند تشغيل Docker على أوبنتو
tags: #docker #linux #devops
project: Project-Phoenix
---
## الزبدة
المشكلة كانت بسبب أن المستخدم الحالي ليس ضمن مجموعة `docker`. الحل هو إضافة المستخدم للمجموعة ثم إعادة تسجيل الدخول.
## المشكلة
عند محاولة تشغيل أي أمر `docker` (مثل `docker ps`)، تظهر رسالة الخطأ التالية:
`Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock`
## الحل
1. إضافة المستخدم الحالي إلى مجموعة `docker`:
`sudo usermod -aG docker ${USER}`
2. لتطبيق التغييرات، يجب إما تسجيل الخروج والدخول مرة أخرى، أو تشغيل الأمر التالي لتفعيل المجموعات الجديدة في الجلسة الحالية:
`newgrp docker`
3. بعد ذلك، يمكن التحقق من أن الأمر يعمل بدون `sudo`:
`docker ps`
شايفين الفرق؟ هاي الملاحظة صارت أصلًا معرفيًا قيمًا، مش مجرد نص عشوائي.
4. التعبير (Express): حوّل المعرفة إلى واقع
الخطوة الأخيرة هي استخدام كل ما جمعته ونظمته لإنتاج شيء جديد. المعرفة المكتسبة التي لا تُستخدم، تموت.
- حل المشاكل أسرع: عندما تواجهك مشكلة، أول مكان تبحث فيه هو عقلك الثاني. ستتفاجأ من كمية الوقت الذي ستوفره.
- كتابة المحتوى: هل تريد كتابة مقال تقني؟ كل ملاحظاتك ومواردك جاهزة ومنظمة.
- بناء المشاريع: أفكار المشاريع اللي جمعتها، وقصاصات الكود اللي خزنتها، كلها ستكون وقودًا لمشاريعك الجانبية.
- مساعدة الآخرين: عندما يسألك زميل عن مشكلة، يمكنك ببساطة البحث في عقلك الثاني وإرسال ملاحظة واضحة ومفصلة له.
أدوات عملية للبدء
الأداة لا تهم بقدر أهمية النظام، ولكن اختيار الأداة المناسبة يسهّل عليك الالتزام. أنا شخصيًا، وبعد تجارب كثيرة، أستخدم Obsidian.
لماذا Obsidian؟
- يعتمد على ملفات Markdown نصية: ملفاتك موجودة على جهازك، بصيغة مفتوحة، ولن تضيع أبدًا.
- الربط بين الملاحظات (Bi-directional Linking): يمكنك ربط الملاحظات ببعضها البعض بسهولة، مما يخلق شبكة معرفية حقيقية.
- مجتمع ضخم وإضافات (Plugins): يمكنك تخصيص البرنامج بشكل لا نهائي ليناسب احتياجاتك.
- مجاني للاستخدام الشخصي.
أدوات أخرى ممتازة تشمل Notion (رائع للعمل الجماعي والجداول)، Logseq (شبيه بـ Obsidian ولكنه يركز على الـ Outlining)، أو حتى مجلد منظم على جهازك مع محرر أكواد مثل VS Code.
الخلاصة: ابدأ صغيرًا، ولكن ابدأ اليوم
بناء عقل ثانٍ لم يكن مجرد حل لمشكلة الملفات المبعثرة، بل كان تحولًا في طريقة تفكيري وعملي. منحني ثقة أكبر، وقلل من التوتر، وحرر عقلي للتركيز على الإبداع وحل المشاكل الحقيقية بدلًا من البحث عن معلومات ضائعة. 🧠
نصيحتي الأخيرة لك: لا تحاول بناء النظام المثالي من أول يوم. ابدأ اليوم. أنشئ ملاحظة واحدة فقط. وثّق فيها شيئًا تعلمته اليوم، مهما كان بسيطًا. ثم غدًا، أنشئ ملاحظة أخرى. مع الوقت، ستنمو هذه العادة وستنمو معها مكتبتك المعرفية الشخصية، وستشكر نفسك في المستقبل على هذه الهدية. 💡
والله ولي التوفيق.