A blog where we'll explore all the facets of developing and delivering software. The good, the bad and the ugly.
In here we will attempt to understand what makes great software development teams tick.
Find the full source code for this post in Xtages/poc-react-cognito. At Xtages, we use Amazon Cognito to manage our users and their authentication. Cognito collects a user’s attributes, it enables simple, secure user authentication, authorization and user management for web and mobile apps. Overview of Cognito In this section, we’ll take a 5000 feet view of how Cognito integrates with a web app. Cognito requires users to verify their email or phone number to enable password recovery flow.
Nowadays there are a myriad of ways to deploy an application, mostly depending on the tech stack that you use and the underlying infrastructure where the code runs. Those two things limit your technical options, for example, some of the technical details of deploying to bare metal vs AWS Lambda and ECS - pipelines, subtasks, and scripts just to name a few. The other side of the coin is the workflows or processes to perform a release, such as communications, approvals, when, from where, and how to perform the deployment.
The Twelve-Factor App is a popular methodology for building SaaS apps that: Use declarative formats for setup automation, to minimize time and cost for new developers joining the project; Have a clean contract with the underlying operating system, offering maximum portability between execution environments; Are suitable for deployment on modern cloud platforms, obviating the need for servers and systems administration; Minimize divergence between development and production, enabling continuous deployment for maximum agility; And can scale up without significant changes to tooling, architecture, or development practices.
Using live repositories with Terraform has become quite popular. A live repository is a repository where you have all your infrastructure defined and that’s supposed to be live. That means that as soon as a pull request (PR) is merged the infrastructure is updated with those changes. The live repo approach requires to have some automation in place, mostly to avoid the following problems: Access to the production environment for too many people.
So you think you have a great idea, you are working on your product, however, few people really care or know about it. This is the kind of situation we are currently in, we are frantically working on our MVP but we are also building a community of interested potential users who might sign up once we are open for business. In an ideal world, we would have been building some kind of audience for years, well before we even decided to start a company, by leveraging our social media presence we’d be able to reach hundreds of people who at the same time could amplify our own voices.
Xtages is a very early-stage startup and as such we are still figuring out the best way to build our business. As technical co-founders, Matias and I have a very clear idea of what we need to do on the tech side but we are still giving our first steps on the biz dev side (although learning rapidly). Since we are learning so much throughout this experience we figured we’d share some of that with the world and as such we are starting a new series of blog posts that we’ll call “How is it going”.
Building software that other software developers use is hard, especially when it comes to infrastructure. Developers, like many other highly skilled workers, tend to be very particular about their tools and given that they have to deal with many tools in their day-to-day it’s overwhelming attempting to be highly proficient with all of them. Many providers will then want to come up with on-ramps to their tools or platforms and while well intentioned these on-ramps hardly ever pan out in the long run.
The modern software development workflow is currently stuck in a local maxima where developers are forced to use a myriad of tools and SaaS services on a daily basis in order to do their jobs. These SaaS companies, smartly, try to be best-of-breed of their own niches but time and time again ignore how well they fit into the landscape of tools that a developer must master in order to accomplish meaningful work.