Preface
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.
What this book covers
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.
Who this book is for
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.
Conventions
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.
Note
Lists
Lists appear like this
Note
Make a note
Warnings or important notes appear in a box like this.
Reader feedback
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
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.