My skills & experience

Current Employment

May 10th, 2021 - Present

Full stack developer at

Working at a fast paced tech startup, Hashnode offers various tools and solutions for software developers and technical writers in the online blogging space. It's where I started my blogging journey and it's GraphQL API's power my headless blog today.

  • Working closely with the design team to build accessible and interactive UI's for the product, powering a component library.
  • Building full stack features from the ground up, through from concept to conception. Working across UI/UX, AWS based infrastructure, and public/internal GraphQL API's.
  • Code review, internal documentation, product testing, issue crafting, and writing for our blogs are all part of the day to day activities.

Technical skills

Frontend UI/UX

My speciality is highly interactive, responsive, and accessible UI/UX. Having worked closely with design teams and product managers, I have developed a keen eye for a smooth user experience.

Example

Take the main navigation header on site as an example. As you scroll down the nav hides itself, but imediately comes into view when you scroll back up. This was designed to offer the following user experience:

  • Removing itself from view offers the full screen visibility to view content. Important for a site focused around content consumption.
  • The navigation links header call to actions and nav items are never far away, no need to scroll back to the top of the page to perform some action.
  • The navbar translate is also optional providing an accessible solution. If a user has set the prefers reduce motion option in their system to true, the navbar will remain fixed to the top.
Serverless backend

I have many years worth of experience working with tech stacks that make use of serverless offerings utilizing infrastructure such Amazon Web Services (AWS), Vercel, and Cloudflare.

The contact form on this site is powered using some of these offerings as I didn't feel the need to reach for an 'out of the box' form/email solution. Instead, I connected a few serverless offerings like AWS Lambda, AWS API Gateway, AWS Simple Email Serivce (SES) and Clourdflare Turnstile to make it happen.

Testing tools

Testing is a critical part of software development and I've managed to aquire plenty of experience with different forms of product/backend testing and tools. For example:

  • Product end to end (E2E) testing with Cypress in both local environments and in Continous Integration (CI) environments primarily with GitHub Actions.
  • Unit testing in both product frontend and API and infrastructure based backends primarily with Jest.
API's & Databases
file_type_sql

Experience working with both relational and non-relational databases, developing both public and internal API's that interact with these databases.

Example

Check out the Hashnode public GraphQL API which offers an expanding range of quries and mutations. I have had the opportunity to build a few of the mutations on offer here.

Soft Skills

Communication

If there's one thing my experience working remotely has taught me, is that communication is king. As part of a fully remote team at a fast moving startup, if you didn't communicate well you would end up behind.

  • I like to keep things simple and straight to the point. Clear and concise.
  • Ask questions often and early on to avoid issues down the line.
  • Better to over communicate than under communicate.
  • Writing articles has helped develop my text communication which is critical when working for a fully async remote team.
Code review

I have extensive experience reviewing code that goes live to thousands of active users. Here are some of the things I practice when reviewing code.

  • Understand the expectations before heading in to review.
  • Ask helpful open ended questions and phrase things in a clear but friendly tone.
  • Avoid string opinionated statements where possible and suggest alternatives.
  • Be empathetic to the person writing the code.
  • Always be open to learning something.
Organisation

Having personal and team organisation is essential for success. Personally I'm always creating personal to-do lists to keep my focus on what's important when new things are always popping up.

This organisation should extend to the team level. I'm experienced in using various project tracking tools such as Linear and Jira to create and develop issues/stories and projects. Also note taking tools like Notion to share notes and create internal documentation.

Time Management

Good time management as a remote developer is crucial and I like to think that's something I do well having worked with fast moving teams on time barred projects.

Being time conscious is crucial for being able to estimate correctly and work to that estimation. I often write out personal to-do lists for myself (alongside issue/projects to-dos) to help stick to timelines and keep focus.

Technical writing

I took up writing as a means to further my understanding of topics and share what I learned with others in a similar position to me. My blog was the reason I got the opportunity to interview for my first role, and to this date, I have more than 110,000 pageviews across all articles.

You can find my blog here