الحمد لله على نعمه وتوفيقه فقد تم منحي جائزة التميز العلمي
The Outstanding Dissertation Award!
عن رسالتي الدكتوراه في هندسة البرمجيات بعنوان
Hypothesis-based Debuggers
من كلية علوم الحاسب بجامعة
@GeorgeMasonU
وللفائدة هذا تلخيص مبسط لأبحاثي التي قمت بها خلال ست السنوات الماضية:
تذكير لطلاب الجامعات وخاصة طلاب الحاسب، سجل في
@GitHubEducation
كطالب بإيميل الجامعة (ممكن يطلبون منك إثبات ثاني) وراح تحصل على اشياء مجانية تساعدك كثير في مشاريعك الجامعة والخاصة، مثل github pro, copilot ، واشياء اخرى جميلة. صورة لتسجيلي وقبولي بإيميل جامعة الملك سعود👇
البرامج الأكاديمية لتخصصات علوم الحاسب لا تستطيع تغطية جميع المواضيع المهمة. هذه مادة مسجلة بالكامل من
@MIT_CSAIL
بعنوان "فصل دراسي مفقود من دراستك لعلوم الحاسب" المواضيع مهمة ومسجله بالفديو.
مهندس برمجيات وتريد بناء تطبيقات تستخدم أخر تطورات الذكاء الاصطناعي (بالتحديد LLMs) ؟
جمعت بعض المصادر الي تركز على بناء منتجات تقنية بإستخدم LLMs مثل chatGPT.
ناوي بإذن الله أضيف مصادر جديدة باستمرار.
بعد الوصول إلى ثلاثين مطور وخمس وأربعين مشروع، قررت وضع المشروع في حساب عام تحت إشراف بعض المبرمجين السعوديين المهتمين بالمصادر المفتوحة. أتمنى أن يواصل المشورع نموة ويحمل أكثر من مائة مبرمج/ مبرمجة قريباً.
فيه اعتقاد أن المشاريع التقنية المعقدة تحتاج فريق كبير، لا تستهين بمقدار الشغل الي يقدر يبنيه شخص واحد فاهم.
@jarredsumner
بنى أسرع بيئة تشغليه للjs في سنه تقريبا لوحده (). تذكرت قانون Brooks
“Adding human resources to a delayed project will delay it more”
فيه فكرة في بالي من فترة. الفكرة لها علاقة بظاهر جديدة بين المبرمجين وهي streaming. إذا ما شاهدت مبرمج يشتغل على الهواء مباشرة الى الآن, جرب هذا الموقع فيه عشرات المبرمجين يشتغلون على الهواء مباشرة :)
رأي في هندسة البرمجيات: فيه خلط واضح بين جودة البرمجيات وأختبار البرمجيات، والدليل؟ أغلب شغل QA teams اختبارات.
السبب أن مفهوم جودة البرمجيات غير واضح، مامعنى high quality software ؟ هل معناه برامج خالية من الأخطاء ؟ مستحيل لان مافيه اي برنامج خالي من الأخطاء (Halting problem)
الإجازة للطلاب قربت :) هل تخطط لعمل مشروع برمجي خلال الإجازة, تقوي فيه مهاراتك البرمجية وتحسن فيه سيرتك الذاتية؟ هنا قائمة بالخدمات البرمجية المجانية تشمل كل شي يخطر على بالك لإنشاء أي فكرة برمجية.
عمل بسيط، جمعت بعض المشاريع المفتوحة المصدر المبنية بأيدي سعودية. الهدف هو جمع الجهود وتحفيز المبرمجين للعمل على المشاريع المفتوحة المصدر. الأشياء العظيمة تبدأ بخطوات صغيرة.
بالصدفة وجدت موقع مادة Software Construction تدرس هذه الفصل في جامعة MIT, المواضيع المطروحة جميلة وصراحة استفدت منها وحبيت اشاركها هنا ممكن احد يستفيد ايضاً. الجميل أن في بعض المواضيع مشروحة عن طريق فديو مسجل.
اذا تعمل مع فريق من المبرمجين، في الغالب ان هناك عملية مراجعة للأكواد، الابحاث تقول ان اغلب bugs, code smell, code stander violations ممكن اكتشافها عن طريق ادوات تحليلية (static analysis) عن تجربة، افضل اداة مرت علي في هذا الموضوع هي(دعم لأكثر من ١٧ لغة )
يوجد مقولة في هندسة البرمجيات أن هناك علاقة *طردية* بين مدة استخدام البرنامج والثقة، ومنها خرج مصطلح "Battle-tested software" . لكن هذه العلاقة *عكسية* لأي شي آخر .
هل البرامج لا تفسد مع الوقت مثل أي شي أخر؟ نعم ولا
"Software doesn't decay, but the environment it runs in does."
فيه موضوع في بالي له فترة طويلة وحاولت ومازلت بإذن الله مستمر في المحاولة في معالجته ولو بشكل بسيط :). الموضوع في نظري هو أن المجتمع التقني السعودي عبارة عن صندوق أسود على الأقل بالنسبة لي. ما معنى كلامي؟ خلني أشرح:
سجل طلابي في مقرر هندسة أمن البرمجيات ١٥ فيديو تعليمي باللغة العربية، يتضمن شرحًا مبسطًا لموضوعات رئيسية في مجال أمان التطبيقات (AppSec). بعض هذه المواضيع نادرة أو غير متوفرة بمصادر عربية. إذا كنت مهتمًا، جمعت هذه الفيديوهات في مكان واحد لسهولة الوصول:
مافيه مقولة في هندسة البرمجيات أتفق معها بشدة أكثر من مقولة Kent Beck
“Make it work, make it right, make it fast.”
لو بيدي لجعلت لها مادة مستقلة تدرس, وعلقتها في مكتب كل مبرمج.
زملائنا التقنيين والمبرمجين ♥️🇸🇦 عشر دقائق من وقتك 🙏🏻
المجتمع التقني وقطاع تطوير البرمجيات في السعودية يشهد تغيرات كبيرة ، لكن كثير من تفاصيل هذا القطاع الواعد ومستقبله غير واضح لنا كعاملين في هذا المجال.
كمساهمة لفهم واقعنا ومستقبلنا التقني بشكل أفضل أطلقنا الاستطلاع التقني
متصفح
@googlechrome
أطلق ميزة تجريبية تسمى ب built-in AI وهي عبارة عن مودل (حجمة مايقارب ١.٥ قيقا) يسمى Gemini Nano يعمل في المتصفح بشكل مباشر من دون انترنت وتقدر تتخاطب معه عن طريق APIs بسيطة (الصورة توضح بساطة الاستخدام).
أتفق مع الأستاذ حمزة. صناعة البرمجيات عندنا مازالت في مراحلها الأولى، وصعب جدا جدا التقدم في أي مجال تقني آخر مادام الأساس ضعيف. هل تتوقع أن دولة معينة تنافس العالم في تصدير الخبز وهم ضعيفين جدا في إنتاج القمح؟ إلا اذا بيستوردون القمح...
📑 مقال جديد وخفيف عن إنتاجية مهندسي البرمجيات
قبل فترة صار نقاش عن قياس إنتاجية المبرمج، هل المبرمج الي كتب الف سطر أكثر إنتاجية من المبرمج الي كتب خمس أسطر؟
الموضوع معقد وحبيت أتكلم عن أخر الأبحاث في هذا الموضوع من قبل Microsoft و GitHub.
جامعة MIT نزلت نسخة محدثة من أفضل كورس سكيورتي( اون لاين) بوجهة نظري لمهندسي البرمجيات. أنا تابعت نسخة 2014 لكن الكورس الجديد يحتو�� على فديوهات جديدة.
الأسبوع الماضي اكتشفت أن فيه subreddit تجمع فديوهات لمبرمجين يبثون فديوهات لأنفسهم وهم يبرمجون. جميل تدخل عليه من فتره لفتره تتفرج على كم مقطع :). هذا الرابط
خاطرة: Typescript من أفضل اللغات لتعليم البرمجة لأسباب منها:
١. تقدر تكتب كود untyped بجافا سكربت ثم تضيف عليه types بشكل تدريجي ⬅️ تتعلم معنى Type safety.
٢. الكود الي تكتبه بالتايبسكربت يتحول لجافاسكربت قابل للقراءة عن طريق compiler ⬅️ تشوف بعينك وش يسوي الكوبايلر.
اخر ابحاثي نشر بحمد الله في مجلة Empirical Software Engineering
الورقة تطرح جاوب على سؤال مهم في عملية تفحص البرمجيات:
What constitutes Debugging?
أحد المحققين علق على الورقة بـ:
"This paper has strong potential to make a valuable contribution to EMSE"
تحت هذه التغريدة بإذن الله سأتحدث عن موضوع مهم وسؤال يرد كثيراً، " كيف أجعل موقعي آمن ضد أغلب الهجمات الأمنية؟" بحاول يكون الجواب مبسط وسهل. *سلسلة التغريدات ستأخذ أيام لتكتمل* وكالعادة، الموضوع مفتوح للمشاركة من الجميع.
الأدوات البرمجية المبنية بإستخدام LLMs ماراح تساعد في كتابة الأكواد مثل ماراح تساعد المبرمجين في قراءة الأكواد. اليوم كنت أقرأ كود معقد وقررت أستخدم ميزة copilot الجديدة Explain وساعدني كثير في الفهم. اذا تقرأ أكواد جديدة كثير أنصحك تجرب الميزة هذه
بعض المعلومات والمهارات بسيطة الإكتساب لكن أثرها على شغلك و مهارتك كبير جداً. بأعطي أمثلة على بعض المهارات والمعلومات في الفرونت أند. تقدر تتعلمها في وقت قصير, لكن أثرها عليك كمهندس برمجيات بإذن الله كبير.
اذا انت مهندس برمجيات وتبني تطبيقات لازم تطلع على open web
advocacy . المجموعة هذه مكونة من مهندسين برمجيات يدافعون عن الويب (وممكن تنضم لهم ليش لا؟) خصوصا من الشركات الي تحاول تحد من تطوره مثل أبل للأسف. خلني اشرح الموضوع بشكل بسيط :
بما أن موضوع (JS) Typescript (TS) v.s Javascript سوا ضجة، ابي اوضح نقطة:
**فية فرق بين تحسين تجربة المبرمج وبين زيادة إنتاجية المبرمج**
لما تستخدم IDE متطور مثل Visual Studio او TS بدل vim و JS، تجربة التطوير راح تكون افضل لكثير من المبرمجين.
لكن...
من وجهة نظري، افضل طريقة لتقييم مستوى المبرمج في المقابله الشخصية هي باعطاءه برنامج فيه خطأ وتطلب منه يحدد اين الخطأ (مايعرف بال Debugging). اطلب منه:
١. يفكر بصوت عالي
٢. يستخدم أدواته البرمجية الخاصة (لاتفرض عليه IDE معين)
٣. يسأل اي سؤال لك يراه ضروري لفهم الخطأ.
تمرين لنا جميعا كمهندسين برمجيات،اختر احد المكتبات المفضله لديك،مثلا Jquery. ثم اختر API واحدة من هذه المكتبة، لنقول Ajax. ثم أقرأ الكود وجميع الملاحظات المكتوبة، افهم سبب التصميم والأخطاء السابقة المرتكبة في الكود وكيف تم حلها. خذ وقتك، وأنا اضمن لك تطور كبير في مهاراتك البرمجية
مثلاً لو قلت لك في برنامج مكون من 140 حرف وبه خطأ برمجي، ممكن يجي في بالك أن فهم البرنامج وحل الخطأ سيكون عملية سهلة. إذا كنت تعتقد ذلك حاول فهم البرامج البسيطة الموجودة هنا.
في سان فرانسيسكو الان لحضور مؤتمر
@ACMUIST
وباذن الله راح اشارك ورقة بحثية عن اداة debugging بمفهوم جديد. هذا فديو في ثلاثين ثانية يوضح الفكرة من الاداة.
أتذكر أيام البكالوريس كان مطلوب منا عمل برنامج بواجة برمجية GUI، وأتوقع أنه أول واجب برمجي يطلب هذا الشيء. المشكلة العويصة التي واجهتها في حل هذا الواجب هي : كيف أنقل قيمة X من صفحة إلى صفحة أخرى :). حتى لو بدأ لك الآن أنها مشكلة تافه، فهي لم تكن كذلك بالنسبة لي في ذلك الوقت.
من أفضل معايير جودة الكود هو مدى تقبل زملائك للكود. لهذا code review يعتبر من أفضل الأدوات لضبط الجودة
"Code quality is experienced by a human being, and isn’t a quantity to be measured... Instead, you have to find out from human beings what they are experiencing." -
@mkanat
فقمت ببناء template يحتوي على جميع المتطلبات السابقة وزيادة. الآن
أستطيع بناء بنية تقنية تغطي أغلب طلبات المشاريع الدراسية "خاصة مشاريع الويب" وأغلب MVP باستخدام أوامر بسيطة 😊
أطلع على هذا القالب فهو سهل الإستخدام ومستعد لمساعدة أي شخص يريد أستخدامه:
قاعد أتصفح كتاب في هندسة البرمجيات مكتوب بطريقة مختلفة, المؤلف جمع مايقارب 900 بحث في هندسة البرمجيات ثم شرح مواضيع في هندسة الرمجيات بإستخدام هذه الإدلة البحثية, الكتاب مجاني للجميع:
إذا عندك أهتمام بتحليل المعلومات الصحية, فيه فرصة وظيفية للجنسين في مستشفى الملك فيصل التخصصي و مركز الأبحاث. الرجاء إسال السير الذاتية أو أي استفسار إلى:
aabodi (at) kfshrc .edu .sa
Title: Business Informatics Support Analyst
في بالك موضوع،لغة برمجة، تقنية جديدة مخطط تتعلمها ؟ بس كل مره تأجل موضوع التعلم.. عندي لك حل، سجل متحدث لهذه التقنية أو اللغة وضع موعد اللقاء بعد كم شهر، ستجتهد وستلتزم أكثر في التعليم و ستشارك الجميع ماتعلمته👍. عصفورين بحجر.
كتاب جديد بدأت في قراءته يتحدث عن موضوع نادر ما نتكلم عنه وهو عقلية المبرمج وكيف العقل يعمل خلال قراءة وكتابة الأكواد. مازلت في البداية وبإذن الله راح انزل تغريدات عن بعض الأجزاء المفيده من الكتاب. سلسة تغريدات متحدثة باستمرار...
لي مدة طويلة جداً ما أستخدمت for loop الاعتيادية:
for (int i; i< 100; i++)
لدرجة أني أحتجتها ورحت أبحث كيف بالضبط تنكتب. . طيب أيش كنت أستخدم للفور لوب؟ كنت أستخدم built in iteration API مثل
map
filter
reduce
flat
iteration
for in
for of
find
من أفضل المصادر العلمية لمهندسين البرمجيات هي مجلة IEEE Software. المقالات فيها تناقش مواضع متقدمة(بعضها بحثية) في هندسة البرمجيات. مشكلتها أن بعض المقالات تطلب أشتراك، لكن بعض المقالات مجانية.
إذا توظفت في شركة أو حبيت تسهام في مشروع مفتوح المصدر، أكبر تحدي هو كيف تتعامل مع codebase، أكبر غلط أنك تتجه للكود مباشره وتبدأ تقرا, الأفضل:
✔️ أبد بقراءة الأختبارات سواء unit or integration tests
✔️ اطلب pair programming من شخص خبير
✔️ أقرأ في issue tracker
✔️ أعمل debugging
مهارة مراجعة الإضافات في الكود "Code Review" مازالت مهارة توجد في عقول المتمرسين فقط وتكتسب مع الخبرة أكثر من أنها مهارة مقننة وتدرس بشكل واضح. كيف تبدأ مراجعة كود زميلك؟ كيف تتأكد من أن اختبارات الكود المرفقة صحيحة وكاملة؟ كيف تساعد زميلك يحسن من الكود بدون ما تأذي مشاعرة؟
أيضا مشروع أخر حقق بعض النجاح بفضل الله والمبرمجين السعوديين الي ساهموا في المشروع هو القائمة السعودية للمشاريع المفتوحة المصدر. الفكرة هي اذا قدرنا نجمع مشاريع مبنية من قبل مبرمجين سعوديين, بيصير عندنا تصور أفضل عن المجتمع التقني السعودي.
قبل فتره واجهة مشكلة برمجية (Bug) وحبيت أشاركم القصة. المشكلة حقيقة لكن التفاصيل غير دقيقة لتسهيل سرد المشكلة. أنا شخص أحب أتبع أسلوب "Make it work, make it right, make it fast" معنى لما أبني برنامج, أول شي اركز عليه أنه يشتغل ثم أبدا احاول احسن و أطور في الحل.
يوجد تعاريف كثيرة لـ Code refactoring. أبسط تعريف من وجهة نظريي هو: أي تعديل في الكود لا يضيف ميزة جديدة أو يصلح خطأ في البرنامج يعتبر Code refactoring. مثال:
1. تعديل خوازمية لتعمل بشكل اسرع.
2. استخدام مكتبة برمجية بدل أخرى.
3. تعديل الكود ليصبح أسهل للقراءة.
فريق هندسة البرمجيات البحثي في شركة مايكروسوفت(بالتعاون مع بعض الباحثين في الجامعات) يقوم بالعديد من الابحاث المثيرة التي تلامس الكثير من المواضيع في ادارة البرمجيات و تحليل واكتشاف الاخطاء البرمجية مبكراً.
أختبار البرمجيات هدفة الرئيسي ليس التأكد من صحة برنامجك وخلوة من الأخطاء حالياً، بل تقديم ضمان لك أن هذه الأخطاء لن تقع في المستقبل في برنامجك. كلما توقعت أخطاء أكثر وكتبت ضدها أختبارات، زاد ثقتك في مناعة برنامجك ضد الأخطاء.
كثير ��توقع أن المبرمج يقضي أغلب وقته يكتب أكواد لميزات جديدة في برنامج. لكن في الحقيقة, وخاصة في المشاريع الضخمة, أغلب وقت المبرمج يذهب في أصلاح الأخطاء و debugging. سألت Daniel صاحب المكتبة الشهيرة CURL عن هل يقضي وقته في برمجة مميزات جديدة أم لا.
من صفات المبرمج الجيد أنه يقدر يفكر بعدة حلول مختلفة لمشكلة معينه ثم يقرر أفضل حل. لهذا، الأفضل للمبرمج أن يعرف عدة طرق للبرمجة programming paradigms. هذا فديو يتكلم عن ال functional programming، الي بدأت تنتشر في الأونة الأخير، بشكل مبسط.
شاهدت بث برمجة لعشرات المبرمجين يعملون أو قد سبق لهم العمل في شركات كبيرة مثل مايكروسفت وفايرفكس وأبل. جميعهم يعتبرون خبراء, تعلمت الكثير وحبيت أشارك بعض ما تعلمته وخصوصاً بعض الخرافات التي تتعلق بالخبير البرمجي.
فيه فكرة في بالي من فترة. الفكرة لها علاقة بظاهر جديدة بين المبرمجين وهي streaming. إذا ما شاهدت مبرمج يشتغل على الهواء مباشرة الى الآن, جرب هذا الموقع فيه عشرات المبرمجين يشتغلون على الهواء مباشرة :)
5 things about software architecture ->
1. It's not about big design up front
2. Every s/w team needs to consider it
3. The s/w architecture role is about coding, coaching & collaboration
4. You don't need to use UML
5. A good architecture enables agility
قبل كم سنة, أجتمعنا في قسم هندسة البرمجيات في جامعة الملك سعود مع نخبة خريجين القسم. دار حديث جميل ومن ضمن الاسئلة الي تناقشنا فيها هي كم واحد من الحضور يشغل منصب "مبرمج". إذا لم تخني الذاكرة, ثلاثة أو اربعة من أصلا عشرين خريج رفعوا ايديهم!
اتفق كل رواد الأعمال في هذا الكتاب على شيء واحد؛ [نُدرة وضعف المواهب في منطقة الشرق الأوسط، في مجال البرمجة]
في أثناء بنائهم لشركاتهم واجهوا مصاعب في البحث عن مواهب مناسبة.
اللهم أصلح وضع الأمة [برمجيًا]، اللهم أنزل محبة [الأكواد] في قلوب شبابنا.
فيه بحث قريته يتكلم عن الاسباب الي تدفع مطورين جيدين يكتبون أكواد سيئة! البحث نشر عشرة اسباب وسته من العشر اسباب تتعلق بالإدارة !! (هل هذا شي مفاجأ؟) رابط البحث
انتهيت من قراءته أمس، الكتاب أكثر من رائع. مفيد جداً لأي مهندس برمجيات، سواء مبتدئ أو خبير. مليء بكنز من المعلومات والتجارب والخبرات المتراكمة.
الكتاب متوفر للتنزيل مجاناً من هنا:
شيء غريب صراحة أن أغلب برامج الدراسية للحاسب لا تناقش أبد تاريخ الحاسب والأحداث التي صنعت فرق في هذا العلم. يدخل الطالب ويتعلم ويتخرج وهو لا يعرف عن تاريخ تخصصة أي شيء! هذا مقال مثلاُ يناقش مقال كتبه بوش وصف فيه جهاز مستقبلي يعرف الآن بالحاسب الشخصي.
اكيد سمعت بالويب ٣ وانه المستقبل؟ واكيد سمعت انه بلوك شين وكربتو.
بس اكيد انك ماسعت ان W3C لها سنوات تعمل على الخطوة الجاية للويب. نعم الويب متجه ليمكن المستخدم من التحكم بالبينات الخاصة به٫ الويب سيكون موزع٫ لكن من غير بلوك شين. اقراء هنا عن مشروع SOLID
انتهيت من سماع كتاب "كيف تبني فيسبوك البرامج". انصح بسماع الكتاب اذا عندك اهتمام لمعرفة بعض القصص عن برمجيات فيسبوك (مثل React و GraphQL) وكيف استطاعت فيسبوك تشغل سيرفرات php لخدمة ملايين المستخدمين، الكتاب الصوتي مجاني هنا
محاضرة من جامعة كولومبيا عن XZ backdoors ، وهي أفضل مصدر يتكلم عن هذه الحادثة الأمنية وأفضل مثال بالنسبة لي لل backdoors
العملية أخذت سنوات من الهندسة الأجتماعية ومهارة كبيرة في برمجة النظم. تستاهل وقتك اذا انت مهتم!
بديت بمسودة لمقال عن الفرق بين عمل مهندس البرمجيات وعالم البيانات. بعض النقاط الي باذن الله بتكلم عنها: الفرق بين جمع المتطلبات وجمع وتنقيح البيانات, الفرق بين البرمجة في هندسة البرمجيات وعلم البيانات, والفرق بين المخرجات في كل تخصص.
في هندسة البرمجيات، اثبت ذكائك وإبداعك خارج تصميم واجهة المستخدم, استخدم ذكائك في برمجتك أو عمارة البرمجيات مثلاً. الكمبيوتر سيفهم خوارزمياتك إذا كانت صحيحة, وزملائك في العمل ممكن يستعنون بك إذا احتاجوا فهم برمجياتك. لكن من سيشرح للمستخدم كيف صممت الواجهة بطريقة ذكية؟
واحد من أهم الأسئلة في المجتمع التقني هو:
"كيف نخلق بيئة عمل جيدة لمهندسي البرمجيات؟" تجعل منهم منجزين ولديهم رغبة بالعمل.
بحث من مايكروسوفت أكتشف أن أهم عامل هو أعطاء بعض من الحرية للمهندس، دعه يختار التقنيات وبعض المشاكل، لا تعامله مجرد منجز لقائمة مهام.
عشر سنوات يعمل في فريق
#C
وإلى الان يبحث عن syntax الصحيح. كيف بالطلاب حديثين التعلم؟ أختبار الطلاب عن طريق سؤالهم لكتابة برنامج صحيح على ورقة وقلم فكرة غير منطقية. وأنا شفت بعيني طلاب يخسرون درجات لأن syntax ماهو صحيح في نظر الدكتور, للأسف.
معلومات تقنية عن Hypothesizer:
1. مبني فوق Chrome DevTools Protocol
2. يتحكم بشكل كامل بنسخة خاصة من متصفح Chrome
3. مكتوب بـ TypeScript و Python
4. يعمل كـ standalone debugger بإستخدام Electron
إذا مهتم بتفاصيل أكثر، أطلع على رسالة الدكتوراه كامله هنا:
الله يجعل ايامكم كلها سعادة، اليوم يوم سعيد بالنسبة لي: أحد ابحاثي حصل على أفضل ورقة علمية في مؤتمر
IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)
من سنوات اجرب WebAssembly مع Rust وكانت تجربة التطوير غير جيدة. لكن رجعت وجربته اليوم وكان التجربة ممتازة!
كتبت برنامج بسيط يشتغل على المتصفح ويحسب fibonacci بلغة Rust. والنتيجة؟ حساب اسرع بثلاث مرات من js.
حطيت التجربة في repo مع اذا تبي تجرب:
من أكثر الاشياء غرابة في عالم تطوير البرمجيات ان اغلب وقت المبرمج يروح في إصلاح الأخطاء. بس اغلب لغات البرمجة، والمكتبات مايركزون على هذا الشي.
متى اخر مره دخلت Documentation ولقيت كذا جزء كبير تحت اسم Debugging ؟ بالنسبة لي قليل او صفر.
اشتغلت ما يقارب الساعة فقط لأضيف ملف css في مشروع اعمل عليه! القصة هي كالتالي: اولا لازم نستخدم custom loader لل webpack. هذه سهله. بعد كذا لازم نستخدم custom configuration لل next.js. برضوه سهله. بس صار فيه bug في next.js والحل كان في تحميل نسخة البيتا من المكتبه، سهله.
لهذا فريق QA مفترض يركز على الأتمة في عملية بناء المشروع وليس فقط software testing. الأتمة لـ:
Automated testing
CI/CD
Code linting & standards
Auto-collect user feedback
Auto bug reporting & assignment
.....