<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Ahmed Wafik</title>
    <description>The latest articles on Forem by Ahmed Wafik (@ahmed_wafik_06f743afef285).</description>
    <link>https://forem.com/ahmed_wafik_06f743afef285</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F699967%2Fcc5a5e07-6351-4c6b-a806-7dfdac21bba4.jpeg</url>
      <title>Forem: Ahmed Wafik</title>
      <link>https://forem.com/ahmed_wafik_06f743afef285</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ahmed_wafik_06f743afef285"/>
    <language>en</language>
    <item>
      <title>Data Structures vs. Algorithms? </title>
      <dc:creator>Ahmed Wafik</dc:creator>
      <pubDate>Sun, 23 Jan 2022 12:35:59 +0000</pubDate>
      <link>https://forem.com/ahmed_wafik_06f743afef285/data-structures-vs-algorithms-4ic8</link>
      <guid>https://forem.com/ahmed_wafik_06f743afef285/data-structures-vs-algorithms-4ic8</guid>
      <description>&lt;p&gt;If you are a &lt;strong&gt;fresh&lt;/strong&gt; or &lt;strong&gt;junior&lt;/strong&gt; Software engineer, you probably heard a lot about data structures and algorithms. Everyone tells you about their importance or how valuable to learn them. You hear about them together, and sometimes you ask yourself, are they one thing, or do they most come together? So what is data structures and algorithms, or what are data structures vs. algorithms?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NGe3HdEB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n9xezghzd9l6e3qcit0c.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NGe3HdEB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n9xezghzd9l6e3qcit0c.jpeg" alt="Think with me" width="625" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  If you search on Wikipedia about data structures, you will find:
&lt;/h2&gt;

&lt;p&gt;Data structure is a data organization, management, and storage format that enables efficient access and modification. More precisely, a data structure is a collection of data values, their relationships, and the functions or operations that can be applied to the data.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you search on Wikipedia about Algorithms, you will find:
&lt;/h2&gt;

&lt;p&gt;In mathematics and computer science, an algorithm is a finite sequence of well-defined instructions, typically used to solve a class of specific problems or to perform a computation.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So that is what the book says about data structures and algorithms, but why do you hear about both of them as a package? What value do you have from learning them?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Good learning of data structures and algorithms will help you solve more problems easier. In a world driven by big data and microservices technology, a good understanding of this science is the base you can build on it to develop high-quality software.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nAuk2nW1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/awv0c5rote4tp4xxsyhf.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nAuk2nW1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/awv0c5rote4tp4xxsyhf.jpg" alt="Coding" width="880" height="880"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To understand more, let me tell you a story. This story is about John. He is a chef in one of the elite restaurants. He is famous for his low-time cooking and high-quality food. We interviewed him to know what is his secrets. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Q&lt;/strong&gt;: Hello John, can you tell us what is your secrets?&lt;br&gt;
&lt;strong&gt;A&lt;/strong&gt;: hahaha, I don’t have any secrets, I studied data structures and algorithms science in high school, and they were one of my favorite subjects, so when I started working as a chef, I used them in my daily work that my (secret).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q&lt;/strong&gt;: No, explain to me How?&lt;br&gt;
&lt;strong&gt;A&lt;/strong&gt;: data structures and algorithms science is not only applied in computer science. It is a way of thinking and mindset that can help you solve any problems, like divide and conquer algorithms. People use it in real-life problems, so machines use it in software issues. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q&lt;/strong&gt;: ok, let me understand more from you. How do Algorithms help you in cocking?&lt;br&gt;
&lt;strong&gt;A&lt;/strong&gt;: ok, for me, Algorithm is the set of steps I take to optimize the process of cooking so for example, I can go to the fridge to get one ingredient at a time, which is terrible and waste more time, or I can go one time or two and bring bulk ingredients at a time and save more time. Decisions like this are my Algorithm to cook faster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q&lt;/strong&gt;: ok, that’s clever of you, but what about data structures?&lt;br&gt;
&lt;strong&gt;A&lt;/strong&gt;: the ingredient for my meal is like the data for the computer process, so I need to store my ingredients in a structure that makes things easier when cocking, like a computer program stores the data in a particular data structure.&lt;br&gt;
So, for example, I can store onions in a net because their shape is circular to retrieve them faster. That can also be applied for tomato, but it has a different body for cucumber, so I can store it on a flat surface without being worried about it rolling off. That is exactly what you do when you write a program. You choose the data structures that suit your data type, and your problem type is an insertion problem or retrieving problem, for example.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q&lt;/strong&gt;: thank you for your time, John.&lt;br&gt;
&lt;strong&gt;A&lt;/strong&gt;: That was my pleasure. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Data Structure and algorithms are science that you can apply with any programming language in any software field and even in real-life problems.&lt;br&gt;
A good understanding of this science will help you boost your code quality and build more efficient applications that can handle more load with good performance.&lt;br&gt;
Thanks for reading ❤️❤️&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Feel free to reach out on&lt;/em&gt;&lt;/strong&gt; &lt;a href="https://www.linkedin.com/in/ahmedwafik/"&gt;Linkedin&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.geeksforgeeks.org/data-structures/#:~:text=A%20data%20structure%20is%20a,using%20the%20array%20data%20structure."&gt;Data Structures&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.geeksforgeeks.org/fundamentals-of-algorithms/"&gt;Algorithms&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
      <category>algorithms</category>
    </item>
    <item>
      <title>Backend roadmap </title>
      <dc:creator>Ahmed Wafik</dc:creator>
      <pubDate>Wed, 12 Jan 2022 10:24:04 +0000</pubDate>
      <link>https://forem.com/ahmed_wafik_06f743afef285/backend-road-map-4lj2</link>
      <guid>https://forem.com/ahmed_wafik_06f743afef285/backend-road-map-4lj2</guid>
      <description>&lt;p&gt;If you are a fresh or junior backend engineer, you might find these questions familiar to you.&lt;br&gt;
