Why Contracting?

I was asked the other day ‘why I was a contractor’. For me contracting is perfect in many ways. It gives me a good income, as the main earner of a family, this is really important. I also get to work with a variety of clients including football clubs, startups and councils.
I started contracting in 2012, so next year will be my 6th year. This is my longest job to date and I can’t see myself going back to permanent employment (unless Nrwl.io come calling).
Getting started as a contractor is relatively easy. All you need is a Limited Company (though you could be a Sole Trader, a Ltd company is better). An accountant or some type of online accounting software and a job.
Well, this sounds simple, but it’s not.
When I started getting my Limited company involved completing an online form, making a small payment and that was it.
One of the things I did need to consider was a company name. You need something that matches with the services you’re providing, with some flexibility in case you try something new. You don’t want to be called WideWeb Solutions if after a year or two you just make iOS apps.
I wanted something that covered me for web development, but I have always been interested in mobile development. So I went for something that had the word software (either web or mobile) plus the initials of my wife and children. That’s how I came up with CGCSoftware.
So I had my company name and limited company setup, next getting some work.
The reason that I started contracting, I was working for a startup in London as a Flash developer (good times). It was all going well then the company decided to move to America, and get a new development manager. So we had this new manager and half the team went to America, but still, the work was ok.
But soon the new development manager started letting people go, and get in new people that he wanted. Well, eventually it came to my time to go for a quick chat at lunchtime.
So that was the end of that, can’t say I was too bothered as I wasn’t getting on too well with the new members of staff. It did remind me that I don’t want to work for someone ever again. (If you work for yourself, it’s hard to fire yourself).
This is why I started contracting. I wanted to be in charge of my career, and have that flexibility of working on different projects with the technologies I wanted.

There’s a JS lib for that

Recently I was creating an app using Angular Material all was going well until I tried to use Flexbox to layout the app.

The app was a demo Employee Manager app, that lists all the employees on the right side of the screen and the edit form on the left side.

I wanted to make the app fully responsive. So I decided to look into using Flexbox. I’ve used Flexbox in an existing app once before, and from what I saw I was really impressed. So I decided that I’d try to implement a Flexbox layout from scratch.

It was all going along well when I tried to implement a layout change so when the app was displayed on mobile/tablet. The list of employees was on top of the edit form. But as this was new to me I thought I’d do some research using Google to see if anyone had written about how they implemented Material and Flexbox.

So in Google, I typed ‘Angular Material Flexbox’ (not Google, you never type Google into Google. As we all know it will destroy the internet if you do that). The results I got for my ‘Angular Material Flexbox’ search was really interesting.

Instead of seeing some articles on how you can use Flexbox within a Material app, instead, it was full of links to GitHub each with a library that you can add to your project that’ll give you Flexbox support along with Angular Material.

Now I’m a fan of GitHub and what it has done for modern web development. But now it seems if you are trying to implement a feature or trying to solve a problem within a project, there are just JS libraries that you can ‘just add’ to your project that’ll fix your problem.

There are no longer articles where people show how they have solved a problem, it’s all pull request, get this library and add it to your project and a few lines of code and the problem is solved.

What happened to articles showing you how you can use what the web provides to solve the problem.

Keeping your skill set up to date

As part of life as a contractor one of the most important things it managing to keep your skillset up to date. This was fine when all you had to worry about was just HTML, CSS and maybe jQuery, but now with the explosion of JavaScript frameworks keeping your skill set up to speed is getting harder and harder.

When you look at a job description you usually see a whole list of ‘technologies’ that are required for the role. Angular, Node, React, Sass, CSS, UX/UI skills and maybe ‘if you also know PHP, that’ll be an advantage’. But keeping up to date with all these different technologies is nearly impossible. Two of these are entire platforms and not just frameworks.

So how is a lonely developer supposed to know all these frameworks, platforms and technologies inside and out, as well as work fulltime?

Well one way, and what a lot of freelancers are doing now, is niching down to a certain skill set or role. For example, is being known for creating offline first apps using Angular or creating Progressive Web Apps using Node or front-end development using HTML and Sass. These are all examples of how a freelancer/contractor can narrow down what they do in order to really understand well the technology they use.

