لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 03/29/15 في كل الموقع
-
هذا المقال مقتبس من محاضرة زائر ألقيت في مادة الشركات الناشئة لـ سام ألتمان Sam Altman في جامعة ستانفورد. المقال مخصص لطلاب الجامعة، لكن جزء كبير منه قابل للتطبيق على المؤسسين المحتملين في أعمار أخرى. إن أحد فوائد أن يكون لديك أطفال هو عندما تسدي النصيحة، فإنك تسأل نفسك "ما الذي كنت سأخبر أطفالي ؟". أطفالي صغار، لك يمكنني أن أتخيل ما كنت لأخبرهم به حول الشركات الناشئة إذا كانوا طلابًا جامعيين، وهذا ما سأخبرك به. الشركات الناشئة شيء أبعد ما يكون عن البداهة counterintuitive. لست متأكدًا تمامًا سبب كون الأمر على هذا النّحو. قد يكون بسبب أن المعرفة المُتعلّقة بالشّركات الناشئة لم تتسرّب بعد إلى ثقافتنا. لكن بغضّ النظر عن السبب، إن إطلاق شركة ناشئة مَهمّة لا يمكنك الوثوق بحدسك فيها. الأمر أشبه بالتزلج، عندما تحاول التزلج للمرة الأولى وترغب بإبطاء سرعتك، فإن حدسك يخبرك بأن ترجع ظهرك للخلف. لكن إذا فعلت ذلك فإنك ستفقد السيطرة على نفسك وتسقط. لهذا فإن جزءًا من عملية تعلم التزلج هو قمع هذا الحدس. بالتالي يصبح لديك موهبة جديدة، لكن في المرات الأولى فإنها تتطلب منك بعض الجهد وتذكر قائمة بالأشياء التي يجب القيام بها أثناء التزلج نحو الأسفل. والشركات الناشئة هي أمر غير طبيعي مثلما هو عليه الحال مع التّزلّج. لذا هناك قائمة مشابهة من الأشياء التي يجب عليك القيام بها مع الشركات النّاشئة أيضًا وسأحاول هنا أن أقدم لك الجزء الأول منها إذا أردت أن تهيئ نفسك لبدء شركتك الناشئة. منافاة البداهة Counterintuitiveإن العنصر الأول ضمن القائمة هو ما ذكرته آنفًا: الشركات الناشئة غريبة وليس طبيعة بشكل إذا وثقت بحدسك، فإنك سترتكب العديد من الأخطاء. إذا كنت لا تعرف عن الشّركات الناشئة سوى هذا الأمر فإنك على الأقل ستتوقف قبل ارتكاب الأخطاء. عندما كنت أدير حاضنة Y Combinator، اعتدت أن أطلق نكتة على أن مهمتنا هي إخبار المؤسسين بالأشياء التي يجب عليهم تجاهلها. وهذه هي الحقيقة. مع مرور الشركات الناشئة على الحاضنة، فإن شركاءنا كانوا يُحذّرون المؤسسين من الأخطاء التي سوف يرتكبوها وكان المؤسسون يتجاهلون كلام الشركاء، وبعد سنة يعودون نادمين ويقولون "نتمنى لو أننا استمعنا لما قلتموه". لماذا تجاهل المؤسسون نصيحة الشركاء؟ حسنًا، هذا هو مفهوم منافاة البداهة. إن الشركاء يعارضون حدسك، ويبدو لك أنهم مخطؤون، لهذا يكون الدافع الأول لديك أن تتجاهلهم. وفي الواقع فإن مُحتوى تلك النُكتة ليست لعنة على الحاضنة بل جزءًا من سبب وجودها. إذا كان حدس المؤسسين صحيحًا وأعطاهم الإجابة الصائبة، فلن يحتاجوا إلينا. حيث أنك تحتاج النصيحة من الآخرين عندما تفاجئك. ولهذا نجد الكثير من مُدرّبي التّزلّج لكن أعداد المُدرّبين تقل لما يتعلّق الأمر بالرّكض [1]. على أي حال، يمكنك الوثوق بحدسك حيال الأشخاص، وفي الواقع فإن واحدًا من الأخطاء الشائعة التي يرتكبها المؤسسون الشباب أنهم لا يثقون بحدسهم لما يتعلّق الأمر بالأشخاص. يتواصل المؤسسون مع الأشخاص الذين يبدو أنهم مثيرون للإعجاب، لكنهم غير مرتاحين لهم شخصيًا وعندما تسوء الأمور لاحقًا يقولون "كنت أعرف أن هناك شيئًا ما غير مريح حوله، لكن تجاهلته لأنه كان مثيرًا للإعجاب". إذا كنت تفكر بالتعامل مع أحدهم وتعيينه كشريك مؤسس أو موظف أو مستثمر أو مُستحوذ على شركتك، ولديك شكوك وعدم ارتياح اتّجاهه، فيجب عليك أن تثق بحدسك. إذا شعرت بأنه مخادع، كذاب، مغفل، لا تتجاهل هذا الشعور. اعمل مع الأشخاص الذين تعرفهم جيدًا ولمدة طويلة وأصبحت متأكّدًا منهم. الخبرةإن الشيء غير البديهي الثاني هو أنه من غير الضروري أن تعرف الكثير حول الشركات الناشئة. إن الطريق نحو النجاح في الشركات الناشئة لا يشترط أن تكون خبيرًا في الشركات الناشئة، بل خبيرًا في المستخدمين والمشاكل التي سوف تحلها لهم. لم ينجح مارك زوكربيرغ لأنه كان خبيرًا بالشركات الناشئة، لقد نجح على الرغم من أنه كان جاهلًا تمامًا بالشركات الناشئة، لقد نجح لأنه فهم مستخدميه جيدًا. إذا لم تعرف أي شيء عن مواضيع مثل الحصول على التمويل، لا تشعر بالسوء. هذا الأمر من الأشياء التي يمكنك أن تتعلمها عندما تحتاج إليها، وتنساها بعد أن تفرغ منها. في الحقيقة، ما يقلقني هو أنه ليس فقط من غير الضروري أن تتعلم كل التفاصيل حول آليات تأسيس وعمل الشركات الناشئة، بل من المحتمل أيضًا أن يكون تعلّم ذلك خطرًا. إذا قابلت طالبًا جامعيًا يعرف كل شيء عن السندات القابلة للتحويل و اتفاقيات التوظيف و ( لا سمح الله ) الأسهم من فئة FF*، لن أفكّر به على أنه شخص متفوق على أقرانه، بل سأبدأ بالحذر منه. لأنه من الأخطاء الشخصية الأخرى التي يرتكبها المؤسّسون الشباب هي القيام بما تقوم به الشركات الناشئة. إنهم يقترحون أفكارًا تبدو جيّدة مثل الحصول على التمويل عندما تكون قيمة الشركة مرتفعة، استئجار مكاتب كبيرة، توظيف عدد من الأشخاص. قد يبدو هذا ظاهريًا ما تفعله الشركات الناشئة. لكن الخطوة التالية لاستئجار مكتب كبير وتوظيف عدد من الأشخاص هي: الإدراك التدريجي للحالة المزرية التي هو فيها. لأنه أثناء تقليد جميع المظاهر التي تقوم بها الشركات الناشئة، أهملوا الشيء الوحيد الضروري والذي يجب فعله: بناء شيء يريده الناس. اللعبةرأينا هذا الأمر يحدث مرارًا وتكرارًا لدرجة أننا أطلقنا عليه اسم: playing house. ولاحقًا عرفت سبب تكرار حدوثه. إن السبب الذي يدفع المؤسسين الشباب لأن يقوموا بمثل هذه الأشياء أثناء تأسيسهم الشركات الناشئة، هو أنهم تدربوا على هذا الأمر طوال حياتهم حتى لحظة بدء إطلاقهم لشركة. على سبيل المثال فكّر بماذا ستفعل إذا أردت الدراسة في الجامعة، بالطبع الأنشطة اللامنهجية**، حتى في الدروس الجامعية، فإن معظم العمل الذي يقوم به الطلاب هو اصطناعي. وأنا هنا لا أهاجم النظام التعليمي لأنه مبني على هذه الطريقة. دائمًا سيكون هناك حد معين من التزييف في العمل الذي تقوم به من أجل أن تتعلم شيئًا ما. أعترف أني قمت بهذا الأمر شخصيًا في الجامعة. رأيت أنه في الكثير من المواد هناك فقط 20 أو 30 فكرة التي كانت تملك الشكل المُناسب لبناء سؤال امتحان جيد. ولم تكن الطريقة التي درست بها تلك المواد من أجل الامتحان للتمكّن من المعلومات التي تعلمتها منها، بل من أجل إنشاء قائمة بأسئلة محتملة للامتحان والإجابة عنها مسبقًا، وعندما أصل إلى للامتحان النهائي، كان الشعور الوحيد الذي يساورني هو الفضول حول أي من أسئلتي ستكون ضمن الامتحان. كان الأمر أشبه بلعبة. لست متفاجئًا بعد هذا التدريب الطويل لكامل حياتهم لمثل هذه الألعاب، أن يكون الدافع الأول للمؤسسين الشباب عند بدء إطلاق شركاتهم الناشئة هو محاولة ابتكار الخدع والتحايل من أجل الفوز في هذه اللعبة الجديدة. وطالما أن الحصول على التمويل يبدو كمقياس نجاح للشركات الناشئة (خطأ تقليدي آخر للمُؤسسين الشباب)، فإن أولئك المؤسسين يرغبون دائمًا بمعرفة الخدع التي تؤدي لإقناع المستثمرين. نخبرهم بأن أفضل طريقة لإقناع المستثمرين هي إنشاء شركة ناشئة تبلي بلاءً حسنًا، بمعنى أنها تنمو بسرعة، وبعدها فقط عليكم إخبار المستثمرين بهذا الأمر. وبعدها يرغبون بمعرفة الخدع التي تجعل شركاتهم تنمو بسرعة. وهنا نقول لهم أن أفضل طريقة للنمو بسرعة هي ببساطة بناء شيء يريده الناس. لذا فإن العديد من المحادثات التي يجريها شركاء حاضنة Y Combinator مع المؤسّسين الشباب تبدأ بسؤال المؤسس " كيف نقوم بـ .. " ويجيبه الشريك " فقط افعل .. ". لماذا يعقّد المؤسّسون الأمور دائمًا؟ برأيي يعود السبب إلى أنهم يبحثون عن خدعة ما. وهذا هو الشيء المُنافي للبداهة الثالث الذي ينبغي عليك تذكره حول الشركات الناشئة: إن تأسيس شركة ناشئة لا ينفع معه التلاعب على النظام. قد ينجح معك هذا التلاعب إذا عملت لدى شركة كبيرة. وبالاعتماد على مدى سوء حالة الشركة، يمكنك أن تنجح من خلال تملق الأشخاص المناسبين، الإيحاء وإعطاء الانطباع بالإنتاجية، وهلم جرًا [2]. لكن الأمر لا يسير على هذه الطريقة مع الشركات الناشئة. ليس هناك مديرٌ لتخدعه، هناك فقط مستخدمون، وهؤلاء همّهم الوحيد هو إن كان منتجك يؤدي الغرض المطلوب منه أم لا. وتكمن الخطورة في أن الخداع والتزييف ينجح مع المستثمرين إلى حد ما. إذا كنت مُمثّلًا بارعًا بالحديث بطريقة تنم عن أنك تعرف جيدًا ما الذي تتحدث عنه، يمكنك خداع المستثمرين لجولة وربما جولتين من التمويل. لكن الأمر ليس دائمًا في صالحك أن تقوم به على هذه الطريقة. فالشركة ستفشل في النهاية وكل ما تفعله هو إضاعة وقتك والتوجه بها نحو الهاوية. لذا توقف عن البحث عن خدعة ما، هناك خدع في الشركات الناشئة كما في أي مجال آخر. لكنها أقل أهمية من حل المشاكل الحقيقية. إن المؤسس الذي لا يعرف شيئًا عن الحصول على التمويل لكن لديه منتج يحبه المستخدمين، هذا سيسهل عليه مهمة جمع التمويل مقارنة بذلك الذي يعرف كل الخدع لكن منتجه لا يثير اهتمام المستخدمين. والأهم من هذا أن المؤسس الذي صنع شيئًا يحبه المستخدمون هو نفسه الذي سيستمر لينجح بعد أن حصل على التمويل. على الرغم من أنك فقدت واحدًا من أسلحتك القوية، لكن أعتقد أنه من المثير للاهتمام أن التلاعب على النظام لا ينجح عندما تبدأ بتأسيس شركة ناشئة. من الجيد أنه لا زال هناك مكان ما في هذا العالم حيث يمكنك أن تنجح عبر القيام بالشيء الصحيح. تخيل لأي حد سيكون العالم مُحبطًا إذا كان مثل المدارس والشركات الكبيرة، حيث عليك إما قضاء معظم وقتك على أشياء تافهة أو تخسر أمام الأشخاص الذين يفعلونها. [3] سأكون في منتهى السعادة لو عرفت أيام الجامعة أن هناك مكانًا ما في العالم الحقيقي حيث التلاعب على النظام ينال أهمية أقل من الأماكن الأخرى، وبعض الأماكن التي بالكاد يكون هناك أهمية لهذا التلاعب. هذا التنوع هو واحد من أكثر الأشياء أهمية للأخذ بها بعين الاعتبار عندما تفكر حول مستقبلك. كيف تفوز في كل نوع من الأعمال؟ وما الذي تريد النجاح به؟ [4]. الاستنزافهذا يقودنا إلى النقطة الرابعة المُنافية للبداهة: الشركات الناشئة تستنزفك، إذا أسست شركة ناشئة فإنها ستسيطر على حياتك لدرجة لا يمكنك تخيّلها. وإذا نجحت شركتك الناشئة، فإنها ستسيطر على حياتك لفترة أطول: على الأقل لعدة سنوات، قد يكون لعقد من الزمن، وربما لباقي حياتك العملية. لذا هنا تكلفة فرصة بديلة*** حقيقية. قد يبدو أن لاري بيج يعيش حياة رائعة، لكن هناك نواح عديدة في حياته تجعلها مزرية. منذ أن كان عمره 25 عامًا بدأ في الرّكض بأسرع ما يمكنه وبالنسبة إليه يبدو أنه لم يتوقف لالتقاط أنفاسه بعد. تحدث أشياء سيئة يوميًا في امبراطورية جوجل والتي يمكن فقط للمدير التنفيذي أن يتعامل معها، وعليه كمدير تنفيذي أن يتعامل معها. فلو ذهب في إجازة لفترة أسبوع، فإنه يتراكم عليه أسبوع كامل من المشاكل وعليه التعامل معها بدون أن ينبس ببنت شفة. ولأنه الرأس الأكبر في الشركة فإنه لا يمكنه إظهار الخوف أو الضعف، وأيضًا لأنه لا أحد يتعاطف مع أصحاب المليارات إذا تحدثوا عن المصاعب التي تواجههم في حياتهم. من الآثار الجانبية الغريبة حول صعوبة كونك مؤسسًا لشركة ناشئة ناجحة كون هذه الصعوبات لا يراها أحد باستثناء أولئك المؤسسين الذين فعلوها هم أيضًا. موّلت حاضنة Y Combinator العديد من الشركات التي يمكن اعتبارها نجاحات كبيرة. وفي كل واحدة من تلك الشركات يكرّر المؤسسون نفس العبارات. إن الأمر لن يصبح سهلًا على الإطلاق. إن طبيعة المشاكل تتغير. فأنت تقلق حول التأخير في أعمال البناء والتأسيس في مكتب الشركة بلندن بدلاً من تعطل مكيف الهواء في شقتك الصغيرة. ولا يتناقص أبدًا العدد الإجمالي لحالات القلق بل تزداد دائمًا. إن تأسيس شركة ناشئة ناجحة يشبه أن يكون لديك أطفالًا، وكأنّه زر تضغط عليه وتتغير حياتك بلا رجعة. وفي حين أنه من الرائع أن يكون عندك أطفال، فإن هناك الكثير من الأشياء التي من الأسهل القيام بها قبل أن يولدوا. والعديد من تلك الأشياء سيحولك إلى أب أفضل عندما يصبح عندك أطفال لاحقاً. وطالما أنه بمقدورنا تأخير الضغط على الزر لبرهة، فإن معظم الناس في الدول الغنية يفعلون ذلك. وعندما يتعلق الأمر بالشركات الناشئة، يظن الكثير من الناس بأنه ينبغي عليهم إطلاق شركاتهم الناشئة عندما يكونون في الجامعة. هل أنت مجنون؟ وما الذي تفكر فيه الجامعة؟ بالرّغم من أنّها تعمل كل ما في وسعها لتضمن بأن طلبتها مجهّزون بوسائل منع الحمل، إلا أنها تسعى إلى إطلاق برامج ريادة الأعمال وحاضنات الشركات الناشئة هنا وهناك. لأكون منصفًا، هناك قيود مفروضة على الجامعات حيث يأتيها الكثير من الطلاب المهتمين بالشركات الناشئة. وعلى الجامعات على الأقل أن تُحضّرهم لهذا الأمر . لذا يأمل الطالب الذي يريد أن يطلق شركة ناشئة من الجامعات أن تعلمه كيفية القيام بذلك. وسواء أكانت الجامعات قادرة على فعل هذا أم لا، فإن الضغوط التي عليها تدفعها على الأقل للادعاء بأنها قادرة على فعل ذلك، خشية أن تخسر الطلاب الذين سيتجهون إلى جامعات أخرى قادرة على تعليمهم هل يمكن للجامعات أن تُدرّس الطلاب الشركات الناشئة؟ الأمر يحتمل الوجهين. يمكنها تعليم الطلاب حول الشركات الناشئة، لكن كما شرحت سابقًا أن هذه ليست الطريقة المناسبة والصحيحة التي يجب أن تتعلم بها. ما يجب أن تتعلمه هو حاجات المستخدمين، ولا يمكنك تعلم هذا قبل أن تبدأ شركتك فعلًا.[5] إذاً إن تأسيس الشركات الناشئة جوهرياً هي شيء يمكنك فقط التعلم عنه من خلال البدء به. ومن المستحيل أن تتعلم ذلك في الجامعة، لنفس السبب الذي شرحته قبل قليل: تستحوذ الشركة الناشئة على حياتك، لا يمكنك أن تطلق شركتك كطالب تتعلم عن الموضوع، لأنه ما إن تطلقها فإنك لن تُصبح طالبًا. قد تكون طالبًا بشكل ظاهري فقط لفترة قصيرة من الزمن، ولن يدوم هذا الأمر طويلاً. [6] وفي هذه الحالة، أيّ المسارين يجب أن تسلك؟ أن تكون طالبًا حقيقيًا وتتخلى عن فكرة إطلاق شركة ناشئة؟ أو أن تؤسس شركتك وأن لا تكون طالبًا؟ يمكنني الإجابة بدلًا عنك. لا تؤسس شركتك ناشئة وأنت في الجامعة. إن كيفية إطلاق شركة ناشئة ليست سوى جزء من مشكلة أكبر تعمل على حلها: كيف تحظى بحياة سعيدة. وبالرّغم من أن إطلاق شركة ناشئة قد يكون جزءًا من الطريق نحو الوصول للحياة السعيدة، إلا أنه لمّا تكون في سن العشرين ليس الوقت المثالي لإطلاق شركتك الخاصة. إن تأسيس الشركات الناشئة أشبه بالبحث المعمق السريع fast depth-first search (طريقة بحث في بنية البيانات المعروفة بالشجرات الثنائية) يجب على معظم الناس أن يبحثوا بشكل عرضي (breadth-first) في عمر العشرين. يمكنك القيام بأشياء عند مطلع العشرينيات من عمرك، لا يمكنك القيام بها قبل أو بعد هذا العمر. كالتعمق في مشاريع ترضي نزواتك أو السفر بتكلفة مُنخفضة من دون القلق حول مواعيد العودة. وبالنسبة للأشخاص غير الطموحين، هذا النوع من الأشياء هو لعنة " فشل الإطلاق والتأسيس"، في حين يمكن أن يعتبر استكشافًا لا يقدر بثمن للأشخاص الطموحين. إذا أطلقت شركتك الناشئة عند عمر 20 سنة وكنت ناجحًا للغاية في حياتك، فلن تحصل على فرصة تأسيس شركتك.[7] لن يكون بمقدور مارك زوكربيرغ التسكّع في دول أخرى، يمكنه القيام بأشياء أخرى لا يستطيع فعلها غيره، كاستئجار طائرة تحلق به إلى دول أجنبية. إلا أن النجاح منعه من القيام بالكثير من الأمور التي كان بإمكانه القيام بها. إن فيس بوك تُديره بقدر ما يدير هو فيس بوك. وعلى الرغم من أنه من المُثير للإعجاب العمل على مشروع تعتبره عمل حياتك، فإن هناك امتيازات للصدفة أيضًا، خاصة في السنوات الأولى من حياتك. ومن بين العديد من الأشياء فإنها تمنحك المزيد من الخيارات لتختار عمل حياتك منها. وليس هناك أية تنازلات هنا، فأنت لا تضحي بأي شيء مقابل تخليك عن فكرة إطلاق شركتك عند عمر 20 سنة، لأنك على الأرجح ستنجح لو انتظرت. ومن الحالات النادرة أن يكون عمرك 20 سنة وينجح أحد مشاريعك الثانوية كما حصل مع فيس بوك. سوف تواجه الخيار في متابعة الشركة وإدارتها أم لا، وحينها سيكون من المعقول والمنطقي أن تتابع إدارة الشركة وإطلاقها. إلا أنه في الحالات العادية لإطلاق الشركات الناشئة أن المؤسسين يقومون بأشياء لإنجاحها، ومن الغباء أن تفعل ذلك في سن العشرين. المحاولةهل يجب عليك أن تطلق شركتك في أي عمر كان؟ أعلم أني أظهرت الشركات الناشئة بمظهر المهمّة الصّعبة للغاية. وإن لم أوفق في هذا، دعني أحاول مجددًا: إن تأسيس الشركات الناشئة أمر صعب للغاية. وماذا لو كان الأمر صعبًا جدًا؟ كيف يمكنك أن تعرف إن كنت على قدر هذا التحدّي؟ يكمن الجواب في النقطة الخامسة المُنافية للبداهة: لا يمكنك أن تعرف. لقد أعطتك حياتك حتى الآن بعض الأفكار عما يمكن أن تتخيله إن حاولت أن تصبح عالم رياضيات، أو لاعب كرة قدم محترف. لكن ما لم تكن لديك حياة غريبة للغاية فإنك لم تفعل الكثير مما يمكن أن يشبه حياة مؤسس الشركة الناشئة. إن إطلاق الشركات الناشئة سوف يغيرك كثيرًا. لذا فإن ما تحاول تقديره ليس ما أنت عليه الآن، بل ما يمكن أن تمر فيه، ومن يمكنه القيام بذلك؟. كان عملي طوال السنوات التسعة الماضية هو التنبؤ فيما إذا كان لدى الأشخاص ما يتطلبه إطلاق شركة ناشئة ناجحة. كان من السهل أن تعرف مدى ذكائهم (وإن كنت تقرأ هذا المقال فمن المُحتمل جدّا أنك ذكّي أيضًا)، لكن تكمن الصعوبة في معرفة مستوى الطموح والقدرة على تحمل المصاعب التي سيصلون إليها. قد لا يكون هناك أي شخص لديه خبرة أكبر في محاولة التنبؤ بهذا، لذا يمكنني أن أخبرك عن المقدار الذي يمكن أن يعرف الخبير عن ذلك، والإجابة هي: ليس الكثير. تعلمت أن أكون منفتحًا للغاية حيال أي من الشركات الناشئة في كل دفعة احتضان ستكون من الشركات الناجحة. يعتقد المؤسسون أحيانًا أنهم يعرفون. يساور بعضهم الشعور بأنهم سيتفوقون في حاضنة Y Combinator كما تفوقوا على الجميع في كل الاختبارات ( السهلة، الافتراضية، القليلة) التي واجهوها في حياتهم حتى الآن. في حين يقلق بعض المؤسسين حول الطريقة التي أوصلتهم إلى الحاضنة على أمل أن لا تكتشف أي خطأ ارتكبناه لمّا قبلناهم. لكن هناك علاقة ارتباط ضعيفة ما بين مواقف المؤسّسين الأولية وأداء شركاتهم لاحقًا. لقد قرأت أن هذا الأمر صحيح أيضًا في الجيش، حيث أن المجندين المتبجحين ليسوا أكثر تأهيلًا ليُصبحوا أشد وأفضل من المُجنّدين الهادئين، وربما يعود الأمر لنفس السبب: إن الاختبارات التي سيمرّون بها مختلفة جدًا عن التي مرّوا بها سابقًا في حياتهم. إذا كنت ترتعد خوفًا من إطلاق شركتك الناشئة، فإنّه على الأرجح لا يجب علي القيام بذلك. لكن إذا لم تكن متأكدًا إن كنت قادرًا على المواجهة، فإن الطريقة الوحيدة لمعرفة ذلك هي المحاولة. لكن ليس الآن. الأفكارحسنًا، إذا أردت إطلاق شركتك الناشئة في أحد الأيام، ما الذي ينبغي عليك فعله أثناء الدراسة في الجامعة؟ هناك شيئان اثنان ستحتاجهما في البداية: الفكرة و المؤسسون الشركاء. وهذا ما يقودنا إلى النقطة السادسة والأخيرة المُنافية للبداهة: إن طريقة الحصول على أفكار للشركات الناشئة ليست محاولة التفكير في أفكار الشركات الناشئة. لقد كتبت مقالًا كاملًا حول هذه النقطة. لذا لن أكرر نفس الكلام هنا أيضًا. لكن وباختصار إذا أردت أن تقوم بجهد كافي للتفكير بأفكار الشركات الناشئة، فإن الأفكار التي ستحصل عليها لن تكون سيئة فحسب، بل سيئة ولها مظهر مخادع أيضًا (تظهر بمظهر الفكرة الجيّدة)، أي أنك ستهدر الكثير من الوقت عليها قبل أن تدرك أنها فكرة سيئة. إن الطريقة المناسبة للحصول على أفكار جيدة للشركات الناشئة هي الرجوع خطوة للوراء. بدلاً من القيام بجهد والتفكير بأفكار للشركات الناشئة، حوّل عقلك إلى النوع الذي يحصل على أفكار للشركات الناشئة بدون تخصيص جهد لذلك لدرجة لا تدرك للوهلة الأولى أنها أفكار للشركات الناشئة. وهذه الطريقة ليست ناجعة وممكنة فحسب، بل أيضاً هي الطريقة التي بدأت بها كل من آبل، ياهوو، جوجل وحتى فيس بوك. ولا واحدة من تلك الشركات كان المقصود منها أن تصبح شركة في بداية الأمر. كانت كلها مجرد مشاريع ثانوية. إن أفضل الشركات الناشئة غالبًا تبدأ كمشاريع جانبية لأن الأفكار الرائعة تميل لأن تكون متطرفة لدرجة أن عقلك الواعي سيرفضها كأفكار تصلح لأن تصبح شركات. حسناً، كيف تحول عقلك إلى النوع الذي يستحضر أفكار الشركات الناشئة من اللاوعي؟ تعلم الكثير عن الأشياء الهامة اعمل على المشاكل التي تثير اهتمامك مع الأشخاص الذين تحبهم وتحترمهم. وهذه الخطوة الثالثة على سبيل الصدفة هي التي توصلك إلى المؤسّسين الشركاء في نفس الوقت التي تحصل فيها على الفكرة. في المرة الأولى التي كتبت فيها الفقرة السّابقة، وبدلاً من "تعلم الكثير عن الأشياء الهامة" كتبت " كن ماهرًا في تقنية ما " لكن هذا المقترح على الرغم من أنه كاف إلا أنه ضيق للغاية. ما كان مُميّزًا لدى بريان شيسكي Brian Chesky و جوي غيبيا Joe Gebbia ليس أنهم خبراء في التقنية. لقد كانوا ممتازين في التصميم، وربما أيضًا -وهذا الأكثر أهمية- كانوا ماهرين في تنظيم المجموعات وإطلاق المشاريع. لذا ليس عليك أن تعمل على التقنية بحد ذاتها، طالما أنك تعمل على المشاكل التي تتطلب منك جهدًا كافيًا. لكن أي نوع من المشاكل؟ هذا سؤال صعب الإجابة عنه بشكل عام. والتاريخ مليء بأمثلة عن شباب الذين كانوا يعملون على مشاكل هامة لم يعتقد غيرهم في ذلك الوقت أنها كانت هامة. وعلى وجه التحديد لم يعتقد أولياؤهم أنها كانت هامة. وعلى الجانب الآخر، فإن التاريخ مليء أيضًا وبشكل أكثر بأمثلة عن أولياء اعتقدوا أن أبناءهم يضيعون وقتهم وكانوا مُحقّين في ذلك. إذًا كيف يمكنك أن تعرف عندما تعمل على الأشياء الحقيقية الهامة؟[8] أنا أعرف الإجابة عن هذا السؤال الأخير. تكون المشاكل الحقيقية مثيرة للاهتمام وعادة ما أرغب في العمل على الأشياء المثيرة للاهتمام، حتى لو لم يهتم بها أحد ( في الحقيقة، خاصة لو لم يهتم بها أحد) وأرى أنه من الصعب أن أجبر نفسي على العمل على أشياء مملة، حتى لو كان من المفترض أنها هامة. حياتي مليئة بالحالات التي عملت فيها على أشياء فقط لأنها بدت مثيرة للاهتمام، وتبين لاحقًا أنه كان مفيدًا بطريقة ما. إن حاضنة Y Combinator بحد ذاتها كانت شيئًا فعلته فقط لأنه بدا مثيرًا للاهتمام. لذا يبدو أن لدي بوصلة داخلية تساعدني على اكتشاف هذا الشيء. لكن لا أعرف ما الذي يدور في عقول الأشخاص الآخرين. ربما لو فكرت أكثر حول هذا قد أصل إلى مدلولات تساعد على التعرف على المشاكل المثيرة للاهتمام. لكن وحتى اللحظة فإن أفضل ما يمكنني تقديمه هو إذا تعرفت على مشكلة مثيرة للاهتمام، انغمس فيها بكل طاقتك، وهذه أفضل طريقة لتحضير نفسك للشركة الناشئة. في الحقيقة قد تكون أفضل طريقة لتعيش حياتك. [9] على الرغم من أني غير قادر على شرح ما الذي يعتبر مشاكل مثيرة للاهتمام بشكل عام. يمكنني إخبارك حول مجموعة كبيرة منها. إذا كنت تفكر في التقنية كشيء ينتشر كالنار في الهشيم، فإن كل نقطة متحركة فيها تمثل مشكلة مثيرة للاهتمام. لذا فإن الطريقة المضمونة لتحويل عقلك إلى النوع الذي لديه أفكار جيدة لتحويلها إلى شركات ناشئة هي أن تضع نفسك على الحافة القيادية لبعض التقنيات – لتجعل نفسك -كما يقول بول بوشيت Paul Buchheit- "تعيش في المستقبل". عندما تصل تلك النقطة، فإن الأفكار التي تبدو للأشخاص الآخرين كشيء غيبي خارق للطبيعة تظهر لك كشيء واضح. قد لا تدرك أنها أفكار تصلح لشركات ناشئة، لكنك ستعرف أنها شيء يجب أن يُصنع. على سبيل المثال، وفي جامعة هارفارد في منتصف التسعينيات، برمج زميل أصدقائي روبرت Robert وتريفور Trevor برنامجه الخاص بالمكالمات الصوتية عبر الإنترنت. لم يقصد منه أن يصبح شركة ناشئة، ولم يحاول مطلقًا أن يحوله إلى شركة. كل ما أراده هو أن يتحدث مع صديقته في تايوان بدون أن يدفع أجرة المكالمات الدولية. ومنذ ذلك الحين أصبح خبيرًا في الشبكات. وبدا له جليًّا بأنّ الطريقة التي يجب عليه أن يحل المُشكل بها هو تحويل الصّوت إلى حزم يتم نقلها عبر الإنترنت. لم يقم بأي شيء ببرنامجه أكثر من مجرد الحديث مع صديقته. لكن هذه هي بالضبط الطريقة التي تبدأ بها أفضل الشركات الناشئة. إذاً من الغريب أن الشيء المثالي الذي يجب القيام به في الجامعة إذا أردت أن تصبح مؤسس شركة ناشئة ناجح هو ليس التّركيز على هذا النوع الجديد العصري من "ريادة الأعمال"، بل يجب التّركيز على الأسلوب الكلاسيكي المُتمثّل في التّحصيل العلمي من أجل التّحصيل العمي ذاته. إذا أردت أن تبدأ شركتك الناشئة بعد الانتهاء من الجامعة، ما الذي ينبغي أن تفعله في الجامعة هو أن تتعلم علومًا قوية، وإذا كان لديك ذهنية فضولية أصيلة، هذا ما سيؤدي الحال به أن تقوم به إذا اكتفيت بمتابعة ميولك فقط.[10] إن مكون ريادة الأعمال الذي يُهمّنا حقًا هي الخبرة في المجال. إن الطريقة التي ستصبح فيها لاري بايج Larry Page هي أن تكون خبيرًا في البحث. والطريقة التي ستصبح فيها خبيرًا في البحث هي أن يقودك فضولك الأصيل وليس بعض الدوافع الخفية. وفي أفضل الأحوال، فإن تأسيس شركة ناشئة ليس سوى دافع خفي للفضول. وسوف تقوم بالأمر على أفضل طريقة إذا أخّرت هذا الدافع الخفي إلى نهاية العملية برمتها. إليك النصيحة الأخيرة التي يجب تقديمها إلى الشاب الذي يرغب أن يصبح مؤسس شركة ناشئة ويمكن تقديمها في كلمة: تعلم. الهوامش[1] ينّصت بعض المؤسسون أكثر من غيرهم، وهذا قد يكون عنصر يسمح بالتّنبّؤ بالنجاح. إن أحد الأشياء التي أتذكرها حول شركة Airbnbs أثناء احتضانها في Y Combinator هو كيف كانوا ينصتون باهتمام. [2] في الواقع، هذا أحد الأسباب الذي يجعل إطلاق الشركات الناشئة أمرًا ممكنًا. إذا لم تعاني الشركات الكبرى من عدم الكفاءة الداخلية، فإنها ستكون فعالة بشكل متناسب، ما يضيّق المجال المتروك لإطلاق الشركات الناشئة. [3] عليك أن تقضي وقتًا أطول على الأعمال التي يُمكن أن نصفها بـ Schlep في الشركات الناشئة. وهذا النوع من الأعمال هو غير مريح فقط لكنه ليس وهميًا. [4] ماذا ينبغي عليك القيام به إذا كان مُهتمّا بالتلاعب على النظام؟ الاستشارات الإدارية. [5] قد لا تكون الشركة قد انطلقت بشكل رسمي، لكن إذا بدأت في الحصول على عدد كاف من المستخدمين، فإنك تكون قد أطلقتها، سواء أدركت ذلك أم لا. [6] يجب أن لا تتفاجأ من أن الجامعات لا تستطيع تعليم الطلاب كيف يصبحون مؤسسين جيدين، لأنها غير قادرة على تعليمهم كيف يكونوا موظفين جيدين أيضًا. إن الطريقة التي "تعلم" فيها الجامعة الطلاب كيف يصبحوا موظفين هي أن تسلم هذه المهمة إلى الشركات عبر برامج التدريب internship programs. لكن لا يمكنها القيام بنفس الشيء للشركات الناشئة، لأنه وببساطة إذا تعلّم الطّلاب ذلك جيّدا فإنهم لن يعودوا إلى الجامعة [7] كان عمر تشارلز داروين 22 عامًا عندما تلقى دعوة للسفر على متن سفينة البيغل بصفته عالم طبيعة, وهذا الأمر لم يكن ليحدث لولا فراغ داروين وعدم شغله لأية وظيفة بشكل أقلق أفراد عائلته. ولو لم يكن داروين عاطلًا عن العمل حينها فلربما لم نكن لنسمع باسمه. [8] يمكن أن يتحول الأهالي أحياناً إلى متحفظين للغاية في هذه الناحية. هناك بعض الأهالي الذين يعرّفون المشاكل الهامة على أنها تلك المُتعلّقة فقط بالمسيرة نحو مدرسة الطّب. [9] لقد تمكنت من التفكير في آلية لمعرفة ما إذا كنت تملك حسًا للتّعرف على الأفكار المُهمّة: إذا كُنت لا تُطيق الأفكار المعروفة والمُملّة. هل بإمكانك دراسة النّظريات الجافة أو الصّبر على وظيفة في الإدارة الوسطى في شركة كبيرة؟ [10] في الحقيقة، إذا كانت هدفك إطلاق شركة ناشئة، يمكنك التشبّت أكثر بمثالية التعلم الحر مقارنة بالأجيال السابقة. سابقًا عندما كان الطلاب يركزون بشكل رئيسي على الحصول على وظيفة بعد التخرج، كانوا قد فكروا على الأقل كيف أن المواد التي درسوها أن تبدو لربّ العمل. وربما أسوء من ذلك، قد يتجنّبون دراسة المواد الصعبة خشية الحصول على درجات منخفضة، ما سيؤثر سلبًا على معدل الدرجات العام عند التخرج. الجانب المُشرق هنا هو أن المُستخدمين لا يكتثرون بمعدلك الدراسي. ولم اسمع مطلقًا عن مستثمر اهتم بذلك أيضًا. وبشكل محدد أكثر فإن حاضنة Y Combinator لا تسألك أبدًا عن المواد التي درستها في الجامعة أو الدرجات التي حصلت عليها فيها. * أسهم فئة FF، هي أسهم تعطى للمؤسسين الذين يرغبون بتسييل جزء صغير من حصتهم في الشركة بدون الحاجة للإنتظار إلى الطرح للإكتتاب العام. ** الأنشطة اللامنهجية: هي أنشطة تقع خارج المنهاج المدرسي أو الجامعي المقرر، عادة ينفذها الطلاب بشكل تطوعي في كل المراحل الدراسية. *** تكلفة الفرصة البديلة opportunity cost: هي التضحية أو التنازل عن شيء مقابل الحصول على شيء آخر أكثر أهمية. ترجمة -وبتصرّف- للمقال: Before the Startup لصاحبه Paul Graham (بول جراهام) مُؤسس حاضنة مشاريع واي كومبيناتور (Y Combinator). اطّلع على باقي مقالات بول جراهام المترجمة إلى العربية1 نقطة
-
لعلّ من أقوى ميّزات Sass الدّوالّ (mixins) ﻷنّها تسمح بتحديد نمط مُتكرِّر وعزله في صورة قطعة برمجيّة يمكن إعادة استخدامها مرارًا. مثال ذلك: عزل كلّ الخصائص المسؤولة عن تنسيق زرّ في صفحة الويب ثمّ —بدل الحاجة لتذكّر كل هذه الخصائص— جمعها في قطعة منفصلة يمكن استدعاؤها في مُحدِّد آخر (selector). هذا يحفظ أنماط الزرّ في موضع واحد ممّا يجعل تعديلها وتحديثها أسهل. المشكلة في هذا أنّ كثيرًا من دوّال Sass هذه تُكتب بأسلوب يجعل الخصائص مُكرّرة، وهذا قد يؤدي إلى حدوث أخطاء في عدة مواضع عند تحويلها إلى CSS بالإضافة إلى زيادة حجم الملفّ النّهائي دون طائل. صحيح أنّ استخدام Sass هو خطوةٌ على الطّريق الصّحيح لإنتاج CSS أخفّ حجمًا وأكثر اختصارًا ممّا قد يكتبه مبرمج متوسّط المستوى، لكنّك إن كنت مهووسًا بتحسين الأداء مثلي، فلن ترضى بوجود أدنى مقدار من التّكرار الّذي لا مُبرِّر له. سأدلكّ في هذه المقالة على كيفيّة تحسين مستوى CSS النّاتج عن دوالّ Sass الّتي تكتبها. مقدّمة سريعة عن Sassيمكن وصف Sass بأنّها مرحلة وسيطة بين ورقة الأنماط الّتي يكتبها مُصمّم الموقع وناتج CSS النّهائي الّذي يطلبه المتصفّح، وتفيد Sass في هذه المرحلة بإضافة العديد من الميّزات الّتي تُسهلّ كتابة CSS وصيانتها. واحدة من فوائد Sass أنّها تُساعِد الُمصمّمين في تجنّب التّكرارات في CSS، ممّا يجعل صيانتها أكثر سهولة. اصطلح على مبدأ "لا تُكرِّر نفسك" (Don't Repeat Yourself أو اختصارًا DRY) في كتاب "المُبرمج البراغماتيّ"، والذي نصّ على التّالي: لا تُساعِدنا CSS كثيرًا في تطبيق هذا المبدأ، لأنّها تُضطرّنا إلى تكرار كتابة الكثير من الخصّائص (كما في مثال الأزرار الذي ضربناه). فلو احتجت إلى إنشاء أنماط لثلاثة أنواع من الأزرار، فستضطر إلى كتابة هذه الأنماط مرّة لكلّ نوع من الأزرار، أو تجزئة الأنماط على أكثر من مُحدّد. وهما أمران أحلاهما مُرٌّ. فالأوّل يعني نسخ الخصائص ولصقها (وزيادة حجم الملفّ بالنتيجة) وتكرار مواضع الأخطاء، وغياب مصدر واحدٍ للحقيقة، وبنية هشّة في حصيلة الأمر؛ وأمّا الثاني فيعني غياب تمثيل مُفرد ومُوحَّد لكلّ نوع من الأزرار في النّظام، لأنّه يُجبرك على تجزئة الأنماط على عدّة مُحدِّدات، وهو ما يجعل البنية هشّة أيضًا، لأنّ تكوينها غير واضح. لو أردنا تحرّي المثاليّة، فعلينا إيجاد طريقة لتعريف الأنماط الأساسيّة في موضع واحد دون تكرار، ثمّ تعريف مُحدِّد مُفرد يمكن استخدامه لتطبيق كلّ الأنماط. لماذا قد أرغب باتّباع مبدأ "لا تُكرِّر نفسك"؟قد تسأل نفسك: لم كلّ هذا التّعقيد؟ الجواب باختصار: لأنّ اتّباع مبدأ DRY يُحسّن من أداء الموقع. فعندما تؤسّس هيكل الموقع، سيكون الأداء عاملًا مُهمًّا، بدءًا من صيغ الصّور الّتي نختارها ومرورًا بطريقة كتابة مُحدِّدات CSS. وهذا العاملّ يُصبح أكثر أهمّية عندما نتحدّث عن الأجهزة المحمولة، ففي هذه الأجهزة قد يفرض مُجرّد طلب HTTP بسيط تحدّيات كبيرةً في الأداء، وخطأ الاعتقاد الشّائع بعدم أهمّيّة حجم ملفّ CSS في أداء الموقع يظهر أكثر وضوحًا في الأجهزة المحمولة الّتي لا تسمح بأكثر من 100 ميغابايت من الحجم الكلّي للتّخزين المؤقّت لكلّ المواقع، وعندها يجب استغلال أكبر مقدار ممكن من مساحة التّخزين المؤقّت بأفضل صورة. الهدف من ذلك إذن هو إنشاء مُحدِّدات يمكن صيانتها في Sass وفي HTML، ويمكن تمثيلها في CSS بأقصر أسلوبٍ ممكن لتقليل حجم التّخزين المؤقّت. الدّوال (mixins) والتّوسعة (extends): حلّان غير كاملينتٌقدّم دوالّ Sass حلًّا لإحدى هاتين المُشكلتين، فهي تسمح بإنشاء موضع واحد يمكن فيه تعريف الأنماط الأساسيّة والرّجوع إليها. يمكن لهذه الدّوال أن تقبل مُعاملات (arguments) كذلك، مما يسمح باختلافات طفيفة بين استدعاء وآخر للدّالة وإنشاء أشكال مختلفة لنفس النّمط. لكن الأمر لا يخلو من مُشكلات: فقد تُسبّب هذه الدّوال تكرارًا غير مُبرّر للخصائص لأنّها ستكتب الخصائص الّتي تحويها في كلّ موضع استدعيت فيه. فالدّوالّ إذن تحل مشكلة التُمثيل المُفردّ في مبدأ DRY، لكنّها تترك خصائص متكرّرة في النّاتج النّهائيّ من CSS. ولهذا تُقدّم Sass مفهومًا آخر يُساعِد في تطبق مبدأ DRY: التّوسعة (extends)، والّتي يمكن استخدامها بكتابة الكلمة @extend، والّتي تسمح لمُصمّم CSS أن يقول: "أريد للُمحدّد A أن يظهر كما يظهر المُحدّد B"، وعندها تقوم Sass بإنشاء نمط جديد يجمع بين A وB (مفصول بينهما بفاصلة)، ثمّ كتابة الخواصّ غير المشتركة بالأسلوب العاديّ. لا يمكن تمرير مُعاملات للتّوسعة (خلافًا للدّوالّ)، فهي حلّ من نوع "الكلّ أو لا شيء". .couch { padding: 2em; height: 37in; width: 88in; z-index: 40; } .couch-leather { @extend .couch; background: saddlebrown; } .couch-fabric { @extend .couch; background: linen; } .couch, .couch-leather, .couch-fabric { padding: 2em; height: 37in; width: 88in; z-index: 40; } .couch-leather { background: saddlebrown; } .couch-fabric { background: linen; } تحلّ التّوسعة مشكلة تكرار الخصائص والمُحدِّد المُفرّد في CSS النّاتج، لكنّها لا تُخلّص مُصمّمي المواقع من الحاجة لصيانة مجموعتين منفصلتين من الأنماط في ملفّات Sass، ولا من الحاجة لتذكّر أيّ الخصائص ينطبق على أيّ نوع—فالأمر لا يختلف كثيرًا فيما لو كتبنا محدّدين منفصلين في الأساس. كما نرى، فكلا الحّلين (الدّوالّ والتّوسعة) غير كاملين، ولكن عند جمعهما معًا ثمّ اعتماد بنيّة ذكيّة في تصميم مشروعنا، مع الاستفادة من بعض ميّزات Sass سنحصل على دالّة نهائيّة تخضع لمبدأ DRY تمامًا، وتجمع نصفي الحلّ في صيغة موحّدة سواءٌ في ملفّات Sass الأصليّة أو في ناتج CSS. المكوّنات الأساسيّة لمبدأ "لا تُكرِّر نفسك"تضع المُكوّنات الأربعة التّالية حجر الأساس لبناء دوالّ موافقة لمبدأ DRY في Sass: المُحدّدات بالنّيابة (placeholder selectors)، والجداول (maps)، والكلمة @at-root، والدّالة unique-id(). المُحدّدات بالنّيابةوهي نوعٌ خاصّ من المُحدّدات يُستخدم مع الكلمة @extend في Sass. تُكتب هذه المُحدّدات كما تُكتب الأصناف التّقليديّة (classes)، ولكنّها تبدأ بالرّمز % بدل النّقطة .، وتتصرّف عند توسعتها بصورة عاديّة، ولكنّها لا تُضاف إلى النّاتج النّهائيّ إلّا عند توسعتها. وكما في التّوسعة العاديّة، تُضاف خواصّ المحدّدات في الموضع الّذي عُرّف فيه المُحدّد. %foo { color: red; } .bar { @extend %foo; background: blue; } .baz { @extend %foo; background: yellow; } .bar, .baz { color: red; } .bar { background: blue; } .baz { background: yellow; } الجداول (maps)وهي نوعٌ من أنواع البيانات في Sass 3.3 (مثلها مثل الأرقام والسلاسل النّصيّة والقوائم) تتصرّف بطريقة مُشابهة للكائنات في JavaScript. تتألّف الجداول من أزواج مفتاح/قيمة (key/value)، حيث يمكن للمفتاح والقيمة أن يكونا أي نوع من أنواع البيانات في Sass (بما في ذلك الجداول نفسها). المفاتيح فريدة دومًا ويمكن الوصول إليها باسمها، ممّا يجعلها مثاليّة لتخزين البيانات المُميّزة واسترجاعها. $properties: ( background: red, color: blue, font-size: 1em, font-family: (Helvetica, arial, sans-serif) ); .foo { color: map-get($properties, color); }الكلمة @at-rootقُدّمت هذه الكلمة في Sass 3.3، وهي تقوم بنقل الخواصّ المُعرّفة ضمنها إلى جذر ورقة الأنماط (أعلى مستوىً فيها)، بغض النّظر عن الموضع الّذي استخدمت فيه. الدّالّة unique-id()قدّمت في Sass 3.3 كذلك، وهي تُعيد مُعرّف CSS يُضمن كونُه فريدًا في كلّ عمليّة تحويل من Sass إلى CSS. كتابة دالّة بسيطةيتطلّب تحويل نمط مُتكرِّر إلى دالّة النّظرَ في الأنماط الأساسيّة المُكوّنة لها ثم تحديد ما المشترك بينها وما الذي يختلف بحسب مُدخَلات المستخدم. سنستخدم زرًّا بسيطًا كمثال في حالتنا: .button { background-color: #b4d455; border: 1px solid mix(black, #b4d455, 25%); border-radius: 5px; padding: .25em .5em; &:hover { cursor: pointer; background-color: mix(black, #b4d455, 15%); border-color: mix(black, #b4d455, 40%); } }لتحويل هذا إلى دالّة، اختر الخصائص الّتي يتحكّم بها المستخدم (الديناميكيّة)، والخصائص الثّابتة. يُتحكّم بالخصائص الدّيناميكيّة عبر مُعامِلات تُمرّر إلى الدّالة، أمّا الخصائص الثّابتة فتكتب بالأسلةب العاديّ. في حالة الزّرّ الذي نُصمّمه، لا نريد سوى أن يتغيّر اللّون، ولهذا نستدعي الدّالّة بمُعامل اللّون، لُينتَج CSS كما نتوقّع: @mixin button($color) { background-color: $color; border: 1px solid mix(black, $color, 25%); border-radius: 5px; padding: .25em .5em; &:hover { cursor: pointer; background-color: mix(black, $color, 15%); border-color: mix(black, $color, 40%); } } .button { @include button(#b4d455); }لا بأس بهذا الحلّ، ولكنّه سيؤدّي إلى تكرار خصائص كثيرة، افترض مثلًا أنّنا نريد إنشاء زرّ آخر بلون مختلف، عندها ستبدو شيفرة Sass كما يلي (دون تعريف الدّالّة): .button-badass { @include button(#b4d455); } .button-coffee { @include button(#c0ffee); }وستبدو شيفرة CSS كما يلي: .button-badass { background-color: #b4d455; border: 1px solid #879f3f; border-radius: 5px; padding: .25em .5em; } .button-badass:hover { cursor: pointer; background-color: #99b448; border-color: #6c7f33; } .button-coffee { background-color: #c0ffee; border: 1px solid #90bfb2; border-radius: 5px; padding: .25em .5em; } .button-coffee:hover { cursor: pointer; background-color: #a3d8ca; border-color: #73998e; }هناك الكثير من الخصائص المُكرَّرة هنا، لا نريد هذا! لذا سنلجأ إلى استخدام المُحدِّدات بالنّيابة. إزالة التّكرار من دالّةإزالة التّكرار من الدّالة يقتضي تجزئتها إلى أجزاء ثابتة وأخرى ديناميكيّة. الأجزاء الدّيناميكيّة هي ما سيستدعيه المستخدم، وأمّا الثّابتة فتحوي الأجزاء الّتي ستكون مُكرّرة فيما لو لم نجمعها في دالّة. @mixin button($color) { @include button-static; background-color: $color; border-color: mix(black, $color, 25%); &:hover { background-color: mix(black, $color, 15%); border-color: mix(black, $color, 40%); } } @mixin button-static { border: 1px solid; border-radius: 5px; padding: .25em .5em; &:hover { cursor: pointer; } }الآن وقد فصلنا دالّتنا على جزأين، نريد أن نُوسِّع العناصر في button-static لتجنّب التّكرار. يمكن إنجاز ذلك باستخدام مُحدّد بالنّيابة بدل الدّالة، ولكن هذا يعني نقل المُحدّدات في ورقة الأنماط، لذا سنقوم بإنشاء مُحدّد بالنّيابة في الموضع ذاته ديناميكيًّا، بحيث يُنشأ حالما يُحتاج إليه ويبقى بترتيبه الأصليّ كما نتوقّع. لفعل ذلك، سنقوم أوّلًا بإنشاء مُتغيّر في النّطاق العامّ لحفظ أسماء المُحدّدات الدّيناميكيّة: $Placeholder-Selectors: ();ثمّ نتحرّى وجود مفتاح يُطابق محدّدنا في button-static، وسندعو هذا المفتاح "button" في الوقت الحالي. باستخدام الدّالّة map-get، سنحصل على قيمة المفتاح المطلوب أو القيمة null إن لم يُوجد، وفي الحالة الأخية سنُعيّن قيمته إلى مُتغيّر فريد (unique ID) باستخدام map-merge. سنستخدم الوسم !global كوننا نريد كتابة قيمة متغيّر عُرِّف في النّطاق العامّ: $Placeholder-Selectors: (); // ... @mixin button-static { $button-selector: map-get($Placeholder-Selectors, 'button'); @if $button-selector == null { $button-selector: unique-id(); $Placeholder-Selectors: map-merge($Placeholder-Selectors, ('button': $button-selector)) !global; } border: 1px solid; border-radius: 5px; padding: .25em .5em; &:hover { cursor: pointer; } }بعد معرفة وجود مُعرّف لمُحدّدنا، نُريد إنشاء هذا المُحدّد، ونفعل هذا باستخدام الكلمة @at-root وصياغة تعويض القيم في النّصوص (#{}) لإنشاء مُحدّد بالنّيابة في جذر ورقة الأنماط اسمه هو المُعرِّف الفريد الّذي حصلنا عليه. محتويات هذا المُحدِّد ستكون استدعاء للدّالة الثّابتة (لاحظ الاستدعاءات المتداخلة! يا للرّوعة!). ثمّ نُوسّع هذا المُحدّد بالنّيابة ذاته، ممّا يُفعّله ويؤديّ لكتابة خواصّه إلى CSS. باستخدام مُحدّد بالنّيابة في هذه الحالة بدل توسعة مُحدّد تقليديّ كصنف (class)، فإنّ محتويات المُحدّد ستُضاف إلى CSS النّهائي فقط إن وُسِّع المُحدِّد، ممّا يسمح بتقليص حجم الملفّ. وباستخدام التّوسعة بدل كتابة الخصائص مباشرةً، نكون قد تجنّبنا تكرار الخصائص في الوقت ذاته. في النّهاية سيمنع هذا هشاشة النّاتج النّهائي من CSS، لأنّه في كلّ مرّة تُستدعى هذه الدّالة، فستكون الخصائص المُشتركة ضمنها مُشاركة بالفعل ضمن ناتج CSS، وليس فقط مرتبطة مع بعضها في مرحلة المُعالجة المسبقة لـCSS فحسب. $Placeholder-Selectors: (); // ... @mixin button-static { $button-selector: map-get($Placeholder-Selectors, 'button'); @if $button-selector == null { $button-selector: unique-id(); $Placeholder-Selectors: map-merge($Placeholder-Selectors, ('button': $button-selector)) !global; @at-root %#{$button-selector} { @include button-static; } } @extend %#{$button-selector}; border: 1px solid; border-radius: 5px; padding: .25em .5em; &:hover { cursor: pointer; } }لكن مهلًا، فلم ننتهِ بعدُ. ستبقى هناك محتويات مُكرّرة في النّاتج النّهائي، وهذا شيء لا نريده (حيث سنخصل على مُحدّد يوسّع نفسه، وهذا لا نريده أيضًا). لتجنّب هذا، سُنضيف مُعاملًا إلى button-static يُحدّد إن كان يجب المُضيّ بعمليّة التّوسعة أم لا. سُنضيفه هذا إلى دالّتنا الدّيناميكيّة أيضًا، ونمرّره إلى دالّتنا الثّابتة، وفي النّهاية ستكون لدينا الدّوالّ التّالية: $Placeholder-Selectors: (); @mixin button($color, $extend: true) { @include button-static($extend); background-color: $color; border-color: mix(black, $color, 25%); &:hover { background-color: mix(black, $color, 15%); border-color: mix(black, $color, 40%); } } @mixin button-static($extend: true) { $button-selector: map-get($Placeholder-Selectors, 'button'); @if $extend == true { @if $button-selector == null { $button-selector: unique-id(); $Placeholder-Selectors: map-merge($Placeholder-Selectors, ('button': $button-selector)) !global; @at-root %#{$button-selector} { @include button-static(false); } } @extend %#{$button-selector}; } @else { border: 1px solid; border-radius: 5px; padding: .25em .5em; &:hover { cursor: pointer; } } }بعد كلّ هذا العناء، أنشأنا لأنفسنا طريقة لتسهيل صيانة أنماط Sass وتوفير مُحدِّد مُفرد في HTML، وإبقاء حجم CSS في أدنى الحدود. فهمها بلغ عدد استدعاءات دالّة button في شيفرتنا، لن تُكرَّر الخصائص الثّابتة فيها. عند استدعاء دالّتنا لأوّل مرّة، سُتنشأ الأنماط الّتي فيها ضمن CSS في الموضع الّذي استدعيت فيه، ممّا يُحافظ على تراكب الأنماط بالتّرتيب المُتوقّع، ويقلّل هشاشة البنية. وبما أنّنا نسمح بعدّة استدعاءات للدّالّة نفسها، فبإمكاننا إنشاء "نكهات" مُختلفة بسهولة وصيانتها في كلا Sass وHTML. في هذه المرحلة سيكون لدينا مصدر Sass وناتج CSS كما يلي: .button-badass { @include button(#b4d455); } .button-coffee { @include button(#c0ffee); } .button-decaff { @include button(#decaff); } .button-badass { background-color: #b4d455; border-color: #879f3f; } .button-badass, .button-coffee, .button-decaff { border: 1px solid; border-radius: 5px; padding: .25em .5em; } .button-badass:hover, .button-coffee:hover, .button-decaff:hover { cursor: pointer; } .button-badass:hover { background-color: #99b448; border-color: #6c7f33; } .button-coffee { background-color: #c0ffee; border-color: #90bfb2; } .button-coffee:hover { background-color: #a3d8ca; border-color: #73998e; } .button-decaff { background-color: #decaff; border-color: #a697bf; } .button-decaff:hover { background-color: #bcabd8; border-color: #857999; } لاحظ كيف يُفصل بين الخصائص الثّابتة بفواصل في موضع تعريفها، ممّا يجعل تتبّع الأخطاء أسهل، ويحافظ على ترتيب النّصّ المصدريّ، ويقلّل حجم ملف CSS، وبحيث لا تُنشأ مُحدّدات جديدة إلّا للخصائص الّتي تتغيّر. أليس هذا رائعًا؟ المتابعةالحقيقة أنّ كتابة النّمط نفسه لكلّ دالّة لا يتوافق مع مبدأ DRY على الإطلاق؛ بل على العكس تمامًا فهو WET (اختصارًا لـWrite Everything Twice، هل لاحظت ظرافة المبرمجين؟!). لا نريد هذا، بل يجب أن نُفكّر في كتابة دالّة لتوليد المُحدّدات بالنّيابة، يمكننا استدعاءها بدل ذلك. أو في حال استخدام إضافة Toolkit لـSass (إما من خلال Bower أو كإضافة لـCompass)، فيمكن في هذه الحالة استخدام الدّالة dynamic-extend لإيجاد وإنشاء وتوسعة مُحدّد ديناميكيّ بالنّيابة. كلّ ما عليك فعله إرسال سلسلة نصيّة للبحث عنها (مثل "button"): @import "toolkit"; @mixin button($color, $extend: true) { @include button-static($extend); background-color: $color; border-color: mix(black, $color, 25%); &:hover { background-color: mix(black, $color, 15%); border-color: mix(black, $color, 40%); } } @mixin button-static($extend: true) { $button-selector: map-get($Placeholder-Selectors, 'button'); @if $extend == true { @include dynamic-extend('button') { @include button-static(false); } } @else { border: 1px solid; border-radius: 5px; padding: .25em .5em; &:hover { cursor: pointer; } } }وهكذا يمكن القضاء على أي تكرار في دالّتنا، مما يقلّل حجم ملفّات Sass الأصلية وملفّات CSS النّهائيّة معًا، ممّا يدفعنا خطوة على طريق إعادة استخدام مكوّناتنا في مشاريع أخرى. ترجمة (بشيء من التصرف) للمقال DRY-ing out Your Sass Mixins لصاحبه Sam Richard.1 نقطة
-
خبرة المستقل هي ما تعطيك جودة أعلى ، وانا أرى أن مستقل أفضل من خمسات لعدة أسباب: 1) التقييم في مستقل ينقسم إلى 5 تقييمات ؛ فهناك تقييم الوقت وتقييم للتواصل وتقييم لجودة العمل وتقييم أنك ستود التعامل مع المستقل مجددا أم لا ، بينما خمسات فنعم ولا فقط 2) في مستقل يمكنك تقييم كل مشروع بينما خمسات التقييم مرة واحدة فقط على نفس المشروع 3) في مستقل لن يتمكن المستقل من انهاء المشروع ولكن يمكنه ارسال اشعار بانهاء المشروع وأنت تقرر 4) الاحترافية سائدة في مستقل أكثر من خمسات 5) مستقل يمكن للمستقل وضع نماذج أعمال ، بينما خمسات يجب أن تجرب مع المستقل وانت وحظك لذلك انا ارى أن مستقل بقوانينه وأسلوبه سوف يضمن مستقبلاً خدمات ذات جودة كبيرة ،1 نقطة
-
تُحدّد الجودة بناءً على المُستقل نفسه وليس على المنصة أو الأسعار، حيثُ أنك ستجد نفس المُستقل يعمل على الموقعين، وبالتّالي عليك التعامل مع صاحب الخبرة وذلك بالتحقق من أعماله السابقة وتقييماته بغض النظر عن الأمور الأُخرى.1 نقطة