What should I learn next to take the next step in my career?&lt;br&gt;
Should I learn the database first? Should I learn about cashing, load balancer, or should I learn the advanced topics in the programming language I use?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NGe3HdEB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n9xezghzd9l6e3qcit0c.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NGe3HdEB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n9xezghzd9l6e3qcit0c.jpeg" alt="Think with me" width="625" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I found myself asking these questions a lot throughout my career, so I tried to put all the topics I knew about on a road map to help myself and others learn new things.&lt;/p&gt;

&lt;p&gt;The road map contains three phases or levels and has the topics I think every level needs to know. &lt;/p&gt;

&lt;p&gt;Level 1 :&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Problem Solving.
- Data structures.
- Algorithms.
- Database Design.
- Clean Code.
- Domain Driven Design.
- Micro services Structures and distributed systems.
- Time Scale Database.
- Git Refresher.
- CSRF - CORS. 
- Web Socket. And its best practice.
- 7 Concurrency Models. (CoRoutine Model, of Go Routines).
- Unit Testing.
- Redis and cashing mechanisms.
- Lexical scope vs dynamic scope. 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Level 2: &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Optimizations Your Apps. 
- Managing memory leakage.
- Related topics to Micro Services: 
            - Message Brokers (NATS - KAFKA).
            - CQRS. 
- DevOps Related Topics:
        - Docker &amp;amp; Docker Compose.
        - CI/CD Tools Jenkins - Kubernetes.
        - High Availability.
        - Route Proxy.
        - Load Balancing.
- More of Database:
            - When to use View.
            - Transactions.
            - database indexing. 
            - SQL injection. 
            - locking when and why? + types 
                       of locking.
            - what is dirty read. 
            - data racing.
            - database code first.
- Graph Databases.(Ex:Neo4j)
- Security Issues for Dev. (CIA triangle model )
- SAAS development best practice.
- How to build a 12 factor app.
- How to Gracefully Close Channels in go . 
- Mutex in go what that mean .
- Javascript event loop.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Level 3:&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Server-less Development.

&lt;ul&gt;
&lt;li&gt;Handling High Intensive Data Application.
    - Data Race vs race condition.
    - Dirty Read.&lt;/li&gt;
&lt;li&gt;Infrastructure as a code (IAC) concept.&lt;/li&gt;
&lt;li&gt;Workflow Programming.&lt;/li&gt;
&lt;li&gt;Software Architect : 
        - Enterprise Architect vs. Solution 
                  Architect vs. Technical Architect
        - Event Sourcing design ( watch martin 
                   fowler talk)
