Full-Stack Impostor Syngineer šŸ¤·

Richard Essien
11 min readNov 19, 2020

An Impostor is among us! Oh wait, is it me?

To add some context ā€” I recently had the opportunity to join a few other developers and some data scientists on a project for a pretty big organisation, Human Rights First. HRF is an independent, international organisation that advocates for human rights. HRF holds that the U.S. should be at the forefront in the struggle for human rights and therefore, encourages corporations, companies and U.S government agencies to respect human rights and the laws that are in place to protect them.

HRF in implementing this directive, approached my team for help. They were intent on finding a way to help those who are interested, as well as those who are not yet interested, see and understand why they should be concerned. A way to show how human rights are impacted across the States, is to map reported instances of police use of force throughout America ā€” an issue that has sparked scattered global protests. Visually communicating this impact ā€” to, especially, those that are not yet concerned so that they may understand why they should be ā€” was the problem my team was given the opportunity to help solve.

We convened with the projectā€™s Stakeholder and confirmed that we would be pouring our focus on a map ā€” that was already in place but incompleteā€Šā€” and a couple of other data visualisations. Myself, I was to find one of the other ways in which data should be displayed so that a user can judge the magnitude or lack thereof, of the impact of police use of force on human rights. Again, in a way that was all of brief, informative yet easy to glean the necessary information from.

It was a unanimous decision that the team would add; markers to various locations on the map ā€” that when clicked on would display related information about an incident or incidents for that location, a bar chart and a pie chart. I was to implement the bar chart. Starting this journey almost a year ago in January 2020, nearly every moment since then was spent preparing for this moment ā€” the opportunity to use my technical skills to add value to both a team and a real world product.

However, this is when everything in me decided to turn against me. My evil alter ego returned, and decided to wake up and stir fear within me. I began to doubt myself heavily, and think things like;

ā€œLol you havenā€™t touched code in how many days since your CS unit? ā€

ā€œWhat can you actually do? You havenā€™t touched real React in months!ā€,

ā€œMannn you been doing this almost a year since January and you still donā€™t know shxt!ā€

ā€œEveryone on the team sounds like they know what they are doing except you!ā€

Let me tell you, I was ready to flex back to CS, I did not feel as though I had what it took to be a part of that team. However, I hung in there, I was determined. Recently, when I do have free time (or procrastinating), I started watching Naruto again, a Japanese Manga. He is portrayed as the underdog with no actual talent as a Ninja yet he is always going on about his dream to one day become Hokage (the top Ninja) of his village. This was his dream so that one day everyone who ever belittled him and said he would never be anything would finally have to acknowledge and respect him.

I mentioned Naruto because I found myself, in my programming journey, being able to relate to Naruto in his determination to become Hokage. I am determined to become an all-start programmer and become a Full-Stack Software Engineer. In relating to Narutoā€™s story, as a mostly serious joke, I have started saying I will become the next ā€˜Codekageā€™.

And so I hung in there, my team got together and created a feature release that was broken down into several user stories. The release was; ā€œAs a user, I can see the impact of police use of force in communities across the Statesā€. User stories are how we break the release down further so we are clear on exactly what to work on and have shippable product to help us measure progress towards the main goal. One user story for instance was, ā€œAs a user, I can see pins on the map where incidents of police use of force were reportedā€. Another was, ā€œAs a user, I can click on a pin and it will show me information about the incident(s) reported for that locationā€. Yet, another user story, ā€œAs a user, I can see how many incidents per locationā€ ā€” this the one that I worked on, see below.

Trello card showing the work that was charged to me as a Front-End Developer (represented in blue for Front-End). I implemented a bar chart using amcharts in React. The data was pulled in using a GET request to our Data Science API and a helper function written by two of my teammates on who were also on the Front-End.

The Full-Stack Impostor Syngineer Strikes Again ?

It seemed that HRFā€™s map component was our teams most tedious feature to work on. For maybe a couple days, we couldnā€™t understand for the life us, why there were only two incidents showing up on the map, as opposed to the one hundred plus incidents that are in Data Scienceā€™s API. The DS Engineers along with another one of our teammates, that served as the communication bridge between the Web team and DS, scoured the API source and realised that all of the incidents were given the same values for the latitude, longitude, city and state object keys.

That was an easy fix for them. However, in the midst of all that, during a team zoom call, there was a colleague on the DS team who had an announcement for all of us. Unfortunately, he felt he did not yet have the technical expertise to continue to help this project along and so will go on a hiatus and flex back to the next Computer Science cohort. I knew how he felt, he verbalised exactly how I often feel, even at that time before he mentioned anything. He was one of the ones I thought for sure knew what he was doing ā€” the technical jargon that came from him when he spoke and the precise and clear questions he asked about things I have yet to know anything about ā€” I was sure he was very proficient. Perhaps he is and that darned Impostor Syndrome had itā€™s way with him.

We went around to each person in the zoom and all had positive parting words for him. When it came to my turn to say something, with out any warning to even myself, I spoke words that I myself have heard others say to me in the past, the many times I felt like he did, and that I also needed to hear as well. Dramatic unfortunately, but holding back tears, with a shaky voice, a spiel departed from my mouth,

ā€œI know what youā€™re going through man, if you choose to go on hiatus you know what is best for you. But I mean Iā€™ve been there plenty of times. Iā€™ve cried to every Team Lead Iā€™ve had feeling like I donā€™t have what it takes and telling them Iā€™m withdrawing. But, theyā€™ve all managed somehow to convince me to stay and keep fighting and to remember why Iā€™m here. Iā€™m glad I listened to them or else I wouldnā€™t have made it here, Iā€™ve come so far. If you would allow me to give you advice man Iā€™d tell you donā€™t quit, just put in the time and practice.ā€

