<?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: Musaab</title>
    <description>The latest articles on Forem by Musaab (@sabby).</description>
    <link>https://forem.com/sabby</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%2F40135%2F3077c272-a0d1-45a3-bbdf-e0a099eec8d0.jpg</url>
      <title>Forem: Musaab</title>
      <link>https://forem.com/sabby</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sabby"/>
    <language>en</language>
    <item>
      <title>Building the Chingu Developer Network, Part 1: Decisions</title>
      <dc:creator>Musaab</dc:creator>
      <pubDate>Wed, 08 Nov 2017 08:37:05 +0000</pubDate>
      <link>https://forem.com/chingu/building-the-chingu-developer-network-part-1-decisions-kpe</link>
      <guid>https://forem.com/chingu/building-the-chingu-developer-network-part-1-decisions-kpe</guid>
      <description>&lt;h4&gt;
  
  
  Collaborating to facilitate more collaboration.
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--89e1REp2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/505/1%2Ae1FMzKXvdfPn5OJrKdK7hA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--89e1REp2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/505/1%2Ae1FMzKXvdfPn5OJrKdK7hA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Preface
&lt;/h3&gt;

&lt;p&gt;While browsing Medium, I came across &lt;a href="https://medium.freecodecamp.org/the-freecodecamp-alumni-network-a-homegrown-mentorship-network-for-fcc-alumni-529e4531c34f"&gt;this&lt;/a&gt; article which was introducing the &lt;a href="https://www.fcc-alumni.com/"&gt;FCC Alumni Network&lt;/a&gt;. I took an interest in it (even though I never used &lt;a href="http://freecodecamp.org"&gt;FCC&lt;/a&gt;) so I opened it and noticed that &lt;a href="https://medium.com/u/5fdd9f72821d"&gt;peterWeinberg&lt;/a&gt; mentioned something called the &lt;em&gt;“Chingu Cohorts”&lt;/em&gt; which supposedly helped facilitate group projects. Even though I wasn’t even completely sure what it was yet, I found myself signing up for the next “&lt;em&gt;cohort&lt;/em&gt;” called &lt;em&gt;“Voyage-2”&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;What did all of these words mean?&lt;/p&gt;

&lt;p&gt;In short, &lt;strong&gt;Chingu&lt;/strong&gt; is a community of developers who are constantly working on improving themselves. The &lt;strong&gt;cohorts&lt;/strong&gt; are groups where like-minded people team up with others who are at a similar level and work on something interesting together to improve their skills. The cohort I was joining happened to be called &lt;strong&gt;Voyage-2&lt;/strong&gt; since the cohorts are sometimes also referred to as voyages.&lt;/p&gt;

&lt;p&gt;The idea is simple but the implications of the way it was implemented are profound.&lt;/p&gt;

&lt;p&gt;This isn’t like those side projects you’re always starting and never finishing. Having a team means that you are held accountable for any work you do (or don’t do) which serves as motivation to actually put in the time and effort. If you were working on a solo learning project you would pick whichever languages/frameworks you wanted to learn whereas with a team you would discuss it first. This way, not only are you more likely to pick something useful (such as whichever framework is currently trending up) but you are also gaining experience from the discussion itself which is especially useful for juniors.&lt;/p&gt;

&lt;p&gt;There are many other benefits to be had from the Chingu cohorts and I will try to cover them in a separate article sometime in the future.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Project
&lt;/h3&gt;

&lt;p&gt;Ok, so if Chingu already exists what exactly are we working on? What problem are we trying to solve?&lt;/p&gt;

&lt;h4&gt;
  
  
  How on earth has this worked so far?
&lt;/h4&gt;

&lt;p&gt;Chingu is currently managed &lt;em&gt;manually&lt;/em&gt; by &lt;a href="https://medium.com/u/b0f009f22115"&gt;Chance Taken&lt;/a&gt; using Google Forms, spreadsheets, and emails. If you are accepted into a cohort, Chance &lt;em&gt;manually&lt;/em&gt; sends you an email which explains how it works, what the next steps are, and gives you a few useful links to look at. A little while after that, Chance &lt;em&gt;manually&lt;/em&gt; sends out more emails to the PM’s which are selected by a &lt;em&gt;manual&lt;/em&gt; process of evaluation. A few more &lt;em&gt;manual&lt;/em&gt; emails. The cohort starts, Chance creates a Slack team and everyone is &lt;em&gt;manually&lt;/em&gt; invited to join. The teams are split up &lt;em&gt;manually&lt;/em&gt; and each assigned a PM after which the team channels are also &lt;em&gt;manually&lt;/em&gt; created. Chance also has to &lt;em&gt;manually&lt;/em&gt; add everyone to the &lt;a href="https://github.com/chingu-coders"&gt;Chingu Org&lt;/a&gt; on Github and &lt;em&gt;manually&lt;/em&gt; create repositories for each team then &lt;em&gt;manually&lt;/em&gt; add everyone and give them the appropriate permissions.&lt;/p&gt;