&lt;/li&gt;
&lt;/ul&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;


Conclusion
&lt;/h2&gt;


&lt;p&gt;I hope this road map helps you to excel. I will try to tackle every point in the roadmap in upcoming articles and regularly update it.&lt;br&gt;
Your contribution is highly appreciated.&lt;br&gt;
Thanks for reading ❤️❤️&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Feel free to reach out on&lt;/em&gt;&lt;/strong&gt; &lt;a href="https://www.linkedin.com/in/ahmedwafik/"&gt;Linkedin&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
      <category>career</category>
    </item>
    <item>
      <title>What is backend development?(intro)</title>
      <dc:creator>Ahmed Wafik</dc:creator>
      <pubDate>Sun, 09 Jan 2022 21:18:43 +0000</pubDate>
      <link>https://forem.com/ahmed_wafik_06f743afef285/what-is-back-end-developmentintro-585</link>
      <guid>https://forem.com/ahmed_wafik_06f743afef285/what-is-back-end-developmentintro-585</guid>
      <description>&lt;p&gt;In a world driven by software applications web applications took a lot more importance over the last years, every business wanted to have an access throw internet . Having a portal on the internet is very important for your business so web development held a-lot more value than ever.&lt;/p&gt;

&lt;p&gt;Any web application contains of two main components ( &lt;strong&gt;Client&lt;/strong&gt; - &lt;strong&gt;Server&lt;/strong&gt; )&lt;/p&gt;

&lt;p&gt;Client can be the interface that a user use to interact with your application, this client can be web that exists in the browsers like (chrome , safari , etc…)&lt;br&gt;
Or mobile application like Uber for example &lt;/p&gt;

&lt;p&gt;All this applications need  server that provides the logic require to power this users interfaces with functionality. &lt;/p&gt;

&lt;p&gt;So if I want to be a good backend engineer in 2022 what should I learn ? In the end of the article I will give you suggestion to work with but let's first discuss what backend server is ? &lt;/p&gt;

&lt;p&gt;to simplify the case backend is a code or program written in certain language that is hosted on a server that can be accessed through the internet and because the internet has no state (it will forget you and your data so this data should be stored on a disk not in the memory &lt;/p&gt;

&lt;p&gt;To restore a data on a disk and retrieve it through-code databases are used. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GKessGGP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hmczxaa3veajvnm3e8h1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GKessGGP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hmczxaa3veajvnm3e8h1.png" alt="web development blocks" width="880" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So when you request a thing from a client you trigger some code that make certain logic and data can be stored in the database or retrieved from it then response is sent to client.&lt;/p&gt;




&lt;h2&gt;
  
  
  Recommendations
&lt;/h2&gt;

&lt;p&gt;1.&lt;strong&gt;Programming language&lt;/strong&gt; [javascript , Go , Php , java , c#]&lt;/p&gt;

&lt;p&gt;-&lt;a href="https://www.javatpoint.com/"&gt;javaPoint&lt;/a&gt; .&lt;/p&gt;

&lt;p&gt;2.&lt;strong&gt;Data structures and Algorithms&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.tutorialspoint.com/data_structures_algorithms/index.htm"&gt;tutorialsPoint&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;3.&lt;strong&gt;Design patterns&lt;/strong&gt; .&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://refactoring.guru/design-patterns"&gt;refactoring guru&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;4.&lt;strong&gt;Data-bases and SQL&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.javatpoint.com/sql-tutorial"&gt;javaPoint&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;5.&lt;strong&gt;Back-end framework&lt;/strong&gt; [nodeJS , GO , laravel].&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.javatpoint.com/"&gt;javaPoint&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.tutorialspoint.com"&gt;tutorialsPoint&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;So this was a simple friendly entry to the world of web development [backend] I tried to discuss the main idea in a simple way and in the next articles we will talk more in details about every component in the cycle of backend that can take you from rocky level to be an expert in the backend development . &lt;br&gt;
Stay tuned for more articles.&lt;br&gt;
Thanks for reading ❤️❤️&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Feel free to reach out on&lt;/em&gt;&lt;/strong&gt; &lt;a href="https://www.linkedin.com/in/ahmedwafik/"&gt;Linkedin&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>backend</category>
      <category>career</category>
    </item>
  </channel>
</rss>
