<?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>DEV Community: Ahmed El Taweel</title>
    <description>The latest articles on DEV Community by Ahmed El Taweel (@ahmedeltaweel).</description>
    <link>https://dev.to/ahmedeltaweel</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%2F307470%2F4e165517-7203-42ef-b9ee-4e9cbc41c79d.jpeg</url>
      <title>DEV Community: Ahmed El Taweel</title>
      <link>https://dev.to/ahmedeltaweel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ahmedeltaweel"/>
    <language>en</language>
    <item>
      <title>Python decorator to show execution time of a function
</title>
      <dc:creator>Ahmed El Taweel</dc:creator>
      <pubDate>Sun, 28 Nov 2021 08:14:56 +0000</pubDate>
      <link>https://dev.to/ahmedeltaweel/python-decorator-to-show-execution-time-of-a-function-afk</link>
      <guid>https://dev.to/ahmedeltaweel/python-decorator-to-show-execution-time-of-a-function-afk</guid>
      <description>&lt;p&gt;When working on a high throughput, low latency  system, it's important to measure the execution time of your code to identify bottleneck and fix them. To do so, let's use a decorator to measure the execution time for the function it decorates.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;datetime&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;timedelta&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;functools&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;wraps&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;timeit&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;default_timer&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;timer&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;typing&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Any&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Callable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Optional&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;metrics&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;func&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Optional&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Callable&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Optional&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Optional&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Any&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="s"&gt;"""Decorator to show execution time.

    :param func: Decorated function
    :param name: Metrics name
    :param hms: Show as human-readable string
    """&lt;/span&gt;
    &lt;span class="k"&gt;assert&lt;/span&gt; &lt;span class="nb"&gt;callable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;func&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;func&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;decorator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;wraps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;wrapper&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;comment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s"&gt;"Execution time of &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;__name__&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;:"&lt;/span&gt;
            &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;timer&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;te&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;timer&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;

            &lt;span class="c1"&gt;# Log metrics
&lt;/span&gt;            &lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;common&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;log&lt;/span&gt;
            &lt;span class="n"&gt;logger&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;withPrefix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'[METRICS]'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;hms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;comment&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;timedelta&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;seconds&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;te&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;comment&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;te&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; sec"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;wrapper&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;decorator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;func&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;callable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;func&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="n"&gt;decorator&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By adding this decorator to each function, we can use the analytics from the APM to identify bottleneck and gain better visibility over the system.&lt;/p&gt;

&lt;p&gt;Happy coding :D &lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>performance</category>
    </item>
    <item>
      <title>Be BORING when choosing your tech stack</title>
      <dc:creator>Ahmed El Taweel</dc:creator>
      <pubDate>Wed, 17 Feb 2021 11:44:22 +0000</pubDate>
      <link>https://dev.to/ahmedeltaweel/be-boring-when-choosing-your-tech-stack-1b9a</link>
      <guid>https://dev.to/ahmedeltaweel/be-boring-when-choosing-your-tech-stack-1b9a</guid>
      <description>&lt;p&gt;Whenever you are starting a new project either in a new startup or a new solution for your current employer, always try to be boring as much as possible when choosing the tech stack.&lt;/p&gt;

&lt;p&gt;TL;DR&lt;/p&gt;

&lt;h3&gt;
  
  
  Technology
&lt;/h3&gt;

&lt;p&gt;Technologies tend to get better over time. The longer the technology is in the market, the higher the probability that it will be more stable.&lt;br&gt;
Let's take python, for example, it has been around for around 30 years. it has hundreds of thousands of good packages. Hundreds of frameworks and a lot of support on StackOverflow and GitHub. So whenever I am going to start a new project, it will be on top of my choices.&lt;/p&gt;

&lt;h3&gt;
  
  
  Product
&lt;/h3&gt;