&lt;p&gt;Did you catch it? Yeah… There’s definitely room for improvement.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OAKZSSJg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/720/1%2AJ7uozbOFdRZqKaM9rd8qSA.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OAKZSSJg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/720/1%2AJ7uozbOFdRZqKaM9rd8qSA.gif" alt=""&gt;&lt;/a&gt;Accurate depiction of Chance working on the cohorts.&lt;/p&gt;

&lt;h4&gt;
  
  
  Assemble the team
&lt;/h4&gt;

&lt;p&gt;I was interested in working on a solution to this problem so I reached out to Chance and he put me in contact with &lt;a href="https://medium.com/u/5705e992ca04"&gt;Andrés Pérez&lt;/a&gt; who was already working on a solution but he was working on it alone (and using Go without a framework for some reason) so he wasn’t able make much headway. You can read about his struggles &lt;a href="https://medium.com/chingu/mayday-chronicle-of-a-fail-foretold-a0a7187a2154"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We reached out to &lt;a href="https://medium.com/u/b64c193af9"&gt;Vampiire&lt;/a&gt; who had been working on a system called “&lt;a href="https://github.com/Chingu-Core-Components/AutoBot"&gt;AutoBot&lt;/a&gt;” to monitor team progress and moderate it through automatic interaction with Chingu teams on Slack. This came after his Voyage 1 project The “&lt;a href="https://github.com/Chingu-Core-Components/ChinguChimp"&gt;Chingu Chimp&lt;/a&gt;” which was a bot that gives Chingu users the ability to update and share their Chingu profiles with one another from within Slack. Vampiire’s ultimate vision was to convert all of the manual work that Chance had been doing (from initial application to project completion) into an automated workflow that would allow Chingu to grow well beyond its current (human-limited) capacity using an integrated system of bots that work across GitHub and Slack. His unhealthy obsession with Slack resulted in an attempted “Slack front-end” for Chingu whereas the reality is that Chingu needs a proper web-client like the one proposed by Andrés. Vampiire’s expressed an interest in working on the platform with us so we added him to the team.&lt;/p&gt;

&lt;p&gt;We were ready to start.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--C96b_B_r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/http://giphygifs.s3.amazonaws.com/media/mSK26uXsLMwwg/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--C96b_B_r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/http://giphygifs.s3.amazonaws.com/media/mSK26uXsLMwwg/giphy.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tough Decisions
&lt;/h3&gt;

&lt;p&gt;Now that the team was ready, we needed to figure out which technologies we were going to use, what features we were going to implement, and what they would look like.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Stack
&lt;/h4&gt;

&lt;p&gt;After some discussion and research, we ended up with this stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;li&gt;NodeJS (ExpressJS)&lt;/li&gt;
&lt;li&gt;GraphQL (Apollo)&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We decided to go with SQL over NoSQL because we anticipated that, based on the features we had envisioned, we would need to be able to query the data utilizing somewhat complex relations which is tedious (but possible) with NoSQL. In the future we may end up storing some data in a NoSQL database but for now we will mainly be using PostgreSQL.&lt;/p&gt;

&lt;p&gt;NodeJS made sense because, aside from all the benefits which you could easily read about elsewhere, it is the framework that is taught in FCC and we thought it would benefit our community (which is mostly made up of FCC campers) if we used it and documented our process. We chose React for the same reason even though none of us have any actual experience using it.&lt;/p&gt;

&lt;p&gt;You shouldn’t always just pick whichever framework you’re most experienced in. Instead, you should try to decide by assessing the rest of the stack, the problem, the desired results, and the current trends. There are many other factors that can also affect the decision. Having said that, don’t stress over it too much.&lt;/p&gt;

&lt;p&gt;We chose to design our API based on GraphQL because we believed it to be a better alternative to REST and it could serve as a good way to introduce the Chingu community to it as it is likely to end up being widely adopted moving forward. (&lt;a href="https://medium.com/u/5705e992ca04"&gt;Andrés&lt;/a&gt; was the genius behind this decision.)&lt;/p&gt;

&lt;h4&gt;
  
  
  The Database
&lt;/h4&gt;

&lt;p&gt;With the stack decisions finalized, we moved on to the next step which was designing the database.&lt;/p&gt;

&lt;p&gt;I took up the task of coming up with a basic schema which we would then review together and modify. Each of us is in a different timezone so this was the best approach we could come up with.&lt;/p&gt;

