🧵ثريد انصح بيه لأي طالب علوم حاسب وطلاب سنة أولى تحديدًا
الأسئلة من نوع:
"بتعمل المشاريع دي ازاي؟"، "بتجيب الأفكار دي منين؟"، "أنت ذاكرت ايه عشان تعمل حاجة زي كده؟" هي أكتر أسئلة بتجيلي في الدي ام، فهحاول في الثريد ده ارد على هذا التساؤل المتكرر إن شاء الله. x.com
الأسئلة من نوع:
"بتعمل المشاريع دي ازاي؟"، "بتجيب الأفكار دي منين؟"، "أنت ذاكرت ايه عشان تعمل حاجة زي كده؟" هي أكتر أسئلة بتجيلي في الدي ام، فهحاول في الثريد ده ارد على هذا التساؤل المتكرر إن شاء الله. x.com
باختصار شديد الاجابة في الصورة الي على الشمال،
بص دائمًا المشاريع التقليدية بتكون مربوطة بفكرة معاقة وهي فكرة "التراك" رأي الشخصي يعني ان بمجرد ما تطلع بره دايرة التراك والفريموركس والكفتة دي وتبدأ تهتم بمذاكرة علوم الحاسب نفسها مش مجرد تراكات اسمها فرونت اند وباك اند وبطيخ اند
بص دائمًا المشاريع التقليدية بتكون مربوطة بفكرة معاقة وهي فكرة "التراك" رأي الشخصي يعني ان بمجرد ما تطلع بره دايرة التراك والفريموركس والكفتة دي وتبدأ تهتم بمذاكرة علوم الحاسب نفسها مش مجرد تراكات اسمها فرونت اند وباك اند وبطيخ اند
هتلاقي نفسك بتتعلم حاجات مهمة زي ال os وال networking وال database engineering و unix و assembly و system design و compiler theory وبقية مواد علوم الحاسب
وطبعا مع data structure & algos ده كده كده أساسي
وطبعا مع data structure & algos ده كده كده أساسي
لما تذاكر الكورسات وتبدأ تتعمق اكتر وتقرأ كتب هتلاقي نفسك عارف تنفذ افكار كتير تحولها من مجرد أفكار في دماغك لسستم شغال وبيستحمل workload وممكن ي scale
هتكون عارف يعني ايه Scale اصلا
هتكون عارف يعني ايه Scale اصلا
أنت ممكن تقابل حد بيقول على نفسه باك اند دفلبر وهو مش عارف يعني syscall ومش عارف يعني ايه L1 cache ومش عارف يعني ايه system interrupts ومش عارف يعني ايه registers وهو مش عارف يعني ايه functional programming ومش عارف يعني ايه memory leak ومش عارف يعني ايه TCP
طب هو ليه كده؟
طب هو ليه كده؟
عشان هو مهتمش بعلوم الحاسب مهتمش بالساينس مهتمش بالثيوري (كلهم واحد) تخيل واحد مش مذاكر Science رايح يذاكر - يبصمج - applied science
هو واخدله دبلون تراك الباك الاند المتين من أكاديمية مش عارف ايه، هل ده غلط؟ لا مش غلط، الغلط انك تهمل الثيوري وتروح تذاكر باك اند
هو واخدله دبلون تراك الباك الاند المتين من أكاديمية مش عارف ايه، هل ده غلط؟ لا مش غلط، الغلط انك تهمل الثيوري وتروح تذاكر باك اند
طب أنا بتجيلي أفكار المشاريع دي منين؟
بص خلينا متفقين ان الحاجة قبل ما تذاكرها هتبان سحر أسود
يعني تخيل كده اقولك اعملي database engine مبني على log-structured merge-tree واستخدم probabilistic data structure زي ال bloom filters عشان تقلل مرات ال search في ال SSTs
بص خلينا متفقين ان الحاجة قبل ما تذاكرها هتبان سحر أسود
يعني تخيل كده اقولك اعملي database engine مبني على log-structured merge-tree واستخدم probabilistic data structure زي ال bloom filters عشان تقلل مرات ال search في ال SSTs
ومتنساش يا هندزة معلش تزود write ahead log عشان لو ال db حصلها crash نكون متأكدين ان الداتا عمرها ما هتروح مننها قبل ما ال Engine يعمل flush لل memtable على ال disk
فبتالي لما واحد معداش عليه الكلام ده قبل كده الفكرة بالنسباله هتكون حاجة غريبة ومميزة، كل المشاريع الي انا عاملها عادية جدا مفهاش حاجة صعبة خالص ومعظمها مخدش مني اكتر من أربع أيام مثلا بعد أول فرجن وكلها مجرد دعبسة مني ونادرا ما فكرة واكملها للاخر
بالتالي لما اكون انا مذاكر حاجة زي كده وقريت عنها هكتشف ان لا يعم ده مش سحر اسود ولا حاجة، بل بالعكس ده الموضوع ممكن يكون doable
فبعمل نيو فولدر وانقيلي لغة رايقة مناسبة للمشروع ده وافضل اجرب اعمل حاجة عبيطة في الأول ولما الاقي الحاجة العبيطة دي functional بكمل عليها لحد ما لاقي
فبعمل نيو فولدر وانقيلي لغة رايقة مناسبة للمشروع ده وافضل اجرب اعمل حاجة عبيطة في الأول ولما الاقي الحاجة العبيطة دي functional بكمل عليها لحد ما لاقي
لحد ما لاقي نفسي عملت toy clone من الفكرة الي أنا كنت بحاول اعملها في الأول، طبعا النجاح ده مش مضمون وياما بدأت في افكار ومكملتهاش للاخر وأنا عامل فولدر playground مليان أفكار كتير بغباء مكملتهاش للاخر عشان وصلت لحدود قدراتي البرمجية أو البحثية
يعني مثلا بروجكت lsm-tree based db engine الي لسا عامله
استلهمته من قراءتي لكتاب designing data intensive applications
عملت من نسخة عبيطة في الأول ببايثون ولما لقيت ان الموضوع doable اخدته بمحمل الجد وبدأت اكتبه بلغة برمجة أنظمة بجد زي Go
x.com
استلهمته من قراءتي لكتاب designing data intensive applications
عملت من نسخة عبيطة في الأول ببايثون ولما لقيت ان الموضوع doable اخدته بمحمل الجد وبدأت اكتبه بلغة برمجة أنظمة بجد زي Go
x.com
ساعتها أول مرة أقرأ عن ال lsm trees وازاي بتشتغل وازاي هي احسن من ال b-tree في ال writes وامتى اختار داتابيز مبنية على b-tree وامتى lsm-tree
يعني طول ما أنت بتذاكر ساينس وبتقرأ كتب هتلاقي كل السحر الأسود الي أنت تعرفه مش سحر أسود ولا حاجة، وهتلاقي كمية مشاكل وحلول مبتخلصش ممكن تستوحي منها أفكار مشاريع جديدة، ولما يجي الوقت عشا
طب هل ده يعني اني مش هذاكر فرونت اند ومش هذاكر باك اند؟ أكيد لا، لان الفريموركس دي هي applied science يعني انا بتعلم علوم الحاسب عشان لما اجي استخدم التولز دي اعرف هي شغالة ازاي under the hood وممكن اعمل زيها كمان لو عايز :)
عشان كده عملت باك اند فريمورك ودلوقتي اهو عملت database engine ومش ناقص غير اني اعمل فرونت اند فريمورك واكون عملت الستاك الخاصة بيا لول، وعايز اوضح ان المشاريع دي كلها toys للتعلم والاستكشاف واني عمري ما هتزعم ان المشاريع دي production ready
وادي مشاريعي العشوائية الي الناس بتسألني عنها في أول الثريد، اتمنى الثريد يكون أثر فيك واقنعك أن مفيش حاجة متسحيلة وكله doable طول ما أنت بتذاكر
جاري تحميل الاقتراحات...