<?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: Samer Azani</title>
    <description>The latest articles on DEV Community by Samer Azani (@samizan).</description>
    <link>https://dev.to/samizan</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%2F25392%2Fde75e8e9-361f-4efa-863a-430a8bec890f.png</url>
      <title>DEV Community: Samer Azani</title>
      <link>https://dev.to/samizan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/samizan"/>
    <language>en</language>
    <item>
      <title>Expressions Everywhere</title>
      <dc:creator>Samer Azani</dc:creator>
      <pubDate>Tue, 23 Jul 2019 15:07:24 +0000</pubDate>
      <link>https://dev.to/samizan/expressions-everywhere-46e3</link>
      <guid>https://dev.to/samizan/expressions-everywhere-46e3</guid>
      <description>&lt;h3&gt;
  
  
  What is an expression?
&lt;/h3&gt;

&lt;p&gt;Basically, it is any valid unit of code that resolves to a value.&lt;/p&gt;

&lt;p&gt;Below is a list of some JavaScript terminology that has the word "expression" to them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Literal value expression&lt;/strong&gt;: any part of a statement or another expression that is to be used exactly as it is, like number 2 in the statement a = b + 2.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Variable expression&lt;/strong&gt;: is any symbol in a statement or another expression that represents a certain current value. An example is the variable b in the statement a = b + 2.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Arithmetic expression&lt;/strong&gt;: is a correct combination of numbers, operators, variables, and parenthesis. It resolves then to a certain value. Example is b + 2 in the statement a = b + 2.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;String expression&lt;/strong&gt;: is basically same as an arithmetic expression but evaluates to a string type and uses a string operator. Example:&lt;br&gt;
var mystring = 'alpha';&lt;br&gt;
mystring += 'beta';&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Logical expression&lt;/strong&gt;: expression that evaluates to true or false. Example:&lt;br&gt;
false || (3 == 4)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Assignment expression&lt;/strong&gt;: is the assignment of a literal, variable, or arithmetic expression to a certain variable. Example is a = b + 2.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Primary expressions&lt;/strong&gt;: are basic keywords and general expressions in JavaScript. Examples are this, new, super, Spread operator...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anonymous function expression&lt;/strong&gt;: is the assignment of a function not having a name to another variable. Anonymous function expressions are very similar and have almost the same syntax as function statements. Example:&lt;br&gt;
let foo = function() { ... };&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Named function expression&lt;/strong&gt;: is the assignment of a function having a name to another variable. Example:&lt;br&gt;
let foo = function add(a, b) { return a + b };&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Immediately invoked function expression (IIFE)&lt;/strong&gt;: is a type of function expression that is called immediately, and the variables called inside the function won't affect the surrounding code outside the IIFE. IFFE's can be either anonymous or named. Example:&lt;br&gt;
function myIIFE(){&lt;br&gt;
...&lt;br&gt;
})();&lt;/p&gt;

&lt;p&gt;Note: the last parenthesis is needed to invoke the function expression, whereas the first set of parenthesis prevents the function from being treated as a normal function declaration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Regular expressions&lt;/strong&gt;: are patterns used to match character combinations in strings. They are also objects.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to learn a new programming language or concept</title>
      <dc:creator>Samer Azani</dc:creator>
      <pubDate>Mon, 15 Apr 2019 08:33:09 +0000</pubDate>
      <link>https://dev.to/samizan/my-learning-workflow-2hhn</link>
      <guid>https://dev.to/samizan/my-learning-workflow-2hhn</guid>
      <description>&lt;p&gt;Last year I started learning react, and I want to share how I started doing this. Below is my process when I want to learn something new and get better at it. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Taking online courses and watching videos:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I enjoy these courses since I can pause and start on my own pace. Many online platforms allow taking notes or bookmarking frames. Others provide exercises that can be done and share with the instructor or other members.&lt;/p&gt;

&lt;p&gt;There are many platforms that offer online development courses. Some are short and specific, while others need more time and money investment.&lt;/p&gt;