&lt;p&gt;The final goal of any software project is to provide a product providing a solution for a certain problem. So we should not deviate from that goal. Building the coolest piece of software without solving the main problem is not considered progress and it's highly likely to be replaced with one that actually solves it.&lt;br&gt;
The main factor in measuring the success of a product is its functionality. No user cares about what is the tech stack or the programming languages behind it.&lt;br&gt;
Always remember the main goal.&lt;/p&gt;

&lt;h3&gt;
  
  
  Developers
&lt;/h3&gt;

&lt;p&gt;Our goal is to solve problems. Chasing trends and use them whenever we can to pad our resumes will not the end goal and it's not advised.&lt;br&gt;
And there no shame in using an old and stable solution to provide the functionality needed. &lt;/p&gt;

&lt;h3&gt;
  
  
  Takeouts
&lt;/h3&gt;

&lt;p&gt;1- New technology choices come with a great deal of baggage. &lt;br&gt;
2- Always keep your solutions Stupid Simple.&lt;br&gt;
3- It’s important to master the tools you choose. Make sure you do that.&lt;br&gt;
4- Progress happens when delivering working solutions.&lt;/p&gt;

&lt;p&gt;Thanks&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Why having a "Work With Me" guide can be a good idea?</title>
      <dc:creator>Ahmed El Taweel</dc:creator>
      <pubDate>Tue, 29 Dec 2020 19:28:55 +0000</pubDate>
      <link>https://dev.to/ahmedeltaweel/why-having-a-work-with-me-guide-can-be-a-good-idea-5efk</link>
      <guid>https://dev.to/ahmedeltaweel/why-having-a-work-with-me-guide-can-be-a-good-idea-5efk</guid>
      <description>&lt;p&gt;Lately, while I was surfing Twitter, I found this &lt;a href="https://twitter.com/shreef/status/1341399140555759617"&gt;tweet&lt;/a&gt; from &lt;a href="https://twitter.com/shreef"&gt;Shreef&lt;/a&gt; talking about his &lt;strong&gt;Work With Me Guide&lt;/strong&gt;. And how it can be useful especially when it gets read by a teammate.&lt;/p&gt;

&lt;p&gt;And that gave me a flashback about a problem that happened to me when I started as a remote developer for the first time in a new startup. &lt;/p&gt;

&lt;p&gt;In April 2020, I joined a remote international team with 6 nationalities operating in 4 different timezones. I did not have a proper onboarding process. As I previously meet all the team members many times in casual meetings. &lt;br&gt;
We all thought that should be okay joining and working directly. But it was not. &lt;br&gt;
We did not know each other enough to work together and we did not have team rules for communication and work organizing.&lt;br&gt;
Given that we were working in a startup moving fast to survive during the COVID-19 global pandemic. We faced a lot of communication, behavioral, and organizational problems which led me to leave in less than 2 months.&lt;/p&gt;

&lt;p&gt;Although it was a long time ago, I kept thinking about the reason behind this problem. And I found that my teammates did not know me and I did not know them. I did not tell them enough about myself and I did not ask them to tell me about their preferences. We did not set rules.&lt;br&gt;
Eventually, It turned out that we all were having different ways of handling communicating, organizing, and doing work.&lt;/p&gt;

&lt;p&gt;Personally, I used to do face to face communication in all of my life. I was bad at expressing my ideas and feeling in writing. Also, I do not like doing work without taking care of planning, process, and organizing tasks flow.&lt;br&gt;
On the other hand, others were less organized but they knew how and where to move their steps with minimal planning. And they preferred writing over face-to-face communication.&lt;/p&gt;

&lt;p&gt;With that said, I think it would have smoothed the onboarding process, reduced communication conflicts, and increased the quality of the team environment if we have shared a &lt;strong&gt;Work With Me Guide&lt;/strong&gt; together.&lt;/p&gt;

&lt;p&gt;These guides should work as bases to set some team rules and as references to tell more about each team member in the work environment. They should be small, readable, and accessible. And should be used to tell how we work, what we like/dislike, what is the preferred way of communication, ... etc.&lt;/p&gt;

