Jump to content

Recommended Posts

I've been developing for the web for about 21 years, and a full-time freelancer for the past 12 years. I see myself mainly as a backend developer in PHP (Laravel) and Java (Spring). I'm a couple of years off 40 now, and I've started to think about the future more, and because I work on such a wide variety of projects, I feel like a jack of all trades and that I don't specialise in anything in particular. I think I'd like to narrow down my services, but I don't have a clue where to start.

I try to avoid building websites, I just don't like it, and I've always stayed away from the likes of Wordpress. But, an existing client has requested that I build a number of websites for a really large client of theirs in Drupal. Because it's an existing client that I don't want to lose, I've agreed, but it means me getting a Drupal develop on-board and meand I'm going to be doing some HTML/CSS and Drupal work myself, which I don't particularly enjoy doing. I'm feeling like the new knowledge I'm learning, while it's earning me money, would have been time better spent improve my existing skills, but at the end of the day, bills need paying and sometimes you've just got to do what pays.

Last year I started studying towards a Masters in Computing following a software engineering route, and in this we're coving topics including software design, requirement gathering, project management, data management, and other web development and software engineering topics. I started this because I felt that as I got older I may want to move away from being a developer and more into system design. However recently I've had advice that unless I'm working for a large organisation or contracting, I probably won't get to do that kind of job as a freelancer.

So, I have two problems, I'm not sure how I would go about the process of turning work away that I don't want to do. Even then, I'm not sure what it is I want to specialise in.

My clients are mainly agencies, some marketing, some mobile app developers, so I get to work on anything from static sites, bespoke sites, web applications and web services. One of my mobile app developer clients for a couple of years sent me a lot of work building web services for mobile apps. Straight away I clicked with this, it's almost completely backend work, there's very little (if any) HTML involved, it just feel like my thing. My current thinking is that I think I'd like to concentrate on building my existing knowledge of web services and REST, along with really nailing down two programming languages to work with. Potentially aiming to be a web service specialise, where I could utilise my uni knowledge and existing skills, by designing and building web services and related backend. The problem is, outside of my existing clients, I have no idea if there's a market for this, let alone enough to sustain me? My instincts tell me that web services/micro services are huge these days, but outside of really large organisations is there much of a need for them? Will I be able to find enough work to one, continue my existing level of pay, and two to build up more skills and experience.

I'm posting here for some advice and pointers, and would appreciate any assistance.

Share this post

Link to post
Share on other sites

You could always look into contracting.  I've recently gone into it, taken a contract at Sky as a JavaScript engineer and I'm loving it - The earns seem astronomical to what I was earning as a permie and it's a consistent day rate without me having to spend time chasing down clients etc.  I don't get pulled into office politics like you would as a permie - I just get to write code and I love it.

Working at large companies (contracting) like Sky opens up loads of options to specialise due to the complex nature of the projects undertaken.  I stay primarily on the frontend, but our backends are essentially a load of microservices written in Elixir which expose graphQL endpoints.
If you really want to specialise in the backend I'd focus on GraphQL, a functional backend language (Node / Elixir) and devops related things like Docker, Kubernetes deployment strategies (CI/CD).  I assume you are familiar with and employ TDD strategies?  These are considered essential at a place like Sky.

At least for what I do there's more than enough work (Here in NW England).  I get contract offers ranging from £400-£500pd on an almost daily basis such is the for specialised JavaScript contractors.  I imagine there's plenty of work around for other languages (Though maybe not as much.  JavaScript Node/React is really hot right now)

Edit: Just re-read your post in greater detail.  Is there any reason why you would rather freelance over contracting?
I know of a few consultants who are even more deeply specialised - they make an absolute killing - we're talking well over £1000pd although like a freelancer they need to put effort into landing clients, whereas contracting the recruiters do all the work.

Edited by rbrtsmith

Share this post

Link to post
Share on other sites

Thanks for the response, 

I've always thought I'd like to remain freelance, there's a number of reasons, I guess the first is I have a home office which I'm committed to for the next couple of years (home extension which needs paying for). I've always saw contracting as working for someone else, having a boss, I feel like freelancing provides freedom.

I think if I found the right 'niche', I'd certainly consider contracting at home and away from home, I mean £1,000 per day, who wouldn't! It's just finding that niche, something that I know that if I put the effort into would eventually reap rewards.

I've always been against functional languages, they feel 'wrong', don't ask me why, OOP languages feel 'right', although that's subjective. I've certainly never liked the idea of Node, the thought of working with Javascript server side is enough to make my nose bleed. However, I must confess, that other using PHP in the early days, I don't have a great deal of experience with functional languages, and maybe I should at least take a look. My biggest concern is spending time to learn another language from scratch, which I can't help think could be better spent giving me a more in-depth knowledge in the languages/area I already know.

Share this post

Link to post
Share on other sites

Yes it can be very easy to slip into being a "jack of all trades" - been there. I remember about 10 years ago feeling a bit swamped with trying to do everything and so I started specialising, and to date that's worked out just nicely.

When I get enquiries about stuff I don't do I just refer them to some contacts who specialise in what they're asking for.

In your case I'd day start specialising, you could still take on other work in the short term as a fallback in case it's quiet.

Share this post

Link to post
Share on other sites

I don't really have a boss as such contracting.  I run my own company and while I contract out to Sky there's nothing stopping me contracting elsewhere too, I can leave without giving notice.  Sky are my boss as much as your clients are your boss for the duration of the project - you are still working for them in return for money.  Truly working for yourself is releasing a product that you market and sell - you don't have an hourly rate.

As for functional languages I suggest you take a second look.  Theres a reason all the big companies are going that way now: Facebook, Netflix, Spotify and so forth.  JavaScript is described as the worlds most misunderstood language, Again I suggest you take another look.  It's totally transformed in the last few years.  Even before a lot of the flack came from a misunderstanding.  Closures were popularised by JavaScript and have since moved into many other languages like Java, Python.  Yes JavaScript influenced these languages!
We now have features like Modules, Async functions, Arrow Lambdas you can even bring in static types.

Share this post

Link to post
Share on other sites


Thanks again for your response.

I had always assumed GraphQL was a replacement for relational databases, but since your post I've done some research and found it's actually more a replacement for REST, so I've learnt something new already, thanks.

I'll certainly have a look into Javascript again. I guess the problem is, as a programmer you're always kind of taught that OOP is the way things are done, everything relating to system design that I've been taught revolves around OOP, hence why I guess Javascript 'feels' wrong. I will however take a look, and I'll also look at GraphQL, and NoSQL database in more detail to at least get a better understanding before I dismiss these technologies.

Share this post

Link to post
Share on other sites

As a programmer you're always kind of taught that OOP is the way things are done

Unfortunately this is a big problem in the way programming is taught at universities where every problem is solved by building a class hierarchy.   Some problems benefit from these tightly coupled relationships, others benefit from a more mathematical (functional) approach.
It's a totally different paradigm so you approach problems with a different perspective so can be challenging to learn if you come from a heavy OOP background.
I know a number of ex Java devs who were pushed to learn FP and JavaScript as we use it so heavily at Sky and they love working this way now - although some have said they had to take a step back to try and change their mindset.
The web and UI in particular benefit from having pure functions as we can then take time out of the equation - dealing with state over time adds a great deal of complexity so it's a massive win to not have to care about time.

Edited by rbrtsmith

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing

    No registered users viewing this page.

  • Member Statistics

    • Total Members
    • Most Online

    Newest Member
  • Forum Statistics

    • Total Topics
    • Total Posts