Of course, the first thing that goes through peoples mind when thinking of narrowing down their skill set, what we use as contractors to get work, is the fear of missing out on work. If I don’t have the skill set for a certain job, then I can’t go for so many roles, I’ll miss out on work. But if you do a quick search on Google for ‘niching down + freelance’ one of the first articles you’ll find is ‘Overcoming the Fear of “Choosing a Niche”‘ by Brennan Dunn.

In the article he shows why having a niche or being a specialist is actually a good thing for your business/career:

When you go from being a generalist — that is, a provider of some commodity service, like web design — to being a specialist, who solves a specific type of problem for a specific kind of client, three things almost always happen:

  1. You’re able to charge more.
  2. Your clients give you more creative latitude and freedom, and a lot more respect.
  3. It’s easier to close deals.

In the rest of the article, Brennan goes through all the different issues with niching down, about the fear people have of doing this, the fear of picking the wrong niche to work in, dealing with the boredom that might come with only working with one technology.

If you want to read about how other people have found their niche and what it has done for them, this article Top 16 Freelancers Tell You How They Found Their Niche gives some interesting insight.

There are also some great books on this:

 

So in order to keep your skill set up to speed in today’s ever-changing web industry, instead of trying to be a master of everything and ending up a master of none, it might be work just narrowing your focus a little. Finding out what you enjoy working with, what projects you have enjoyed working on and becoming a specialist in those types of projects, using that type of technology in order to really learn and know that skill set.

It something I’m going to focus on doing over the next few weeks months.

 

Plans for 30 Day Writing Challenge

It’s nearly April which means two things, 1 it’s getting near my birthday and 2 its the start of another 30 Day Writing Challenge which I took part in last year.

The idea, started by Marc Jenkins, is simple write online everyday throughout April. It sounds a simple challenge, but as I found out last year, it can be difficult to find ideas of what to write every day.

So this year I’m going for more of a theme on which to base my posts on. For this year I’m going to write about learning Node throughout April.

I’ve been thinking about learning Node for the last few weeks/months, but never sat down to really learn it, to build a project using Node or how it works in detail. As it is one of the things I want to start doing in 2017 it seems like an idea opportunity to both learn it and write about it at the same time.

The benefits of writing about what you learn is that it helps galvanise your understanding of a topic. If you’re ideas are mislead hopefully someone reading your post will be able to correct you. By being part of a challenge like the 30 Day Challenge, where you are held accountable for posting every day, means that you have to do what you’ve said you’ll do.

Micro Blogging

As part of Marc Jenkins’s 30 day writing challenge I’ve been trying to get a blog post out every day. So far it’s gone ok. I have noticed that others who are taking part in the challenge are writing nearly 500 word essays every day, which is great but it looks hard to keep that consistency.

My aim in the challenge is to commit to generating a post every day. No matter what the topic is or how many words the post should be. It all depends on what I’m writing about and what I have to say about it.

There is a blogging movement (if there is such a thing) called microblogging where the idea is to write small posts, both in size and aggregated size. I think this came out from when services like Twitter and FaceBook started to become really popular and people used these social media services to put out content. A few years ago everyone had a website, with a blog inwhich they put out their content. Now everyone has a Twitter account instead of a website URL (or a GitHub account as a lot of web developers use instead of their website).

Eventually more people started to get a bit sick of Twitter and 140 character posts and went back to blogs, but started to mix the short form of Twitter with blog posts. Now a blog post doesn’t need to be 500-1000 words (like a school essay) 200 words is fine.

I do enjoy reading peoples blogs, especially web developers I look up to. People like Remy Sharp, Marc Jenkins, Ray Camden and Rachel Shillcock people who are actively blogging.

(Hey look at that just over 200 words, exam passed)

Why should startups pick hybrid

When starting an app based startup you have a couple of options, one you could pick one platform to target first, two pick to hit all platforms at once with their own native app or build a cross platform app using a technology that allows you to build cross platform from the one code base.
Depending on the size and budget of your startup maybe a factor for which option you pick. For those single founder companies, a guy with an idea but not the technicial skills to build an app the cross platform approach is a good option.
Going down this route allows you to find a developer who can build apps with one of these cross platform technologies and then work with them to build the app you are after.