&lt;p&gt;Examples: &lt;br&gt;
1) udemy.com&lt;br&gt;
2) coursera.com&lt;br&gt;
3) edx.org&lt;br&gt;
4) teamtreehouse.com&lt;br&gt;
5) udacity.com&lt;br&gt;
6) theodinproject.com&lt;br&gt;
7) codeacademy.com&lt;br&gt;
8) khanacademy.org&lt;br&gt;
9) pluralsight.com&lt;br&gt;
10) freecodecamp.org&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Doing a side project:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;As a start online courses are beneficial. However, it is only when I do a side project on my own that the new information really kicks in and I got used to it. As with learning other stuff, exposure is key. Even if it is a small code addition, getting exposed to the new concept helps a lot in information retention. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3. Reading the official documentation:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This is usually my first step when I start learning a new language or concept. Often, the documentation are well-written and broad. In addition, depending on the material there, I may opt in for taking an online course, watching videos, or reading articles.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4. Reading blogs posts and articles:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;While drinking coffee, I usually give myself half an hour in the morning to read about new stuff I'm learning. I read blog posts and discussions to get new ideas or clear some misconceptions. &lt;/p&gt;

&lt;p&gt;When coding, I often use stackoverflow, github discussions, and other blog articles that help me in the new territory.&lt;/p&gt;

&lt;p&gt;My favorites general blog platforms are:&lt;br&gt;
1) dev.to&lt;br&gt;
2) medium.com&lt;br&gt;
3) stackoverflow.com&lt;br&gt;
4) github.com&lt;/p&gt;

&lt;p&gt;There are many other blog platforms that are specific to certain fields, like css, javascript or html. I can not list them all since there are so many. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;5. Following people on Twitter:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This will allow me to follow the latest trends, discussions, and thoughts and get links to the latest articles and posts.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;6. Exposure to community/peers:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Meeting people who have experience in that field, exchanging knowledge, and discussing new trends or best practices is very important. This is either in my workplace like pair-programming or reviews, or external places like conferences and meetups.&lt;/p&gt;

&lt;p&gt;I am guilty of my shortcomings in attending conferences and meetups and am trying to improve this as soon as possible.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;7. Being consistent in learning:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Everyone has their own pace in learning, and I don't compare myself to others. I ususally learn a part or module every other day and implement it. Most importantly, I do not stress myself and keep it fun.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;8. Taking a break:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;When I feel overwhelmed with the new material, I take a break and do something else. The break may vary from couple of minutes to several days. When I feel relaxed and rejuvenated, I come back to the topic with a refreshed mind and new energy.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;9. Selecting enjoyable topics:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I usually select topics I enjoy doing, which is now related to web. Most of the times, I select a topic that compliments my existing knowledge but have not enough experience or exposure to.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;10. Sharing what I know:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;After having enough exposure and experience in the new material, it's time to give back and share when I can. This is with work colleagues, local communities, online blog posts and articles, and open-source projects. Open-source projects is one aspect, which I unfortunately lack, and am planning to improve in as well.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;11. Doing a real-time client project:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This will forge everything I learned and will expose me to new depths in the new language.&lt;/p&gt;

&lt;p&gt;At the end, it takes time depending on each person to fully understand a new topic.  That said, what's your process for learning something new?&lt;/p&gt;

</description>
      <category>learning</category>
      <category>career</category>
      <category>beginners</category>
      <category>discuss</category>
    </item>
    <item>
      <title>How to make good code reviews and win colleagues?</title>
      <dc:creator>Samer Azani</dc:creator>
      <pubDate>Sat, 21 Jul 2018 07:02:58 +0000</pubDate>
      <link>https://dev.to/samizan/how-to-make-good-code-reviews-and-win-colleagues-2dc8</link>
      <guid>https://dev.to/samizan/how-to-make-good-code-reviews-and-win-colleagues-2dc8</guid>
      <description>&lt;p&gt;Code reviews do not only improve the quality of code but are a great tool to learn from others and share experience. Doing and having code reviews is not an easy task. Pointing to or criticising your colleagues and peers is not something someone would like to do daily. Therefore, doing it in a constructive and positive manner would be beneficial to both the reviewer and reviewee.&lt;/p&gt;

&lt;h4&gt;
  
  
  Prepare:
&lt;/h4&gt;

&lt;p&gt;1) Adhere to coding guideline or make one with your team members.&lt;/p&gt;

&lt;h4&gt;
  
  
  Use the right words:
&lt;/h4&gt;

