لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 07/27/18 في كل الموقع
-
قليلة هي تلك المشاريع والابتكارات التي تُحدِث نقلة نوعية في عالم البرمجيات والتقنية بشكل عام، وإن كنا سنشهد في هذه العشرية إحدى هذه المشاريع، فهو Docker بامتياز. فما هو Docker هذا؟ هذا المقال يهدف بشكل خاص إلى التعريف بمشروع Docker والفكرة التي جاء بها، وليس لكيفية البدء به (والتي ستكون في مقال منفصل إن شاء الله)، حيث لا يمكن البدء به إذا لم نفهم فكرته وأهميته في عالم البرمجيات. لمن هذا المقال؟لمدراء الخواديم (SysAdmins) بالدرجة الأولىللمبرمجين ومطوري الويب بالدرجة الثانية قبل أن نتحدث عن ماهية Docker أحب أولا ذكر أهم 03 مشاكل نواجهها حاليا كمطورين ومدراء خواديم والتي يحاول Docker معالجتها... 1. جحيم الاعتماديات (the dependecy hell)الأغلبية الساحقة من مشاريع الويب "الجدية" والكبيرة لا تكون قائمة بذاتها، بل هي عبارة عن مكتبات تتواصل فيما بينها أو تعتمد على مكتبات أخرى من أجل أن تعمل، مطوروا Ruby، Python وحتى node.js و php يفهمون ذلك جيدا، وكل من هذه اللغات حاول حل المشكلة على نطاقه الخاص عبر إنشاء أدوات مساعدة تعرف بـ"مدراء الاعتماديات" أو "مدراء حزم" (dependency/package managers) أمثلة ذلك: pip بالنسبة لبايثونgem بالنسبة لروبيnpm بالنسبة لـ node.jsوأخيرا محاولة متواضعة من php عبر composer..وقد تذهب اللغة إلى أبعد من ذلك مثل ما فعلت بايثون بإنشاء بيئات وهمية تعزل فيها المكتبات والاعتماديات مثل مشروع virtualenv. كل من هذه اللغات تستعمل مدراء الاعتماديات/الحزم لجلب وإدارة المكتبات الخارجية التي يعتمد عليها المشروع (third party librairies)، لكن السؤال هنا، إذا كانت هذه اللغات وفرت هذه الأدوات، فأين المشكل؟ في الحيقيقة بالرغم من توفر هذه الأدوات، تبقى هناك مشاكل عالقة دائما خاصة على مستوى تنصيب المشروع على الخواديم (deployment) من ذلك: كثرة الاعتماديات، مما يأخذ وقتا في التنزيل، وأحيانا لا توجد تلك الاعتمادية على منصة الخادوم البعيد وقد تحتاج إلى عمل تجميع يدوي لها، وهذا يجعل الأمر مُتعبا.اعتمادية تعتمد في حد ذاتها على اعتمادية أخرى، قد تكون مثلا تشترط منصة Java بأكملها، وقد تكون أيضا هذه الأخيرة تعتمد على اعتماديات أخرى وهكذا...تعارض الاعتماديات، وجود إحداها يتطلب غياب الأخرى واستحالة عملهما معا في نفس الوقتنسخة الاعتمادية التي تم تنزيلها مغايرة للتي تم تطوير المشروع بها. والنسخة الجديدة تأتي بتغيرات غير متوافقة رجعيا (API backward compatibility)كل هذه المشاكل وغيرها، تجعل من ناقلية المشروع من مكان إلى آخر أو من خادوم إلى آخر، عملية شاقّة. 2. صعوبة نشر، تنصيب، نقل مشاريع الويبمشاريع الويب الكبيرة تحتاج إلى عدد من الاحتياطات: متغيرات بيئة (environment variables) يجب تعيينها مسبقاإعداد لنظام الـ cacheإعداد للخادوم nginx أو غيرهإعدادات أمنيةتحديث النظام وبرمجياته قد يسبب عطلا ما للمشروع،...ماذا عن نقل المشروع من خادوم إلى آخر؟ أو في حالة وجود أكثر من خادوم... وكل منه له نظامه الخاص (من CentOs إلى Ubuntu مثلا أو حتى BSD).... 3. التطوير، التسليم والزرع المتواصل للمشاريع ( continuous delivery/integration)مشاريع الويب الجدية تتبع دورة تطوير معينة، تحسين دائم، إدخال لميزات جديدة بشكل دوري، قفل للثغرات ... إلخ، بعد هذا يجب إجراء سلسلة من الفحوصات (unit tests مثلا) للتأكد من سلامة المشروع وأنه أهل للمرحلة الإنتاجية منه (production ready)، كل هذا سهل محليا،... لكن عملية إبقاء جميع الخواديم مسايرة لوتيرة التطوير هذه أمر شاق ومتعب، خاصة حينما نحتاج إلى تحديث الاعتماديات أو وجود إعتماديات جديدة وبالتالي احتياطات جديدة... هذه المشاكل ليس حصرا، فهناك غيرها من المشاكلة الأمنية (مثال ثغرة في مشروع الويب تمكن المخترق من الوصول إلى النظام)، مشاكل عزل (قاعدة البيانات في نفس بيئة التطبيق نفسه مما قد يسمح للوصول السهل لها من قبل المخترق)، مشاكل نسخ اختياطي (backups)،.. الخ إذا ما هو Docker؟Docker عبارة عن أداة جديدة تستغل ميزات الإصدارات الأخيرة من نواة Linux الخاصة بعزل المهام والعمليات (processes)، عمليات الإدخال والإخراج (i/o)، حجز الذاكرة وتحديدها، صلاحيات القراءة والكتابة للقرص الصلب... وغير ذلك، في إنشاء حاويات (containers) ركز على هذه الكلمة جيدا، حيث أن هذه الحاويات تلعب دور غلاف حاوي لتطبيق ما (مشروع ويب مثلا)، بحيث يصبح قائما بذاته، مكتفٍ ذاتيا. أي أن مشروع الويب وكامل الاعتماديات التي يحتاجها ليعمل + التوزيعة المناسبة له (Fedora, Ubuntu.. الخ) بجميع التهيئات ومتغيرات البيئة التي يحتاجها، كل هذا في حاوية (قد تكون حاوية واحدة أو عدة حاويات تتخاطب في ما بينها عملا بمبدأ "عزل الاهتمامات" SoC). لتقريب الصورة، تخيل أنه باستعمال Docker يمكنك عمل التالي: طورت تطبيقك على Ubuntu أو تعلم أنه يعمل بشكل جيد على توزيعة Ubuntu وبالتحديد الإصدارة 14.04 منها، وبالتالي تقول لـ Docker استعمل نسخة Ubuntu 14.04 (يتكفل هو بتزيل الصورة الخام من Ubuntu 14.04 - حوالي 60 إلى 300 Mb تقريبا- واستعمالها كتوزيعة للحاوية)مشروع الويب خاصتي يستعمل Python وبالتحديد النسخة 2.7 منها، ويعمل بشكل جيد على هذه النسخة، لم أجرب على Python 3، تقول لـ Docker نصب Python2.7 في الحاوية التي بها نظام Ubuntu 14.04 الذي سبق تنزيل صورته الخاممشروع الويب خاصتي يستعمل مكتبة Flask أو Django و مكتبة Numpy الخاصة ببايثون، يتم تثبيتهم عبر pip وبالتالي تقول لـ Docker نصب لي على الحاوية التي بها Ubuntu 14.04 و Python 2.7 السابقة تطبيق Pip عبر مدير حزم Ubuntu (أي apt-get install python-pip) ثم باستعمال pip نصب لي مكتاب بايثون السابق ذكرهامشروع الويب الخاص بي يحتاج قاعدة بيانات MySQL، نصبها يا Docker عبر مدير حزم Ubuntuأيضا نحتاج nginx أو apache، كذلك تطلب من Docker أن ينصبه عبر مدير حزم Ubuntuاجمع لي كل هذا في صورة واحدة (image) يمكن تشغيلها على أي خادوم أو حاسوب به Docker عبر الأمر: docker run my_imageجميع هذه الخطوات يمكن أتمتتها وسردها في ملف واحد اسمه DockerFile، كل سطر من هذا الملف عبارة عن أمر لـ Docker يقوم به (تماما كما قمنا به أعلاه)، مجموع الأوامر يكون الخطوات التي يمر بها Docker لبناء الحاوية التي نريدها، في ما يلي مثال عن ملف DockerFile: FROM ubuntu 14.04 # Install Python RUN apt-get install -y python-dev # Install pip RUN apt-get install -y python-pip # Install requirements.txt ADD requirements.txt /src/requirements.txt RUN cd /src; pip install -r requirements.txt # Add the Flask App ADD . /src # EXPOSE PORT EXPOSE 80 # Run the Flask APP CMD python src/app.pyيمكن حفظ هذه الأوامر في ملف باسم Dockerfile، يمكنك أيضا تشغيل هذا الملف لبناء صورة (image) لحاوية container من خلال Docker عبر الأمر التالي: docker build -t <your username>/my-flask-app .لاحظ النقطة في آخر الأمر، والتي تعني "استعمل ملف DockerFile الموجود في المجلد الحالي"، أما تعليمة t- بعد أمر build هي لاعطاء وسم (tag) للحاوية التي نريد بناءها. عادة من المتعارف عليه هو اعطاء اسم مستخدمك يليه "/" يليه اسم تطبيقك. مفهوم الحاويات (Containers)الحاوية في Linux عبارة عن غلاف يطبّق مجموعات من القيود لعزل عملية أو مجموعة عمليات (processes) عن باقي مهام وعمليات النظام من ناحية السياق (context)، الذاكرة RAM، القراءة والكتابة، الشابكة (Network)... الخ، بحيث تكون في معزل تام عن باقي الـ processes في النظام. أي نفس فكرة الـ sandboxing. مفهوم الحاويات ليس جديدا، فقد بدأ بالظهور منذ أواخر عام 2007، حين عرض مهندسون لدى Google مشروع cgroups (اختصارا لـ Control Groups) ليتم دمجه في نواة Linux، منذ ذلك الوقت cgroups كان اللبنة الأساسية لعزل الموارد وكبحها في نظام Linux على مستوى النواة. بعدها جاء مشروع LXC (اختصارا لـ LinuX Containers) والذي جمع بين cgroups وميزة عزل نطاقات الأسماء (namespace isolation) في نواة Linux، لتوفير إمكانية إنشاء مجموعات منفصلة عن بعضها من العمليات (process groups)، كل مجموعة مكتفية ذاتيا و/أو محدودة المواد، بحيث لا تدري كل مجموعة عن الأخرى بالرغم من أنهم يشاركون نفس النواة (نواة Linux). هذه المجموعات عُرفت باسم الحاويات Containers. على الرغم من أن LXC الأقرب لفكرة Docker، إلا أنه بقي على مستوى منخفض ولم يوفر واجهة برمجية سهلة للمطورين مثل ما قدمه Docker. إضافات Dockerفي أيامه الأولى، اعتمد مشروع Docker على LXC وبنى عليه، أي استعمله كـ backend أو driver، (لكن الآن يمكن استعمال بدائل لـ LXC) لكنه أضاف عدة أمور عصرية، بعضها مستوحى من أنظمة إدارة النسخ (Version Control Systems) من ذلك: مفهوم Docker image لبناء لقطات من الحاويات (نفس فكرة ملفات .iso) يمكن تصديرها واسترادها، وبالتالي يمكن بناء صورة للمشروع بأكمله ثم يكفي استراد تلك الصورة على الخاودم، يتوجب فقط أن يكون Docker مُنصّبا.إمكانية عمل "إيداع" (Commit) للتغيرات التي قمت بها على صورة المشروع الخاص بك، وبالتالي إمكانية الرجوع للوراء في حال الخطأ، هذه الميزة تسمح أيضا لـ Docker أن يكون وسيلة حفظ احتياطي "backup".كل صورة بنيتها يمكنك مشاركتها مع المجتمع في فهرس docker، والذي كان اسمه Docker index ثم تحول مؤخرا إلى docker hub. ستجد فيه مثلا صور لـتطبيق WordPress منصبة على Ubuntu جاهزة للاستهلاك المباشر، أليس هذا رائعا؟مفهوم الـ Dockerfile الذي سبق عرض ماهيته، وهو وسيلة لأتمتة وسرد خطوات بناء مشروعك أو حاويتك. الأتمتة التي تتيحها ملفات Dockerfiles تسمح بانتهاج نسق Continuous integration الذي تكلمنا عنه، تخيل أنك تريد تجربة مشروعك على Python 3 مثلا، كل ما عليك هو تغيير نسخة Python في ملف Dockerfile وبناء حاوية جديدة لتجرب عليها الناتج، فإن كان جيدا تدفعه للخادوم، وإن لم يكن كذلك تحذفه. نفس الشيء مع إصدارات المكتبات التي يعتمد عليها مشروعك.هذه بعض مما أضافه Docker لما هو موجود، وهي وحدها كفيلة بإحداث قفزة وتحول نوعي في طريقتنا لبناء ونشر البرامج. لكن السؤال الذي قد يطرحه البعض: أليس ما يعمله Docker هو نفسه ما تعمله الآلات الافتراضية Virtual Machines ومحاكاة الأنظمة؟ باختصار، نعم ولا وسنلخص الأمر في النقاط التالية: Docker أخف بكثير من الآلات الافتراضية، يمكنك تشغيل العشرات من الحاويات في حاسوب عادي واحد، في حين لا يمكنك تشغيل 3-4 آلات افتراضية في حاسوب عادي واحد ولو كان قويا نسبيا (يثقل النظام). أي أن Docker يستهلك موارد أقل بكثير.الآلات الافتراضية تقوم بمحاكاة كـــامــل النظام وكل ما فيه ووضعه فوق النظام المضيف، في حين Docker يتشارك النواة (Linux kernel) مع النظام المضيف.ما يقوم به Docker هو تنزيل التوزيعات فقط، أي الـ bins/libs لكل توزيعة وفقط، في حين يتشارك النواة مع النظام المضيف ولا يُنزّل نواة جديدة مع تلك التوزيعة. تلك الـ bins/libs كفيلة لمحاكاة بيئة التوزيعة المرجوة، أما النواة فهي متشابهة بين جميع التوزيعات وبالتالي يتقاسمها مع النظام المضيف (لهذا Docker لا يعمل إلا على Linux).Docker يعزل التطبيق واعتمادياته فقط، في حين الآلات الافتراضية تعزل كامل النظام وما فيه من تطبيقات.الصورتان التاليتان توضحان الفرق بين Docker والآلات الافتراضية: من خلال الصورتين يمكن ملاحظة أن وزن Docker على الخادوم بشكل عام أخف بكثير من الثقل الذي تحدثه الآلات الافتراضية. الجدير بالذكر أيضا أن القائمين على مشروع Docker قاموا بتوفير ما يسمى بـ Docker Hub، يمكن فيه مشاركة صور (images) لمشروعك (إن كان مفتوح المصدر)، تجد فيه صورا للحلول مفتوحة المصدر المعروفة، كصور Wordpress, joomla, mysql, nginx .. الخ، بحيث يمكنك استهلاكها مباشرة أو استيرادها والبناء عليها أدعوك ﻷن تلقي عليه نظرة. يمكن أيضا أن تكون مستودعا خاصا لك، لمشاريعك التجارية غير مفتوحة المصدر / مجانية، تجلب منه وتسترد صورك الخاصة التي قمت ببنائها. إلى هنا نصل إلى خاتمة هذه المقدمة التعريفية. سنقوم في مقال لاحق إن شاء الله بشرح أساسيات Docker بشكل عملي. إذا كانت لغتك الانجليزية جيدة، فأنصحك بمشاهدة الفيديو التالية لفهم أعمق للمقال:1 نقطة
-
لا بدّ لكل مستقلّ أن يمرّ خلال مسيرته المهنيّة بتلك اللحظة التي يحتاج فيها إلى كتابة عرض للعمل على مشروع معيّن، وإن لم تكن خائفًا من فكرة كونك بائعًا للخدمات فإن هذا الخوف سيتضاعف بعد أن تدرك الكمّ الهائل من المستقلّين الذين يقدّمون العروض أملًا في الحصول على العمل. وكل هؤلاء وعلى اختلاف مشاربهم مجتمعون على قول عبارة (اخترني)، فهل يمكنك إيصال صوتك مع وجود كل هذه الأصوات؟ لنقم بذلك إذًا. سنخوض معًا في التفاصيل الدقيقة التي تتضمنها عملية كتابة عرضك كمستقلّ وسأستفيد من خبرتي التي اكتسبتها من العمل في هذا المجال لسنوات عديدة لأساعدك على إبراز صوتك من بين الجموع، وسيتضمن ذلك: أفضل الأساليب المتّبعة.الأخطاء الواجب تجنّبها.كيف تتابع نتائج العرض الذي ستقدمه.كيف تعدّل أسلوبك استنادًا إلى النتائج التي تابعتها.كيف أكتب عروضي عادة لم يكن حالي عندما بدأت بالعمل كمستقلّ مختلفًا عن حال أي مستقلّ جديد، إذ لم أكن أفقه شيئًا، أضف إلى ذلك صفة العناد والتعنّت، لتحصل على قائمة طويلة جدًّا بالأخطاء التي ستقترفها في فترة زمنية قصيرة؛ لذا سأوضّح لك الأخطاء التي وقعت فيها بدلًا من تعدادها ووصف سوءها فقط. النصّ التالي هو عرض كنت سأكتبه بهذه الطريقة لو لم أتعلم من الأخطاء التي ارتكبتها سابقًا. كنت في السابق معتادًا على كتابة بعض العروض الشاملة التي أمتدح فيها نفسي على الدوام، ولكن عندما أنظر إلى هذه العروض اليوم فإني أشعر بالغثيان، لا بل سيكون تعبير (الغثيان الشديد) أفضل في هذا الموقف، فالدعابة لن تنفع أحدًا هنا. حان الوقت الآن لتقسيم هذا العرض إلى أجزاء متعدّدة ومعرفة الأخطاء التي يحتويها بعد أن تعرّفنا إلى هذا الأسلوب الفظيع في كتابة العروض، وسنبدأ بتحليل ونقد أسلوبي القديم هذا من منظور عامّ قبل الولوج إلى التفاصيل، وسيساعدك هذا على فهم الأمور العامّة بصورة جيّدة. بعض النقاط العامةكل ما فعلته هو التبجحلن يبدو هذا العرض سيّئًا عند النظر إليه للوهلة الأولى وكلّ شيء فيه صحيح، فقد تكلّمت عن خبرتي وذكرت ما قمت به من أعمال، وأشرت إلى ما أفتخر به من إنجازات في العمل، ثم أعطيت رابطًا لمعرض أعمالي، وقدّمت شكري في نهاية العرض. ما الخطأ في كل ذلك؟ إن نظرت إلى العرض بإمعان فإنك ستلاحظ سمة تتواتر فيه من البداية إلى النهاية، إنها سمة التبجّح والتباهي، مع الاكتفاء بتقديم مادة قليلة إلى الشخص أو الفريق الذي أرسلت إليه هذا العرض. لم أجب عن أي شيء فيما سردتهكما قلت لك سابقًا، فقد كنت أستخدم هذا الأسلوب لكل طلب عمل يصادفني. إذًا باعتقادك ما هي نسبة الإجابات التي حصلت عليها بعد إرسال هذا النوع من العروض لمرّات عديدة؟ الإجابة هي 0%، ولنأخذ عملية صيد الأسماك كمثال لفهم سبب انخفاض النسبة إلى هذا المستوى. عندما ترغب في صيد الأسماك يكون أمامك خياران، الأوّل أن تستخدم طُعمًا تحبّه جميع الأسماك بلا استثناء، والثاني استخدام طُعم خاص لصيد نوع معيّن من الأسماك. لقد كنت أستخدم الطُّعم الأوّل والذي يبدو أنه يرضي جميع أنواع الأسماك، ولكنّه لم يجذب سوى ما يتغذّى في الأعماق. الكثير من المعلومات غير ذات الصلةإن كنت أريد تقديم عرض لأعمل كمصمّم في المشروع، فما الفائدة من ذكر خبرتي في التطوير ضمن العرض؟ كنت أظنّ مسبقًا أنّ ذلك سيدلّل على مهاراتي المتنوّعة وسيرضي ذلك العميل ويدفعه إلى التعامل معي. ولكن ما فعلته في الواقع هو أنّي قدّمت إلى قارئ العرض انطباعًا مفاده أنّي لا أعير مشروعه الاهتمام اللازم، أو حتّى أنّي لا أمتلك القدرة ربّما على فهم ما أقرؤه. لم أُظهر شخصيتي في العرضألم تلاحظ أثناء قراءتك لهذا العرض أنّك قادر على إزالة اسمي واستبداله باسمك بكل سهولة؟ من المؤكّد أنّ كل هذا التباهي لن يكون ملائمًا في هذه النقطة من مسيرتك المهنية، ولكن يمكنك تبديل الاسم دون الحاجة إلى تبديل شيء آخر. للأسف هذا هو الحال لأنّي لم أقم بأي شيء لإظهار شخصيتي في هذا العرض. لن تنفعك كل تلك التفاصيل إن لم تظهر شخصيتك في العرض، وسيكون عرضك سريع النسيان. إنه طويل جداألم تلاحظ طول هذا العرض؟ يبدو الأمر وكأنّي أحاول كتابة موضوع إنشاء للمرحلة الثانويّة لأبيّن السبب الذي يجعلني أفضل من ملايين الأشخاص الذين يغرقون بريدك الإلكتروني وهم يطلبون العمل على هذا المشروع. يجب على العميل أن يقرأ ويتفحص عددًا كبيرًا جدًّا من العروض عندما يرغب في توظيف مستقلّ لإنجاز مشروعه الخاصّ. إن طلبت من شخص يتصفّح العديد من رسائل البريد الإلكتروني قراءة عرض مطوّل كهذا العرض فهذا يعني دعوتك إياه إلى المرور على عرضك هذا مرور الكرام أو تجاوزه في أسوأ الأحوال. تفكيك العرض إلى أجزاءبعد أن تعرّفنا على النقاط الأساسية الأربعة التي جعلت العرض غير ذي نفع أو فائدة، دعنا نفكّكه إلى أجزاء ونتفحّص العبارات والجمل التي كانت سبب كلّ هذه المشاكل. ذكر العمر وسنوات الخبرة كنت أعتقد دومًا أن ذكر عمري وسنوات خبرتي من الأمور الجيدة. كنت أظنّ أن العميل سينبهر عندما يرى عمري خصوصًا عندما كنت مراهقًا وأنه سيرغب بالتعامل معي الآن ليؤسس لعلاقة متينة وراسخة ستستمرّ معي إلى الأبد. ولكن كان هذا خطأً فادحًا. عندما تذكر عمرك أو سنوات خبرتك في العرض الذي ستقدمه فإنّك تعطي انطباعًا إلى العميل بالخوف من عدم القدرة على تقديم ما هو جيّد لهذا المشروع. وهذا ما يحدث بالفعل، فأنت كمن يصنع نظّارة بعدسات ورديّة لتظهر بمظهر جيّد قد حدّدته بنفسك مسبقًا. ذكر كل شيء أقوم به إن كنت قاسيًا مع نفسي فمن سيكترث لهذا الهراء؟ هل يبحث العميل عن مصمّم أم مطوّر؟ مدوّنٍ أم كاتب؟ من النادر أن يبحث العملاء عن شخص يمتلك مجموعة من المهارات، لذا فإن المبالغة في عرض خبراتك يجعلك تبدو بمظهر الأحمق. في الواقع، إن شاهدت عرضًا يتضمّن مجموعة من المهارات في التّصميم أو التطوير فمن الأفضل أن تتجاهله، إلا إن كنت تريد أن تبدو أحمقًا كما كنت أنا كذلك بالتأكيد. التكلم بدون فائدة عن جدارتي بهذا الموقع يمكنك مدح نفسك بالطريقة التي تريدها وحسبما تقتضي الحاجة، ولكنّ ذلك لن يغيّر شيئًا من الواقع. إذ يمكن للعميل أن يجد ما ذكرته أو لا يجده بمجرّد النّظر إلى معرض أعمالي؛ لذا أصدقك القول أن كلّ ما حصلت عليه هو أنّي جعلت نفسي أبدو أقلّ خبرة مما أنا عليه في واقع الحال. الأساليب الأفضلبعد أن تعرّفنا معًا على مثال جيّد عن الأمور التي يجب عليك تجنّبها، حان الوقت للتعرف على ما يجب عليك فعله في هذا الصّدد. سأطرح فيما يلي بعض الأمثلة على عروض قوية تستند على أرض ثابتة، عروض تستحق القراءة وتستحق الاختيار. نصائح لصناعة عرض جيدمن المؤكّد أن بعض الأفكار قد تبلورت لديك عن الأمور التي تجعل العرض جيًّدا بعد الاطلاع على الأخطاء التي ارتكبتها في عرضي الفظيع. ولتتشكّل لديك الصورة الكاملة عن الموضوع إليك بعض الإرشادات التي تضمن لك الحصول على عرض جيّد إن التزمت باتباعها. أبقه قصيرًا، فقرتان على الأكثر.لا تخرج عن الموضوع.لا تذكر عمرك وسنوات خبرتك على الإطلاق.لا تتباهى.أبقه بسيطًا.أظهر شخصيتك ولكن كن متواضعًا.تبدو هذه الخطوات سهلة أليس كذلك؟ عظيم، لنلق نظرة الآن على نموذجين من العروض التي يمكنك استخدامها. سيسلّط المثال الأول الضوء على ما ستفعله إن حصلت على طلب قصير لا يوضّح فيه العميل متطلّباته بصورة جيّدة. أما المثال الثاني فسيقدم مخطّطًا للطريقة التي ستجيب بها على الطلب الذي يحتوي على معلومات مفصّلة، مثل التخصّصات والأجر المطلوب والوقت الأمثل للاتصال. المثال الأول المثال الثاني: لماذا تجدي هذه الأمثلة نفعاحقّق هذان المثالان النتائج المرجوّة منهما لأنهما يستوفيان المعايير المطلوبة في الطلبات المُقدَّمة، ومن المؤكّد أن هذين المثالين يتطابقان بشكل تامّ مع الإرشادات التي استخلصناها من دراسة العرض القديم وتحليله ونقده. وللمراجعة فقط سنمرّ بسرعة على تلك الإرشادات: كلاهما قصير.عرض الأعمال، والسيرة الذاتية (إرفاق السيرة الذاتيّة أمر اختياري، أرفقها عندما يّطلب منك ذلك) ومعلومات الاتصال، كلّ ذلك معروض بصورة واضحة.لا وجود لمعلومات غير ذات صلة.كلاهما يدخل في صلب الموضوع بصورة مباشرة.أنت الآن على أتمّ الاستعداد للبحث عن العملاء وتمتلك الطريقة الصحيحة للتعريف عن نفسك، ماذا تنتظر إذًا؟ وقت التحديأرني في التعليقات كيف ستُظهر شخصيتك في الأمثلة السابقة، أتطلّع شوقًا إلى قراءة تعليقاتكم. ترجمة ـ بتصرّفـ للمقال How to Write a Freelance Pitch That Gets Clients لصاحبه Jamal Jackson. حقوق الصورة البارزة: Designed by Freepik.1 نقطة