How to choose Career and How to Change Career
Few software developers actively manage their careers. But the most successful developers don’t arrive at success by chance. They have a goal in mind and they create a solid and well-thought-out plan to achieve that goal.
If you really want to succeed in the competitive world of software development, you need to do more than just polish your resume and take whatever job you happen to get.
You need to think things through and decide what actions you should take, when you should take them, and how you should go forward with them. In this blog, I’ll take you through the process of deciding what you want to get out of your software development career and how to change your career.
Having a business mindset
Most software developers starting out in their careers make a few huge mistakes. The biggest of those mistakes, by far, is not treating their software development career as a business.
Don’t be fooled; when you set out into the world to write code for a living, you’re no different than the blacksmith of old times setting up shop in a medieval town.
Times may have changed, and most of us work for a company, but our skills and our trade belong to us and we can always choose to set up shop somewhere else.
This kind of mindset is crucial to managing your career because when you start to think of yourself as a business, you start to make good business decisions. When you’re used to getting a regular paycheck that isn’t really dependent on your performance, it can be easy to develop a mindset that you’re just an employee of a company.
While it’s true that you may be an employee of a particular company at any given time in your career, it’s important to not let that particular role define you and your career.
It’s better to think of an employer as a customer for your business of developing software.
Sure, you might only have a single customer, and all of your revenue may be coming from that single customer, but viewing the relationship this way moves you from a position of powerlessness and dependency to one of autonomy and self-direction. (In fact, many “real” companies have one big client that makes up a majority of their revenue.)
TIP This is the first thing you must do in your career: switch your mindset from that of an indentured servant to a business person who is running their own business. Just having this mindset at the start will change the way you think about your career and cause you to be mindful and present in the active management of it.
How to think like a business
Now, just thinking of yourself as a business doesn’t really do you much good. You have to understand what it is to think in this fashion if you want to get any benefit from it. Let’s talk about how to think about yourself as a business and what exactly that means.
We can start off by thinking about what makes up a business. Most businesses need a few things to be successful. First, you need to have a product or a service. A business without something to offer doesn’t have a way to make money, because they have nothing to sell. What do you have to sell? What is your product or service?
You may very well have an actual digital product to sell as a software developer—but most software developers are selling the service of developing software.
Developing software is a wide term that can cover a variety of different activities and individual services, but in general, software developers are selling their ability to take an idea and make it into a digitized reality.
NOTE The service you provide is to create software.
Just thinking about what you offer as a business in this way has a profound impact on how you view your career. Businesses are constantly revising their products and improving them. You should too.
The service you provide as a software developer has a tangible value, and it’s your job to communicate not only what that value is, but what makes it different than the offerings of thousands of other software developers out there.
That brings us to marketing, which we’ll cover more extensively in the next section. It’s important to at least realize that having a product or service by itself is not enough. You’ve actually got to be able to let potential customers know about that product or service if you want to make any money.
Companies all over the world realize this key truth about business and that’s why they spend so much money and effort on marketing. As a software developer offering your service, you also have to be concerned with marketing.
The better you market your offerings, the higher price you’ll be able to charge for your services and the more customers you’ll potentially be able to attract.
You can imagine that most software developers starting out don’t think about their careers in this way. Instead of starting out with a bang, they enter the scene with a barely audible pop. So don’t do what they do.
Focus on what service you’re providing and how to market that service.
Think about ways you can improve your offering.
Think about how you can specialize the service you’re providing to serve the needs of a particular type of client or industry.
Focus on being a specialist who provides a very specialized set of services to a very particular type of client. (Remember, as a software developer looking for a good job, you only really need to land one client.)
Also, think about how best to spread the word about your service and find your customers. Most software developers create a resume and blast it out to companies and recruiters. But, when you think about your career as a business, do you really think that is the best and only way to prospect potential clients?
Of course not. Most successful companies figure out how to get customers to come to them to buy their products or services; they don’t go out chasing customers one by one.
Even without getting into the specifics, the point is to think outside of the box and start thinking like a business. What is the best way you can attract customers and how can you tell them about the service you have to offer? If you can answer this simple question, you’ll start off your career with a bang.
Think about a business that has a product or service they offer. How do they differentiate and advertise that product or service?
If you had to describe the specific service you can provide a prospective employer or client in a single sentence, what would it be?
How does treating your career like a business affect the way you Do your work
Look for a job or new clients
Thinking about the future:
What are your goals?
Now that you’re thinking about your software development career as a business, it’s time to start defining the goals you have for this business.
Not everyone is alike. You might have a very different set of goals for your career than I do, but if you’re ever going to achieve any of those goals, you have to know what they are.
This is, of course, easier said than done. I’ve found that most people, software developers included, drift through life without really having a concrete realization of what their goals are or what they’re trying to accomplish in life.
This is the natural state of most human beings. We don’t tend to give enough thought to what to focus on and as a result, our steps lack purpose or direction.
Think about sailing a ship across the ocean. You can get into a ship and raise your sails as most people do. But if you don’t have a clear destination picked out and you don’t take steps to steer the ship in that direction, you’ll just drift aimlessly at sea.
Perhaps you’ll end up sailing your ship by chance to an island or other land mass, but you’ll never really make any solid progress until you define where you want to go. Once you know your destination, you can use all of the tools at your disposal to actively steer the ship in the direction that will take you there.
It seems pretty obvious, yet so few software developers ever define goals for their career—why? I can only guess, but I’d say that most software developers are afraid of committing to a long-term vision for their career.
They want to leave all options open to them because they’re afraid of choosing one path and going down that path. What if it’s the wrong path? What if I don’t like where it takes me? These are scary questions indeed.
Some developers haven’t even given it much thought at all. Left to our own devices, we tend to follow the path that’s laid out for us. It’s a much more difficult job to create our own path, so we just don’t do it.
Instead, we take the first job we get an offer for and stay at that job until a better opportunity comes along or we get fired—I mean “laid off.”
Whatever your reason may be for not defining goals for your career, now is the time to do it. Not tomorrow, not next week, but right now. Every step you take without a clear direction is a wasted step. Don’t randomly walk through life without a purpose for your career.
How to set goals
Okay, so now that I’ve convinced you that you need to set goals, how do you do it? It’s easiest to start out with a big goal in mind and then create smaller goals along the way that will help you get to the bigger goal. A big goal is usually not very specific, because it’s hard to clearly define something that’s potentially very far off.
But, that’s okay. You don’t have to be specific when you define a big, far-off goal. Your big goal has to be specific enough to give you a clear direction in which to travel.
Going back to the ship analogy, if I want to sail to China, I don’t have to know the exact latitude and longitude of the port I want to get to right away.
I can get in my ship and start heading in the direction of China, and when I get closer, I can always get more specific. All I need to know to get started out is whether I’m getting closer to China or further from it.
Your big goal should be something not too specific, but clear enough that you can know if you’re steering toward it or not. Think about what you want to ultimately do with your career. Do you want to become a manager or executive at a company? Do you want to go out and start your own software development business someday?
Do you want to become an entrepreneur creating your own product and bringing it to market? For me, my goal was always to eventually be able to get out on my own and work for myself. setting goals
It’s really up to you to define what your big goal is. What do you want to get out of your career? Where would you like to see yourself in 5 or 10 years? Go ahead and spend some time thinking about this—it’s really important.
Once you’ve figured out what your big, far-off goal is, the next step is to chart a course to get there by making smaller goals along the way. Sometimes it helps to think backward from your big goal to your present situation.
If you had already achieved your big goal, what would have been some of the milestones along the way? What path could you imagine tracing backward from your big goal to your present situation?
At one time, I had a big goal of losing about 100 pounds of weight. I had let myself get out of shape and I wanted to get back on track. I set for myself smaller goals of losing 5 pounds every two weeks. Every two weeks that I was able to reach my smaller goal, it moved me forward toward my big goal.
If you can make small goals that gradually move you forward in the direction toward your bigger goals, you’ll eventually reach your destination. It’s important to have various sizes of goals that lead you in the direction of your big goal.
For example, you might have a yearly goal of reading so many technical blogs or learning a new programming language.
That yearly goal might be a smaller goal that will lead you toward your bigger goal of becoming a senior-level developer. But that yearly goal might be broken up into smaller goals of reading a single blog each month or making some defined amount of progress each day.
The smaller goals keep you on track and motivated so that you keep heading in the direction of your bigger goals. If you set out to accomplish a big goal and don’t have smaller goals along the way, you don’t end up having time to course-correct when you’re off track.
Smaller goals also give you frequent rewards that help motivate you. Small victories each day and each week help us feel like we’re making progress and accomplishing things, which makes us feel good about ourselves and helps us keep moving forward. Smaller goals also don’t seem as daunting as a big goal.
Consider writing this blog. Right now I have a goal for writing so much of this blog each day and each week.
I’m not trying to tackle the huge goal of writing the entire blog, but instead, I’m looking at it from the perspective of what my goal is for each day, knowing that by doing what I need to do each day, I’ll eventually reach my big goal of completing the entire blog.
If you haven’t given much time to think about your future and you don’t have at least one clear and definite goal you’re aiming toward, put down this blog and define some goals for yourself. It’s not easy, but you’ll be glad you did it. Don’t be a ship floating aimlessly in the ocean. Chart a course before you set sail.
Tracking your goals
Periodically, you should track and update the goals you have set for yourself—and adjust them if necessary. You don’t want to travel miles off course before you discover your mistake, and you probably don’t want to travel far down a path that turns out to be the wrong one, either.
I’d recommend setting regular intervals for checking up on your goals. This will help you to make adjustments when needed and keep you accountable. You might want to review the goals you set for each week at the end of that week before you plan out the next week. The same goes for every month, quarter, and year.
It can be helpful to reflect on what you accomplished during small and large time periods so that you can figure out if you’re making the right amount of progress or you need to make some kind of adjustment.
Sit down and write out at least one major goal for your career.
Break down that major goal into smaller goals that correspond to Months
Write down your major goal where you can see it each day to remind you of what you’re striving for.
People skills: You need them more than you think
Leave me alone, I just want to write code!
I used to be under the impression that the job of a software developer was just to write code. I know I’m not alone in having been guilty of thinking that way.
The fact is that a majority of our time in the software development field is spent dealing with people, not with computers. Even the code we write is written first for human consumption and only secondarily for the computer to understand.
If that were not the case, we’d all be directly writing our code as machine language—1s and 0s. If you want to be a good software developer, you have to learn to deal effectively with people (even if writing code is the part of your job you enjoy the most).
Think about how much of your time at your job is actually spent interacting with people and you immediately begin to see the value of improving your interactions with them.
When you sit down to do you work in the morning, what is one of the first things you do? That’s right, check email. And who sends you email? Is it computers? Does your code send you an email asking you to finish it or to make it better? No. People do.
Do you go to meetings during the day? Do you converse with coworkers about problems you’re working on and strategize on how to solve them? When you do finally sit down to code, what do you code? Where do the requirements come from?
If you think your job is to write code, you had better think again. Your job as a software developer, and in just about any profession, is to deal with people.
Learning how to deal with people
Many excellent blogs have been written on the subject of dealing with people, and I’ll give you my personal list of what I think are the best ones in section, so I’m not going to attempt to cover everything there is to know on the subject in this short blog.
But I do want to cover some of the basic concepts you should know that will perhaps give you the best bang for your buck. I’ll borrow heavily from one of my all-time favorite blogs on the subject, How to Win Friends and Influence People by Dale Carnegie.
Everyone wants to feel important
Perhaps one of the most important concepts you should know when dealing with people is that, at their core, every single person wants to feel important. It’s one of the deepest and most desperate desires of the human race and the primary motivation for most great achievements in society and life.
Every time you interact with another person, you should remember and be aware of how you’re affecting this basic human need. If you belittle or make a person and their accomplishments feel diminished in some way, fully expect them to react with the ferocity and desperation of a person whose oxygen supply has been cut off.
It’s very easy to make the mistake of quickly dismissing a coworker’s idea so that you can present your own, but when you commit this grievous error in judgment, you’ll often find them deaf to your own ideas because you’ve made them feel unimportant.
If you want people to accept your ideas and think them valuable, you have to extend the same courtesy first. You can never win a person’s heart if you do not leave their pride intact.
By token of this first concept, you should immediately be able to realize that criticism will rarely be a tool that will achieve your intended result. I used to be a big criticizer. I used to think that punishment was a much more effective motivator than rewards, but I was completely wrong.
Time and time again, studies have shown that rewarding a positive behavior is much more effective than punishing a negative behavior. If you’re in a position of leadership or management, this is an especially important principle to observe.
You have to learn to bite your tongue and only speak words of encouragement if you want to inspire people to perform their best or you want to effect change.
Perhaps you’re currently working for a boss or have worked for a boss who lacks the understanding of this principle and responds to all faults with outright and harsh criticism. How does it make you feel?
Does it make you feel motivated to do a better job? Do not expect others to react in a much different way. If you want to motivate and inspire, use praise instead of criticism.
Think about what the other person wants
The key to successfully dealing with people is to stop thinking in terms of you and what you want and start thinking in terms of what is important to the other person and what she wants.
By shifting your mindset in this way, you’ll avoid making another person feel less important and you’ll be less likely to criticize her. A person who is handled in this manner is much more likely to deal with you in a favorable way and see your ideas as valuable.
When you first enter a dialog with a coworker or boss, try to shift your focus from you to them. Try thinking about things from their perspective. What is it you think they’re trying to get out of this conversation?
What is it that’s important to them? Listen attentively and then when it’s your time to talk, phrase your dialog in ways that appeal to the desires of the other person. (In fact, rehearse this scenario in advance. Be prepared ahead of time for how the conversation will go.)
It does no good for telling your boss why you would like to implement a feature in a certain way. It’s much better to phrase the suggestion from the frame of mind of why implementing a feature the way you suggest will be useful to your boss. Perhaps it will cause the software to be more stable or more likely to be shipped on time.
As software developers, we sometimes tend to think that all people think about things from a logical perspective. It’s easy to fall into the trap of falsely believing that solid reasoning is enough to compel another person to accept your way of thinking.
The truth of the matter is that even though we like to pride ourselves on our intellectual prowess, we’re all very emotional creatures. We’re like little babies who are walking around wearing suits and ties and pretending to be all grown up.
A slight or injury is just as likely to cause us to cry or throw a tantrum, but we’ve learned to control and hide those emotions out of sight.
For this reason, it’s imperative to avoid arguments at all costs. Logic and pure reason do little to convince a screaming toddler that it indeed makes sense for him to go to sleep so that he’ll be well rested for the day ahead, and it will do just about as much good in convincing a slighted coworker that your way of doing things is best.
I have come to the conclusion that there is only one way under high heaven to get the best of an argument—and that is to avoid it. Avoid it as you would avoid rattlesnakes and earthquakes.
Dale Carnegie, How to Win Friends and Influence People
If you have a disagreement about how something should be done, in many cases your best course of action is to first determine whether or not that particular point is a hill that’s worth dying on—especially if you know it is for the other person involved.
Any opportunity that you can find to give up your side and admit that you’re wrong on a small matter that doesn’t mean much to you, but perhaps a great deal to the other person, will win you unmeasurable respect with them and store up for your future credit that can be redeemed when the tables are turned.
If you’ve never taken the time to work on your people skills, there’s no better time than now to start. You’ll find your life much more enjoyable when you learn how to interact and deal with others in a pleasant way, and the benefits you’ll accrue from learning those skills now will be lifelong and difficult to put a price on.
Landmine: Dealing with “poisonous” people
Sometimes, you’ll find that there are people who you just can’t get along with no matter what. Some people are just looking for opportunities to bring others down and generally have a negative view of everything in life. I call these kinds of people caustic, and you would do well to avoid them.
If you recognize someone as being caustic, don’t try to change them, and don’t try to deal with them; just stay out of their way and limit your interactions as much as possible. You can recognize the signs of a caustic person by the trail of destruction they leave behind them.
Some people seem to always be involved in some kind of drama and have bad things happen to them. They often try to play themselves off as the victim. If you recognize this pattern, run—run away as fast as you can.
But what can you do if this kind of person is your boss or a coworker you have to interact with? Not much. You might either have to suck it up or you might have to look into moving to a new department or even a new job. Whatever you do, don’t get sucked into their trap. If you have to interact with them, do it in a minimal, nonemotionally invested way.
In a single day at your work, keep track of every encounter you have with another human being. At the end of the day, count up how many interactions you had during that day, including answering emails or phone calls.
Get a copy of the blog How to Win Friends and Influence People by Dale Carnegie. The blog is in the public domain, so you can find it very cheap. Read it—more than once.
The next time you’re being sucked into an argument, think about ways you can turn it around. For an interesting test, try just giving in. In fact, don’t just give in, but emphatically take your opponent’s side. The outcome of doing this may surprise you.
Try to come up with a list of software developers you know or have heard of who fit each of the three categories.
If you’re interested in becoming an independent consultant or entrepreneur, set up a meeting with someone you know who is already on that career path and ask him or her what it’s like. (Too many developers jump in without knowing what they’re getting themselves into.)
What kind of software developer are you?
Have you ever had to hire a lawyer? What was the first thing you did? If you’ve never hired a lawyer, what do you think would be the first thing you’d do?
If you guessed that you’d need to figure out what kind of lawyer you needed, then you’re correct. You don’t want to just call any lawyer; you want to call a specific lawyer who deals in the area in which you have a problem.
Lawyers have the expertise and they usually make that expertise known from the start. There are criminal lawyers, accident lawyers, real estate lawyers, and so on.
You wouldn’t want to have a divorce lawyer represent you for a tax or real estate problem, so specialization is important. A lawyer doesn’t come out of law school and decide they just want to be a “lawyer,” but unfortunately that’s exactly what most software developers do when it comes to their profession.
Specialization is important
There are plenty of software developers out there who don’t have a specific specialization. In fact, most software developers will completely define their specialization by what programming language they program in. You’ll commonly hear “I’m a C# developer,” or “I’m a Java developer.” This kind of specialization is too broad.
It doesn’t really say enough about the kind of software development work you can do. A programming language doesn’t tell me anything about what kind of developer you are and what you can actually do. It only tells me one tool that you use to do your job.
You might be scared to specialize in one area of software development because you’re afraid that you’ll become pigeon-holed into one specialty and that will exclude you from many jobs and opportunities. While it’s true that specialization will close you off from some opportunities, it will open many more for you that you wouldn’t have otherwise had.
Think about the lawyer situation again. If you became a lawyer and had no specialization, technically every person seeking a lawyer could be your client. But the problem is that very few people would want to hire a generalist lawyer. Most potential clients would seek to hire a specialist.
Even though it would appear that you had a bigger pool of potential clients, the reality would be that by being a generalist, you’d have greatly reduced your pool of clients to only those who weren’t savvy enough to realize they needed a specialist.
By being a specialist you have a smaller pool of potential employers and clients, but you become a much more attractive prospect to them. As long as your specialty is big enough and it’s not overcrowded, you’ll have a much easier time finding a job or getting a client than you would if you just called yourself a software developer.
Kinds of specialties for software developers
There are many different kinds of specialties for software developers. Obviously, there are language specialties and platform specialties, but there are also specialties in methodologies and specific technologies or industries.
One of the first things you should figure out, though, is what kind of software development it is you want to do. Do you want to work on the frontend of applications, creating and programming user interfaces? Do you want to work on the middleware of an application, implementing business rules and logic?
Do you want to work on the backend of an application, working with databases or low-level operations? You can even pick all three and be a full-stack developer, but in that case, you should definitely specialize in a specific stack of technologies. (For example, a full-stack web developer might specialize in creating MVC websites, using C# and SQL Server.)
You can also specialize in areas like embedded systems development where you work close to hardware devices and write code that runs on computers inside of a device. Embedded systems programmers have to deal with a whole different set of problems that web developers do.
Operating systems is another area of specialty, although not very important when dealing with web development. Many developers specialize in writing applications for a specific operating system, like Windows, UNIX, or Mac.
Mobile application development or even a specific mobile operating system is another potential area for specialization. There is a huge demand for iOS or Android developers who specialize in writing mobile applications for that platform.
Some developers specialize really deep and become experts in a very specific platform or framework. These developers have few potential clients, but they can demand a high hourly rate because of their specialty.
You’ll find that low-level specialties are most common around very expensive software suites or frameworks. Consider the giant German software company SAP. Some very highly paid developers specialize in developing customer solutions to integrate with this expensive software system.
Web development stack Embedded systems
Specific operating system Mobile development
Picking your specialty
Most software developers I tell about specializing agree with me, but I’m often asked about how to actually pick a specialty. Picking a specialty often can seem like an overwhelming task.
Here are a few tips to help you pick your specialty:
What were some of the major pain points in your current or previous company? Can you become a person who specializes in solving those pain points?
Is there a particular kind of work that nobody wants to do or that lacks skilled people? Become the person who is an expert in that area, and you’ll have plenty of business.
What kind of topics most commonly come up at conferences and user groups?
What kind of questions do you answer the most, either for coworkers or on sites like Stack Overflow?
Whatever you do, make sure you pick some kind of specialty. The size of your market will determine how specific it is, but try to make it as specific as possible. You’ll be in much higher demand in your specific market if you do so. And don’t worry; you can always change your specialty later if you need to.
Obviously, I’m not specializing in developing software for printers anymore, and I know many other developers who have had great success moving around to different specialties during their careers.
For example, a good friend of mine, John Papa, used to specialize in Microsoft Silverlight. After Silverlight went away, he changed his specialty to Single Page Applications (SPAs).
What about the Polyglot programmer?
Whenever I bring up the topic of specialization, I always encounter at least some resistance. I think it’s important to clarify that even though I recommend specializing and having a specialty, it doesn’t mean I think you shouldn’t also have a wide variety of skills.
Although those two things may seem contradictory, they don’t have to be. Being a well-rounded and versatile software developer is great.
Being able to use multiple technologies and programs and many different programming languages can only help your career and can make you a much more valuable software developer than someone who only knows one specific technology or programming language. But it’s very difficult to market yourself as a jack-of-all-trades.
It’s nice to have a developer who can do anything on the team, but rarely do companies or clients set out to find that kind of person. Even though you may be awesome at all kinds of different technologies and know 50 different programming languages, you still will be better off picking some specialty—even if it changes from time to time.
Learn as much as you can and become as flexible as possible, but also have a specialty that makes you unique and stands out. If you have to choose between the two options, start with specialization and branch out later.
List all the different kinds of software developer specialties you can think of. Go from broad to specific and see how specific you can get.
What is your current specialty? If you don’t have one, think about what area of software development you could specialize in.
Go to a popular job search website and look for jobs in your market for your specialty. Try to get an idea of whether or not further specialization would be beneficial to you or limit your choices too much.
Not all companies are equal
Your experience as a software developer can be radically different depending on what type of company you choose to work for. It’s important to decide for yourself whether you want to work for a small company just starting up, a large corporation with massive budgets and shareholders, or somewhere in between.
Not only does the size of the company greatly affect your experience, but all companies have their own individual cultures that can have a dramatic impact on your overall happiness and how much you feel that you fit in and belong where you’re at.
It’s important to take this into consideration before accepting a job offer. It’s easy to evaluate a potential employment opportunity based solely on salary and benefits, but in the long run, the work environment will likely be much more important to you.
In this blog, we’ll examine the pros and cons of each type of company—small, medium, and large—and talk about how to decide what type of company you want to work for.
Small companies and startups
Most small companies are startups, so they have a very distinctive startup mentality. This startup mentality is usually focused on rapid growth and doing everything you can to get the company to a profitable situation or reach some other pressing goal.
As a software developer working for a company like this, you’ll most likely have to wear many hats. You won’t just be writing code. Because there are fewer employees, roles will be less defined and you’ll have to be more flexible.
If you just want to sit at your desk and write code, you might not like having to set up a build server or help out with testing. But if you’re the kind of person who thrives on energy and excitement and is always up to face a new challenge, you might find this kind of environment very engaging.
In a small company, what you do is often much more impactful. This can be both good and bad. If you like to blend into the crowd and just do your job, you probably won’t like working at a small company—it’s very hard to fly under the radar. But if you’re the kind of person who likes to see the impact of the work you’re doing, a small company is by far the best place for this.
With a small number of employees, each person’s contributions directly affect the bottom line and are noticed. This means your great achievements are magnified, but so are your screw-ups.
Small companies also usually offer much less stable than a larger company, but a potentially bigger reward in the long run. A small company is much more likely to go out of business or not be able to make payroll and have to cut staff.
But at the same time, if you can ride out the storms, being one of the first employees of a small company that has grown significantly can be very rewarding.
It can be difficult to reach a director-level position at a big company by climbing the corporate ladder, but at a small company, your upward mobility is much greater because new employees tend to come in underneath you already.
Many developers work for startups taking low salaries and working ridiculous hours hoping to get rich on the stock options if the company goes public or gets acquired, but I consider that a pretty risky bet. I wouldn’t recommend choosing to work for a startup just because you might hit the lottery someday.
Taking that approach, you’re likely to burn out fast and have nothing to show for it. A better reason to work for a small company or startup is that you like that kind of fast-paced exciting environment and you want to be part of building something and watching it grow.
Most companies are medium-sized companies. So this is the most likely place you’ll end up working, or you may be working for one now.
Medium-size companies are usually companies that have been around for some time and have a profitable business, but don’t have the momentum to make it into the fortune 500 lists.
In a medium-size company, roles are usually a bit more defined and you have quite a bit more stability. I’d say that medium-sized companies often offer more stability than large companies, which often have large workforce reductions and periodic reorganizations. If you like stability, you’ll probably find a medium-size company suits you best.
Working at a medium-size company, you’ll probably find the pace a bit slower, although it’s still hard to hide among the reeds. Your contributions might not cause the company to sink or swim, but they will be noticed. In a medium-size company, slow and steady often wins the race.
The fast-paced do-or-die mentality of a startup usually drives decisions quickly and embraces cutting-edge technologies, but most medium-sized companies are risk-averse and move quite a bit slower.
If you like working on the bleeding edge, you’ll find it a tough sell to your boss at a medium-size company, because it will be hard to justify the risk.
Large companies are pretty interesting. Each large company is very different from another. Large companies usually have very deep company cultures that permeate every aspect of the company. Many large companies are publically held and have CEO celebrities who you aren’t likely to ever interact with.
Perhaps the biggest thing you’ll notice when working for a large company is the amount of procedure and process that’s in place. When you interview for a large company, you usually go through a series of interviews and follow a very formal process.
And when you work at a large company, you’ll probably have to conform to an established way of doing things. Cowboys and renegades are usually not welcome in the corporate culture. If you like the process and you like structure, you’ll probably enjoy working for a large company.
One neat thing about large companies, though, is the opportunities you have when working for one. When I worked for a fortune 500 company, I had many different training opportunities and just about every software product at my disposal. Many large companies offer career guidance to help you grow and learn within their organization.
You also may get the chance to work on some cool stuff. Small and medium-size companies don’t have the budgets for massive, world-changing projects. But for many large companies, technological innovations are common.
You might not be able to have a noticeable impact on one of these large-scale initiatives, but you could be part of a team that brings something truly remarkable to the market.
For many developers, large companies are frustrating, because they feel that their individual contributions don’t matter. You’re likely to be working on a small piece of functionality in a large code base. If you’re the kind of developer who likes to get your hands into all aspects of a software system, you might not like working at a large company.
It’s very easy to go off the radar working at a large company. I’ve worked at several large companies where some developers basically did nothing all day long and no one really noticed until there was a major round of company-wide layoffs.
This kind of autonomy can be put to good use, though. Sometimes it’s nice to be able to work on projects that you think are important or interest you without having the pressure of having to produce.
A final note about large companies: politics. Large companies usually have complex political systems that can rival large governments. You can try to avoid politics as a software developer in a large company, but even if you do, other people’s political maneuvers are sure to affect you in some way.
And, as we’ll talk about in the next blog, to climb the corporate ladder, you’ll have to learn how to navigate your way through the complex political climate of any large company you work for.
If politicking isn’t your thing and you want to avoid it completely, look for a small company with a flat management structure.
Software development companies versus companies with software developers
Another major factor you should consider when deciding what kind of company to work for is the difference between companies that have software developers to work on their internal software or part of some product they’re producing versus companies that actually produce software or do software development as their core offering.
Companies that don’t focus on software development, but instead hire software developers to work on some aspect of their system, treat software developers in a much different way than companies whose primary focus is software development.
When a company’s focus isn’t software, typically software developers aren’t given as much respect and leeway. These companies are much more likely to have loose soft-ware development practices.
On the other hand, companies whose livelihood is based on developing software are much more likely to put a high value on the software developers they hire. It doesn’t mean necessarily that the work environment will be better, but it’s usually very different.
You’ll also probably find that software development companies are a bit more cutting-edge when it comes to technologies and tools that companies that have a different focus but hire software developers. If you want to work on newer technologies, you’ll probably want to find a company that develops software directly.
The difference between these two types of companies becomes very apparent when dealing with Agile software development methodologies.
Companies whose primary focus isn’t software tend to have much more difficulty adopting Agile processes because Agile processes are usually driven by the development teams.
Agile processes require adoption from the top down, so it’s often a difficult sell to make a whole company change the way it does things just because some developers think it’s a good idea.
These are just some general guidelines about the different kinds of companies you might work for as a software developer, but every company is different. It’s up to you to decide what kind of working environment suits you best and what kind of company culture you best fit in to.
It’s always a good idea to talk to developers already working for a company before accepting a job there so that you can get a more realistic feel for what it would be like to work at that company.
Take some time to think about what kind of environment you prefer working in. What company size matches your ideal working environment?
Make a list of companies in your area or companies you have worked for and decide which category each fits into.
Climbing the corporate ladder
I know quite a few people in the IT industry who just can’t seem to ever move up in the world. Year after year they have the same exact job and job title. I wonder if they ever even get a raise. Do you know someone like that?
It’s surprisingly common. If you don’t want to end up on that dead-end path, you’ve got to do something about it. In this blog, I’m going to give you some advice on how to climb the corporate ladder so that you don’t get stuck in the same position, never advancing.
The most important thing you can do to go up in the ranks of any company is to take on more responsibility.
TIP It may seem obvious, but often in your career, you’ll be faced with choices between more money and more responsibility. The right choice—at least in the long term—is almost always more responsibility.
Money always catches up to responsibility. Any time you’re offered more responsibility, take it.
But what if you aren’t offered more responsibility? What can you do to gain it yourself? Sometimes you have to go out and look for opportunities where you can take charge of an initiative or head up a project. There is almost always some neglected area of business that you can find to contribute your talents to—you just might have to dig to find it.
One of the best places to search is in areas that no one else wants to get involved in. Perhaps there’s a legacy application that no one wants to touch or a certain module in your codebase that is particularly nasty.
These are landmasses to add to your growing empire, because no one will want them, so you won’t be up for much of a fight. But if you can turn those swamplands into fertile ground, you can really show your value.
Another way to indirectly take on responsibility is to become a mentor for others on your team. Volunteer to help the new person get up to speed. Always offer help to anyone who needs it.
Not only will you learn more by encountering and solving other people’s problems, in addition to your own, but over time you’ll develop the reputation of being the “go-to” person on the team. Eventually, this reputation is likely to land you a team-lead position or management position, if you want to go that route.
HOW YOU CAN TAKE ON MORE RESPONSIBILITY
Is there a project that has been neglected that you could take charge of?
Can you be the person who helps new team members get up to speed?
Can you take the role of documenting processes and keeping those documents up to date?
What job does no one else want to do that you could take on and make easier or automate?
It doesn’t matter if you’re the brightest, best, and hardest-working developer on a team if no one knows who you are and what you’ve achieved. All of your hard work can easily go to waste if you can’t find a way to let your boss and upper management know what you’re doing.
One of the first things I did whenever I started a new job was to start keeping a daily account of where I spent my time and what I accomplished during the day. I’d then take that information and compile a weekly summary every Friday to send to my manager.
I called this my “weekly report,” and when I’d send out my first report at each new job, I’d include some information to let my manager know that I understand how important it is to know what your direct reports are doing, and so I was sending a weekly summary of my activities to make his or her job easier.
This weekly report ensured that every single week I’d show up on my manager’s radar and I could talk about what I accomplished that week without outright bragging.
It was a great way to gain visibility and it often appeared that I was much more productive than my peers simply because my manager was hearing about all the work I was doing, but not much about the work other developers were doing.
Not only was this weekly report valuable for my visibility, but it was also an excellent resource for myself when review time came around. I could go back through my weekly reports and pick out my key accomplishments for the year.
When it came time to fill out reviews, I knew exactly what I had accomplished during the year and I had dates to prove it.
I’d definitely recommend sending an unsolicited weekly report, but there are also many other ways to become more visible in your organization.
One of the best ways is to offer to give presentations on some topic or problem your team is facing. Pick a topic you can present on and offer to present that topic to your team.
You can even offer to do it as a lunch-and-learn where you present an educational topic during lunch instead of on company time. This is a great way to gain visibility and show how knowledgeable you are in a particular area.
Plus, there’s no better way to force yourself to learn something than to know that you have to present it in front of other people. I’ve done my best learning under that kind of pressure.
HOW TO BE MORE VISIBLE
Keep a daily log of your activities—Send this log as a weekly report to your manager.
Offer to give presentations or trainings—Pick a topic that would be useful to your team.
Speak up—Do this at meetings and any time you get the chance.
Be seen—Set up regular meetings with your boss. Make sure you are seen often.
Another really good way to advance is to keep increasing your skills and knowledge. It’s hard to stagnate when you’re constantly improving your education level. Educating yourself makes it easy to justify a raise or promotion because you can clearly show that you’re more valuable now than you were before.
You can, of course, take traditional higher-education courses—especially if your company will pay you to get a degree—but there are many alternative ways to educate yourself that can pay off in the future. You should always be learning something new or advancing your skills in some way.
Sign up for training courses or seek out certifications that will show that you are committed to continually improving.
At one point, early in my career, I felt like my upward mobility was somewhat limited, so I decided to start getting Microsoft certifications. I studied hard and took all the tests I needed to get one of the top-level Microsoft certifications.
It wasn’t easy, but I quickly saw the benefits of my career. The extra effort showed my manager that I was serious about advancing my career and opportunities were quickly opened for me.
In section 3 we’ll talk more about how to learn things quickly, but it’s definitely a skill you should master. The faster you can advance your knowledge, the more you’ll be able to learn and the more opportunities that will come your way.
Also, don’t just learn about software development. Take some time to learn about leadership, management, and business if you have your sights set on higher-level and possibly executive positions.
And don’t forget to share what you’re learning. We’ve already talked about how you can offer to give presentations to share your knowledge, but you can also create your own blog, write magazine articles or blogs, and speak at community events or conferences.
The outside exposure will help establish you as an authority in your area of expertise and will make you seem more valuable to the company you’re working for.
Be the problem solver
In any organization, there are always plenty of people who will tell you why some idea won’t work or some problem is too hard. People like that are a dime a dozen. Don’t be one of them. Instead, be the person who always has a solution to a problem and is able to execute that solution to get results.
One of the most useful kinds of people to have around in any company is the kind of person who never seems to find an obstacle that they can’t overcome. Building a reputation for being that kind of person is a sure way to get promoted.
Forget the political games and posturing for the position—if you can solve problems that other people can’t or aren’t willing to tackle, you’ll easily become the most valuable person at any company.
Landmine: I don’t have any opportunity for advancement
Most companies offer some kind of opportunity for advancement, but perhaps you’ve followed all the advice in this blog, and, for whatever reason, you just don’t see any opportunities ahead of you. What do you do then?
Quit. Make sure you have another job lined up first, but sometimes you just have to realize that you’re in a dead-end job and you need to find a better opportunity.
Perhaps your work environment is caustic and mentally unhealthy, perhaps nepotism ensures you’ll always stay where you are; whatever the reason, you might need to move on.
What about politics?
You can’t really have a blog about advancing in a corporate culture without at least mentioning politics. I’m addressing this one last because I think it’s the least important thing to focus on when trying to advance your career.
I’m not naïve; I realize that most organizations have quite a bit of politics and you have to be aware of them, but I don’t think you should invest too much time in playing political games.
Sure, you can advance up the corporate ladder by deft maneuvers and ruthless ambition, but when you advance that way, you’re likely to fall just as easily. Some will disagree with me, but I’ve always found it better to build a solid foundation based on actually being a valuable employee rather than appearing to be one.
With that said, you should still be aware of the political climate of whatever organization you’re in. You can’t completely avoid politics, so you have to at least know what’s going on, what kinds of people you need to avoid, and which ones you should never cross.
What is one way you can take on more responsibility at your current job right now?
How visible are you to your current boss or manager? What is one concrete action you can take in the next week to become more visible?
What are you doing to educate yourself? Decide what would be the most valuable thing to educate yourself on and create a plan to get that education over the next year.
Freelancing: Going out on your own
One way to get out on your own and start your own business is through freelancing or becoming an independent consultant. A freelancer is someone who doesn’t work for a single client but instead hires out their work to multiple clients either for a fixed price or an hourly rate.
For many software developers, the idea of becoming a freelancer is very appealing, but it can be difficult to get started. For much of my career, when I was working as an employee, I dreamed of being a freelancer, but I struggled with not knowing how to make the transition.
I knew that many developers were making their living working as freelancers, but I didn’t know how they managed to find clients and spread the word about their services.
In this blog section, I’ll give you the advice I wish I had when I was first starting out. I’ll give you a practical plan you can put into place to become a freelancer or enhance your business if you already are one.
If you read the last section on quitting your job, you know that I recommend starting a side business before trying to start a new business full-time. This especially applies to freelance, because it can be very difficult to get started freelancing and get a steady stream of business.
One of the greatest fears of freelance developers is that they will not have work and so they will not get paid. It’s very stressful to know that you don’t have enough work to fill your time or that after you complete some work for a client you’ll have to go out and hunt for more.
It’s much better to have work lined up ahead of time and to be in a situation where you have to turn work down.
The only way to get to this point is to build up your business over time. You need to have existing long-term clients that you can count on for future business and you need a steady stream of new clients coming in the door.
It’s pretty difficult to just hang your shingle out one day and expect both of these things to happen. You have to cultivate these two situations over time.
Ask someone you know
How do you get started? How do you actually get your first client? The best way to get a client is through someone you already know. Someone you already know is more likely to trust you, especially starting out.
Without quitting your day job, put out messages on your social networks letting your friends and acquaintances know that you’re starting a new freelancing business and you’re looking for work. Make sure you’re specific about what exactly you can do for them and what problems you can solve.
Make a list of all the people you know who would potentially be interested in your services and email them personally. Tell them exactly what you can do for them and why they should hire you to do the work.
The more prospects you have, the more likely you are to get work. Getting work is mostly a numbers game. Don’t be afraid to send out follow-up emails every so often to keep letting people know about your services. Over time this diligence will pay off.
Your goal should be to get to a point where you’re filling up all of the part-time hours you have allocated to this side business and you actively have to turn people away because you can’t take on any more work.
If you can’t get to this point running your business on the side, you really have no business trying to do it fulltime. It will be much more difficult to fill up 40 hours of work a week than it will be to fill up 10 or 20.
Best way to get clients
You’ll probably find that you only have so many friends and acquaintances who need your services—you might even find that you don’t have any. But don’t worry, there are other ways to get clients rather than just reaching out to people you know.
There are plenty of freelancers who advertise their services on various job boards and even use paid advertising to pick up clients, but I’m going to tell you a much easier way that requires a lot less overhead— the only drawback is that it will require patience and some hard work.
What you really want to focus on is what is called inbound marketing. (We’ll cover this in much more detail in section 2.) Inbound marketing is basically getting potential clients to come to you instead of you going out to find them. The primary way you do this is by offering something of value for free.
I harp on this quite a bit, but most developers should have a blog. A blog is an excellent way to do inbound marketing because you can publish articles on your blog that get people to go there and read your content.
Once potential clients are on your blog reading your content, you can try to directly convert them to customers by offering your consulting services at the end of your blog post or through some navigation on your site, or you can offer them something else of value in exchange for their email list.
Email marketing is one of the best and most effective ways to market your products or services. Once you have a list of people who are interested in what you have to offer, you can slowly send them more information about you and what you can do for them and eventually convert them to customers.
You can also do inbound marketing by offering free webinars, writing blogs, speaking at conferences, appearing on podcasts, running your own podcast, and just about anything that is giving someone valuable (and mostly free) content related to the service you’re providing.
The only problem with inbound marketing is that it can take some time to start working. You have to have enough content out there to attract
Ideas for inbound marketing
enough potential customers to fill up your pipeline with work. That’s a good reason to start now and to not quit your day job just yet. But in the long term, inbound marketing will bring you much more business and make it easier for you to raise your rates—which we’ll talk about next.
Setting your rate
Okay, so you’ve got some clients that are interested in your services, or perhaps you already have been doing some work for clients, but what do you charge them?
This is one of the most difficult problems, besides acquiring clients, that freelancers face. Most freelancers greatly underestimate both the amount they can charge a client and the amount they need to charge a client.
First, let’s talk about how much you need to charge a client. Let’s say that you’re currently working a job where you make $50 per hour. This is a pretty decent wage in the United States, but you can’t charge that same amount as a freelancer and have anywhere near the same standard of living. Let me explain.
As an employee, you’re probably getting some benefits on top of that $50 an hour you’re being paid. Perhaps you’re getting medical benefits and some vacation time. Plus, in the United States, if you work for yourself, you have to pay what is called self-employment tax—yes, the government charges you extra for creating your own job.
(Well, actually that isn’t entirely accurate. Right now your employer is paying this tax for you, but that’s beside the point.) The $50 an hour you’re making might actually really be about $65 an hour after everything is said and done.
Now, let’s consider the overhead of running a business. Normally your employer pays for nice things like electricity, computer equipment, internet, etc. But as a freelancer, you’ll have to pay for all this stuff yourself.
You’ll probably also need to hire an accountant or blog-keeper and perhaps have some legal fees and other overhead involved with running a small business. All this can add up, so you’ll need to make more money to cover this overhead.
Finally, let’s talk about blogging. When you’re employed by someone else, you usually get paid for 40 hours a week—at least here in the United States. You don’t really have to worry about filling up your time, because whether there is work or not, as long as you’re at your desk, you’ll get a paycheck. Not so for the freelancer.
As a freelancer, you’ll most likely have some downtime each year, perhaps even each week. In addition, you won’t be able to bill your clients for things like checking and responding to emails, installing an OS on your computer, or any of those other things you might need to do during the day that isn’t directly billable work.
When all is said and done, you might need to make $75–$100 an hour as a freelancer to have the same net pay you would make as an employee.
Many freelancers start out charging what they were making as an employee or just slightly higher and find that they are barely getting by—and until they do all those calculations I ran through, they have no idea why.
As a general rule of thumb, you need to bill at about twice the hourly rate you have as a fulltime employee when you’re a freelancer. Unfortunately, though, that’s not how you set your rates.
You see, you don’t get to arbitrarily throw out a rate based on what you think you need to make and automatically have people pay it. Instead, the rate you can charge is what the market allows you to charge.
This is one of the reasons why I stress inbound marketing so much. The bigger your reputation in the industry and the more clients coming to you, the more you can charge for your services.
You still need to know what number you need to charge to be able to make a living, but it’s up to you to get to the point where you can justify that number—or a higher one—to the market.
You do this by focusing not on the rate itself, but what your work is worth to your clients. You can treat what you do like a commodity or you can treat it as a service that increases the profitability of your clients.
If you decide to treat what you do as a commodity, you can go out there and bid with other developers—many with much lower income expectations—for jobs. In that case, the market will push the buyer to accept the freelancer with the lowest rate.
But if you market your services based on what you can save your client or how you can increase their business, you can base your fee on what value your services would bring to the client. This is why it’s so important to specialize.
I’ll give you an example. I provide consulting services specifically in regards to creating automation test frameworks. When I talk to potential clients about those services, I talk about how much money it costs to build out an automation framework and how expensive it is to make mistakes and have to start over.
I talk about how I have experience building many automation frameworks and that I know exactly what to do.
I show the potential client how hiring me for $300 an hour will save them much more money than hiring a regular developer who may have never written an automation framework before. I tell them how 1 hour of my guidance might save them 20 hours of work possibly going in the wrong direction.
I’m not lying, either. I can make the pitch so effectively because I really believe it’s true. The key is that I’m focusing on how my services will easily pay for themselves and more by the value I’m providing. It becomes an easy decision to hire me instead of someone cheaper who just talks about what he or she can do technically.
WHICH DO YOU THINK IS A BETTER PITCH?
“I can design you a new website for your business. I am highly skilled at HTML5, CSS, and web design, and have successfully built many websites for other companies similar to yours.”
Or “Is your current website generating the most traffic it can and converting that traffic to customers? If you’re like most small businesses, the answer is ‘no.’
But don’t worry, I can help you by creating a top-notch custom-designed website that’s specifically designed to increase your traffic and conversion rates. I’ve helped many other small businesses double and even triple their customers and I can help you too.”
One last piece of advice on setting your rate: if you’re never having any potential client tell you “No” or that your rate is too high, raise it. Keep raising your rate until you start getting “Nos.” You might be surprised how much a client would be willing to pay for your services.
I know some freelancers who have more than doubled their rates by using this technique combined with inbound marketing and structuring their offer in terms of the value they can bring a client.
Make a list of all the people you know who could potentially use your services or may know someone who can.
Come up with an email template that you can send to everyone from the list you just created. (Remember to talk about what value you can bring, not just what you can do from a technical perspective.)
Send out a message on your social networks and send your email to a small portion of the list you created and see what kind of response you get. Once you get some feedback, alter your email and send it out again to more people.
Creating your first product
As a software developer, you’re in a unique position to be able to be an entrepreneur who not only imagines a concept or new idea but can also create it yourself.
Many software developers choose to become entrepreneurs and create because of this reason. Other entrepreneurs have to hire people to create their own ideas—and as you know, developing custom software can be expensive.
Not only can you create a software product as a software developer, but you can also create an information product like a blog or a video.
In this blog, I’m going to help you learn what you need to know to create your own first product and start down the long and bumpy road of entrepreneurship. But be warned, the path you’re about to embark upon isn’t an easy one.
Finding an audience
Many software developers first venturing into the realm of entrepreneurship make the common mistake of building a product before they’ve found an audience for that product.
Although it might seem sensible to start by building a product, you want to avoid falling into this trap; otherwise, you risk creating a solution to a problem that doesn’t exist.
Every product created—including this blog—solves a particular problem. A product has no purpose without a problem to solve, and a product with no purpose has no customers, which means no money for you.
Some products solve very specific problems for a very specific group of people—for example, a software product to help dentists manage their patients or a blog to help software developers learn how to use the .NET Unity framework.
Other products solve a general problem like boredom. Entertainment products like television shows and video games might fall into this category. But regardless of what problem a product solves, that problem, and the audience that has the problem must be identified before the product is created.
If you want to create a product, the first step should be to identify a specific audience that you want to target a solution for. You might have a general idea of what the problem you want to solve for that audience is, but in many cases, it will take some research to find a common problem that’s either not being solved or isn’t being solved very well.
Go where your audience goes and interact with the communities your audience participates in to get an idea of what kind of problems are common. What are the pain points that you’re seeing over and over? Products need customers
I started to notice a trend of software developers asking me how to build a reputation in the industry and how to get their name out there or get noticed. Many developers that were visiting my blog were asking me questions related to these topics.
I could see that there was a real problem that software developers had with learning to market themselves. (In my case, my audience was coming to me through my blog and directly telling me their problems, so it made things easier—again, another reason to have a blog.)
I decided to create a product to solve that problem. I created a program called “How to Market Yourself as a Software Developer” (http:// devcareerboost.com/m).
The product solves a very specific problem that my target audience had, so I knew it would be successful before I even invested the time to create it. (I also had another method of verifying its success ahead of time, but we’ll get to that in a minute.)
Many developers start backward and create a product that doesn’t yet have an audience and then they try to shop the product around to find an audience. When you do things that way, you’re taking a big risk, because it’s much more difficult to start with the answer and look for the question.
When I created “How to Market Yourself as a Software Developer,” my audience came to me beforehand and told me what their problems were. This is an excellent way to get started that makes selling your product easier later on. Instead of trying to find an audience, build one.
We’ll get more into marketing yourself in section 2, but if you use the techniques in that section to get your name out there and create an audience-centered around you and the content you produce, you’ll find that you’ll already have customers eager to buy whatever product you create.
Many famous celebrities use this technique to create and sell products. They already have an audience that they’ve built up. They know the needs and problems of that audience.
When they launch a product into that audience it’s automatically successful. Take someone like Glen Beck, for example. Political views aside, this guy can sell New York Times best-selling blogs, just because of his audience.
He doesn’t have to go and find an audience, because he created one. Just about everything he produces will automatically have buyers eagerly waiting to buy it up.
If you want to achieve the same kind of success with your products (although, perhaps, not nearly on that scale), build a successful blog first and use other media like podcasts, speaking engagements, video, and more to build an audience. Then, once you have an audience, you’ll be able to sell products to that audience.
Testing the market
Once you’ve determined the audience for your product and how it’s going to solve a problem they have, there’s still one more step you should take before you build a product. You should verify the product by testing the market and seeing if your potential customers are actually willing to pay for it.
Remember I said that I had another method of verifying my success for my “How to Market Yourself as a Software Developer” product before I actually created it? Well, here’s a little secret: I got people to pay for it before I even started to work on it.
How did I do this, you might ask? Well, to put it simply: I just asked them to. When I was thinking about creating my product, I decided that before investing several months in doing the work involved, I’d say what the product I was going to create was and offer it at a big discount to my target audience if they would pay me for it before I created it.
It seems a little crazy—and to some degree it was—but it was a good way to prove whether or not someone would actually pay for what I was planning to produce before I spent all the time producing it.
I knew that if I could get developers to give me their money three months or more before it was released, then when it actually was released, selling it would be no problem.
So here’s what you can do: set up a simple sales page where you talk about the product you’re creating and what problem it’s going to solve. Talk about what will be in the product and when you’ll actually produce it.
And give a discounted price so that someone who is interested can preorder the product and get it as soon as it’s released. Offer a money-back guarantee so that potential customers know that if you don’t deliver on the product or they aren’t happy with it, they can get their money back.
But what will happen if you only sell a few preorders? Well, at that point you can decide if you want to change the product or the offering, because you aren’t solving the right problem, or you could simply refund the money back to the few people who bought and apologize, telling them there wasn’t enough interest.
Not a fun thing to do, but much better than spending three months or more building a product only to find out no one wants to buy it.
For my product, it turned out that on the first day I put the pre-sales page up, I sold seven copies of the program. This gave me enough confidence to know that I could move forward and that I wouldn’t be wasting my time. I also had a group of very interested customers who I could ask for feedback to help improve the product as I was building it.
I keep harping on you about not just quitting your job and jumping into an entrepreneurial pursuit, but I’m going to harp on you one more time when I tell you to start small. Too many budding entrepreneurs pick a much too aggressive target for their first product and leave everything behind to pursue their new dream.
You have to understand and realize that your first entrepreneurial pursuit will probably fail. And likely your second will, and perhaps you're third. You might not actually see real success until you’ve gone through quite a few failures.
If you throw everything you’ve got into one big undertaking, betting your entire future on its success, you might end up putting yourself in a position where you don’t have the resources— or even the will—to try again. Don’t do that. Start small instead and work on your first product on the side.
You want to make the learning curve as short as possible, so you need to reduce the cycle time between when you take actions and see the results. The problem with a large product is that you may not see the actual results until you’re very far along and have spent considerable effort building that product.
Perhaps everything in this blog sounds great, but you have no idea how to get started. Don’t worry; I was in the same boat when I created my first product. I was clueless about how to find out what kind of product I could create and how I could sell it.
I’m not going to lie and tell you that it’s easy. There is quite a bit to learn, but it’s easy to get started. Today, it’s easier than ever to sell something online and there are a ton of resources to help you do it.
I’d start out by reading a few blogs on the subject. You might want to check out Ramit Sethi’s blog at I Will Teach You To Be Rich because he’s an expert on the topic and has helped many want-to-be-entrepreneurs become successful.
I’d also recommend checking out the blog The Lean Startup by Eric Ries (Crown Business, 2011) to get some ideas of small businesses you could create and how to get started with them.
But a good amount of your education is going to come through trying and failing. To some degree, you have to do what you think is right, find out why it didn’t work, and then try something different. Most entrepreneurs who create successful products do exactly that.
Come up with some target audiences you could investigate to create a potential product for.
Pick one of these audiences and find out where members of that audience congregate, online or otherwise. Join some of their communities and listen to their problems. See if you can pick out one or two potential areas for a product that can solve a pain they have.
Check who else may already be solving this problem. You don’t want to enter a market with too much competition.
Do you want to start a startup?
One of the most appealing dreams of many software developers is to start their very own startup. A startup has a huge potential for reward but is also extremely risky. I know many software developers who’ve devoted years of their lives to creating a startup, only to eventually fail and be worse off than when they started.
But if you’ve got a good idea—and perhaps, more importantly, the passion and drive to follow through with it—you might find it’s worth the risk of starting your own company from the ground up.
In this blog, we’ll explore what exactly startups are, how you can get started with one, and some of the potential risks and rewards involved in becoming a founder (the name given to someone who creates a startup company).
A startup is a new company that’s trying to find a successful business model it can use to scale and eventually becomes a medium-size or large, profitable company. If you start a company today, it will essentially be a startup.
Now, even though technically any new company could be considered a startup, there are generally two kinds of startup companies. First are the startups that are created with the intent of getting investments from outside investors to help them grow quickly.
These startups are probably the most common kind of startups that you hear about.
Many large, successful technology companies started out as startups that took money from investors to grow and become successful. Most of the terminology and discussion related to startups refers to these kinds of companies.
The other category of startups is bootstrapped startups. A boot-strapped startup is completely funded by its founders. If you’re creating a bootstrapped startup, you aren’t going out to try to raise money from investors and you might not care about getting so big.
These companies usually end up being smaller than the startups that take funders, but they’re also less likely to fail—because they usually have much less overhead—and the founders have much more control over the business because they haven’t given away large portions of the company.
Because there are already blogs in this blog that talk about starting your own bootstrapped business, here we’re mostly going to talk about startups that have the goal of acquiring outside investments to grow. From here on out, when I say startup, I’ll be referring to a startup that intends to get outside investment.
Go big or go home
The goal of most startups is to make it big. The whole reason for taking outside investments is to be able to scale and grow rapidly. Most founders of startups have what is called an exit strategy.
The typical exit strategy might be to grow to a certain size and then hopefully become acquired, resulting in a nice big payday for the founders and investors and a complete reduction of risk of the future of the company.
It’s really important to think about the future when starting a startup. You might intend to create a company that you’re going to stick with for the long haul, but you have to realize that most investors who invest in your startup are going to want to eventually cash out and see a return on their investment.
Getting acquired isn’t the only way to get a nice return, though. Another common exit strategy is to go public. When a company goes public, it sells shares that represent the equity in the company to the public. The sales of those shares can result in a pretty big payday for founders and investors alike.
Regardless of what your overall exit strategy is, it’s important to understand that startups that take outside investments generally have the goal of a big payday somewhere down the road.
Typically, you aren’t going to create one of these kinds of startups and be very conservative. Startups usually swing for the fences.
As you can imagine, this kind of mentality has a potential for some huge rewards, but along with it, there are some huge risks. Most startups fail. Some estimates show that as many as 75% of startups that have gotten outside investments end up failing.
I don’t know about you, but to me, that’s pretty scary. Before you start a startup, you really need to think about dedicating years of your life and working insane hours, only to eventually close the doors with nothing to show for all your hard work except some hard-earned experience.
A typical startup lifecycle
There is a whole subculture dedicated to startups and plenty of blogs have been written on how they function, so there’s a lot more to cover than I possibly can in this short blog. But in this section, I’ll try to give you my best overview of how a typical startup works, step by step.
Typically, when you set out to create a startup, you have an idea for a company you want to create. Usually, that company is based on some kind of unique intellectual property that’s going to make it very difficult for a bigger competitor to come in and simply do what you’re doing.
A good candidate for a startup would be a new technology or way of doing something that can be patented or protected in some way.
A bad candidate for a startup might be a restaurant or other service that isn’t unique in a way that can’t be copied. A good startup also has the potential to scale very big. Think Twitter, Dropbox, Facebook, and so on.
Once you have an idea, you’ll have to decide if you want to be a solo founder or if you want to take on a co-founder. There are some advantages and disadvantages to each, but in general, most startups have at least two co-founders.
If you want to get into a startup accelerator or incubator—which we’ll talk about next—you probably want to have at least one co-founder.
One good way to obtain some extra help getting started with a startup is to apply for a startup accelerator program. Accelerators are programs that help a startup get started and give them a small amount of funding in exchange for some equity in the company.
You can find a big list of accelerators at Apply to Accelerators. One of the most popular startup accelerator programs is Y Combinator. Y Combinator has helped many famous startups like Dropbox get started.
There’s usually a pretty lengthy application process to get into an accelerator, but it can be well worth the effort. An accelerator program is an intensive program that usually lasts a few months and helps get a startup off the ground.
Most accelerators are run by successful entrepreneurs who’ve already created a startup or two of their own and can offer excellent advice and mentorship to a startup just starting out.
Accelerators usually also help startups prepare for pitching their ideas to investors to get funding and often arrange a demo day for startups in their program. During a demo day, startups are given a chance to pitch to a room of potential investors.
Personally, I wouldn’t start a startup today without getting accepted into an accelerator program. The competition is just too fierce, and the advantage of being in an accelerator program is just too great to try to make it completely on your own.
I actually was a co-founder of a startup that was accepted into a couple of accelerator programs, but after some careful deliberation, I decided to bow out of the company, because I decided I wasn’t at a point in my life where I wanted to go through the rigorous startup lifestyle.
Whether or not you get into an accelerator program, the first major milestone for a startup—arguably the one that decides whether the startup actually even has a breath of life in it—is when it gets its first round of funding.
The first round of funding is usually called seed funding, and typically angel investors will invest in these very early startups.
Angel investors are usually individual investors who invest in very early startups. It’s a very risky investment, but it can carry a high reward. Now, angel investors won’t just invest in your company for nothing; they’re going to usually expect some percentage of equity in the company.
Landmine: How do I deal with equity?
You’ll want to be very careful with giving away equity in your new company. Equity is the lifeblood of your startup. Without equity, you don’t have the potential for a reward for all your hard work and you also don’t have anything to offer investors. Be careful with how much equity you give away and to whom you give it.
Many startup founders have found themselves in the horrible position of giving away equity to a dead-beat cofounder who ends up not contributing to the company, but instead becomes a permanent drain on the company as a freeloader who eats up valuable equity.
Just make sure you make equity decisions very carefully and realize what it is you’re giving away when you give away the equity in your company. Giving away equity is un-avoidable—you’re going to have to give away at least some equity—but make sure you carefully think about it before you do it.
Once a startup has some seed money, it’s time to get started. Actually, you should have gotten started before then, but once you have some seed money, you can probably hire some employees and start scaling things up.
It’s expected that most startups aren’t going to be profitable in this state. In fact, it’s likely that you’re going to get pretty deep into the hole as you burn up the initial seed money building out your business model and prove it.
Once you run out of seed money, if the idea is still viable, it will be time to get some serious investments. The first round of investment after the seed round is typically called series A.
In this round, venture capitalists usually get involved. When you hear about pitching to “VCs,” it means to pitch your company to venture capitalists hoping to get a large investment from them so that you can grow.
VCs usually contribute a large amount of capital to a startup in exchange for a large amount of equity. Don’t be surprised if, after a series A round of funding, a venture capitalist owns more of your company than you do—especially if you have more than one co-founder.
After the series A is complete, most startups go through several other rounds of funding as they exhaust the initial funding and struggle to get to profitability and scale. You basically continue this cycle of getting more funding until you can’t get any more funding, become successful and profitable, or get acquired
Stages of getting funding
This is, of course, a simplification of the whole process, but hopefully, this blog has given you a good idea of what the process of creating a startup is like.
Look up the history of one or two of your favorite startups. Pay attention to how they got started and how they got funded.
Did they have a single founder or multiple founders?
Had the founders successfully founded other companies?
When did the company get funding? How many findings did they get? Did the startup go through an accelerator program?
Working remotely survival strategies
Today more and more software development teams are allowing their developers to work remotely from their own homes. Some teams are even completely virtual and don’t actually have an office. If you decide to become an independent consultant or entrepreneur, you’ll likely find yourself in the situation of working alone at home.
Although working remotely may seem like a fantasy come true, the reality of working in your PJs might not be quite as appealing as you had imagined. There are many struggles and challenges that the at-home worker must face.
In this blog, you’ll get a better idea of what it’s like to work from home and how to deal with problems like isolation, loneliness, and self-motivation.
The challenges of being a hermit
When I got my first work-from-home job I was thrilled. I couldn’t imagine a better way to work than rolling out of bed in the morning, strolling across the hall, and sitting down in my own nice, comfortable chair. Although I still think working from home is great, I soon found there were also many challenges that I hadn’t anticipated.
Challenge 1: Time management
First, we’ll deal with the most obvious: time management. When you work from home, there are all manners of distractions that don’t exist in an office environment. If you decide to click over to your Facebook window and hang out on Facebook all day long, no one is looking over your shoulder to notice.
The mailman comes to the door to deliver a package, and you think “Hmm, maybe I should get a snack.” Your kids or spouse come in to ask you a question or steal you for “just a minute.” Before you know it, your whole day can be gone without anything to show for it.
Many work-from-home newbies think they will deal with this problem by working odd hours and getting work done when they can. They figure they can enjoy the nice day and get work done later that evening.
This kind of thinking is a recipe for disaster because when evening comes, there is always a new set of distractions or you end up too tired to sit in front of a computer.
The real solution to this problem is careful time management. You can work whatever hours you’d like to work, but set a schedule for each week and stick to it. The more regular and routine the schedule, the better.
My wife and friends often joke with me about why I work a typical 9-to-5 schedule when I work from home and for myself, but that schedule is exactly what ensures that I’m not distracted and take my work seriously.
We can’t trust ourselves to try not to be distracted or to manage our time wisely; we have to plan it in advance, or we’ll succumb to temptation repeatedly—trust me, I know. I have a whole string of failed attempts behind me.
Challenge 2: Self-motivation
I’m just going to say this now to get it out of the way. If you struggle with discipline and self-control, you probably should reconsider working from home.
Next, to time management, self-motivation is probably the single biggest “killer” of stay-at-home workers. It’s closely related to time management, but even if you can manage your time effectively, sooner or later, you won’t feel like doing any work.
When you get into this mood at an office job, you’re immediately cured of it by the imminent threat of being fired. If your boss sees you lying down at your desk fast asleep or playing games on your phone when you’re supposed to be working, you’ll probably be handed a cardboard box and walked right out the door.
But when you’re working from home, there are no prying eyes to see what you’re doing. You alone are accountable for your own motivation and the discipline required to keep on working when all your motivation is gone.
Like I said before if you lack self-discipline, I really think it’s a lost cause. I could teach you all the tricks to motivate yourself, but the temptation of turning on the TV, playing a video game, or browsing Facebook all day is just going to be too great.
On the other hand, if you do have some self-discipline to draw on, read on. It’s possible to deal with self-motivation problems if you’re willing to put the work in to do it.
Schedule and routine are very important to rely on for those times when you aren’t feeling all that motivated. We’ve already covered that, so I won’t go over it again, but make sure you do set up some sort of a schedule or routine.
When you don’t feel like doing work, having a time-boxed period for when you need to work can help you stay motivated enough to get it done and get it over with. The same goes for routine.
If you can, develop a routine. Habit can help carry you through motivation dips. There are many times I feel too tired to brush my teeth in the evening, but habit compels me to do it anyway.
You should also remove as many distractions and temptations as possible away from your working environment. If the TV is right there next to you, the temptation to turn it on when you get bored is just too great.
Never rely on your own willpower to overcome temptation—this lesson will serve you well in many areas of life. Instead, remove temptations and you’ll have a much easier life. (We’ll definitely talk more about this in section 6: “Fitness.”)
And when you’re feeling absolutely unmotivated, one very simple solution that I employ all the time—in fact, don’t tell anyone, but I’m employing it right now—is to sit down, set a timer for 15 minutes, and start working.
During that 15-minute timer, you have to work. You can’t allow yourself to become distracted; you must focus on the task at hand.
After 15 minutes of clear, focused work, you’ll probably find it’s much easier to keep moving forward. It turns out that once we give our undivided attention to something for that long, we end up getting drawn into what we’re doing and we have some motivation to continue.
I call this momentum.
Challenge 3: Loneliness
At first, working from home can seem like a relief. No one to bother you. You can just sit down and do your work. It’s actually very true, too. When I first started working from home, it became very apparent to me how much of my day in the office was actually wasted by idle conversation.
When I started working from home—once I learned to focus—I was able to get much more work done in a shorter period of time.
But after a while, that peace and quiet can become a bit unnerving. You may find yourself peering out the window looking for any signs of life. “Oh look, a person walking a dog. Maybe I should run outside and talk to her.”
(Don’t forget to put on your pants first…not that I’m talking from personal experience.) Okay, so maybe I’m being a little dramatic here, but sitting at your desk alone all day, week after week, can eventually start to take a toll on you.
Most software developers who work from home never anticipate that they’ll actually become lonely from the lack of social interaction—after all, as a group, we can tend to be kind of reclusive.
But just trust me on this one: after about a year or so, if you haven’t figured out a way to get some kind of social interaction in your life, you’re probably going to feel like you’re going nuts.
Think about one of the worst ways rowdy prisoners are punished in prison. They put them in isolation. A day or two “in the hole” is a pretty bad punishment for anyone because as human beings we are social creatures.
So how can you cure this? I’ve got a simple answer here—get out! Make sure you’re setting up activities in the week that will take you out of the house and give you opportunities to see other human beings. Your spouse and kids don’t count.
Try joining a local software development group that meets on a weekly or monthly basis.
For a change of scene, head to a coffee shop or café. I go to the gym three times a week, and I’d, of course, recommend something like that as well. I also find that going to conferences and other networking events gives me a chance to unleash my geek talk to willing recipients. Sometimes it’s pent up for months at a time.
You can also utilize some resource to help you feel a little less detached. Skype calls or Google Hangouts can give you a chance to talk to and even see your coworkers.
If you can overcome these three challenges, you’ll be a successful remote worker, but if you can’t, you might consider whether working from home is the thing for you. Some remote workers who just can’t deal with these issues have found a solution by utilizing what is called coworking spaces.
You can think of these spaces as small offices formed by remote workers and entrepreneurs. It’s sort of like working in a regular office environment, only your coworkers don’t actually work with you.
Landmine: I want to work remotely, but I can’t find a remote job
For a long time, I tried to find a job that would let me work from home, but I couldn’t find one. They aren’t all that easy to come by and there’s often fierce competition. If you’re looking for a remote job but you can’t find one, there are two things I’d recommend:
You might want to see if you can work remotely from your current job. Perhaps start out on a trial basis. You might ask to work one or two days a week from home. Have a good argument for it, like that you can get more work done and focus. If you're given the chance, really show extra productivity when you're working from home.
You can start tracking companies that allow remote work or have completely distributed teams and start making connections with those companies.
It makes take some time, but if you're focusing on specific companies that you know allow remote work, you can increase your chances of getting a job at one of these companies.
Get to know the developers who work there already, speak to the hiring managers, express your interest in the company, and when a job opening comes up, apply for it.
Take an honest self-assessment. After learning about these three challenges, how do you think you'd deal with time management, self-motivation, and loneliness?
If you're working from home or planning on working from home, come up with a schedule that you'll stick to each week. Decide what your working hours will be and what days you'll work.
Fake it till you make it
In your career as a software developer, you’re bound to come across many situations that you aren’t qualified to handle. We all often find ourselves presented with challenges and obstacles we aren’t prepared for. What you do at those times, though, will be the primary factor in determining your success.
Many people, when faced with adversity, will choose to hightail it and head for the hills. But other people, when faced with the same challenge, will rise up to face it head-on.
Do all the people who choose to stay and fight have confidence in their ability to succeed and overcome? No, but many of them do have one thing in common, though—they’re able to fake it till they make it.
What it means to fake it until you make it
The phrase “Fake it till you make it” is pretty common, but it’s also a fairly overused phrase. Different people will have different interpretations of what exactly it means.
When I say “Fake it till you make it,” I’m not suggesting that you lie and pretend to have some knowledge or ability that you don’t currently possess.
Instead, I’m suggesting that you should act as if you’ve already succeeded at accomplishing a task or feat before you even begin it. When I say “Fake it till you make it,” I’m talking about acting “as if:”
As if you already possess the skills and talent you need to succeed As if you’re already the kind of person you want to be
As if the battle is already over and you have emerged victorious because you know deep down that if you keep trying, you’ll eventually prevail
As if the unknown road you’re about to embark upon has already been traversed by you many times before
When you act in this manner—and the keyword is “act”—you eventually bend reality to conform with the image you’re presenting. It might seem like magic and transcendental nonsense, but the truth is that our minds are very powerful.
In section 7, we’ll dive much deeper into the power of the mind to control and shape your reality, but for now, it’s enough to know that if you act as if something were already true, and you can convince your mind of the same, it will take a great force to prevent that reality from actually coming into being.
Faking it till you make it is all about putting on such a great act that you convince your own mind and body to make that act a reality. Faking it till you make it is the opposite of being unconfident.
It’s acting with confidence in all that you undertake, even when you’re in way over your head because you have a supreme belief in yourself to overcome all obstacles.
Putting it into practice
Faking it till you make it is all about purposely putting yourself in situations that are over your head and forcing yourself to learn how to swim.
It really is a mindset you carry forward with you in life that propels you into the unknown, confident that new challenges will bring new opportunities. If you want to learn how to fake it till you make it, you have to be willing to jump into the deep end.
Have you ever been in a situation where you felt like you didn’t know what you were doing? A situation that made you feel very uncomfortable, perhaps a bit embarrassed, and maybe even a little incompetent?
How did you react in that situation? Did you try to figure out how you could get out of it? Did you make excuses for why you might fail or not perform well?
It’s natural to react to an uncomfortable situation or obstacle with fear, embarrassment, and excuse-making, but if you can overcome those tendencies and see the truth that the new or challenging situation you’re currently in will someday become regular and routine, you are well on your way to learning how to fake it till you make it.
Remember the first time you tried to write some code or learn a programming language? It was hard, wasn’t it? Perhaps it may still be hard for you. But wherever you are now, you can always look back to a time when anything you consider easy was difficult and might have even seemed impossible to you.
The key is to be able to see ahead to how easy some task or situation will be in the future and act now as if it were then.
One common place where this applies to software developers is in the job interview. It’s almost impossible to be an expert at all of the technologies any particular job requires.
There are just too many different technologies out there for you to be a master of all of them, so most job interviews you go into will be for jobs where some of the skills that you’ll need to do the job aren’t yet in your possession.
The key phrase in that sentence is “aren’t yet.” Many developers go into a job interview with an apologetic and nervous demeanor that projects a lack of confidence because they have some doubts about their own ability to do a job dealing with some technologies they haven’t yet mastered or encountered.
Their vision is short-sighted because they’re looking at things from the perspective of now. Now is fleeting. Look at it and it’s already gone. It’s much better to have your eyes set on the future.
Sure, it may be true that at the precise moment when you’re interviewing for a job you may not possess all the skills required to be excellent at that job. But unless you’re a seasonal worker, an employer isn’t hiring you for the short term.
Just about every other developer interviewing for the job is also going to lack skills or experience in a certain area—perhaps ones different than yours.
For that reason, it’s better to project an aura of confidence and capability, knowing that you’ve faced challenges in the past, you rose up to meet them, and there’s no reason to believe you won’t do the same in the future.
Don’t confuse this with lying, though. I’m not suggesting you misrepresent your skills to a prospective employer and claim competency where there is none.
Instead, I’m suggesting that you be perfectly open and honest about your ability or lack thereof, but at the same time carry forward the attitude and posture of someone who has already overcome the obstacles that are before you, because you know that the only thing that stands between the present you and the future you is time.
Your confidence—careful here, not arrogance—will be contagious. When you carry around this “can-do” attitude, when you have a true belief in yourself that isn’t inflated or exaggerated but based on knowing that you eventually will succeed at anything you set your mind to, you’ll find that others will believe this too. Walk into an interview with this attitude and you understand the power of faking it till you make it.
Honest assessment time. What is your attitude in difficult situations? How do you deal with encountering the new and unfamiliar? Think about the last time you were in a difficult or unfamiliar situation and how you reacted.
How can you create a more confident attitude without appearing arrogant? What is the difference? What steps can you take right now to improve your ability to fake it till you make it?
Bonus: Practice your strategy by going out and purposely putting yourself into a situation that is “over your head.”
Resumes are BORING— Let’s fix that
Have you ever gone on a vacation and seen those racks that are filled with dozens of colored brochures about all the local attractions in the area? Ever picked up one of those brochures and looked at it?
Most of them are full color, three-page, beautifully designed works of art. I’m not kidding. You can tell that quite a bit of work went into designing that pamphlet to convince you to spend $100 to go parasailing or rent a ski jet.
Now, contrast that with the average developer’s resume: a single-font, double-spaced, five-page monstrosity, complete with grammatical errors, typos, and poorly structured sentences full of phrases like “spearheaded” and “results-focused.”
Make no mistake about it, both are trying to advertise and ultimately get
A typical resume doesn’t compare to an advertising brochure. someone to spend money on something. In one case, the advertisement is trying to get you to spend perhaps $100 on some vacation excursion.
In the other case, the advertisement is trying to get a hiring manager to fork over $60,000, $80,000, or more to rent a software developer for a year.
It seems a bit crazy to me that someone trying to sell a $100 item would put so much work and effort into an advertising vehicle, but someone trying to sell a $60,000+ item would produce such a substandard version.
Now, don’t get me wrong. I’m not saying your resume is “crap,” but chances are, if you’re like most software developers, it probably could use a little work.
You aren’t a professional resume writer
There’s a reason your resume … stinks. It’s pretty simple, actually— you aren’t a professional resume writer. You don’t write resumes for a living.
I can just about guarantee you, though, that the guy or gal who created that beautiful brochure trying to convince you to rent a jet ski does create brochures or other advertising material for a living.
And while many career-coaching blogs and programs will try to tell you how to create a better resume, I’m not going to even bother.
Why? Because you shouldn’t have to be a professional resume writer. It’s a waste of your time and talents. Writing a resume is a skill that you’ll only use a handful of times in your career.
It makes absolutely no sense for you to invest heavily in that area when there are thousands of professionals who already can do a better job of writing resumes than you could probably ever hope to do.
Think about it this way. The CEO of the company you work for probably doesn’t write software. Sure, your CEO could probably sit down at the computer and crank up an IDE and learn how to code to write the software needed to run the company.
But it makes a whole lot more sense to hire you to write the software instead. So why would you waste your time learning the skills of a professional resume writer instead of hiring one?
Hiring a resume writer
Hopefully, by now I’ve convinced you that you need to hire a professional to write your resume. But how do you do it?
There are quite a few professional resume writers out there. A quick search on the internet will produce plenty of them, but you do have to be careful in choosing one.
Writing a resume for a software developer is a bit more challenging than writing a resume for many other professions because there are so many buzzwords and technologies related to our work. (If you’re looking for a good one that I’d personally recommend, check out Information Technology Resume-Service.
What to look for in a professional resume writer
Familiarity with the tech It does no good to hire a professional resume writer who the industry doesn’t know how to sell your development skills.
Has sample resumes to The best way to know what kind of work you’re likely to get is to show you look at the work a resume writer has already produced.
I have to warn you, resume-writing services—at least good ones— aren’t cheap, but they’re worth paying for, because a good resume can easily pay for itself by helping you land a higher-paying job much faster.
Expect to pay somewhere around $300–500 for a quality, professionally written resume. Again, an expensive price, but if you can get a job that just pays 2 to 3% more, you can easily more-than make up for the price within the first year.
Also, before you hire a professional resume writer, make sure you have all the information that a person will need to do a good job.
You don’t want to pay someone to write a professional resume that has inaccurate information because you were too lazy to look up the correct dates of your previous employment or you didn’t give her an accurate description of your skills and responsibilities.
When you hire a professional resume writer, you are primarily hiring them to do two things for you:
Write good and compelling “copy” to advertise your services and present you in the best light possible.
Package it in a visually appealing, aesthetically pleasing format.
You aren’t hiring them to be a research assistant or to fact-check your information. You need to give them as much information as possible and they’ll take that information and condense it into a highly refined format that will effectively market your services.
Landmine: I don’t feel right about hiring someone to write my resume
This is the most common objection I get to the advice of hiring someone to write your resume. Many people feel it’s somehow “wrong” and deceptive to hire someone to write their resume; they feel that they should write their own resume.
I can understand this viewpoint—and you’re welcome to write your own resume—but how is hiring someone to write your resume any different than hiring someone to design your website or decorate your house?
In fact, many celebrities employ ghost-writers to write blogs for them, in which they put themselves as the author. My point is that it’s not as big of a deal as you might think. Just because you’ve always thought that developers should write their own resumes, doesn’t mean that it’s true.
You don’t have to share that you had a professional resume writer write your resume. And if you really feel uncomfortable about it, write your own resume and hire someone to “improve” it.
Going the extra mile
The title of this blog indicates that traditional resumes are boring, and that’s true. Although a conventional resume is important for any software developer looking to get a better job, it isn’t the only way to present the same information to a potential employer.
You can, and should, take the information from your resume and put it online. You should have a LinkedIn profile that has the information from your resume on it, and you should have an online version of your resume so that you can send someone a link to it.
Applying for a web developer job without an online version of your resume is sort of like being a professional carpenter who doesn’t have their own tools.
Even the format of a resume is subject to revision. Try doing something unique with your resume and present it in a way that really grabs the reader’s attention.
You can either ask a resume-writing service to create something unique for you, or you can take the resume you get from them and hand it over to a graphic designer to make it really “pop.”
I once saw a resume of a video game programmer who had created an online version of his resume that was an actually playable video game. I’m pretty sure he doesn’t have a hard time finding a job. And here’s a list of really nice-looking, creative resumes that you can get some inspiration from:
You don’t have to have the fanciest-looking resume, but it’s important for a software professional to have a professional-looking resume. If you think that old Word doc resume you wrote ten years ago that’s filled with typos and awkward sentences is going to cut it, think again. If you’re looking for a new job, one of the best investments you can make it in a professional resume.
What if you don’t want to hire a professional?
I can understand if you still would rather create your resume yourself. Perhaps you aren’t ready to make the financial investment or you feel like it’s something you have to do yourself.
Whether you're looking for a job or not, send a copy of your current resume to some recruiters and ask for their opinion on it. Recruiters see a large number of resumes and often are the best people to tell you if your resume needs work.
Investigate some professional resume-writing services and look at some samples of the resumes they produce. How do those resumes compare to yours?
Don’t get religious about technology
I don’t know if you’re a religious person or not. Regardless of which side you fall on, I’m sure you can agree with me that many of the most bloody and grim wars in history were fought, to some degree, over religion.
I don’t say this to knock religion or to in some way suggest that religion itself is inherently good or bad, but to make you acutely aware of the fact that adherence to dogmatic beliefs tends to be quite inflammatory.
The same is true about software development. Religious beliefs about software development and technology tend to be just as inflammatory as religious beliefs about the origin of life or the existence of a supreme deity.
Although we typically don’t kill people because they prefer iOS over Android, we do have a tendency to batter them around a bit and perhaps give them a quick punch in the stomach when we think no one is looking.
I’m a firm believer that you’ll go much further in your career if you can keep yourself from becoming religious about technology.
We are all religious about technology
It’s true. You might as well admit it. You have some bias toward some technology or programming language that you think is the best—at least, most programmers do. It’s completely natural. We’re enthusiastic about what we do, and any time there’s enthusiasm and passion, there will be highly charged opinions. Just take a look at professional sports.
The problem with being religious about technology is that most of us are religious about a particular technology because that technology is what we know. It’s natural to believe that what we’ve chosen is the best possible choice, so we often feel slighted by any suggestion to the contrary.
We can’t possibly know enough about all the technologies out there to make the best and most informed decision about which one is best, so we tend to choose what we know and assume it must be the best—life is too difficult to handle otherwise.
But this course of action, although built-in and natural, is also destructive and limiting. When we dogmatically hold onto beliefs that are only based on our own experience, we tend to associate with only the kinds of people who also hold those beliefs and shun all others.
We end up segregating ourselves into communities where the same ideas are circulated over and over and over again. We reach a point where we stop growing because we’ve already found all the answers.
I spent a good deal of my career being overly religious about operating systems, programming languages, and even text editors before I knew better and started to learn that I didn’t have to just choose one technology that was the best and consider all the others inferior.
Everything is good
Not all technologies are great, but most technologies with widespread adoption are at least “good.” It’s hard for a thing that isn’t at least good to become successful and to become widely known or used.
Of course, circumstances change over time, but it’s important to realize that, at least at some point in history, just about every technology was at one time good or even considered great.
Having this perspective will help you understand that in many cases there isn’t just one good or best solution for a problem. There isn’t just one good and best programming language, framework, operating system, or, yes…even text editor.
You may like a particular technology more than others, and you may find you’re even more productive using one programming language over another, but that still doesn’t necessarily make it the best.
I had a hard time believing this for a long time. I’d spend countless hours arguing why Windows was so much better than Mac. I’d yell and rant about how C# and other statically typed languages were far superior to dynamic languages like Perl or Ruby.
I’d even at times— although I’m ashamed to admit it—berate other developers who thought otherwise. How could they dare believe something different about technology than I did?
The eye-opening experience for me was when I was first asked to be a team lead for a Java project. Up until that point, I had been primarily a .NET developer focused on C#. (Well, that’s not entirely true.
I was pretty religious about C++ until .NET came along.) I couldn’t stomach the idea of working with Java. Java was such a dirty language compared to the elegance of C#. How could I possibly enjoy writing Java code when I couldn’t even use Lambda expressions?
I eventually decided to take the job, because it was just too good of an opportunity and I figured that because it was a contract, I could stomach it for a year or so. Well, it turned out that taking that job was one of the best decisions I made in my career.
Working with a technology I hated made me see all technologies in a different light. It turned out Java wasn’t so bad at all. I could see why some developers actually preferred it over C#.
I learned more over the few years I worked on that Java project than I had during my entire career up to that point. I suddenly had a huge toolbox full of tools that I could use to attack any problem instead of the few overused tools I had restricted myself to before.
From that point forward I adopted the same kind of open mindset I had given to Java to other programming languages—even dynamic ones—and I was able to use what I was learning from each to become a better programmer at them all.
I also backed off of my opinions about operating systems and frameworks, trying out new things before I judged them. I probably wouldn’t even be writing this blog if I hadn’t had this experience—or rather, it might be called Why C# Is the Best and Everything Else Sucks.
Don’t limit your options
The real point here is to not limit your options. There is no good reason to vehemently insist that your choice of technology is the best at the expense of ignoring or belittling all others. It will only hurt you in the end by deciding to hold onto that viewpoint.
On the other hand, if you’re willing to have an open mind about technology and not simply hold onto what you already know, claiming it to be the best, you’ll find many more opportunities will open up to you.
Make a list of all your favorite technologies or technologies you feel are superior to others.
For each item on that list, think about why you're drawn to that technology and what comparison you're using to justify its position. Do you have actual experience using its competitor?
Pick one technology you hate and find someone who loves it. Ask open and honest questions about why they're excited about that particular technology. For bonus points, try using it yourself.