You know about the
vh unit in CSS, but what are these new mystery units in CSS?❤5
The Ultimate DevOps Developer Roadmap 🔻
Pick and master one or two programming languages. Choose from options like Python, JavaScript, Go, Ruby, etc.
Master the ins and outs of major operating systems like Linux, Windows, Mac, and so on.
Learn about source control management tools such as Git, GitHub, GitLab, and Bitbucket.
Master the basics of networking concepts such as DNS, IP, TCP, and SSH.
Pick tools like GitHub Actions, Jenkins, or CircleCI to learn about continuous integration and continuous delivery.
Learn noscripting in bash, and PowerShell along with knowledge of various terminals and editors.
Master multiple hosting platforms such as AWS, Azure, GCP, Docker, Kubernetes, Digital Ocean, Lambda, Azure Functions, etc.
Learn infrastructure as code tools like Terraform, Pulumi, Ansible, Chef, Puppet, Kubernetes, etc.
Master the key tools for monitoring and logging for infrastructure and applications such as Prometheus, Elasticsearch, Logstash, Kibana, etc.
Learn the basics of software development such as system availability, data management, design patterns, and team collaboration.
Programming Languages
Pick and master one or two programming languages. Choose from options like Python, JavaScript, Go, Ruby, etc.
Operating Systems
Master the ins and outs of major operating systems like Linux, Windows, Mac, and so on.
Source Control Management
Learn about source control management tools such as Git, GitHub, GitLab, and Bitbucket.
Networking
Master the basics of networking concepts such as DNS, IP, TCP, and SSH.
CI/CD
Pick tools like GitHub Actions, Jenkins, or CircleCI to learn about continuous integration and continuous delivery.
Scripting and Terminals
Learn noscripting in bash, and PowerShell along with knowledge of various terminals and editors.
Hosting and Platforms
Master multiple hosting platforms such as AWS, Azure, GCP, Docker, Kubernetes, Digital Ocean, Lambda, Azure Functions, etc.
Infrastructure as Code
Learn infrastructure as code tools like Terraform, Pulumi, Ansible, Chef, Puppet, Kubernetes, etc.
Monitoring and Logging
Master the key tools for monitoring and logging for infrastructure and applications such as Prometheus, Elasticsearch, Logstash, Kibana, etc.
Basics of Software Development
Learn the basics of software development such as system availability, data management, design patterns, and team collaboration.
❤3
الفرق بين الـ Microservices والـ Monolith 💯
.
.
لما بنيجي نشتغل على مشروع كبير، بنلاقي دايمًا إن اختيار الـ architecture بتاع المشروع من أهم الحاجات اللي ممكن تأثر على نجاح المشروع.
فيه نوعين رئيسيين بنسمع عنهم كتير في مجال السوفتوير: الـ Monolith والـ Microservices. طيب، إيه الفرق بين الاتنين وإمتى نختار كل واحد فيهم؟
———
ده الـ approach الكلاسيكي اللي بنلاقيه في المشاريع القديمة أو المشاريع الصغيرة. ببساطة، الـ Monolith عبارة عن application واحد كبير متكامل. كل حاجة فيه متشابكة ومربوطة ببعض: الـ frontend، الـ backend، الـ database، وكل الـ business logic.
لما تيجي تضيف feature جديدة أو تعدل على حاجة، بتضطر تشتغل على الكود كله.
———
✅ المميزات
- سهولة التطوير في البداية: لو المشروع لسه صغير، بيكون سهل إنك تشتغل على كل حاجة في مكان واحد.
- أبسط في الـ deployment: بتعمل build و deploy مرة واحدة للتطبيق كله.
- أقل تعقيد: الكود كله موجود في مكان واحد، فلو التيم صغير أو المشروع بسيط، الـ Monolith هيكون حل عملي.
———
❌ العيوب:
- المشروع مش scalable بسهولة: كل ما المشروع يكبر، هتلاقي إن تعديل جزء بسيط ممكن يأثر على أجزاء تانية في النظام.
- صعوبة الصيانة: الكود بيبقى ضخم ومعقد، وممكن يبقى صعب جدًا تضيف features جديدة أو تصلح bugs.
- التعامل مع الترافيك العالي: لو فيه جزء معين من التطبيق هو اللي بيستهلك موارد كتير، مش هتقدر تخصص له موارد أكتر بسهولة.
———
في الـ Microservices، المشروع بيتقسم لمجموعة من الـ services الصغيرة، وكل service بتبقى مسؤولة عن جزء معين من الـ business logic.
الـ services دي بتتواصل مع بعض عن طريق APIs (زي REST أو GraphQL)، وكل واحدة منها ممكن تبقى مكتوبة بلغة برمجة مختلفة أو حتى تستخدم قاعدة بيانات مختلفة.
———
✅ المميزات:
- الـ Scalability عالي جدًا: ممكن تعمل scaling لكل service بشكل منفصل. يعني لو عندك service بتتعامل مع الـ orders في e-commerce site والترافيك عليها عالي، ممكن تعمل لها scaling من غير ما تضطر تعمل scaling للتطبيق كله.
- مرونة في التطوير: كل service بتشتغل بشكل مستقل، فالتيم ممكن يشتغل على أكتر من feature في نفس الوقت بدون ما يحصل تعارض.
- سهولة الصيانة: لو فيه bug في service معينة، بتقدر تعدل عليها أو حتى تعملها إعادة تشغيل من غير ما تأثر على الـ services التانية.
———
❌ العيوب:
- تعقيد في الـ deployment والـ management: إدارة وتنسيق كل الـ services بيحتاج أدوات وعمليات إضافية زي الـ orchestration tools (زي Kubernetes).
- صعوبة في الـ debugging: بما إن كل service مستقلة، الـ logging والـ monitoring بيبقوا معقدين شوية.
- التواصل بين الـ services: الـ inter-service communication ممكن يضيف latency ومشاكل لو مش معمول بشكل صحيح.
———
لو المشروع بتاعك لسه صغير أو الـ requirements بتاعته مش معقدة، فالـ Monolith ممكن يبقى اختيار منطقي وسهل. هيوفرلك وقت ومجهود في الـ setup والـ deployment.
لكن لو المشروع كبير أو بيكبر بسرعة، والـ team عندك عايز يشتغل بكفاءة أكتر على features كتير في نفس الوقت، فالـ Microservices هتكون الأنسب.
———
الخلاصة إن كل approach له مميزاته وعيوبه، والاختيار ما بينهم بيعتمد بشكل كبير على حجم المشروع واحتياجاته.
الـ Monolith مناسب للمشاريع الصغيرة أو اللي مش متوقعة نمو كبير في القريب العاجل.
أما الـ Microservices فهي الأفضل للمشاريع الكبيرة اللي بتحتاج scalability ومرونة أعلى، بس لازم تكون مستعد للتعامل مع التعقيد الإضافي في الإدارة والـ deployment.
.
.
لما بنيجي نشتغل على مشروع كبير، بنلاقي دايمًا إن اختيار الـ architecture بتاع المشروع من أهم الحاجات اللي ممكن تأثر على نجاح المشروع.
فيه نوعين رئيسيين بنسمع عنهم كتير في مجال السوفتوير: الـ Monolith والـ Microservices. طيب، إيه الفرق بين الاتنين وإمتى نختار كل واحد فيهم؟
———
1. الـ Monolith Architecture
ده الـ approach الكلاسيكي اللي بنلاقيه في المشاريع القديمة أو المشاريع الصغيرة. ببساطة، الـ Monolith عبارة عن application واحد كبير متكامل. كل حاجة فيه متشابكة ومربوطة ببعض: الـ frontend، الـ backend، الـ database، وكل الـ business logic.
لما تيجي تضيف feature جديدة أو تعدل على حاجة، بتضطر تشتغل على الكود كله.
———
✅ المميزات
- سهولة التطوير في البداية: لو المشروع لسه صغير، بيكون سهل إنك تشتغل على كل حاجة في مكان واحد.
- أبسط في الـ deployment: بتعمل build و deploy مرة واحدة للتطبيق كله.
- أقل تعقيد: الكود كله موجود في مكان واحد، فلو التيم صغير أو المشروع بسيط، الـ Monolith هيكون حل عملي.
———
❌ العيوب:
- المشروع مش scalable بسهولة: كل ما المشروع يكبر، هتلاقي إن تعديل جزء بسيط ممكن يأثر على أجزاء تانية في النظام.
- صعوبة الصيانة: الكود بيبقى ضخم ومعقد، وممكن يبقى صعب جدًا تضيف features جديدة أو تصلح bugs.
- التعامل مع الترافيك العالي: لو فيه جزء معين من التطبيق هو اللي بيستهلك موارد كتير، مش هتقدر تخصص له موارد أكتر بسهولة.
———
2. الـ Microservices Architecture
في الـ Microservices، المشروع بيتقسم لمجموعة من الـ services الصغيرة، وكل service بتبقى مسؤولة عن جزء معين من الـ business logic.
الـ services دي بتتواصل مع بعض عن طريق APIs (زي REST أو GraphQL)، وكل واحدة منها ممكن تبقى مكتوبة بلغة برمجة مختلفة أو حتى تستخدم قاعدة بيانات مختلفة.
———
✅ المميزات:
- الـ Scalability عالي جدًا: ممكن تعمل scaling لكل service بشكل منفصل. يعني لو عندك service بتتعامل مع الـ orders في e-commerce site والترافيك عليها عالي، ممكن تعمل لها scaling من غير ما تضطر تعمل scaling للتطبيق كله.
- مرونة في التطوير: كل service بتشتغل بشكل مستقل، فالتيم ممكن يشتغل على أكتر من feature في نفس الوقت بدون ما يحصل تعارض.
- سهولة الصيانة: لو فيه bug في service معينة، بتقدر تعدل عليها أو حتى تعملها إعادة تشغيل من غير ما تأثر على الـ services التانية.
———
❌ العيوب:
- تعقيد في الـ deployment والـ management: إدارة وتنسيق كل الـ services بيحتاج أدوات وعمليات إضافية زي الـ orchestration tools (زي Kubernetes).
- صعوبة في الـ debugging: بما إن كل service مستقلة، الـ logging والـ monitoring بيبقوا معقدين شوية.
- التواصل بين الـ services: الـ inter-service communication ممكن يضيف latency ومشاكل لو مش معمول بشكل صحيح.
———
إمتى تختار كل واحد؟
لو المشروع بتاعك لسه صغير أو الـ requirements بتاعته مش معقدة، فالـ Monolith ممكن يبقى اختيار منطقي وسهل. هيوفرلك وقت ومجهود في الـ setup والـ deployment.
لكن لو المشروع كبير أو بيكبر بسرعة، والـ team عندك عايز يشتغل بكفاءة أكتر على features كتير في نفس الوقت، فالـ Microservices هتكون الأنسب.
———
الخلاصة إن كل approach له مميزاته وعيوبه، والاختيار ما بينهم بيعتمد بشكل كبير على حجم المشروع واحتياجاته.
الـ Monolith مناسب للمشاريع الصغيرة أو اللي مش متوقعة نمو كبير في القريب العاجل.
أما الـ Microservices فهي الأفضل للمشاريع الكبيرة اللي بتحتاج scalability ومرونة أعلى، بس لازم تكون مستعد للتعامل مع التعقيد الإضافي في الإدارة والـ deployment.
❤5
Stop your React components from re-rendering unnecessarily!
Learn how to optimize Context with selectors and memoization to keep your apps lightning fast.
Learn how to optimize Context with selectors and memoization to keep your apps lightning fast.
❤3
كـنـز الـ GitHub 💎
.
.
لو مهتم بتطوير مهاراتك كمهندس برمجيات، لازم تبقى عارف إن GitHub مليان كنوز هتساعدك بشكل كبير خلال رحلتك...
في البوست ده هشارك معاك مجموعة Repositories لازم تبقى عندك في الـ bookmarks، هتلاقي فيها أدوات، شروحات، وأكواد مفتوحة المصدر وأسئلة انترفيو هتسهّل عليك مشوارك في البرمجة. 💯
———
GitHub Repositories Every Software Engineer Should Know 💯
📍 developer-roadmap
https://github.com/kamranahmedse/developer-roadmap
📍 awesome-roadmaps
https://github.com/liuchong/awesome-roadmaps
📍 free-programming-books
https://github.com/EbookFoundation/free-programming-books
📍 engineering-blogs
https://github.com/kilimchoi/engineering-blogs
📍 Best-websites-a-programmer-should-visit
https://github.com/sdmg15/Best-websites-a-programmer-should-visit
📍 freeCodeCamp
https://github.com/freeCodeCamp/freeCodeCamp
📍 The Algorithms
https://github.com/TheAlgorithms
📍 Data-Structure-Algorithms-LLD-HLD
https://github.com/arpit20adlakha/Data-Structure-Algorithms-LLD-HLD
📍 awesome-algorithms
https://github.com/tayllan/awesome-algorithms
📍 design-patterns-for-humans
https://github.com/kamranahmedse/design-patterns-for-humans
📍 awesome-design-patterns
https://github.com/DovAmir/awesome-design-patterns
📍 system-design-101
https://github.com/ByteByteGoHq/system-design-101
📍 system-design-primer
https://github.com/donnemartin/system-design-primer
📍 system-design-resources
https://github.com/InterviewReady/system-design-resources
📍 system-design
https://github.com/karanpratapsingh/system-design
📍 Awesome-Design-Tools
https://github.com/goabstract/Awesome-Design-Tools
📍 design-resources-for-developers
https://github.com/bradtraversy/design-resources-for-developers
📍 app-ideas
https://github.com/florinpop17/app-ideas
📍 project-based-learning
https://github.com/practical-tutorials/project-based-learning
📍 public-apis
https://github.com/public-apis/public-apis
📍 interviews
https://github.com/kdn251/interviews
📍 tech-interview-handbook
https://github.com/yangshun/tech-interview-handbook
📍 awesome-interview-questions
https://github.com/DopplerHQ/awesome-interview-questions
📍 Coding Interview University
https://github.com/jwasham/coding-interview-university
📍 free-for-dev
https://github.com/ripienaar/free-for-dev
📍 build-your-own-x
https://github.com/codecrafters-io/build-your-own-x
📍 realworld
https://github.com/gothinkster/realworld
———
لو عندك Repos مميزة بتستخدمها ممكن تشاركها معنا في التعليقات وتفيد غيرك 💡
.
.
لو مهتم بتطوير مهاراتك كمهندس برمجيات، لازم تبقى عارف إن GitHub مليان كنوز هتساعدك بشكل كبير خلال رحلتك...
في البوست ده هشارك معاك مجموعة Repositories لازم تبقى عندك في الـ bookmarks، هتلاقي فيها أدوات، شروحات، وأكواد مفتوحة المصدر وأسئلة انترفيو هتسهّل عليك مشوارك في البرمجة. 💯
———
GitHub Repositories Every Software Engineer Should Know 💯
📍 developer-roadmap
https://github.com/kamranahmedse/developer-roadmap
📍 awesome-roadmaps
https://github.com/liuchong/awesome-roadmaps
📍 free-programming-books
https://github.com/EbookFoundation/free-programming-books
📍 engineering-blogs
https://github.com/kilimchoi/engineering-blogs
📍 Best-websites-a-programmer-should-visit
https://github.com/sdmg15/Best-websites-a-programmer-should-visit
📍 freeCodeCamp
https://github.com/freeCodeCamp/freeCodeCamp
📍 The Algorithms
https://github.com/TheAlgorithms
📍 Data-Structure-Algorithms-LLD-HLD
https://github.com/arpit20adlakha/Data-Structure-Algorithms-LLD-HLD
📍 awesome-algorithms
https://github.com/tayllan/awesome-algorithms
📍 design-patterns-for-humans
https://github.com/kamranahmedse/design-patterns-for-humans
📍 awesome-design-patterns
https://github.com/DovAmir/awesome-design-patterns
📍 system-design-101
https://github.com/ByteByteGoHq/system-design-101
📍 system-design-primer
https://github.com/donnemartin/system-design-primer
📍 system-design-resources
https://github.com/InterviewReady/system-design-resources
📍 system-design
https://github.com/karanpratapsingh/system-design
📍 Awesome-Design-Tools
https://github.com/goabstract/Awesome-Design-Tools
📍 design-resources-for-developers
https://github.com/bradtraversy/design-resources-for-developers
📍 app-ideas
https://github.com/florinpop17/app-ideas
📍 project-based-learning
https://github.com/practical-tutorials/project-based-learning
📍 public-apis
https://github.com/public-apis/public-apis
📍 interviews
https://github.com/kdn251/interviews
📍 tech-interview-handbook
https://github.com/yangshun/tech-interview-handbook
📍 awesome-interview-questions
https://github.com/DopplerHQ/awesome-interview-questions
📍 Coding Interview University
https://github.com/jwasham/coding-interview-university
📍 free-for-dev
https://github.com/ripienaar/free-for-dev
📍 build-your-own-x
https://github.com/codecrafters-io/build-your-own-x
📍 realworld
https://github.com/gothinkster/realworld
———
لو عندك Repos مميزة بتستخدمها ممكن تشاركها معنا في التعليقات وتفيد غيرك 💡
❤7👍1
Mastering SSR Hydration in Next.js 💯
Optimize server-side rendering (SSR) and client-side hydration in Next.js for seamless interactivity.
Optimize server-side rendering (SSR) and client-side hydration in Next.js for seamless interactivity.
❤2
مصادر مهمة لانترڤيو الـ Problem Solving 💯
.
.
📌 This repository contains LeetCode articles which are very useful during the interview preparation.
https://github.com/ashishps1/awesome-leetcode-resources
📌 A curated list of awesome Leetcode problems, algorithms, and data structures.
https://github.com/kiranpalsingh1806/awesome-leetcode
.
.
📌 This repository contains LeetCode articles which are very useful during the interview preparation.
https://github.com/ashishps1/awesome-leetcode-resources
📌 A curated list of awesome Leetcode problems, algorithms, and data structures.
https://github.com/kiranpalsingh1806/awesome-leetcode
❤2
Skills are reusable capabilities for AI agents.
Install them with a single command to enhance your agents with access to procedural knowledge.
https://skills.sh
❤1
Power BI Roadmap
https://www.notion.com/templates/power-bi-roadmap
Python Roadmap
https://www.notion.com/templates/python-roadmap
AI Engineering Roadmap
https://www.notion.com/templates/aiengineering-roadmap
Data Analyst Roadmap
https://www.notion.com/templates/data-analyst-roadmap
Data Engineering Roadmap
https://www.notion.com/templates/data-engineering-roadmap-125
Data Scientist Roadmap
https://www.notion.com/templates/data-scientist-roadmap-648
SQL Data Warehouse Project
https://www.notion.com/templates/sql-data-warehouse-project
❤2
لو أنت شغال في شركة حاليًا وجالك عرض من شركة تانية...
.
.
أول حاجة هتبص عليها المرتب وده من حقك ولكن متنساش تبص على الشركة نفسها وتشوف الناس اللي شغاله فيها وتحاول تسأل حد منهم عن طبيعة عمل الشركة وعن نظام الشغل بيمشي إزاي وهكذا... دور على الخبرة العملية زي ما بتدور على شركة مرتبها حلو خصوصًا لو أنت لسه في بداية الطريق.
مينفعش تبقى موجود في شركة بتاخد مرتب كويس جدًا ولكن مفيش أي استفادة لك، مجرد بتعمل تاسكات وتسلمها وخلاص...
طيب بالنسبة للمرتب.... أكيد مش هتسيب الشركة الحالية إلا لو المرتب أعلى شوية من الحالي وكمان الفرق يستاهل إنك تاخد المخاطرة دي... طبعًا بتحسب الفرق بالمواصلات وكل حاجة... لأن ممكن يبقى الفرق 500 جنيه مثلًا ولكن مقر الشركة أبعد شوية وهتحتاج مواصلات أكتر وبالتالي مفيش فرق هنا... وساعتها الأفضل إنك تفضل في مكانك.
طيب لو مفيش فرق أو المرتب كان أقل من الشركة الحالية؟
هنا الموضوع متوقف عليك... لو أنت تعرف الشركة الجديدة ومتأكد إن فيها ناس كويسة وهتكتسب منهم خبرة فممكن تخاطر بالمرتب ولكن هتحاول تتفاوض معاهم في الإنترفيو إن المرتب هيزيد بعد فترة معينة (في الغالب شهرين أو ثلاثة) أو تسأل عن نظام الزيادة في الشركة بيمشي إزاي... هل كل فترة بيتعمل تقييم للموظفين واللي يستاهل زيادة بياخدها ولا فيه أشخاص معينة بتزيد في أي فترة حسب شغلهم والتزامهم.
دور على الخبرة وعلى الشركة وطبيعة العمل فيها زي ما بتدور على الفلوس.
والله أعلم...
.
.
أول حاجة هتبص عليها المرتب وده من حقك ولكن متنساش تبص على الشركة نفسها وتشوف الناس اللي شغاله فيها وتحاول تسأل حد منهم عن طبيعة عمل الشركة وعن نظام الشغل بيمشي إزاي وهكذا... دور على الخبرة العملية زي ما بتدور على شركة مرتبها حلو خصوصًا لو أنت لسه في بداية الطريق.
مينفعش تبقى موجود في شركة بتاخد مرتب كويس جدًا ولكن مفيش أي استفادة لك، مجرد بتعمل تاسكات وتسلمها وخلاص...
طيب بالنسبة للمرتب.... أكيد مش هتسيب الشركة الحالية إلا لو المرتب أعلى شوية من الحالي وكمان الفرق يستاهل إنك تاخد المخاطرة دي... طبعًا بتحسب الفرق بالمواصلات وكل حاجة... لأن ممكن يبقى الفرق 500 جنيه مثلًا ولكن مقر الشركة أبعد شوية وهتحتاج مواصلات أكتر وبالتالي مفيش فرق هنا... وساعتها الأفضل إنك تفضل في مكانك.
طيب لو مفيش فرق أو المرتب كان أقل من الشركة الحالية؟
هنا الموضوع متوقف عليك... لو أنت تعرف الشركة الجديدة ومتأكد إن فيها ناس كويسة وهتكتسب منهم خبرة فممكن تخاطر بالمرتب ولكن هتحاول تتفاوض معاهم في الإنترفيو إن المرتب هيزيد بعد فترة معينة (في الغالب شهرين أو ثلاثة) أو تسأل عن نظام الزيادة في الشركة بيمشي إزاي... هل كل فترة بيتعمل تقييم للموظفين واللي يستاهل زيادة بياخدها ولا فيه أشخاص معينة بتزيد في أي فترة حسب شغلهم والتزامهم.
دور على الخبرة وعلى الشركة وطبيعة العمل فيها زي ما بتدور على الفلوس.
والله أعلم...
❤10