![]()
Going IT Alone: The Handbook for Freelance and Contract Software Developers
![]()
Going IT Alone: The Handbook for Freelance and Contract Software Developers
Copyright Š 2016 Impackt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Impackt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Impackt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Impackt Publishing cannot guarantee the accuracy of this information.
First published: November 2016
Production Reference: 1041116
Published by Impackt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-78300-140-8
www.packtpub.com/business
![]()
Author
Leon Brown
Reviewer
Rehan Jaffer
Acquisition Editor
Nick Falkowski
Content Development Editor
Amey Varangaonkar
Copy Editors
Pranav Kukreti
Utkarsha S. Kadam
Project Coordinator
Neha Bhatnagar
Proofreader
Safis Editing
Graphics
Abhinash Sahu
Jason Monteiro
Production Coordinator
Melwyn D'sa
Cover Work
Melwyn D'sa
![]()
Leon Brown is a software developer and trainer from Liverpool in England. His mantra is that he practices what he preaches and preaches what he practices. With over 20 years of experience in software development, Leon has developed software for legacy and modern platforms ranging from the Amstrad CPC, ZX Spectrum, and Amiga through to the Web and smartphones.
Leon has a diverse range of commercial experience, including the delivery of Internet systems and training for household names, including UNICEF, the NHS, SAGE, and The University of Manchester to projects for small businesses, start-ups, and charities. His experience of working with such a diverse range of organizations has allowed him to understand how to approach the different types of situations affecting software development projects. His projects ranged from the creation of websites and apps to CRM and the use of AI for reporting and decision-making.
Leon regularly writes for web industry magazine Web Designer from Imagine Publishing, in which he has written feature articles and tutorials covering web development. His most notable articles for the magazine provided detailed insight into securing websites against common methods of hacking, such as session hijacking and SQL injection. These articles gained highly positive feedback from the magazine's readers in the following issues.
![]()
I would like to thank my mum, Phyllis Brown, for buying my first computer, the gift that sparked my interest in programming. I would also like to thank my friends and family for their support over the years to help me become a professionalâChinyere Brown, Christine Bobb, Norman Bobb, The Capos (Mark Smith, George Heron, Ian Kerr, Dan Inwood, Andrew Lee), Jonathan De Vaal, and Ashley Moore.
I've also been very fortunate to have come across great people in business who have provided advice and mentoring: Claire Bicknell of Catena, who provided great leadership in my first commercial project as a student and provided the advice and opportunities to gain the experience that kick-started my career; Jonathan Read of Village Software, who has provided a lot of advice on operating the business side of software development; Jeanne Hatton of Uniti, who provided the opportunity to enhance my early web design and development portfolio that led to greater opportunities; to all these people and others who have been a positive influence, thank you!
![]()
Rehan Jaffer is a London-based freelance Ruby on Rails developer with a decade of experience. His clients have ranged from renegade entrepreneurs to companies producing software used by the CEOs of FTSE 100 companies. He has co-authored a book on SQL for Tealeaf Academy and has written for numerous technology and programming blogs. His other interests include artificial intelligence, medicine, and physics.
![]()
Whether it is through a desire for better work flexibility, a way to make some extra money, redundancy, or a change in career direction, freelancing and contracting are increasingly attractive options for software developers who create anything from databases and websites through to phone apps and enterprise systems. Drawing from my time of learning lessons the hard way, this book is written and designed to inform software developers at all levels of experience about the business side of freelancing and how approaches to implementing software are as much of a business consideration as more traditional business activities, such as marketing and business planning.
For students, freelancing offers an ideal opportunity to earn and learn, with the added benefit of work-based learning being accepted by many courses as a contribution toward the final qualification. Known as APEL (Accreditation of Prior Experiential Learning), this experience can count for as much as the majority of a qualification if it can be proven that the majority of the course content is learned through experience from work. With most students being young and free of financial commitments (or at least fewer commitments), the main benefit of freelancing is to gain a better position in the job market through CV enhancement and gaining the types of experience that can be used to impress potential employers at interviews. Payment is always nice, but the primary focus for students should always be on building the type of experience that will open future opportunities.
Those who are already working in the industry are likely to find themselves at one point or another in the position where moving into a freelance career is a desire or the only option, but is nevertheless something scary. Unlike students, professionals have to earn real money to pay their bills, hence do not have the luxury of being able to accept work regardless of their budget. This means that professionals need to have more focus on getting the business aspects right to remain profitable. Unlike students, more experience of the same type of work doesn't add any strategic value when it comes to making more money in the long term.
Being successful as a freelance or contract software developer isn't just about having knowledge of standard business practices in addition to having programming skills. Freelance developers need to understand how to integrate software development methods with their chosen business model. With software technologies changing and adapting on a regular basis, freelance software developers need to keep up to date with anything emerging in their field that may affect how they implement their business strategy or risk becoming irrelevant overnight; this is ever more true when working with open source technologies, especially with recruiters for contract roles seeking people with experience of the latest buzzword.
With most people considering the option of going freelance coming from a background primarily of permanent employment, it is all too easy to make decisions that are highly biased toward their technical experience. Likewise, those who have a background primarily in business development can also be vulnerable to making decisions that are too biased from a traditional business perspective. Being successful in freelance software development requires the knowledge of both disciplines to be combined in order to achieve the best outcome. This allows the identification of profitable business strategies that can be implemented in ways that minimize risk.
The focus of this book is to provide an insight into freelancing and contracting, written from a freelance software developer's perspective. With chapters designed to take you from everything you will need to start your freelance business, through to best practices for software development and dealing with clients; you will learn how to avoid costly mistakes by becoming efficient in the way you develop your code, along with how to manage your clients and the people you work with. You will also learn about the strategic business side so that you can clearly identify your approach to win and deliver the type of work you want, along with developing partnerships and other resources you will need to be successful and profitable.
When establishing your freelance operation, you will need to undertake adequate preparation. The chapters of this book are arranged in a logical order that is likely to reflect the different activity stages you will need to engage as you progress. Each section describes the specific activities you will need to be aware of, allowing you to build a business plan that you can continually refer back to in order to keep focused on your goals and see how opportunities are progressing and developing.
Chapter 1, Introducing Freelancing, covers the main considerations to you need to bear in mind for making the move into freelance programming. It introduces the different entity options to operate under, along with considerations for running activities in the early days and the types of freelancing to match your aspirations.
Chapter 2, Positioning Yourself in the Market, covers the considerations required to find the type of work you want and are best suited to. The chapter highlights how to review the market for creating a plan that identifies opportunities for you to carve your niche to win the types of client you can be successful with on both financial and technical levels.
Chapter 3, Defining Your Business Model, covers an exploration of different business models and how they can be applied to your freelance business. You will learn how to create a business model canvas that identifies important elements of your business concept, from strategic partners to customer relationships and key activities.
Chapter 4, Creating a Brand, delivers an introduction to the concept of branding and how it can be applied to all parts of your freelancing, from the creation of your business model through to marketing and project delivery.
Chapter 5, Networking, Marketing, and Sales, presents the options for marketing programming services to your target audience. You will learn the specific differences between between networking, marketing, and sales, as well as how they complement each other.
Chapter 6, An Introduction to Client Types, shows how to identify common traits of clients in order to quickly build a picture of who you are dealing with. You will learn how to use information gained from observations to your advantage when it comes to risk assessment, negotiation, pricing, and project planning.
Chapter 7, Managing Clients, covers learning how to work with clients at each stage of a project to avoid problems that can occur. Discover how risk management, complexity measurement, client analysis, and expectations management can be used to lead projects to a successful outcome.
Chapter 8, Negotiation, introduces a framework for achieving a fair conclusion in negotiations that allow both sides to win. Most importantly, this understanding of negotiation will help you to avoid costly mistakes that impact your finances and reputation.
Chapter 9, Software Development Resources, Patterns, and Strategies, presents approaches to programming that provide benefits for flexibility and coping with changing client requirements. This chapter shows how to strategically construct code to reflect the challenges you are likely to face in your freelance projects.
Chapter 10, Software Development Methodology, introduces the standard processes of software development as used in industry. This chapter compares th...