Everything I Learnt From Landing My First Paid Clientby@johnpalmgren
315 reads
315 reads

Everything I Learnt From Landing My First Paid Client

by John PalmgrenMarch 5th, 2022
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

It felt like a step up from building personal projects to working for a client. There was a learning curve as I figured out how to get a website hosted and use a content management system. I have a good amount of coding knowledge, but it was the non-coding stuff I found hard
featured image - Everything I Learnt From Landing My First Paid Client
John Palmgren HackerNoon profile picture

Even after a few years of coding and a year doing web development, I was apprehensive of doing any work for an actual client. Although I'm good at the stuff I know, dealing with the expectations of another person felt like a step up. It was this that made me wary of taking the plunge into building a website for someone else (especially since they would be paying me for it). But, even though there were lots of new things to learn and obstacles to overcome, I was able to deliver and leave a very happy client.


There were several challenges I faced as I moved from creating and coding my own projects to working with someone else. Most of the issues that I faced were not to do with the code at all. Here are some of them

Not Getting enough Information Before I Started.

Based on a few texts send over Facebook I thought I had a good idea of what the client wanted. The website was for a takeaway food service and I had in mind a single-page site with fixed content. After looking into the client's requirements a bit more I realized that the menu would need to be updated every week. Which led me to my second problem.

What to do about the Backend

Everything that I'd made up to this point was personal coding projects. If I needed to update anything I would go into the code and make any changes that I needed to. Well, this wouldn't work here. I needed to find a way for the client to update certain information on her own.

After a bit of research, I realized a content management system would solve this problem; I just had to pick one. WordPress didn't seem to fit in with what I wanted (although I'm sure it could have with more time). In the end, I went with contentful. It allowed me to add a couple of items and retrieve them with a REST API then add them to the code however I wanted. This was the perfect solution for something that I thought might be a big problem.

Client Content

Another way that this was different from working on personal projects was that I had the client give me content (copy and images) to add to the site. I'm used to sourcing my own images and writing my own copy. It's nice not to worry about this but it also brings about its own issues. I have a writing background and I'm used to writing things my own way. I had to relinquish my own opinions and embrace the client's style of writing.

While I did source most of the images for the site myself, some were given to me by the client. I decided here that I would suggest some edits. For the profile picture, I removed the background and added a plain color, and changed the shape to a circle. I didn't know how much design/editing I would need to do but the client was happy with the changes and it didn't take me long to do.


This is another non-code area that I didn't have a lot of experience in. However, I imagine most people wouldn't be too pleased if you told them their website was done and dumped a load of files in their email. Clearly, the website has to be hosted and up and running online. I've hosted my website (work in progress, guys) using Netlify but I didn't feel like I had loads of experience.

This was another situation where I was saved by a lot of Googling. In the end, I decided to host it on Firebase. They have pretty good documentation and it was relatively painless to get it up and running. It also had the added benefit of proving the site with an SSL certificate. What was not as easy was getting the different accounts to work together in the way that I wanted.

Passwords and Accounts

The biggest problem I ran into was how to manage accounts without having full access. For example, I directed the client towards Google Domains to purchase a domain name. It made sense for her to do that as she would be paying for it. However, when I came to setting up the hosting for the site I didn't have access to the Google domains profile, and so couldn't verify the ownership of the domain name. To make things more difficult Google Domains uses the Google ID so for the client to share her password with me would be very insecure. Some furious Googling later I was able to give the client instructions to follow in order to add me as an administrator and be able to verify the domain name.

The same thing happened in reverse with Contentful. I set up an account in my name in order to set up the content. Then when it came time to give the client access I ended up changing the username and email to her details. This was not that easy as she had to verify her email address. I'm sure there is an easier way to do it but this was the hacky way that work for me this time.

Creating an Invoice

Another new experience for me! I hadn't anticipated being asked for an invoice, so again I went to my good friend Google. This was actually a pretty easy fix. I downloaded a template and filled in my details and was all done within 15 minutes.

The challenging parts of this project were actually what I enjoyed most. I learned lots of new things and got to play around with some new software. Coming away from the project, I have a much better idea of the aspects of making a website, that goes beyond coding.


As well as having some challenges, there were also some definite wins.

I found someone who would pay me for what I know. This was pretty cool. It wasn't loads of money but it felt good to be earning doing something I love.

The other win was realizing that coding the website didn't feel hard. I've spent so many hours battling against JavaScript it was nice for everything to fall into place. Code-wise, it wasn't a particularly difficult project, but it has given me the confidence to know that I can take on similar projects.