Mohammed Ghawanni 🍉
Mohammed Ghawanni 🍉

@M7md_Ghawanni

15 تغريدة 55 قراءة Feb 13, 2020
الفترة اللي فاتت، كنت اسوي مقابلات مع شركات صغيرة وكبيرة ومتوسطة.
كان في بعض الشركات يتوقعوا مني اعرف اشياء كخريج حاسب، وفي شركات يعجبوا ويشدهم اني اعرف اشياء مالها دخل كبير في تخصصي
انصح انه يكون عندك اطلاع عن دي المواضيع بغض النظر عن مجالك البرمجي ??
(غلط تحاول تحترفها كلها)
لينكس? : النظام الرهيب هذا هو اكثر نظام مستخدم في سوق #الحوسبة_السحابية وفي السيرفرات. في منه توزيعات مفتوحة ومغلقة المصدر. في منه توزيعات لها تخصص معين زي التطبيقات الصحية، #الامن_السيبراني، #الذكاء_الاصطناعي، ..الخ
مصدر لمصادر تعلم لينكس: bit.ly
ادوات التحكم بالاصدار (Git)
البرامج ما تصير بفريق مكون من شخص او اثنين، بل فريق كبير. ولازم يتعاونوا بشكل سلس و سريع ومنظم. git هو اكثر تقنية مستخدمة.
اي فريق برمجي تدخل فيه حيكون متوقع انك تعرف تستعمل git ومنصة زي GitHub او BitBucket
مصدر يعطي فكرة: bit.ly
واجهة الاوامر او الـTerminal ?
فالبداية حيكون صعب. لكن بعد ما تتعود بيكون اسرع من انك تمسك الماوس كل ٥ ثواني وتحرك عشان تضغط كل شي تحتاجه.
وفي مرات كثيرة في مهنتك حتجي وتحتاج تتعامل مع بيئة ما لها شاشة مستخدم (خدمة سحابية او سيرفر مثلا)
حاذكر المهارات الاساسية فالتويته الجيه:
(تتمة) terminal:
-ادوات ادارة الحزم الـpackage managers مثل yum, npm, apt, anaconda, ..etc
-التصفح/التلاعب بالملفات
-تشغيل/تعطيل/تحكم بالخدمات (systemctl)
-تحميل الملفات(wget)
-تحرير/انشاء نص(vim/emacs)
-تثبيت حزم ثنائية(binaries) بـmake
وغيرها، لكن هذا عشان تبدا تحلق فقط?
الكونتينرات و الآلات الافتراضية (containers & virtual machines) ??:
دي وسائل رائعة تسمح لك ببناء اي بيئة افتراضية على جهازك.
تخليك تشغل البرمجيات مع الحفاظ على البيئة نفسها في كل مرة. مفيدة جدا لتشغيل برنامجك في اكثر من جهاز.
تقدر تبدا باكتشاف VMWare و Docker وخدماتهم الرهيبة.
في التويتات القادمة حاتكلم عن اشياء قد تكون درستها لكن مهم تخليها في بالك بكل وقت ?:
قواعد البيانات او الـdatabases ?️:
قواعد البيانات بحر واسع جدا (مثل كل شي تاني في دا الثريد). لكن لابد انك تعرف الاساسيات مثل✅:
-الفرق بين relational و non-relational
-كيف تستخدم SQL
(تتمة) قواعد البيانات:
- في حالة non-relational: كيف تمثل البيانات وتتعامل معاها؟
- كيف تسوي نموذج يحاكي حالتك بشكل فعال؟
- اساسيات امان قواعد البيانات وايش الهجمات الشائعة؟
- ايش التقنيات المستخدمة لادارة قواعد البيانات والفروقات بينهم(Mysql, MongoDB, Postgres, Firebase, ..etc)
هياكل البيانات او الـdata structures :
ايش اهمها؟
مثلا (LinkedList, tree, list, graph, stack, dictionary)
ايش الفروقات بينهم؟
متى نستخدم ايهم؟
وحده من التمارين الجميلة اللي ممكن تسويها هي انك تتعلم كيف ترسم كل واحد من هذه الهياكل بمرسام وقلم وبتوضح معاكم بسهولة ان شاء الله ??
انماط التصميم او الـdesign patterns:
انماط التصميم لا تختلف مع اختلاف لغة البرمجة، فهي مجرد افكار تساعدنا ننظم كودنا ونقننه بطريقة جيدة فيصير فعال وسهل الفهم.
انماط تصميم تجي فبالي الآن:
Singleton
Observer
Factory
Facade
Decorator
فهمها حيساعدك جدا في فهم كيف اشياء كثير تشتغل
الطريقة الرشيقة في بناء البرمجيات، او الـagile??‍♀️:
هنا نبعد شويه عن الشاشة ونرجع بشر.
كيف نبني البرمجيات بشكل مرن ويتحمل التغير المتواصل والطلبات الغير منتهية من العميل؟
الـagile هي طريقة تساعدنا اننا نعمل كدا باننا نتخطى بعض التعقيدات اللي تواجهنا كمبرمجين.
يتبع الـagile ٤ قيم:
(تتمة)
١-الناس والتواصل بينهم اهم من الادوات والاجراءات ?
٢-برنامج يعمل افصل من برنامج في مستند ?️
٣-التعاون مع العميل افضل من التفاوض معه ?️
٤-احتضان التغيرات افضل من اتباع خطة ?
مافي طريقة وحده لبناء برمجياتنا بهذه القيم
لكن في اطارات تساعدنا في تطبيقها مثل Scrum و Kanban
بعض المقابلات يكون فيها تدريب عملي،??‍?
فيجيب لك كود معطوب يقول صلحه،?
او يقول اكتبلي كود يسوي شي بسيط،
او يجيب كود ويطلب منك تفهمه وتزيد عليه.?
المقابلات دي بسيطة الشي الوحيد اللي يضغط على الناس هو الوقت. لكن نصيحتي روق وبتكون فنان. ?
بكتب مواقع تساعدك تتمرن فالتويته الجيه
دي كانت اشياء، من تجربتي، تساعدك تبدع في اي مقابلة تقنية ان شاء الله??‍♂️
في نقطة مهمة ابغا اذكرها وهي انك لا تحاول تصير خبير فيها كلها!
دا اسوأ شي ممكن تسويه لنفسك
خلي هدفك الاطلاع
اتعرف على شغفك و احترف فشي محدد?
الله يوفقكم جميعا يارب!??
سلام!
(لو اتذكرت شي حاضيفه تحت ?)

جاري تحميل الاقتراحات...