Those words left me and spirited away into the atmosphere before I snapped out of it. I guess it was just me fighting my own Impostor again.

However, there were other technical challenges. One big but small one being that the code base we were working in was built by a previous team. So, there was one small bug that popped up. The footer component that was built would not remain in place at the bottom of the page in each component. I found where it was being rendered and moved it to the outer main component, also giving all current components bottom margins to add a bit of space between them and the footer. There was something else, it is not really a bug, more of a pet peeve per say. I dislike seeing the year in the copyright footer text hard-coded. There is a way to have it update programmatically as the years go by, see my code below.

The Full-Stack Impostor Syngineer: Boss Level!

The hard part! This is where Impostor Syndrome hit me the hardest. Aside the fact that I have not touched React in a couple months by this time, I had also forgotten how to pass data through props. Let me not fail to mention I have never used amcharts either. My I.S. was belittling me very loudly because well, I should know how to do all this by now right?! I was panicking inside and procrastinated for a few days under the guise of, ā€œI was getting caught up on amcharts docs, also waiting to speak with the team on what data I should pull inā€. I could only use that excuse for so long! As far as implementing and getting the bar chart to render, pretty easy, once I actually went through the docs. I laugh because I remember seeing this a random tweet a few hours later saying, ā€œRead the documentationā€. Below is how I implemented amchartsā€™ bar chart using a react hook ā€˜useLayoutEffectā€™ and passing in the API data as props.

My implementation of amcharts bar chart using react hooks and passing in data as props.

I then, in an external file, used two of my teammates helper functions ā€” after they explained to me how they work ā€” to pull in the data I needed, state names and incident count per state.

Here I used two helper functions {useIncidents} by teammate Nic and {useStateCount} by teammate Maria to pull in state names and their incident counts.

The end resultā€¦

amchart Bar Chart showing the number of police use of force incidents reported per state

A bar chart that shows the amount of police use of force incidents reported per state. Not bad! I did that! If I was able to continue working on it, I would add;

  • Semantic titles to the X and Y Axes
  • Ability to filter number of incidents by date range

Though it can be improved, it currently meets our feature release specs and serves itā€™s intended purpose. It is brief, easy to read, a user can grab the information they want quickly.

Take That, Impostor Syndrome!: The Epilogue

My bar chart component was actually the last user story to be delivered before handing over our feature release to the projects Stakeholder. The full release including the functionality our team added to the map;

  • Location markers and clusters that when clicked ā€” pull up incident data relative to that area
  • A pie chart representing a percentage of particular types police use of force that has been used in incidents throughout the States
  • A bar chart that shows how many incidents were reported per state; see below.

Though the above product meets MVP for the time that we had, in the future, given the chance, I would like to improve on some user stories. For instance;

  • Having the incident information that pops up on the side of the screen, instead pop up in a tool-tip with a read more button that will then bring up a modal
  • Adding filter functionality to directly search by city, state, keywords and even date ranges in the search input
  • The team also spoke about a feature that saves a list of queries that a user searched for that session
  • Giving userā€™s the ability to sign-in and save/bookmark incidents
  • Giving userā€™s the ability to report incidents

I foresee small challenges adding some of the functionality above; figuring out ways to secure and store a users information as personal informations may be collected as users create accounts. I can foresee there being difficulty finding a way to verify whether reported incidents are factual or fictitious. We foresaw an issue trying to match police reports per incident with pedestrian reports, if I heard correctly (do not quote me) ā€” police are not actually required to file reports for such incidents that are being inquired about and so not many departments do file reports, and if they do ā€” they might be biased.

However, to my shock, but not to my shock, the Stakeholder was very impressed with what we delivered. From my understanding he was pleased enough to relay the message twice, because our Project Manager informed our team as much, then later on our Team Project Lead relayed a similar message to us as well.

I enjoyed this experience. I learned from this experience. My first time working both remotely, and in a cross functional team including; Front-End Developers, Back-End Developers, and Data Scientists. Being able to work with various personalities and working styles has made me feel like I can definitely work well within any team going forward. I learned a bit about myself in this process, I indeed have grown and should refrain from underestimating myself in the future. I learned it is better to ask for help rather than struggle longer than one should, trying to solve a problem on their own. Time is of the essence when you are working on a team with others and deliverables are involved.

However, back to the first question. Am I the Impostor? I will say this, mostly speaking to myself, but for anyone else that needs to hear it. Impostor Syndrome disturbs both newbies and experienced Developers alike. How, long you let it stay whenever it comes knocking is up to you as an individual. One way I battle it is remembering that the only difference between where I am and the person that is where I want to be, is time. The ones that I see as successful, failed more times than I have even tried, read that again. As you learn, build stuff, add features to your portfolio website, build mock sites and apps for existing and fictional businesses. Developing your coding skills is the same as developing your body in the gym, we just have to consistently put in the reps.

That said, no, I am not an impostor. Though I have a ways to go, I have made it a long way from where I started. Learning excites me and my passion to one day become Codekage still burns. I will build projects, I will put in the reps as much as needed. I make a promise to you, and to myself, and to those rooting for me, to be a stronger coding ninja by the time we meet again.

Naruto walking away and waving bye

On that note, I bid you adieu, šŸ„‚ šŸ¤˜.

--

--