32,39 €
No matter whether you are a student or an industry veteran, self employment adds a new dimension of opportunities to “learn and earn”, whether it be on a full-time or part-time basis. Develop the business acumen and understanding of the link between software patterns and business strategy that you need to become a successful and profitable independent software developer.
Discover how to apply your software development skills to entrepreneurship. Decide whether you just want to earn or aspire to build the next Facebook. Supported by real world case studies and input from industry experts, the book looks at the business topics you need to understand to become an independent software developer. From the initial steps of identifying how you can make a profit with your software development skills, through to making your first sale and managing your projects, you will learn how to manage each of the major steps involved in becoming a self employed software developer – whether you decide to go freelance, take up contracting or develop your own product.
Written specifically for software and web developers, the book identifies how business issues have a direct impact on code patterns used in software projects. Learn how to build your code to support your business model and with safety features to protect against potential threats that may emerge from the changing business environment.
Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:
Seitenzahl: 743
Veröffentlichungsjahr: 2016
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.
I would like to thank my parents for their constant and unwavering faith in me; my brother Sadiq and my peers Stephen Wight, Michael Weagley, and Timmothy Lewis for their advice, both on technology and otherwise; Liz, Bart, Hazel, Keegan, Martin, Kristina, and many, many more for their friendship and support. Without all of you, none of this would have been possible.
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 these different approaches to identify the types of situation they are best suited to. You will learn how to take the best of everything to incorporate into your own methodology.
Chapter 11, Creating Quotes and Estimates, covers avoiding the pitfalls of using a lowest price strategy or guestimates when bidding for work. This chapter will show you how to use information analysis to identify a profitable price to charge for your work.
Chapter 12, Project Management, shows how to apply everything covered in the earlier chapters to projects in ways that strategically protect you. Methods to clarify communications, implement formal processes, identify the right people to allocate, and more are discussed.
Going down the self-employed route in software development offers many opportunities to develop awareness and skills to enhance your career. Whether you are a student currently studying software development or a veteran software developer already in the industry, this book provides you with insights you need to avoid the pitfalls of self-employment and to succeed with software projects that are profitable and sustainable.
In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning.
New terms and important words are shown in bold.
Lists
Lists appear like this
Make a note
Warnings or important notes appear in a box like this.
Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or disliked. Reader feedback is important for us as it helps us develop titles that you will really get the most out of.
To send us general feedback, simply e-mail <[email protected]>, and mention the book's title in the subject of your message.
If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide at www.packtpub.com/authors.
Piracy of copyrighted material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works in any form on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.
Please contact us at <[email protected]> with a link to the suspected pirated material.
We appreciate your help in protecting our authors and our ability to bring you valuable content.
Instead of jumping head first into starting your freelance activities, the first steps should be based around investigating whether freelancing is right for you. With there being many ways to engage freelancing activities to suit your ambitions and commitments, freelancing provides the flexibility to be a full time or part time supplementary occupation, both offering different levels of risk and opportunities regarding finances and your commitments to operating as a freelancer.
The life of the freelancer is often one that is misunderstood by those outside of the profession, the typical image of the freelancer being a guy/lady of leisure who chooses their own working hours, takes seven holidays per year, gets the opportunity to travel to luxury locations for work and gets paid lots of money.
Whereas this lifestyle can be the case for the lucky few, the reality is that the freelance lifestyle typically requires a higher level of commitment, discipline, and knowledge of business than the equivalent employed position. Most freelancers don't work 9 to 5, but more likely whenever to whenever, which usually means longer overall working hours. Holidays are usually restricted to fit with the work and cash flow situation, meaning that work will always dictate when it is best to take a holiday and not when a freelancer feels like it—and there is no holiday or sick pay either!
Not all is as tough as it may sound, especially if you enjoy your work and manage your finances well. Pay is typically significantly better than the equivalent employed position on a per hour worked basis, which can be good for your bank balance if you are able to secure the volume of work, whether it be from a longer term project or several smaller projects. A word of caution regarding evaluation of finances is that unlike being employed, the amount as a freelancer will vary each month depending on how much work you are able to secure—so make sure you have enough saved for months to cover where you have little or no work! This is especially the case when working on more demanding projects in which there will a time lapse between completion of the project and finding the next work source.
As a freelancer, expect to work in a wide range of places, from being invited to travel around the country or overseas, to more 'unique' places such as the company basement.
Providers of freelance projects will offer different levels of luxury to freelancers, the best often being the bigger well-known companies who have bigger budgets to spend—so if you're wanting to get involved with projects that take you to sunny places instead of the company basement, these are the companies that you want to freelance/contract with. The only issue is that these types of opportunities are much more difficult to win and you are likely to have to start at the bottom of the freelance work chain—building your portfolio and freelance experience with many smaller and usually less prestigious projects before you are even considered to be considered as a candidate by one of the bigger luxury organizations. In addition to your portfolio, you should consider looking at how you can build your network of contacts in the right places, allowing you to be recommended for the types of opportunities you desire, as they open.
It sounds like an easy question, but whether freelancing is the right option for you needs some careful consideration and answers to more detailed questions. Questions you should ask yourself are:
Knowing your motivations for freelancing will help you to focus on achieving your ambitions. The following are some of the reasons that have motivated people to get into freelance software development:
Keeping in mind that the purpose of freelancing doesn't have to be a permanent arrangement, freelancing to boost your employability can be a smart move in times where the jobs market has more applicants per job and fewer jobs available. Graduates often suffer the most from this dilemma, as the jobs they seek demand a level of experience that isn't gained from the lecture theatre, which puts them at a disadvantage when they are competing against people who already have several years of experience.
Freelancing to boost employability isn't primarily about getting the best payment rate, but about strategically building your employability portfolio, so make sure to keep focused on only seeking and accepting the type of work that adds value to this—anything that doesn't fit this motivation will only increase the amount of time it takes you to get to the level of employability that you require. Elements of your employability portfolio you should be aiming to improve through freelance activities should include:
A list of people who would be happy to provide you with a reference:
Not to be confused with volunteering or contributing to open source projects, freelancing to boost employability should be specific about where your involvement and responsibilities start and end. The following are some suggestions on what you should make clear to your freelance clients:
Whether it's learning about organizing finances, negotiation, project management, or new software development skills, freelancing will open many opportunities for you to learn skills that you wouldn't learn in a regular job. In addition, freelancing often offers you the opportunities to learn the skills you want to learn, rather than the skills that your current employer wants you to.
Where learning is a significant motivation for freelancing, consider listing the types of skills and the reasons you wish you to learn and gain experience of them. This could be part of boosting employability, or to complement studies on a formal course, such as a degree. Whichever the reason for wanting to learned new skills, take some time to consider the order and timescales to invest in learning them so that the exercise of learning can be best applied to the purpose. For example, learning a set of skills in the wrong order for the purpose of improving results on a formal course would have little benefit if skills being learnt from freelancing were in the reverse order of the course, as early course subjects will be missed from freelance exercises and knowledge gained to be applied to later subjects in the course schedule could be forgotten.
The motivation to go freelance isn't always as serious as developing a career or a main source of income. Using freelancing to take a break from full time working provides a solution to the following concerns:
Going into business of any type, whether it is freelance or otherwise, is always a risk that starts with financial insecurity. The financial security from freelancing occurs over time, as you become established with the right types of clients and income sources. The following are details of factors that can combine to make long term freelancing more financially secure—if you are successful and have the right business model:
While not being initially the most secure option, with jobs no longer being for life and not necessarily offering you a share of the success your work generates for them, freelancing poses some advantages not offered by employed work—and a greater degree of security if you succeed in becoming fully established; although it should be noted that depending on freelancing as a career isn't for the faint hearted.
Using freelancing as an activity to earn some money as an activity outside of full time work commitments is a good way to raise money to make purchases such as holidays and hobby interests, or even as a way to increase your savings. Without the pressure of making sure that enough money is being earned from work activities to pay the bills, freelancing to generate a side income allows you to take a much more relaxed approach to how you work and therefore provides more flexibility on which work you accept.
In addition to producing code for other people/businesses, there is the option of creating your own product. This angle has more risk due to not having any guaranteed payment and relying on having the right product features to convince people to make the purchase, but as a side income, this method doesn't risk financial problems and can earn a significant amount if it pays off.
New Star Soccer, created by Simon Read is an example of an independently developed app that achieved commercial success and even beat FIFA 13 and other high profile sports games to win a BAFTA award. The financial success of the mobile game for Android and iOS (iPad and iPhone) peaked at sales generating £7,000 in just one day, and regularly earning £1,000 per day after its release—you do the math to identify how much the game earned.
Not all was plain sailing with the game's development, which had been through several versions until it achieved major success with the breakthrough mobile version. The first version of New Star Soccer was created as a side project to Simon's day job working in IT support and earned him a few hundred pounds per month in sales, which is great to have as a supplementary income to a regular salary and emphasizes the flexibility offered by starting your self-employment on a part-time basis.
Within three years of developing the game as a side project, New Star Soccer 3 was able to generate an average income between £2,000 and £3,000 per month. The sales statistics at this point were enough to convince Simon that taking redundancy from his full time job to concentrate on his game project full time was now viable financially, and resulted in him making his side business full-time. With the project now being Simon's sole income for him and his wife, working on the project was now more serious and not just a hobby that happened to make some income—with the need to make sure that income continued to come in so that bills could be paid and food was on the table, Simon had to work 12 hour days at the expense of a social life. Despite the minor sacrifices for making the project a full-time business, Simon enjoyed a successful first year with continued sales of his game and his wife helping with the admin side.
Although the project had been successful, problems started to hit after Simon was given a £17,000 tax bill for the sales generated by New Star Soccer 3, as well as poor sales of versions 4 and 5 of New Star Soccer and an unsuccessful experiment to launch several separate games outside of the football theme; namely New Star Grand Prix and New Star Tennis. Simon's saving grace was the inclusion of his game Super Laser Race in a game bundle distributed by Valve's Steam game portal; this alone generated £14,000 in just one week and allowed Simon to pay off his debts.
Serious success in Simon's game business didn't return until the release of the mobile version of his New Star Soccer series, which has regularly generated income of £1,000 per day and as much as £7,000.
Several lessons can be learned from the case study of New Star Soccer:
Freedom comes in many forms, and with being self-employed as a freelancer, the ability to choose the types of projects you work on that fit the lifestyle you want can be one of them. The following are some of the factors that dictate the level of freedom you have on projects:
With such levels of freedom, it's easy to become undisciplined to a point that affects your work performance. Where you have freedom to choose when you start work, it's important to make sure that the work gets done, so if you start work late, you must have the discipline to make up the time and even work extra hours where required. Where you have freedom on how to implement a project, you also need to be disciplined to make sure that the code you develop is maintainable and is a good setup for the client—not necessarily what best suits you.
Facing unemployment is a prospect that most people would want to avoid. For those who are already unemployed and are struggling to get back into work for whatever reason, freelance software development has several benefits:
All reasons given until this point has focused on the serious aspects relating to career and financial issues, but don't forget that work should be enjoyable. Work that pays a lot is desirable, but no work is worth being involved with if it has a detrimental effect on your life, health, and/or family.
Programming isn't the type of work people can stick with if it's not something that interests them enough to keep motivated when needing to solve tough problems, never mind tough clients. Make sure to choose freelance working for the right reasons—that is the types of projects and clients that don't turn out to be a nightmare and of which you would be proud to have as part of your portfolio.
As tempting as it may be, it wouldn't be wise to quit your day job to go freelance full time until you have both tested the market and built relationships with a network of good quality clients and suppliers. Even if you land a project that will set you up financially for a few months, there is no security to ensure that there will be enough work to keep you going after the project ends, or even that the project will not run into some type of complication that will jeopardize what and when you are paid.
Being successful in a company employing you as a programmer and being successful as a freelance programmer are two different things that you will quickly learn as you work on freelance projects. If your background is working in agencies who provide services to their own clients, you will already be aware of how there is a need to strategically develop your code to manage on-going change requests, which is something that may be alien to you if you have only worked in organizations who are highly organized and/or have little changing requirements relating to the code you have developed for them. Using your time to experiment with freelancing will allow you to gain an insight to the situations you will encounter on freelance projects and so allow you to learn to strategically design your code for better flexibility that can handle changing specifications—especially for projects where the budget is fixed and the client has unrealistic delivery time expectations.
Instead of seeing your freelance career as an alternative to your day job, start it as an experimental hobby that complements your financial income. The hobby itself should contain both the business and technical skill elements that you want to eventually turn into a full time career. This method allows you to experiment in a way that jumping into freelancing head first wouldn't allow you to - by allowing you the flexibility to make mistakes and build your business model around your experiences. If you are good with both the business and technical aspects of what you wish to turn into a freelance career, you will be able to identify, develop, and refine aspects of your service to appeal to segments of the market that fit the types of ambitions for the projects you wish to work on. It's through this experimentation that you can closely integrate your marketing activities to build a brand and reputation that will enable you to build a stream of work from recommendations resulting from your experimentation—something that you would otherwise not have been in a position to do by jumping head first into full time freelancing.
There are several legal entities that you can choose to run your business under, each having their own advantages and disadvantages. The following are brief descriptions of what they are and who they may be more suitable to.
The most simple of legal business entities, being a sole trader means less paperwork and less hassle, with the advantage of providing you with more time to invest in the work that makes you money. As a sole trader, your only responsibilities regarding tax are to register with HMRC within three months of starting to trade and to complete a tax return each year.
As a sole trader, you pay your tax at the end of each year, unlike working as an employee where you pay tax each time you receive payment from your employer. There is also some leverage given by the tax man, as you are given from 6th April to 31st January to make your payment. This is beneficial for those who plan in advance, but can cause a bit of a problem for those who leave everything to the last minute, if there is a cash flow problem.
Partnerships are a great way to combine the skills and assets of multiple people from different backgrounds to enable higher chances of success for a business. An example of this would be someone who has a good background in marketing and business management working with someone who has good technical expertise—allowing them to create a superior product that has the backing of a well-executed marketing strategy and business structure, of which the business wouldn't have succeeded without the contribution of both parties. Good examples of partnership successes have included Steve Jobs (the business brains) and Steve Wozniak (the technical brains) who founded Apple, while Sergey Brin and Larry Page co-founded Google.
Although there are many advantages to setting up a business through a partnership, there are also several major disadvantages:
To avoid such problems, planning and precautions should be put into place that protect the interests of all involved:
Unlike setting up as a sole trader or partnership, trading as a limited company requires much more effort to set up and trade—as all accounts need to be recorded in a specific format and submitted to Companies House for their approval. In short, setting up as a limited company results in much more paperwork which results in more distractions from your core business activities and higher admin/accountancy fees.
There are, however, several advantages to setting up limited company:
When setting up as a freelancer, one of the first decisions you will make will be on where you deliver your services. Sometimes the nature of your work will dictate this automatically—as an example, if you will be relying mainly on agency placements, then you will be working at the office of the agency's client. Other than these few exceptions, you will need to decide whether it is best to work from home or a dedicated place of work.
Working from home certainly provides a range of advantages in convenience for the self-disciplined, but can also prove to be a detriment to productivity for those who are easily distracted by temptations.
There are certainly some useful financial and lifestyle advantages in choosing to work from home: