الخميس، 8 فبراير 2018

ايه الفرق بين ال Big Data و ال Data Science و ال Data Analysis

مساء الخير
ازيكم

زي ما وعدتكم المرة اللي فاتت ان شاء الله المرة دي حنتكلم عن الفروق بين مجالات مسمياتها قريبة قوي من بعض و اللي هي
Big Data
Data Analysis
Data Science
و حنحاول ندي نبذة عن كل واحد فيهم و ايه المهارات المختلفة اللي محتاج تعرفها علشان تبتدي في المجال ده.

ايه هو ال Big Data؟
يمكن في الفترة الأخيرة مصطلح ال Big Data كان عليه دوشة كثير بالذات لما عمرو أديب قال تعريف عجيب ليه أظهره كأنه حاجة شريرة أو سيئة, و طبعاً التعريف ده للأسف ما كانش ليه أي علاقة بالواقع.
ال Big Data في النهاية هو مجال هندسي من مجالات هندسة البرمجيات, بيهدف في الأساس لبناء أنظمة تقدر تتعامل مع حجم البيانات الهائل, و لو أخدت بالك احنا هنا ما قلناش نوع التعامل ده ايه, احنا هنا بنتكلم في أساس أي تعامل مع البيانات و اللي بيبتدي عادة بالتخزين, و الأرشفة و البحث و القدرة على انك تعمل عمليات عليها. يعني علشان نقرب المفهوم, قاعدة البيانات اللي احنا كلنا متعودين عليها زي mySQL, PostgreSQL, SQL Server في النهاية بتخزن, و تفهرس و تتيح وسائل للتعامل مع البيانات نفسها, و ده نفس اللي بتعمله ال Big Data Systems برضه, لكن الفرق الأهم هو ان حجم البيانات ضخم جداً, و بالتالي البيانات دي مش متخزنة على سيرفر واحد مثلاً, بل ممكن تبقى عشرات بل مئات الآلاف من السيرفرات اللي كلها بتساهم في بناء نظام ال Big Data بتاعك.
من أشهر أنظمة ال Big Data و اللي يمكن أغلب الناس اللي في المجال ده بتستخدمه, هو مجموعة تقنيات Apache Hadoop و زي ما أكيد أخدت بالك اني قلت مجموعة تقنيات, و ده لأنه Hadoop ده تقدر تقول كده انه مظلة لمجموعة كبيرة جداً من التقنيات اللي كل حاجة فيها بتعمل وظيفة معينة و بتساعدك في سيناريوهات معينة.
يعني مثلاً, أول حاجة غالباً حتحتاجها في التعامل مع أي بيانات, هو انك تخزنها و تنظمها في حاجة زي ال File System اللي على جهازك, و هنا بيجي دور أول تقنية و هي HDFS  و ده اسم ال File System بتاع Hadoop و اللي يعتبر القاعدة الأساسية اللي بتني عليها كل التقنيات التانية, و ده اللي بيسمح بتخزين البيانات و الحفاظ عليها عن طريق ال Redundancy و يديلك abstraction بحيث ما تحتاجش تعرف تفاصيل كثير عن ازاي البيانات و فين البيانات متخزنة او على أي أجهزة
بعد ما خزنت البيانات, حتحتاج طريقة تقدر تكتب بيها برامج تشتغل على البيانات دي, و اللي هو بنسميه Programming Model, و ال Programming Model اللي بتستخدمه في ال Big Data يمكن اشهرهم على الاطلاق هو MapReduce و ده اللي بيخليك تقدر تكتب برامج, طبعاً ده موضوع كبير لوحده. طبعأً Hadoop فيه مكونات أساسية أكثر من كده بكثير, زي ZooKeeper و Yarn و فوق ده كله فيه تطبيقات مشهورة زي Hive و اللي بتخليك تقدر تعامل البيانات اللي على Hadoop كأنها قاعدة بيانات و تكلمها بلغة شبه ال SQL جداً اسمها HQL, و حاجات تانية زي Hbase و غيرها كثير جداً من التقنيات اللي لا يسع المجال دلوقتي اننا نتكلم فيها.
الفكرة لو بصيت على ده كله, حتكتشف انها في النهاية كلها ادوات و تقنيات للتعامل مع البيانات, لكن نوعية التعامل ده ايه مش مشكلة ال Big Data

نيجي لل Data Analysis و ال Data Science

علشان نفهم الاتنين, محتاجين الأول نوصل الفكرة ان ال Data Science هو مجال بيختص بكل ماله علاقة بالبيانات, سواء بيانات Structured أو لأ, سواء محتاجة شوية تجهيز الأول, الهدف الأساسي لل Data Scientist هو انه يبحث في البيانات عن الدرر, زي الأنماط اللي بتتكرر و اللي على أساسها ممكن نتوقع حاجة تحصل في المستقبل, و ده غالباً بيكون عن طريق تطوير Models و ال Models دي ممكن تكون مبنية على حاجات زي Mathematical models, Statistical models, Machine learning, deep learning كل دي طرق مختلفة لبناء ال models اللي حتساعده انه من خلال البيانات اللي معاه دلوقتي يقدر يتوقع حاجات تحصل في المستقبل.
ال Data Scientist عمومأً بيبقى خلفيته رياضية أو احصائية مع ال Computer Science, و ده طبعاً بيخليهم نادرين و الطلب عليهم كثير لأن الخلطة دي من المهارات مش سهلة قوي.
و فيه مثل مشهور

Data Scientist: A person who is better at Statistics than any Software Engineer, and better at Software Engineering than any Statistician

و أغلب الصناعات و المجالات اللي بتتعامل مع بيانات كثير بتحتاج ناس تقدر تطلعلهم النوع ده من ال insights من البيانات, زي المؤسسات المالية, و شركات السوشيال ميديا, و التسويق و المبيعات و غيرها من المجالات.

ال Data Analyst
 هو شخص بيتعامل مع البيانات بشكل يومي و غالباً من خلال ادوات جاهزة, زي Tableu أو حتى Excel, الفكرة انه أغلب الوقت بيكون هدفه هو الوضع الحالي أكثر من ايه اللي حيحصل في المستقبل, يعني أسئلة زي احنا عملنا مبيعات النهاردة بكام, أو عندنا كام عميل جديد, أو السنة دي مقارنة بالسنة اللي فاتت عملنا فلوس قد ايه, كلها بيانات و أسئلة مهمة, لكن أغلبها بتكون اسئلة اجابتها موجودة في البيانات أو محتاجة عمليات احصائية بسيطة, مش بالضرورة يكون عنده خلفية برمجية, و ان كان من المتوقع انه يكون عنده القدرة على التعامل مع قواعد بيانات أو البرامج الخاصة بده, مع خلفية احصائية.
يعني لو حبينا نقول أكبر فرق بين ال Data Scientist و ال Data Analyst هو ان ال Data Scientist مشغول باستقراء المستقبل و ال Data Analyst مشغول بتقييم الواقع و الماضي.

ده كان موضوعنا الأسبوع ده, مستنيين مقترحاتكم و اسئلتكم, و ان شاء الله نرجعلكم بموضوع جديد قريب.

شكراً و ما تنساش تعمل Like و Subscribe و تفعل الجرس علشان يجيلك Notifications أول ما ينزل فيديو جديد.

سلام

الأحد، 21 يناير 2018

٥ كتب أي مبرمج لازم يقراها

مساء الخير
ازيكم

لو فاكرين في الفيديو اللي فات, اتكلمنا عن انك محتاج تستثمر في نفسك, و واحد من أفضل الوسائل للاستثمار في نفسك هي انك تقرا كثير
فحبيت اتكلم معاكم النهاردة عن 5 كتب مفيدة لأي مبرمج, الكتب دي تحديداً مش مرتبطة بلغة برمجة أو تقنية بعينها, و ده يمكن واحد من أهم الأسباب اللي خلتني آختارها, حتى لو الكتاب بيستخدم لغة برمجة لتوصيل المعلومة, لغة البرمجة مش هدف, بل وسيلة للايضاح, و المبادئ المطروحة في الكتب دي مبادئ مفيدة لأي حد عاوز يطور من مستواه التقني.

الكتاب الأول معانا هو كتاب يعتبر علامة في الكتب اللي بتتكلم في ال Software Engineering من واحد من أفضل الكتاب و الخبراء في المجال, الكتاب هو Code Complete 2nd Edition للكاتب Steve McConnell
الكتاب بيتعرض لمجموعة من المبادئ المهمة لأي مبرمج, زي التعامل مع ال Complexity و ازاي تهزمها, بوسائل كثير زي ال Modularization و ال Abstraction و ال Discipline
بيتعرض بالتفصيل لعملية بناء السوفتوير و المراحل المختلفة فيها, مع التركيز على مراحل ال Construction اللي هي ال Requirements, Design, Coding
الكتاب حيعلمك يعني ايه Software Engineering بالمعنى الحقيقي, و ازاي انت تبقى Software Engineer, واحد من أفضل الفصول في الكتاب هو الفصل 33 و اللي بيتكلم عن Personal Character و ازاي تبني شخصيتك و مبادءك كمهندس برمجيات.
https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670

الكتاب التاني معانا هو كتاب بيتكلم في يعني ايه كود نظيف, زي ما اسم الكتاب بيقول Clean Code, بيناقش مواضيع كثيرة تصب كلها في جودة الكود كمنتج لعملية السوفتوير من أول المبادئ الأولية زي البساطة و البعد عن الكلاكيع و اتباع الأساليب القياسية, مروراً بازاي تصمم بشكل يقلل ال Complexity و يعزلها اذا لزم الأمر,  و ازاي تبقى Consistent أو متسق مع نفسك طول الوقت, يعني لو عملت حاجة باسلوب معين مرة, و جيت تعمل حاجة شبها بعدين, اعملها بنفس الطريقة, مش بطريقة مختلفة تماماً, علشان تسهل على غيرك انه يستغل الخبرات اللي اكتسبها من تعامله مع الكود, ازاي تسمي الحاجات, و ده شئ يبان عبيط لكنه في الحقيقة من اول ابواب التعقيد, هو ازاي تسمي حاجة اسم معبر و في نفس الوقت تبقى متوقعة و مفهومة, و فيه مثل مشهور في ال Computer Science هو The two hardest things in computer science are Cache invalidation and Naming Things, طبعاً الكتاب فيه تفاصيل كثير عن كل حاحة في الكود زي ازاي تكتب functions, comments, tests ازاي تقسم الكود و قدم مفهوم Code Smell  و هي الحاجات اللي لو شفتها في أي كود بتبقى علامة انه كود مش Clean
الكتاب جزء من سلسلة كتب, منها Clean Coder و مؤخراً صدر Clean Architecture و اللي ان شاء الله حعمل عنه فيديو لما أقراه بالكامل.
https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882


الكتاب الثالث معانا هو كتاب بيتكلم في مشكلة بتقابل اي مبرمج في الدنيا و هي التعامل مع ال Legacy Code و اسم الكتاب واضح Working Effectively with legacy Code, و الكتاب طبعاً بيبتدي بتعريف يعني ايه Legacy Code و ليه بيحصل, و ليه الناس كلها بتعاني منه, و ايه الاخطاء اللي اغلب المبرمجين بيعملوها لما بيقعوا في الموقف ده, زي انهم اول فكرة تيجي في بالهم هو Rewrite, و طبعاً ده بيبقى 90% من الوقت اقتصادياً مستحيل, و لو بشكل ما اقنعت الناس انها تعمله, بنسبه كبيرة الموضوع بينتج عنه حاجة أسوأ من اللي كان موجود بالفعل قبل كده زائد طبعاً وقت ضايع من غير اضافة أي شئ جديد. فالكتاب مبدئياً بيعرف ال Legacy Code  بانه ال Code  اللي مالوش Unit Tests و مش مبني من الأول انه يبقى Testable و ده طبعاً موضوع كبير, ممكن نبقى نفردله فيديو بحاله, لكن عموماً المشكلة في ان الكود علشان مش Testable فده بيخليه عرضة للمشاكل بمجرد انك تعمل اي تغيير, اللي هو نظام جيت اضبط البنطلون الجاكتة ضربت, و الكتاب تقريباً كله بيتكلم في نصائح و وسائل في ازاي تبتدي تبني Unit Tests لكود من النوع ده, بطريقة آمنة من غير ما تحتاج تعمل أي تغييرات جذرية في الأول, علشان تكسر ال Catch 22 اللي هو You need uni tests to refactor, and you need to refactor to unit tests.
https://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052