&lt;p&gt;One other solution could be a &lt;strong&gt;Kick-Off Meeting&lt;/strong&gt; between team members to know each other and to set some guidelines in the work environment.&lt;/p&gt;

&lt;p&gt;Finally, Working in an international environment is challenging. We meet different people from different backgrounds. And these backgrounds affect heavily how people communicate, react, and respond. Even in local teams we can see differences but on a smaller scale.&lt;br&gt;
What may be obvious to you, may not be obvious to your teammate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thanks.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/ahmedeltaweel/work-with-me-guide/blob/main/README.md"&gt;My guide&lt;/a&gt;&lt;/p&gt;

</description>
      <category>remote</category>
      <category>work</category>
      <category>productivity</category>
      <category>management</category>
    </item>
    <item>
      <title>Why getting the job done is not enough.</title>
      <dc:creator>Ahmed El Taweel</dc:creator>
      <pubDate>Fri, 08 May 2020 21:44:47 +0000</pubDate>
      <link>https://dev.to/ahmedeltaweel/why-getting-the-job-done-is-not-enough-2df</link>
      <guid>https://dev.to/ahmedeltaweel/why-getting-the-job-done-is-not-enough-2df</guid>
      <description>&lt;p&gt;During the old era of the software industry, some companies thought that delivering working software is enough to sustain the business. &lt;br&gt;
It turned out that they were right and &lt;code&gt;Working software is the primary measure of progress&lt;/code&gt; [7th principle in agile manefisto].&lt;br&gt;
But, some companies and developers thought that it’s ok to deliver creepy software as long as it’s working and here where things started to take a wrong direction.&lt;/p&gt;

&lt;p&gt;During the last 10 years, there has been an increased use of software in day to day routines, from notes and images taking to managing an entire multi-national organization using an app running on smartphones connected to the internet.&lt;br&gt;
We see smart assistants, social media, e-learning platforms, e-commerce, .., and more.&lt;br&gt;
Anything that was done in the past by working hands is now done by software.&lt;/p&gt;

&lt;p&gt;With that increase in software usage especially in mobile apps and the amount of competition between startups and tech giants to acquire customers and increase their engagement, low-quality software is not welcomed anymore.&lt;br&gt;
We are talking about customers using their mobile phones nearly every minute.&lt;br&gt;
They do not expect latency, crashes, losing unsaved work, or bad UI/UX. And they do not care about the technical issues you face due to a sudden increase in traffic or a developer’s mistake in handling service scalability.&lt;/p&gt;

&lt;p&gt;With all of that, it’s obvious that delivering only working software is not enough anymore to satisfy customers. And with this in mind, we need to reconsider how we manage, design, develop, and deliver software.&lt;/p&gt;

&lt;p&gt;Fast delivery with high quality is a must to sustain customers and business continuity. &lt;br&gt;
But, how to get the job done fast with good quality?&lt;/p&gt;

&lt;p&gt;To answer this question, some actions must be taken:&lt;br&gt;
1-  Hire the right ones in the right position, not just the best ones.&lt;br&gt;
2- Maintain the product/software roadmap and make it clear to everyone working on it. &lt;br&gt;
3- Hold good communication channels within the team and across teams.&lt;br&gt;
4- Assure that we need fast delivery but quality must not be compromised.&lt;br&gt;
5- Give your team a space to innovate, give it the confidence to get the best out of it.&lt;br&gt;
6- Be honest with your team, keep it informed, and updated.&lt;/p&gt;

&lt;p&gt;This list can be long but these are the most important ones in my opinion.&lt;/p&gt;