&lt;p&gt;I also happen to have convinced those two that I know what I’m doing so they decided to let me handle this.&lt;/p&gt;

&lt;p&gt;Fools.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7NRqi9IU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A3SywfmSF_nYbYVlK1TIVcw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7NRqi9IU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A3SywfmSF_nYbYVlK1TIVcw.jpeg" alt=""&gt;&lt;/a&gt;First database draft. Maybe I went a little overboard?&lt;/p&gt;

&lt;p&gt;After I finished the initial draft, we reviewed it together, and made some modifications (obviously) before we finalized it.&lt;/p&gt;

&lt;p&gt;Doing this first was a good choice because it made it very clear what models we would need to create in our app and how we would design our GraphQL schema.&lt;/p&gt;

&lt;p&gt;Visualizing the database like this also helped us come up with some cool features that we then included in the design.&lt;/p&gt;

&lt;h4&gt;
  
  
  The MVP
&lt;/h4&gt;

&lt;p&gt;Implementing all those features in one go would be a huge mistake and would take a long time so we scaled it back and decided on a couple of things that we wanted to work on first.&lt;/p&gt;

&lt;p&gt;We chose to start with user profiles and work outwards from there once we get feedback from our community members on what they actually want.&lt;/p&gt;

&lt;p&gt;Only thing left was to design the thing.&lt;/p&gt;

&lt;p&gt;Problem is, none of us are actually any good at design. If you know anything about design and are interested in helping, please reach out to us!&lt;/p&gt;

&lt;p&gt;Anyways, thank god for &lt;a href="http://moqups.com"&gt;Moqups&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LKU7rFxw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/999/1%2ApE7iBVXI6D0P7PfLDZvTqQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LKU7rFxw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/999/1%2ApE7iBVXI6D0P7PfLDZvTqQ.png" alt=""&gt;&lt;/a&gt;Don’t judge. We never said it would look good.&lt;/p&gt;

&lt;p&gt;Yes, it’s not the best looking interface out there but it’s a start. We will hopefully get an actual designer to look at it and improve it with feedback from the MVP.&lt;/p&gt;

&lt;h3&gt;
  
  
  Next Steps
&lt;/h3&gt;

&lt;p&gt;Now that we have figured out what it is we want to do, which technologies we’re going to use to do it, and how we want it to look, it’s time to get started actually coding it.&lt;/p&gt;

&lt;p&gt;This is going to be a series so make sure you follow the &lt;a href="https://medium.com/chingu"&gt;Chingu&lt;/a&gt; publication to get updates on future parts as they are added!&lt;/p&gt;

&lt;p&gt;If you think I’m an idiot for sharing a pic of an early draft of the database schema or if you want to tell us to maybe use a little bit less blue in the design, feel free to leave a comment below.&lt;/p&gt;




</description>
      <category>apollo</category>
      <category>graphql</category>
      <category>fcc</category>
      <category>node</category>
    </item>
    <item>
      <title>6 Tips To Help You Improve Your Craft</title>
      <dc:creator>Musaab</dc:creator>
      <pubDate>Wed, 27 Sep 2017 14:01:28 +0000</pubDate>
      <link>https://forem.com/chingu/6-tips-to-help-you-improve-your-craft-59i0</link>
      <guid>https://forem.com/chingu/6-tips-to-help-you-improve-your-craft-59i0</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F0%2ABzhBOI0zQu78XJac.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F0%2ABzhBOI0zQu78XJac.jpeg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“It never gets easier, you just get better”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Lifelong_learning" rel="noopener noreferrer"&gt;Lifelong learning&lt;/a&gt; is the ongoing, voluntary, and self-motivated pursuit of knowledge for either personal or professional reasons.&lt;/p&gt;

&lt;p&gt;I have listed below some tips and advice to help you with your pursuit of knowledge. If you have any advice of your own please do share it below. I am by no means an expert on the subject and all of this is based on my own experience so feel free to scoff at it and educate me with a comment.&lt;/p&gt;

&lt;p&gt;Regardless, here are some tips that you may find useful:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Be selective about where you work
&lt;/h3&gt;

&lt;p&gt;This is, in my opinion, the most important tip.&lt;/p&gt;

&lt;p&gt;Your work environment is where you will spend a good portion of your day so a bad environment is essentially just a waste of time. It also influences your mental state when you are not working. For example, if your work day was full of stress then you are likely to remain stressed for the rest of the day which means you will not be able to effectively study or practice anything when you get home.&lt;/p&gt;

&lt;p&gt;There are many factors that contribute to a bad work environment such as comfort, the team, the management, the learning opportunities, and even the project or company mission itself. You should try to surround yourself with motivated and helpful people who encourage you to keep moving forward. What you are working on doesn’t need to be your life’s calling but you should at least be interested in it so as not to lose your passion.&lt;/p&gt;