الكتاب الرابع معانا هو كتاب Writing Secure Code 2nd Edition و ده برضه من أهم الكتب اللي لازم أي مبرمج يقراها, لأنها بتفتح عينه على أهمية التفكير في ال Security في كل مراحل بناء النظام, و الكتاب ده تحديداً كان كتاب رائد في المجال, و قصته جت من Microsoft للناس الكبيرة اللي زينا فاكرة مشاكل الأمن اللي كانت في منتجات مايكروسوفت زمان في التسعينات و اللي تسببت في مشاكل كثير في العالم, و كان جزء من المشكلة طبعاً ان عملية بناء سوفتوير آمن ما كانتش اتطورت, و كان ده الدافع الأساسي ل Bill Gates انه يكتب ال Memo الشهيرة بتاعة Trustworthy Computing سنة 2002 و اللي على أساسها تم انشاء فريق بنفس الاسم في الشركة, بهدف البحث و التطوير في مجال أمن البرمجيات, و الكتاب ده كان واحد من نتائج ابحاثهم.
الكتاب ده بيجمع حاجات كثير مهمة لأي مبرمج علشان يفكر و يكتب كود آمن, لكن في رأيي أفضل اسهامات الكتاب ده هو تقديمه لفكرة ال Threat Modeling و صدر بعد كده كتاب منفصل عن ال Threat Modeling ممكن تلاقوه في الروابط تحت, ال Threat Modeling يمكن هو من أهم الحاجات اللي ممكن أي فريق أو شركة تستخدمها في تحليل النظام أثناء عملية التصميم و تستخدمه في ايجاد المشاكل الأمنية و متابعة ال mitigations او طرق تفاديها.
https://www.amazon.com/Writing-Secure-Second-Developer-Practices/dp/0735617228

الكتاب الخامس معانا هو كتاب Head First Design Patterns, و ده يمكن الكتاب الأخف و الأمتع في قراءته, و اللي يمكن أفضل كتاب في سلسلة Head First من وجهة نظري, الكتاب طبعاً واضح من اسمه انه بيتكلم عن ال Design Patterns و بيقسمها لأنواع و بيتكلم عن كل Pattern بالكود و الأمثلة, أنا عن نفسي بستمتع جداً بقراءة الكتاب ده, و ساعات بقلب فيه حتى من باب اني اتفرج على الصور لأنه شبه كتب الحضانة كده, بس ده لا يمنع من انه بيشرح المادة العلمية بشكل كاف جداً.
https://www.amazon.com/Head-First-Design-Patterns-Brain-Friendly/dp/0596007124


دي كانت 5 كتب حبيت اشاركها معاكم النهاردة, لو فيه كتب كنت تحب تشوفها في القائمة دي, يا ريت تكتبها في التعليقات, الكتب دي طبعاً مش أفضل كتب في الدنيا, لكن دي الكتب اللي من رأيي لازم أي مبرمج يقراها أو على الأقل يقرا عن المواضيع اللي بتتكلم فيها الكتب دي.

شكراً جزيلاً لمتابعتكم و نشوفكم المرة الجاية.

سلام


الاثنين، 8 يناير 2018

٧ نصائح للمبرمجين

مساء الخير, ازيكم

النهاردة حنقول ٧ نصائح للمبرمجين تساعدهم على مدار الكارير بتاعهم.
تنبيه بسيط, النصائح دي أغلبها آراء شخصية, ممكن تتفق أو تختلف معاها, لو عندك تعليق يا ريت تسيب تعليقك في الكومنتات و نتناقش فيها كلنا

أولاً قبل ما ابدا, عاوز اشكر الناس اللي تفاعلت مع الفيديو اللي فات, و اكدت على ان الفورمات ده أفضل بالنسبالهم و ان شاء الله ححاول أقدم محتوى أكثر في الفورمات ده في المستقبل

نرجع لموضوعنا

 1. Don't fall in love with your Code
 يعني ايه؟ يعني الكود بتاعك مش جزء منك, ممكن جداً حد ينتقد الكود بتاعك, مش معناه انه بينتقدك انت كشخص, أو قصده انك مش فاهم أو أي حاجة شخصية, الكود في النهاية قابل للنقد و مش حيتحسن غير بالنقد الموضوعي.و أنا شخصياً من رأيي انك لو بصيت على كود كتبته من سنة مثلاً و مالقيتش مشاكل فيه, يبقى غالباً انت مستواك ما تطورش.
 2. استثمر في نفسك
 سواء حتستثمر وقت أو فلوس, خليك دايماً فاكر ان انت رأس مالك الأول, يعني لو أهملته حتتعب و تواجه مشاكل كثير في حياتك, علشان كده استثمر في نفسك سواء بانك تدي نفسك وقت في اليوم سواء علشان تقرا, أو تتعلم حاجة جديدة, أو تلعب رياضة, أو حتى ترتاح و تعمل أي حاجة تانية لنفسك, و برضه ممكن تستثمر جزء من فلوسك في انك تحسن مهارات مثلأً بالكورسات أو الكتب أو الأدوات اللي ممكن تساعدك.
 3. اسمع المشكلة من العميل, مش الحل المقترح
 قبل ما تبدأ تكتب أي سطر كود في أي مشكلة, حاول تفكر في المشكلة من أبعاد كثير, و غالباً أول نظرة بتبقى قاصرة و مش حتحل المشكلة ١٠٠٪, حاول تسأل أكثر بحيث تفهم أبعاد المشكلة كويس قوي, أغلب الناس لما بتيجي تشرح مشكلة بتشرحها عن طريق اقتراح حل مش عن طريق شرح المشكلة, زي لما حد يروح لدكتور يقوله عاوز مضاد حيوي, لو الدكتور سمع كلامه غالباً حيضره أكثر ما ينفعه, لكن خذ وقتك في انك تفهم المشكلة و تفرقها عن الأعراض و تجاهل أي حلول مقترحة في البداية, لما تتأكد من ايه المشكلة بجد, ممكن تشوف ساعتها الحل المناسب اللي حيحل أصل المشكلة مش شوية من أعراضها.
 4. Test Your Code, and Automate it
 أي كود بتكتبه مفيش حاجة تضمن انه يفضل شغال زي ما انت عاوز غير لو فيه Test بيتأكد من الموضوع ده, و ال Test  ده حيبقى زي قلته لو مش بيشتغل بشكل مستمر, استثمر الوقت اللازم في انك تخلي الموضوع ده جزء من روتين شغلك, حيوفر عليك و على فريقك فلوس و وقت رهيب, لو مش عارف ازأي اقرا في Continuous Integration و شوف ايه المناسب للتقنيات اللي بتستخدمها, المبدأ ده مش بس حيحسن جودة الشغل بتاعك, لكن قبل ده كله حيحطك على طريق انك تتعلم ازأي تصمم كود ممكن تعمله Testing  او Testable Design, و ده شي لو تعلمون عظيم.
 5. حاول تحل المشاكل اللي تقابلك قبل ما تدور على مساعدة, و اتعلم ازأي تسأل
 أغلب وقتك في أي يوم بتقابل فيه مشاكل كثير, حاول تفهم المشكلة اللي بتقابلك و تحلها بنفسك قدر المستطاع, طبعاً حتقابلك مشاكل ممكن ما تعرفش تبتدي فيها منين, برضه استمر في المحاولة و البحث, أضعف الايمان حتقدر تسأل سؤال صح, أسوأ شيء بشوفه لما ألاقي حد واخذ Screen Shot للخطأ اللي طلعله و حطه زي ما هو كده على جروب أو فورم أو Stackoverflow و منتظر حد يعمله شغله, و بيبقى الموضوع مؤسف لما تلاقي رسالة الخطأ بتشرح الخطا و الحل, و بتيدك انطباع عن المبرمج اللي حتى ما قراش الخطأ, للأسف ده طريق الفشل, ومع الوقت مش حتتعلم أي حاجة بالعكس حتتعود على أسلوب غلط في الشغل.
 6. خليك مفيد لغيرك, و ما تفتيش, و خليك لطيف
 خليك جزء من مجتمع المبرمجين, و ساعد غيرك اللي محتاج مساعدة, بس تفادى انك تفتي, يعني لو مش عارف بلاش تتوه صاحب السؤال بإجابة انت مش متأكد منها أو غلط, أو لو عارف و حاسس الموضوع تافه بالنسبالك ما تتفهش من صاحب السؤال, لو مش قادر أو مش عاوز تجاهل السؤال.
 7. كل التقنيات حيجيلها يوم و تنتهي, اتعود على كده
 ما تتوقعش ان لغة البرمجة س أو التقنية ص اللي انت بتتعلمها حتعيش للأبد, كل التقنيات ليها دورة حياة, بتبتدي بفكرة كويسة و ناس تتحمس ليها و تنشرها و تطورها بمعدل سريع, و بعدين بتوصل لحالة من الاستقرار النسبي و بعدين بتطلع تقنيات تانية تتلافي عيوبها و تقدم أفكار جديدة بشكل جذري صعب على التقنية دي انها تتغير ليها, فبتبتدي تنحسر, و أغلب الوقت مش بتموت تماماً, و لكن بتأخذ ركن فترة طويلة و استخدأمها بيقل بشكل ملحوظ, و بتفضل مجرد مشاريع قديمة بيتعملها دعم محدود و خلاص, فاتعلم انك ما ترتبطش ارتباط عاطفي زيادة عن اللزوم بأي تقنية, و خليك خفيف.


