Work Experience at Ascential

Dublin, Ireland
July 2021 – October 2022

Work in a SCRUM team of 5 engineers, QA, scrum master, product manager, engineering manager and collaborate among other development teams working on the SaaS platform. The platform which is called Digital Shelf, delivers most accurate key e-commerce insights and designed to help global brands to outmaneuver their competition.

As a senior engineer, I have mentored junior and fellow developers by providing feedback end designs and through code-reviews.

By the end of December 2021, one of the other Senior ‘full-stack’ engineer was assigned to another team and I was given the responsibility to manage and work on the the new features that were to be implemented most importantly the migration of legacy search report to the new platform based. At the same time, I was assigned to mentor a new junior developer for the team and to share the work among us. This was challenging and exiting at the same time, as I had to get the new developer up to speed making her familiar with the API code base and specification.

Some product users

  • Nestle
  • Coca-Cola
  • P&G
  • Samsung
  • Panasonic

Technologies

  • Ruby on Rails 5 and 6, React 16, Redux, BackboneJS/Marionette.js, Redis, MySQL, PostgreSQL, React Testing Library
  • Looker, Snowflake, AWS EKS, New Relic
  • JSON:API specification

Products I worked on

The platform consists of multiple applications and services and I worked on both front-end and back-end mainly written with Ruby on Rails(RoR) and React.js but mostly on the back-end side. These applications are hosted on Amazon EKS and managed by DevOps team.

  • Legacy Web API server based on RoR mainly to send report data to UI
  • backbone.js UI for Legacy Web API
  • JSON:API spec Web API server based on RoR mainly to send report data to UI
  • React.js UI which calls JSON:API server and also the main entry point for the platform
  • Customer configuration server/service – An API to send and update customer configuration data. This is also based on RoR
  • Customer Admin Portal – A RoR application to manage customer data (such as product details, tracked search terms, etc)
  • Authentication Service – Based on RoR, Devise library, and LDAP authentication

Infrastructure & Tools

  • AWS EKS – Kubenetes cluster for the applications for different environments
  • Snowflake data service
  • Looker – platform to query Snowflake data
  • Lens IDE – To check Kubenetes clusters
  • NewRelic – Performance and error monitoring
  • Confluence – for developer and product documentation
  • BitBucket – for source code hosting
  • Codefresh CI
  • Jenkins CI
  • Slack for communication
  • JIRA for project management

Work Process

The development is based on Scrum with 2 week Sprints and weekly releases to Production.

Prior to the start of the Sprint, product manager discuss the User Stories with the rest of the team. Then each one gives a T-Shirt size for the story. If there are multiple sizes suggested by the team members, then we discuss and come to a conclusion. Then if we noticed that a user story is too complex, we break it down to smaller tasks. These are stored as JIRA tickets.

Then product manager will prioritize the feature tasks for the sprint to get done. As a team we will also suggest tickets that involve tech debt or bugs fixes, and pick the tickets for the coming Sprint and allocate them to each developer. After that the engineering manager will start the Sprint and set to finish in two weeks.

The Sprint progress is tracked and managed in a JIRA board. We have daily stand ups to discuss our individual progress on tickets, blockers, etc.

Once the task work is complete, I would create a pull-request on BitBucket and get it peer reviewed from two other engineers. Then the pull-request is merged to the current release branch for the week if it’s Monday or Tuesday, or to the next week’s release branch. Note that on Wednesday the current week’s release branch is deployed to Staging and on Thursday it will be deployed to Production. Therefore if there is time, it is possible to merge to current week’s release branch on Monday or Tuesday.

Once it is merged, the code is deployed to DEV environment. Then the developer would test it and promote to QA environment.

After that QA engineer would ideally test the change.

Before release to production, QA also test the changes on Staging and also there are also automated browser tests run on QA daily.

The application stack for different environments are on Amazon EKS and the DevOps team manage these resources.

At the end of the Sprint, the team reviews the Sprint with stakeholders, and demonstrates what it has built. With this, we obtain feedback that can be incorporated in the next Sprint.

Notable Achievements

  • Drove the migration of the legacy search report to the newer data API based on JSON:API spec and React platform where the API endpoints are designed to return specific data for the UI to easily digest and render

What was it like

I joined when everyone was working remotely at that time. So during my time at the company, I have almost all the time worked from home.

I had to setup the company laptop with the software stacks by following a confluence page. After that, I was ready to start working on features. Working with multiple developers (UI, other backend service developers) to finish a tasks/feature is challenging especially when working remotely.

One of the practices I did was to create a common chat group on Slack for the developers who are going to work on a feature. This way, I noted that communication is transparent and effective.

We had a lot of meeting weekly and some of them are tech related discussions. I found the meeting to be sometimes overwhelming and distracting when you want to focus and work on a feature or a bug.

The colleagues in the team are nice and I noted that it’s also common with other colleagues in the company. However you don’t make a real connection until you meet them in person.

So I had the chance to meet the colleagues (mostly at parties) and we had a really nice time.