Tech

I’ve been creating products for the last 5 years, both as personal projects and for other companies I’ve worked with.

I tend to get involved in as many technical areas as possible, tyring to have a good understanding of their fundamentals. However, my main focus for the last years has been around web apps. If something is web app related, I’ve at least tried it out.

I’ve become a big supporter of Jamstack and I believe within the next few years we are going to see a big transition into writting much less code to ship an app.

How? By taking advantage of 3rd party APIs for most areas (backend / micro-services, database, authentication, storage, etc) and puting the focus into a solid front-end that communicates well with all those services.

By doing this we don’t only save time re-inventing the wheel, but we make sure that all of these areas (auth, etc) are very secure and reliant since the companies behind them focus on such solely. It is fair to say that companies who want to be in total control and don't wanna depends on 3rd parties won't go this route completely, but for small projects and startups, I think we are going to see more and more of this. Specially with growing organisations like vercel.

Given this, even though I’ve worked in all these areas and have a decent understanding in most of them, since I can get services to deal with them for me, I’ve put most of my focus on making sure that the front-ends I build are of the best possible quality.

Some of my preferred technologies

- Javascript & Typescript

- Babel

- Webpack / Parcel

- React

- SWR, React Hooks & Context

I am not a big fan of state management libraries and think that most react apps can go without them, specially if using a data layer.

- Styled components / Emotion

I have used css-in-js a lot, still do and really enjoy it, however, lately I’m trying to go back into pure css since it is faster and scales better.

- Apollo (graphQL)

Used apollo client for over a year while working at a very data input heavy app with a massive user data store and, specially with their hooks introduction, handling data was a bliss. Managing the data layer, querying and mutating inputs was really nice and easy. It even makes dealing with cache relatively simple.

- React Final Form

Similarly and for the same project, used RFF to handle very large and complex KYC data input forms and the experience was really positive. RFF, fix your docs search!

- Jest, Enzyme & React Testing Library

These are the main tools I’ve used over and over again for unit and integration testing. Especially after doing Kent C. Dodds course on them!

- Cypress

Many end to end tests written...

- Yarn

When I’ve worked in big mono-repo projects, yarn workspaces has been a lifesaver and allowed us to not need external dependecies such as lerna.

- NextJS

Recently picked this one up and I’m falling in love with it. Zeit’s / Vercel’s vission goes hand by hand with mine about the future of apps and Next provides the perfect platform to develop such frontends.

- Serverless / Lambdas

In my opinion any good frontend developer should also be able to deal with some basic devops and api stuff when needed.

I’ve been lucky enough to be exposed to this other areas professionally and even handle orchestration layers within big structured corporates.

Regardless of this, I think with the coming future, a good frontender should be able to write the functions (lambdas) that connect their frontend to all these 3rd party APIs that provide the missing infrastructure.

Where?

I have worked with all these technologies and many more for the last years both within a professional industry context and in personal projects. Some of them are:

A london based fintech startup trying to revolutionise the way we buy property in the UK. I am grateful to have joined the original team as one of the first engineers and see it grow from a group of people working in one desk within an incubator to 30+ employees and our offices.

We worked with a great tech stack (most of the technologies mentioned above) and a blockchain powered backend, which sometimes proved to be an annoying challenge.

In my time here I managed to get a lot of experience building scalable, performant, apps with all the mentioned technologies.

Working at a startup like this, I feel like I learnt 5 times faster that I normally would’ve anywhere else, given the amount of things I had to do. Not only that, but it also allowed me to get a lot exposure to other areas such as product, design, etc.

Ultimately, I also gained a big insight into financial data management. Working at Acre I touched all sides of financial products adcquisitions, from client data input, ID verification, to KYC information management... This together with my experience at Capital One have given me a very unique understanding of these areas.

In my time working in the web team at Capital One, I worked on the development of their main .co.uk website within the Web Team, implementing new features for their customers.

These involved creating the frontend with React, handling state management with Redux, testing with the previously mentioned tools and sometimes doing QA with tools like Cucumber or Chai. It also involved multiple fights with my then friend Jenkins.

I also dealt with their NodeJS orchestration layer. Apart from that, I got involved in many projects such as their hackathon api, an internal newsletter system, a POC for Skeleton Loading, etc.

During my last year of university I founded Jarvin. Our mission was to create products that improved the experience students had in their lecture theathers, changing the way lecturers and students communicate. And we did, with hundreds of users.

In this project I dealt with all areas of the app, frontend, backend, devops, etc. All using the previously mentioned technologies and others (firestore, etc).

Although I had already made many small products during hackathons, this was the first time I handled all, product definition, design, architecture, etc and created a fully fledged product that would go to be used by hundreds, from scratch.