الثلاثاء، 12 ديسمبر 2017

ازاي تلاقي شغل من غير خبرة؟

مساء الخير, ازيكم

النهاردة حنتكلم عن سؤال جديد, و لو انه مش جديد خالص و متكرر و غالباً كل واحد في الدنيا سأله لنفسه أول ما جه يدور على شغل لأول مرة؟

"أزاي الاقي شغل من غير خبرة؟"

الموضوع فعلاً يبان غريب, كل الشركات طالبة على الأقل سنة اذا ما كانش سنتين خبرة, طيب ازاي أجيب خبرة و انا ما عنديش خبرة؟

طيب قبل ما نجاوب على السؤال خلينا نوضح كام حاجة كده
 - ايه الفرق بين الخبرة و المعرفة؟
 - ازاي بتكتسب الخبرة؟
 - ازاي تثبت الخبرة؟

الموضوع يبان بديهي, لكن الفرق ساعات بين الخبرة و بين المعرفة مهم جداً تعرفه

المعرفة (Knowledge) هي الالمام بالحقائق و المعلومات عن موضوع ما سواء عن طريق الاطلاع على تجارب الآخرين أو من خلال تجارب شخصية
و ده عموماً بتكتسبه في حياتك الأكاديمية أو من خلال الكتب و الكورسات و البحث و خلافه من مصادر المعلومات المتاحة, و هو أساس أي تقدم شخصي في أي مجال بشكل عام.

الخبرة (Experience) هي الالمام العميق بموضوع ما عن طريق مشاركة في أعمال متعلقة بالموضوع لفترات طويلة مستمرة بشكل فعال, مما يؤدي الى اكتساب مهارة و ثقة في التعامل مع الموضوع , و تتضمن الخبرات أيضاً العديد من الأخطاء التي واجهت الشخص أثناء المشاركات و الدروس المستفادة.

طيب انت كده برضه ما جاوبتش على السؤال, انا عاوز ألافي شغل من غير خبرة؟

ببساطة أنا عاوزك تغير سؤالك لسؤالين منفصلين

 - ازاي أكتسب خبرة؟
 - ازاي الاقي شغل؟

اكتساب الخبرة زي ما قلنا من شوية بييجي من التجارب الشخصية و الاحتكاك المباشر بالحاجة اللي انت بتحاول تلاقي فيها شغل, لو بنتكلم عن مجال البرمجة مثلأً فانت محتاج ساعات من التدريب في مجال البرمجة لحد ما تتقن بشكل كاف المهارات الأساسية المطلوبة للوظيفة.