&lt;p&gt;2) Avoid using negative words and comments like "Remove", "Change", "Not needed", "No", "Bad", "I don't like this" etc...&lt;br&gt;
3) Don't use sarcasm.&lt;br&gt;
4) Avoid referring to code as "mine", "yours", or "theirs".&lt;br&gt;
5) Ask questions instead of giving orders. Use questions like "Do you think this would be better?", "What do you think about...?"&lt;br&gt;
6) Be positive. Don't say words like "I didn't do this", "It wasn't me" etc...&lt;/p&gt;

&lt;h4&gt;
  
  
  Clarify:
&lt;/h4&gt;

&lt;p&gt;7) Explain the reason behind your comment and how it will improve the code.&lt;br&gt;
8) Express yourself clearly and provide arguments. If needed, link to other code snippets or PRs.&lt;br&gt;
9) Ask for clarification if the code is unclear. If there are too many questions it would be better asking them in person.&lt;br&gt;
10) Be clear in the feedback. If a lot of discussion is needed it can be done in a different session.&lt;/p&gt;

&lt;h4&gt;
  
  
  Accept:
&lt;/h4&gt;

&lt;p&gt;11) Learn from the comments and how others tackle the same problem.&lt;br&gt;
12) Don't take it personal, code reviews are about the code and not you as a person.&lt;br&gt;
13) Accept all feedback. Whether you are a Junior or Senior take feedback positively.&lt;br&gt;
14) Be open to other ways of writing code or methods.&lt;br&gt;
15) Don't turn the feedback into an ongoing argument. You can always talk to the commenter in person.&lt;/p&gt;

&lt;h4&gt;
  
  
  Support:
&lt;/h4&gt;

&lt;p&gt;16) Be supportive. Help by pair-programming or showing an example.&lt;br&gt;
17) Be responsive. Provide more information or clarification in the same day or after one day.&lt;br&gt;
18) Be quick. Don't leave too many Pull Requests open. The codebase will grow, and the PR will stay behind.&lt;br&gt;
19) Give positive feedback when the PR is accepted, like using the Like emoji or saying words like "Great, well done".&lt;br&gt;
20) If a feedback helps, inform the reviewer how you find that helpful. Use words like "Good catch, thank you" etc...&lt;/p&gt;

&lt;p&gt;Having a constructive and positive code review will foster a healthy work culture and allow team members to express themselves freely without the worry of shame and negative feedback. This will create an environment where team members feel respected, valued and productive. At the end it will allow an agile environment, knowledge sharing and growth.&lt;/p&gt;

</description>
      <category>codereviews</category>
      <category>productivity</category>
      <category>programming</category>
      <category>culture</category>
    </item>
    <item>
      <title>Joining a Startup? A Personal Experience.</title>
      <dc:creator>Samer Azani</dc:creator>
      <pubDate>Fri, 06 Jul 2018 08:27:06 +0000</pubDate>
      <link>https://dev.to/samizan/joining-a-startup-a-personal-experience-67g</link>
      <guid>https://dev.to/samizan/joining-a-startup-a-personal-experience-67g</guid>
      <description>&lt;p&gt;I was fortunate enough to be part of a highly successful startup, which was later on acquired by a large international firm. This acquisition was the first of its kind in the Middle East and a big step forward in my career and personal life. Although I was not a co-founder or a stakeholder, I was fortunate enough to discover the world and dynamics of how startups function. I would say it was both stressful and enjoyable. You do learn a lot. Whether about new technologies where you get the chance to apply them, or about team members and about yourself.&lt;/p&gt;

&lt;p&gt;Regardless whether a startup succeeds or fails, it is truly a very enriching and fulfilling personal experience. Of course not all startups share the similar work culture and circumstances, but below are my two cents regarding my personal experience.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Befriend adaptation and change
&lt;/h4&gt;

&lt;p&gt;Working in a startup means experimenting with ideas and concepts. Some ideas do have an impact, some on the other hand do not. That is why it is important when having a target, to set out a plan and to stop at certain time intervals during execution, to reflect about the current situation, and to decide whether or not to continue with the plan or create a new one.&lt;/p&gt;

&lt;p&gt;Change is present everyday and every time. Do not expect to a have a constant work environment. Sometimes you and your team will acknowledge that something in the big picture is not quite right, so a lot of change will be needed. That in turn will be reflected in the choice of technology you use, and the approach regarding the current issue at hand.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Develop a can-do attitude
&lt;/h4&gt;