&lt;p&gt;It isn’t always possible to get the job you want and everybody has their own unique circumstances so you will have to compromise at some point but be careful not to hurt yourself in the long run.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Be selective about what you study
&lt;/h3&gt;

&lt;p&gt;At first, this strikes you as counter-intuitive because we’re pursuing knowledge so it makes sense to go after all the learning opportunities available to us.&lt;/p&gt;

&lt;p&gt;This is wrong.&lt;/p&gt;

&lt;p&gt;Essentially, what we’re after is not &lt;strong&gt;&lt;em&gt;lifelong learning&lt;/em&gt;&lt;/strong&gt; but rather &lt;strong&gt;&lt;em&gt;effective lifelong learning&lt;/em&gt;&lt;/strong&gt;. You could probably read 20 books in a day but how much of that information are you really going to retain? You could take all the web development courses you find on Udemy but how much time would you waste going over the same material? It’s possible to be a professional music producer and a designer but that doesn’t mean you should be learning all of it at the same time.&lt;/p&gt;

&lt;p&gt;I understand the urge to pursue all of your interests but take things one at a time (or at least alternate effectively.) It would actually take you longer to achieve the level you want if you try to learn everything all at once and it’s likely to cause you a lot more stress which could make you lose motivation.&lt;/p&gt;

&lt;p&gt;Take the time to research what it is you want to study and pick out a few useful resources to get yourself started. Constantly evaluate yourself, your learning material, and your goals. Make adjustments as you progress. Once you reach a goal, set a new one. Improve your process and keep going. You have the time.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Pace yourself
&lt;/h3&gt;

&lt;p&gt;Knowing &lt;strong&gt;what&lt;/strong&gt; to study isn’t all that matters. You also need to know &lt;strong&gt;when&lt;/strong&gt; to study.&lt;/p&gt;

&lt;p&gt;If you have 6 hours to spare in a day, you should set aside at least two hours for relaxation or fun. Don’t overwork yourself. Your brain needs to rest too.&lt;/p&gt;

&lt;p&gt;Trying to maximize the amount of time you spend studying isn’t always the best approach to maximizing results.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Practice
&lt;/h3&gt;

&lt;p&gt;The best way to get information to stick is to put it into use.&lt;/p&gt;

&lt;p&gt;Side projects are a great way to put your new skills into practice. You are free to experiment and make as many mistakes as you like.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fail then learn.&lt;/strong&gt; This is how you grow.&lt;/p&gt;

&lt;p&gt;If you can’t think of a side project to work on, ask a friend or colleague for an idea. You could even freelance. You don’t even need to actually get the job, just take the idea and use it to practice.&lt;/p&gt;

&lt;p&gt;Balance your time between studying new things and practicing them.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Keep the momentum going
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Don’t stop.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You need to study regularly and consistently to stay motivated and excited about what you are doing and the progress you’re making.&lt;/p&gt;

&lt;p&gt;Skipping a whole week, for example, could be devastating because at the end of that week you might not be motivated enough to get back to studying. That week could easily stretch into a month and, before you know it, you’ve forgotten a lot of what you were studying so you’re going to have to waste even more time reviewing.&lt;/p&gt;

&lt;p&gt;Even if you only manage to spare a few minutes, use them. This way you can keep your momentum going.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Don’t build a schedule, form a habit
&lt;/h3&gt;

&lt;p&gt;This one is difficult because it takes time but it is extremely important and it ties in with the previous tip.&lt;/p&gt;

&lt;p&gt;In order to keep your momentum going you may decide to set a schedule for yourself to stay on track. For example, everyday after work you set aside an hour to relax before you start studying for three hours. Being specific like this could hurt your motivation.&lt;/p&gt;

&lt;p&gt;By trying to structure it like this you will be turning it into a chore. It is your passion, not laundry. Ease yourself into a habit by being less specific. Instead of “I will study for three hours every day after work”, try “I will study a bit every day”. This way if feels less like a chore.&lt;/p&gt;

&lt;p&gt;Of course there’s more to forming a habit than just that but I can’t really give you a foolproof method which is why it’s difficult. However, it is the key to making progress.&lt;/p&gt;

&lt;p&gt;Hopefully some of these tips help you make progress with your own goals and, if you have any tips of your own, please share them below.&lt;/p&gt;

&lt;p&gt;If you found this helpful, drop a like and consider sharing it.&lt;/p&gt;




</description>
      <category>lifelessons</category>
      <category>inspiration</category>
      <category>productivity</category>
      <category>life</category>
    </item>
  </channel>
</rss>