و اكتساب الخبرة في البرمجة مش محتاج انك تكون بتشتغل في شركة, انت ممكن تكتسب المهارات دي و انت قاعد في بيتكم, و لحسن الحظ المجال بتاعنا مش محتاج أي حاجة أكثر من جهازك اللي أكيد عندك.

كده انت عندك معرفة, و خبرة بسيطة جداً اللي اكتسبتها من الكورس أو التدريب اللي انت عملته و انت بتتعلم. حاول دلوقتي تمسك ورقة و قلم و تكتب فكرة موقع, ما عنديش ورقة و قلم و ما عنديش أفكار, طيب شوف موقع بسيط موجود بتستخدمه و اعمل زيه على قد ما تقدر, ما باخدش بالي و الله, طيب اعمل المثال اللي بقول لكل الناس عليه, ابني موقع أسئلة و اجوبة زي Ask.fm  كده

مهما كانت الفكرة اللي انت قررت تعملها, حاول تخليها في حدود أسبوع شغل بالكثير, و قبل ما تبدأ تكتب أي كود, هات نفس الورقة و القلم و ابتدي قسم الموقع للمكونات الأساسية بتاعته, دي قاعدة بيانات, ده ال front end  ده كذا ده كذا, و ابتدي اشتغل, حتلاقي نفسك مش عارف تعمل حاجات معينة, عندك جوجل افتح و دور و اتعلم و نفذ, أيوة حضرتك كده بتكتسب خبرة As we speak 
و انت بتشتغل خلي الكود بتاعك على GitHub  مثلاً, أهه منه يبقى عندك حاجة توريها للناس كسابقة أعمال, و منه تتعلم تستخدم GIT  لو ما كنتش تعرفه لسة, و أدي خبرة كمان جت ببلاش تقريباً.
خلصت نسخة أولية, ابتدي دور على hosting ليها, و شوف ازاي تقدر ترفع الموقع و قاعدة البيانات و اتعلم المشاكل اللي ممكن تطلعلك من حاجة زي دي .... و هكذا.
بعد الأسبوع ده أأكدلك انك حتبقى انسان مختلف عن قبل الأسبوع ده. ثقتك في نفسك حتبقى أكبر, لو بعت لحد و هو عاوز ناس عندها خبرة و شاف في الCV  بتاعك لينك ل GitHub  و عليه كود مشروع و لينك علشان يخش يجربه ده حيفرق كثير عن مجرد اسم في ورقة في مئات أو آلاف الأوراق اللي بيبص عليها.


Our facebook Page
http://facebook.com/askdeveloper

On Sound Cloud
http://soundcloud.com/askdeveloper

Please Like & Subscribe

الثلاثاء، 21 مارس 2017

[CodeWars] Live Coding a Programming Challenge - 2 - كود على الهواء

مسألة جديدة, و هذه المرة تم بث الحل على يوتيوب و فيسبوك على الهواء مباشرة.
المسألة
https://www.codewars.com/kata/551f23362ff852e2ab000037

الحل

يوتيوب




فيسبوك

الاثنين، 20 مارس 2017

[CodeWars] Live Coding a Programming Challenge - كود على الهواء

تجربة جديدة أرجو ان تحوز على اعجابكم, استمتعت بتسجيلها و اتمنى سماع رأيكم و اقتراحاتكم و ان شاء الله تستمر.
رابط السؤال على موقع CodeWars 
https://www.codewars.com/kata/55aa075506463dac6600010d

كود الحل النهائي

السبت، 18 مارس 2017

Thoughts on Interviews

في هذه الحلقة نتطرق لموضوع مهم و هو طريقة اختيار و اختبار المتقدمين لوظائف البرمجة في الشركات, و الانتقادات الحادة التي تعرضت لها الشركات التي تركز على مواضيع متقدمة في الخوارزيمات و التي قد لا تكون متعلقة بطبيعة العمل.

DHH (The author of Ruby on Rails)
https://twitter.com/dhh/status/834146806594433025?lang=en

https://github.com/tmcw/presentations/blob/gh-pages/advice-to-the-graduate/index.md
http://www.yegor256.com/2017/02/21/say-no-to-google-recruiters.html

قائمة مجمعة بالشركات التي تعتمد طرق اخرى في تقييم المبرمجين
https://github.com/poteto/hiring-without-whiteboards