Usually this developer is a solo developer who will/should work with you hand in hand helping you build the app you have in mind. Finding this developer can be tricky you need someone you get on with, someone who delivers and someone who will help advise you. It’s your idea but they need to use their skills in order to create the best cross platform app for your business.

So if you have an idea for an app, but don’t know how to build one, maybe a cross platform hybrid solution would be the best option to see your idea come to life.

Being a fan of Indie Devs

I remember a few years ago reading about MicroISVs, it was a term created by Eric Sink it stands for independent software vendor. I always liked the idea of being a one man/person software shop. Being your own products, making a living for yourself.

When the app store was launched there were hundreds of developers now using the app store to make their living, the Indie Dev movement was born.

Like I mentioned I’ve always been a fan of this indie dev movement. I liked reading blogs from developers like David Smith, Daniel Jalkut, Marco Arment and of course John Saddington who created DeskPM the tool I’m using to write this post.

While I was always a fan of these people, I always had the plan to eventually become a Indie dev, spending all day developing my apps (usually from the beach) making a comfortable living from my own apps, but I’m a web developer. I have no Objective-C experience. So making apps for the app store was just a dream.

Now thanks to platforms like Ionic, NativeScript and AppCelerator a web developer like me can start building apps for the app store (both Native and Hybrid). This is great, but there is another thing that was holding me back the horror stories of developers trying to make a living on the app store and failing (as a family man with a mortgage I really can’t take the risk).

But after listening to David Smith and Marco Arment’s new podcast Under the Radar in the episode about Work/Life Balance David Smith mentioned that you shouldn’t just jump into Indie Development from working full time. He said that it took a few years of building apps in his free time until he could make the move over to full time indie. Using this balance between consulting and his own apps, he eventually moved over when he was making enough to go full indie with his own apps.

So now with tools that allow you to use web technologies to build apps there is no reason why I shouldn’t start this slow movement over to becoming a Indie Dev/Micro ISV owner (sounds like a good theme for this blog)

Contracting Setup Options

Yesterday the start of the 30 day writing challenge from Marc Jenkins. For my first post I wrote about why I like being a contractor. I originally wrote this post on Medium, but for the rest of the 30 day challenge I’ve decided to just use this site.

For today’s article I’m going to continue writing about life as a contractor, part of a series I’m going to call the Contractor Chronicles.

So if you want to become a contractor in the UK there are two main ways you can go about this. Either be a Limited company or work for an Umbrella company. For me I decided to be a Limited company.

If you don’t know the difference between the two is when you are a Limited company you work for yourself as an employee of your own company. If you work for an umbrella company, then you work as an employee for that larger company. They handle all paperwork, the invoicing, the tax and accounting aspects of running a company. As a Limited company you are responsible for all these jobs (though you can and should get an accountant to handle the tax and accounting parts of running a business).

I went for the Limited company route the reason for this is if I decide later to be a company that sells a product (apps for example) then this is easier to do as a Ltd company. Also if I wanted to grow the company and get employees it’s far easier to start this as a Ltd company.

I prefer the Ltd company approach. It may not be for everyone, yes there is paperwork to do, but with tools like FreeAgent, this is so much easier. So if you want to be a Ltd company, get registered, get a good company name (PooWoo Tools is not a good name), get an accountant and get started, good luck…..


Picking a new theme for site

I’m in the process of picking a new theme for this site. Instead of having a free theme I’m looking for a paid one that matches the type of business CGCSoftware aims to be over the next 12 months.

So I’m looking for one that reflects that CGCSoftware is a mobile web development consultancy who can help other software companies with their mobile development needs, a hard thing for the theme to sum up.

What my theme does need to do is, be responsive (can’t be all about the mobile web and not work on phones), not be to design agency that’s not what I am and look clean and professional.

When entering the world of WordPress themes its amazing how many there are, the theme industry is massive. It may take a while to find the one I want.