&lt;p&gt;When you stumble upon a problem relax and be confident about solving it. The situation is new, the problem is complex, lots of people depend on you, but hey - you can do it. Thinking about the problem as a whole will indeed seem hard, but by dividing it into smaller issues or by setting out a plan, that will certainly help you in keeping your confidence high and in allowing you to concentrate on the problem itself and not about your ability to overcome it.&lt;/p&gt;

&lt;p&gt;Divide and Conquer is a really helpful strategy in this situation. Another way to develop a can-do attitude is to regularly discuss the situation and issue with others. May it be your colleague, your CEO, the whole team - what matters is to get different opinions on the matter and reach a collective plan to tackle it.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Learn a lot
&lt;/h4&gt;

&lt;p&gt;Having change as your new friend with a can-do attitude will enable you to learn a lot. You will have a chance to learn something new everyday, whether it is a technical concept, communication style with team members, or even learn about your personality.&lt;/p&gt;

&lt;p&gt;Since the technology used might be new and the features change often, you will learn new technologies, prototype a lot, and expand your knowledge set in other domains used in the startup. For example, I did not have previous experience about scaling and about website performance issues. After reaching a high level of user visits, that issue became our number one concern and all the team shifted to address the requirement. That is how I, and everyone else in the team, learned about scalability, performance, usability and much more.&lt;/p&gt;

&lt;p&gt;You will also get the chance to discover yourself, your personality and how you deal with people around you in difficult situations. It will be an eye-opener and a great chance for personal growth and maturity.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Gain new friends and family
&lt;/h4&gt;

&lt;p&gt;Working in a startup means interacting with people around you all the time. Whether they are colleagues, the CEO and management, entrepreneurs, or other networks - you will need to deal with people everyday. By doing so, you will meet new faces every other day and you will eventually make new acquaintances and friends.&lt;/p&gt;

&lt;p&gt;In addition, you and your team will work very closely to each other on a daily basis. A startup is not in that sense a typical work environment, where everyone knows their social boundaries in the office. A startup is more family-based, where you and your team are driven by one target, one plan, and one collective effort with all the highs and lows that come with it.&lt;/p&gt;

&lt;h4&gt;
  
  
  5. Share your private life
&lt;/h4&gt;

&lt;p&gt;By gaining new friends and family, you will have to say goodbye to some of your private life. You and your team will work very closely to each other, interact frequently, and share aspirations, hopes, good and bad times. Eventually, everyone will know whats going on with everyone else, and you will end up sharing some of your private life.&lt;/p&gt;

&lt;h4&gt;
  
  
  6. Expect to work on holidays and weekends
&lt;/h4&gt;

&lt;p&gt;The startup workplace is very dynamic. Sometimes setting tough deadlines and committing to it, sometimes showing a prototype to an investor or VC, or other times encountering a problem and needing to address it as soon as possible. Otherwise the user base will decline instead of grow. All of these factors requires to have an open mindset and to work in unconventional times. Late night, weekends, public holidays - no matter the day be prepared to receive a call from a fellow teammate informing you about an issue you need to solve at that moment.&lt;/p&gt;

&lt;h4&gt;
  
  
  7. Work in a highly-motivated environment
&lt;/h4&gt;

&lt;p&gt;In addition to the dynamics of a startup, startup teams are usually largely motivated. They have a common goal to reach to, they set-out a plan with sprints and retrospectives, they are armored with a can-do attitude, and they celebrate success and minimize losses. You will get a highly motivated, positive and enthusiastic environment.&lt;/p&gt;

&lt;h4&gt;
  
  
  8. Become more social and communicative
&lt;/h4&gt;

&lt;p&gt;You will need to interact and talk to different people almost everyday. Because of the agile and dynamic type of startups, good and clear communication is crucial to the success of the product.&lt;/p&gt;

&lt;p&gt;For example, if a feature is unclear or has missing information you will need then to reach out to your fellow team members. You will need to take the initiative and and be ready for the follow up.&lt;/p&gt;

&lt;h4&gt;
  
  
  9. Enjoy a lot
&lt;/h4&gt;

&lt;p&gt;Startups are stressful. The pressure of deliverability, the constant change, the social aspects of dealing with your team members on an individual level, and the unforeseen and unknown future, all adds up to the stress of working in a startup. But in this journey you will definitely encounter pleasant and enjoyable moments, where you will certainly cherish unpredicted outcomes and situations.&lt;/p&gt;

</description>
      <category>startup</category>
      <category>experience</category>
      <category>career</category>
    </item>
  </channel>
</rss>