&lt;p&gt;Getting the job done can be challenging in the software industry, if not done the right way.&lt;br&gt;
Having a consistent delivery process and a high bar for quality is not optional in the modern era. And with the harsh competition between companies -thank you internet- combined with high expectations from customers, we need yo revisit how we manage software teams and how we think, plan, and deliver software.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>management</category>
      <category>startup</category>
    </item>
    <item>
      <title>4 things I learned in the first month as a remote developer</title>
      <dc:creator>Ahmed El Taweel</dc:creator>
      <pubDate>Tue, 28 Apr 2020 01:43:11 +0000</pubDate>
      <link>https://dev.to/ahmedeltaweel/4-things-i-learned-in-the-first-month-as-a-remote-developer-o48</link>
      <guid>https://dev.to/ahmedeltaweel/4-things-i-learned-in-the-first-month-as-a-remote-developer-o48</guid>
      <description>&lt;p&gt;When I started a full-time remote job, I was frustrated a bit. I do not like the feeling that I am missing something. So I was doing my best to understand every tiny bit in the project and the workflow. Suddenly I started suggesting solutions and proposing enhancements to the process and the daily work and that was a big mistake.&lt;br&gt;
During my first onboarding month, I took generous feedback that helped me a lot and facilitated my onboarding and understanding of the project and the team&lt;br&gt;
That is why I am writing the top 4 things I learned from that feedback so anyone starting a new role, especially remote ones can avoid mistakes I fall into.&lt;/p&gt;

&lt;h2&gt;
  
  
  1- Be patient.
&lt;/h2&gt;

&lt;p&gt;We -developers- tend to try to understand stuff fast, we hate that feeling that you do not know what's going on and how things work.&lt;br&gt;
and that inner-feeling pushes us to take actions trying to understand the process and figuring out what is done and how it is done and this is a good thing but it also can be bad if done carelessly.&lt;/p&gt;

&lt;p&gt;So, the first thing you need to do is to slow down your steps, take more time to understand, ask questions, collect information, and prioritize what needs to be understood first. &lt;br&gt;
Doing so will leave a good impression with your colleagues as well as your manager. &lt;/p&gt;

&lt;h2&gt;
  
  
  2- Be more mature in accepting the process.
&lt;/h2&gt;

&lt;p&gt;Some people when joining a new process try hard to make it like the one they are familiar with, and this -sometimes- causes conflicts between team members and leads to a lot of frustration for the person himself and his teammates.&lt;br&gt;
So, the idea here is trying to ask why, why it is done that way. Break complexities to understand them. Be comfortable unlearning things and relearning them again.&lt;br&gt;
This will indicate that you are mature enough to handle ambiguity and you are taking steps to fit into the process, not adjusting it.&lt;/p&gt;

&lt;h2&gt;
  
  
  3- Understand that people are different, not everyone is like you.
&lt;/h2&gt;

&lt;p&gt;When joining a new team especially a remote one, you will meet new people with different mindsets and different attitudes. Sometimes communication can be challenging and your role here is to handle this challenge by accepting that not everyone is like you, not everyone is thinking like you and not everyone is behaving like you.&lt;br&gt;
Understanding this helps a lot in breaking the ice between team members and leads to more collaboration and homogeneity in the team.&lt;/p&gt;

&lt;h2&gt;
  
  
  4- Do not have a quick solution, have quick questions.
&lt;/h2&gt;

&lt;p&gt;Listen, understand, and ask questions. &lt;br&gt;
Sometimes being the one who has a fast solution to everything is not a good indication.&lt;br&gt;
Matching problem patterns and applying the same solution you are familiar with does not work.&lt;br&gt;
So, ask questions quickly, understand requirements, think before proposing a solution, and question yourself 2 things:&lt;br&gt;
  1- Do I fully understand the problem? &lt;br&gt;
  2- Will this solution solve the problem?&lt;/p&gt;

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

&lt;p&gt;Starting a new job is a challenging task and starting a remote one is more challenging. So do your best to fit in, hold good communications channels with team members, and respect the current process.&lt;br&gt;
This will facilitate the whole process from onboarding to fitting in the day to day work.&lt;br&gt;
Thanks.&lt;/p&gt;

</description>
      <category>remotework</category>
      <category>leadership</category>
      <category>onboarding</category>
    </item>
  </channel>
</rss>
