In this blog post, we will aim to understand how using code for server infrastructure provisioning can reduce the man-hours required by hundreds of times, and also improve uptime drastically.

Environments for a Standard Web App

Let us consider we are building a standard web application of a small / medium enterprise. We would have atleast 4 different environments —

  1. CI / Dev: The builds are automatically deployed to this environment and functional tests run here.
  2. QA / Testing: Passing builds manually promoted by the QA depending on what needs to be tested.
  3. Staging: Release candidates deployed here.
  4. Production: Used by the end users. …

1. Pick a feature to implement and see which part of code will it deal with. The best time to cleanup a piece of code is when you are adding a feature to that part of the code.

2. Break the code into smaller methods, rename variables to more meaningful names.

3. Is there duplication? Can we extract a common method to remove duplication of logic?

4. Simplify complex conditional statements, break loops into smaller ones.

5. Look for one of these three problems —

  • One class is calling another for everything: The logic needs to be in that class.
  • Too much code in one class: There might be scope for a new domain object. …

Written in collaboration with Ruchi Choudhary

User stories are a general informal explanation of a software feature, written from the perspective of the end-user. It is a key component of Agile. Agile, as a method, puts people first, similarly, User stories put the user at the centre of the conversation.

A feature must be decomposed into smaller and more specific User Stories. Therefore, Story is a small independent sub-set of a feature.

Let’s understand with the help of an example.

The Example

Image for post
Image for post

This is the Facebook Login Page (Mobile Version).

The Problem

Let’s assume, the team developing the Facebook Mobile Login Page realise that to finish every single bit of the feature, they would require around 1 month. …

If you are not aware of what pair programming is, I would recommend reading about it first to really benefit from this blog.

Team practices need to be adapted when we’re working remotely. We cannot use the exact same way of working over video calls as we did when we were colocated in offices. Let’s have a look at how pair programming can be adapted to suit remote work during the Covid-19 pandemic.

How does pairing work for remote teams?

You will need to use a video calling tool like Zoom, Google Meet, or Skype to share the screen and talk at the same time. …

Written in collaboration with Ruchi Choudhary

Summary: Iterations / Sprints are short bursts typically between 1–3 weeks in which a team picks up a subset of features and attempts to complete them. This allows teams to iteratively deliver software every couple of weeks instead of waiting for 3–6 months for delivery cycles to complete.

What is a sprint/iteration and why is it even used?

Instead of going into jargons, we’ll explain this with the help of a simple example, and then cover the terminologies later.

The example we’ll use:

We’ll take a fictional airlines called TransInd.

TransInd Airlines does not allow passengers to pre-book their seats online. Now they want to introduce this feature on their website. …

AWS has its own CI/CD solution called Codepipeline. Some people are excited about it, while others want to stick to their tried and trusted solutions.

Here, I attempt to list the pros and cons of Codepipeline and whether you should use it.


  1. Within the AWS architecture. You do not have to expose keys to the outside world to be able to trigger builds. If your CI/CD provider lies outside and gets hacked exposing AWS keys, the hacker can do anything with your AWS account.
  2. Pipeline as Code: Any Infrastructure as Code solution for AWS (such as Terraform or Cloud Formation) would also work for Codepipeline. Additionally, within the Codepipeline, AWS allows you to configure the build part with the help of yaml files. …

When working on AWS, we have multiple IAM users to manage. Even if someone is the root user, they should generally use the IAM user for day to day account management.

As an organisation, it is also recommended that you separate resources into atleast 3 different accounts: a sandbox account for experiments, a dev account, and a prod account.

With this, it becomes a little confusing as to which account is which. For example, is account number 219066881281 my production account or dev account? What about 917733831218? (PS: These account numbers are fake).

This also causes confusion with the sign-in urls. The sign-in url is of the format — https://<ACCOUNT NUMBER>

Written in collaboration with Ruchi Choudhary

Summary: When I ask people about Agile, many people think of it as a super official management process, and some think of it as a technical practice popular with software engineers.

In this example, we show how we can adapt the Agile way of doing things to almost anything, including home renovation!

Imagine you’re getting your family home renovated, and the renovations are to take place while you and your family continue to live in the same house. Yes, quite the pickle! Situations like these demand aggressive planning and prioritizing otherwise, daily life at home could not only be utterly disrupted but could also be hazardous. Plumbing, wiring, flooring, fixing electrical equipments, bathroom fixtures, wood work, painting and the list is endless. …

In Terraform, you can easily destroy a resource by either running terraform destroy (with or without resource targetting), or removing the resource / changing the configuration.

When we are dealing with S3 buckets, there are multiple scenarios where we might now be able to destroy the bucket. Here are a few of them, and how to deal with each of them —

The Prevent Destroy flag is on

The purpose of the prevent_destroy flag is to mistakenly destroy S3 buckets that we did not really want to destroy. For example, let’s say you have the following snippet —

resource "aws_s3_bucket" "my_bucket" {
bucket = "my_new_terraform_bucket"
= "private"
prevent_destroy = true
versioning {
enabled = true

The modern day software developer needs to learn a new technology every 3 months. To enable this, the developer needs a hands-on, breadth first, iterative approach to upskilling in the 2020s.

Back in the Day….

20 years ago, in the year 2000, the path to building a career as an App Developer was pretty standard.

There was a lot of learning in the first 6 months to a year. The individual had to learn a framework like J2EE or .NET, …



Educator, Founder @ Interleap

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store