The field of software development is somewhat like the stock market. It can feel like you have to anticipate where things are going if you don’t want to end up in the street begging for change.
Unfortunately, just like the stock market, it is impossible to predict the direction technology will take. Sure, we can make some educated guesses, but in the end no one really knows what is going to happen.
Consider Blackberry. Before its collapse, no one would have predicted Blackberry would be in the situation it is now. Focusing on becoming a Blackberry developer would have seemed like a good idea not too long ago.
The same thing happened with Silverlight and Flash. Both of these technologies unexpectedly took a turn for the worse.
So, how can you avoid these kinds of calamities and make sure that you are prepared for the future?
Pick a broad and stable base
The surest way to build a good future for yourself as a software developer is to avoid trends altogether. You can do this by picking a broad and stable base that is the foundation of your career.
Many technologies can be easily labeled as fads, but there are other technologies that have withstood the test of time. For example, consider languages like C or C++ which have been around for a very long time and are still in heavy use today. I’ve written about why C++ is not “back” and have discouraged developers from investing too much of their time in learning C++, but if you want to have a stable base, learning C or C++ can certainly help you do so.
Along with picking a broad and stable technology, you can also invest in developing general skills instead of specific technologies. If you can learn how to solve problems and architect good maintainable solutions to those problems, you will be able to adapt to any programming language or framework that comes along. There are a core set of skills that are at the heart of software development which will always be critical to writing good code.
I recommend this book pretty often, but Code Complete is an excellent book that has generalized knowledge about how to structure code that transcends a single platform or technology. Along with that, Clean Code is another book that I’d highly recommend, due to its timeless principles.
Also, (get ready for a shameless plug here,) of course I would recommend my How to Market Yourself as a Developer package, because the skills I teach in that program are skills that will help you your entire career.
So, while specialization is very important–and I do encourage you to specialize in a particular area of software development–it is also very important to have a broad and stable base to work from so that you can adapt to change in the future.
(Side note here: don’t think that having a broad and stable base doesn’t mean you should specialize or carve out a niche for yourself. The two aren’t mutually exclusive. You should have a broad and stable base, but expand out from there to one or more areas of specialization and you should try to market yourself in a specific niche.)
Keep an eye out for what is gaining traction
You can’t necessarily predict the future, but you can look for indicators that tell you the tides are shifting. If you want to be prepared for the future, it is always a good idea to keep an eye out for what new trends are evolving and what everyone is talking about.
We’ve had quite a few trends pass through the software development industry in the past decade. Remember when Ruby on Rails was the next big thing? How about IoC containers and dependency injection? Agile and Scrum? Lately, at least of the time of this writing, Node.js is still pretty big. But, just today, I was looking at Hacker News and I saw about four articles on Google’s Go programming language.
It is a good idea to track sites like Hacker News and Proggit (the subreddit for programming) to see what technologies are being talked about and get a feel for what might be coming next. Often, the newest trends first surface on sites like these.
Another good way to spot trends is to look at the lineups for popular developer conferences and code camps. Just take a look and see what topics are being spoken about the most and you’ll have an idea of where things are going.
Always be learning
Perhaps the surest way to prepare for the future though, is to make sure that you are always expanding your knowledge by learning new technologies and deepening your knowledge of existing ones.
As a software developer, you should focus on developing the habit of becoming a lifelong learner. Set a schedule each day or each week where you will spend a dedicated amount of time learning. In the past, I’ve made a commitment to walk half-an-hour on my treadmill each day while reading a technical book. Just doing this really helped me expand my knowledge over several years.
Spend some time learning how to learn so that you can be more efficient at learning and so it is a more enjoyable experience. Self-education is one of the most important weapons we have to survive the always changing technical environment.
Remember, there is nothing new under the sun. Sure, new technologies and programming language may pop up, but they are always some kind of rehash or combination of existing things. If you dedicate your time to learning, you will be much better prepared to deal with any new situation you encounter. The more you know, the more you can relate a new thing to something you are already familiar with and cut the learning curve of that new thing in half.
Be willing to change and adapt
It is really easy to just hold on to what you know and ignore the changing landscape all around you. I know, because I’ve done exactly that several times in my career. I fought C# and .NET for a long time when I was primarily a C++ programmer, because I didn’t want to believe high level application programming language could be that easy–there had to be a catch.
But, no matter how much we fight the future, we can’t prevent it. The best thing we can do is to give in and stop resisting new trends. Sure, some of them will fizzle out and die, but we won’t know which ones are promising if we aren’t willing to let down our walls and try them out.
It is really easy to become religious about a technology, but in the end it hurts you more than it helps you. I’ve come to realize that it is much easier and less stressful to bend with the wind than it is to stand your ground and eventually be snapped like a reed.
If you like this post and you want to read more like it,
.. sign up here
and I’ll deliver post like this one to your inbox every week. Oh, also, I’ll give you a free gift as a thank you for signing up.
One of the worst traps we can fall into as software developers is discontentment.
It’s really easy to become discontented with our current situation and to want to seek greener pastures elsewhere. I’m not saying that there aren’t necessarily better situations you could seek out, but finding a better job may not be your problem.
Learn to be content with what you have first…
It may seem strange, coming from me, especially when I actually sell a product to help programmers find better jobs, that I am telling you to be content with your current job. But, I’ve found, in life, that it is impossible to be happy with something new or better until you have learned to be happy with what you already have.
It almost seems paradoxical. If you can be happy with your current job or situation, why would you seek out a new one? You are obviously discontent with your current situation, because a new situation would be better, right?
In order to answer this question, we have to go back a bit into the past and look at where we are now from the perspective of where we were.
Chances are the job you have now was a job that you were excited and enthusiastic about when you first got it. Chances are you left some other situation that was worse than the situation you are in now, searching for greener pastures.
I made many transitions in my early career, from company to company, from job to job, always trying to find a better opportunity. But, each time I drove my little dune buggy over the next sand dune, I found the oasis I had seen from afar was a mirage.
I spent a good deal of my career never really being happy with my current situation and always looking for a better opportunity that would finally give me the rewarding, fulling, job that I desired.
I always had some reason why my current job was not good enough.
Perhaps it was the technology I was working with–I want to use that latest and greatest framework, not this crufty crap.
Sometimes it was the code base itself–if only I could work on a greenfield project, then I wouldn’t have to maintain this stupid legacy code.
Once or twice it was the coworkers–these idiots are doing things all wrong. I need to work on a team that appreciates writing good code.
The list goes on and on and on…
If only I could work from home…
If only I could use ASP.NET MVC instead of Web Forms…
If only I could follow a Kanban process…
Even when I started working for myself, I started coming up with my own “if onlys.” No matter how good our present situation is, we can easily become accustomed to it and take it for granted.
If you can’t ever be content with your present situation or job, you’ll just find that when you find something “better”, you are eventually discontent with that as well. It is really easy to trick yourself into thinking that a parallel or downward movement is an upward one, because you’ve grown so discontent with your current situation.
I’m not saying don’t find a better job or don’t improve your situation, but I am saying that before you do, find a way to be content with what you already have so that you don’t ruin the next endeavor you set out on.
How to be content
The first step towards contentment is realizing that being content is a choice–just like happiness is. Your present situation doesn’t determine your contentment–you do.
Contentment comes from a positive mind that is thankful for what it has. If you want to start being more content with what you have, start “counting your blessings.”
I know this sounds a bit silly and trite, but truly recognizing what you have that is already good and being sincerely thankful for it, goes a long way towards cranking that internal happiness gear a few rotations.
Happiness and contentment are very relative things. You are happy with your car until you see your neighbor buy a new one. You are happy with your current salary, until your brother tells you about the new job he got where he is making twice what you make.
If you are constantly looking at outward comparisons to define the worth of what you have, the value of what you have will decrease in your mind. Instead, focus on what is good about your present situation.
Chances are, if you are reading this blog post, you are already in a better situation than more than 90% of the world. If you have access to a computer and an internet connection, you are “blessed” compared to the millions of people who are living well below what we would consider poverty and working much harder for a living than you are.
There are hundreds of things to be thankful for. You just have to be willing to start recognizing them and truly appreciate them. If you want to be a happier, more content person, make it a daily habit to go over everything in your life that you are thankful for each and every day. Not only will you be happier, but so will the people around you how have to deal with you each day.
(If you are looking for a good book to help you come up with things to be thankful for, check out 14,000 things to be happy about.)
Another way to be content is to work hard
One of the most rewarding things in life is a job well done.
Your present job might not be the one you want. You may be working on a completely crappy code-base. You may not be using the technologies or frameworks that you are excited about. But, if you put your head down and start working hard at your current job, you’ll find it to be much more rewarding.
I’ve found in life that the biggest satisfaction is not what you do, but how you do it. Painting a fence can be just as rewarding as building a skyscraper, if you work hard at it and put your full energies into the task.
If you aren’t happy with your present job, try shutting down Facebook, closing down Twitter and focus on doing the best possible job you can do, each and every day.
Sure, you can still look for a better job. Sure, you can still dream of starting your own consulting business or getting out there on your own. But, in the meantime, you might as well be content with the situation you are in now. Then, when you are ready, and the next opportunity presents itself, you’ll have the ability to truly appreciate it.
The grass may look greener on the other side of the cubical wall, but that doesn’t mean it is. Be content with what you have, but always strive for more and you’ll live a much happier life and make fewer stupid mistakes.
If you liked this post and want to hear more about topics like this one, sign up here to join the Simple Programmer community, and I’ll send you a weekly email and some exclusive content that I only share with the Simple Programmer community.
For software developers, there is no guidebook that tells you how to advance from one stage of your career to the next.
Many programmers start out quickly in their careers, advancing up the ranks, only to find that they have hit the proverbial glass ceiling which caps their earnings and gives them the choice to either jump tracks to the management career plan or stay stagnant where they are.
It doesn’t have to be this way though.
In this article, I’m going to tell you how you can shatter that glass ceiling and keep on advancing.
Why the glass is there
Before we talk about how to break the glass, let’s talk about why the glass is there in the first place.
The big reason most software developers hit an imaginary ceiling on their income and career advancement is because they stay with the pack.
Most people have what I call the herd mentality. It means that you stick with the herd and you value yourself based on where you fit in the herd. If you are at the front of the herd, you are doing good. If you are at the back of the herd, things aren’t looking so good for you—you are in danger of becoming a hungry lion’s next meal.
The developers at the front of the herd make more money and have nicer offices, and the ones at the back make less and live in tiny cubicles, but they are all part of the herd. So, even though there is a difference in pay from the junior developer to the senior one, there isn’t much of a difference in pay from one senior developer to another one, even if one of the senior developers is more valuable and has more advanced skills.
Now, there are a few developer animals out there that break away from the herd. These developers have figured out that they don’t have to try and compete to be at the front of the pack, instead they can run on their own where they don’t have to worry about their position in the pack, because they can just outrun it.
This is, of course, easier said than done. In fact, I have quite a bit to say about how to go about doing this and what exactly this means, but let’s not get into that just yet.
First, I want to break up this example a bit more and apply it to real life.
As software developers, we are acutely aware of our position within the pecking order. We know which developers are higher up than us and which ones are lower. We have titles at our jobs which help us to know our place.
But, it is important to remember that the rest of the world has no idea about which developers have greater skill and can do a better job, and for the most part, they don’t care—they just see a pack. They see a pack with some developers at the front and other developers at the back.
When an employer hires you for a job, they just want to know where you are in the pack. Are you at the front? The back? The middle? They pay you accordingly based on your ranking within the pack.
If you aren’t explicitly standing out far beyond the pack, you are going to be grouped right in with the pack and paid accordingly. And once you make it to the front of the pack, you’ve got nowhere to go in their eyes—you’re already the best.
So, the glass ceiling isn’t there because someone mandated that software developers shall only make so much money and live in 5 by 5 cubicles. Instead, the glass ceiling is there, because unless you are doing something extreme enough to differentiate yourself from the pack completely, you are part of the pack and the pack is always going to stick together. That means that the average salary of software developers will be used to determine what the developers at the front of the pack will be paid, as well as what the developers at the back of the pack will be paid.
Breaking away from the pack
So, if you want to increase your value as a software developer, your goal should be to break away from the pack. But, how do you do it?
Let’s start by looking at an example outside of the software development world—the restaurant business.
Suppose you are a cook. There are quite a few cooks in the world. In fact, each restaurant in the world, whether it be a fast food joint or an elegant upscale restaurant, needs at least one cook of some sort.
Cooks run in packs. There are low level cooks who don’t make much money at all. Some of these cooks work at McDonalds or another fast food restaurant. Some of these cooks work at more reputable places, and we typically call them chefs instead.
But, you’ll probably find that most high level cooks also cap out around the same level. That is except for a few that end up having their own television shows, write books and make millions.
The same is true for musicians. There are quite a few musicians who are really good and talented, but only a small number of them break away from the pack to become rock stars. The rest are relegated to the pack.
If I asked you why you honestly think Gordon Ramsey, or Rachael Ray, or Wolfgang Puck make so much more money than other chefs, what would you say?
You might be first tempted to reply that it is because they are so much better than other chefs, but we both know that isn’t true. Sure, they are probably in the top tiers of skill level, but the real reason these celebrity chefs make so much money is precisely because they are celebrities.
They are primarily being paid for their names. There are hundreds of chefs in the world at a similar skill level, but those hundreds of chefs are relatively unknown. The same applies for musical talent and even software development.
Now, I’m not saying you need to become a celebrity to break away from the pack and advance your career as a software developer, but what you do need to learn how to do, which most celebrities and famous people already know how to do, is to market yourself.
Unfortunately, there isn’t a guidebook for software developers on marketing themselves either.
But, that is precisely why I wrote one.
Well, more than just wrote one. I put together a complete package on marketing yourself as a software developer.
I’ve been in the industry a pretty long time and I’ve made my share of mistakes. I got stuck for a pretty long time at my own personal glass ceiling, until I started to notice how the developers I would read articles from and see speaking in front of thousands at conferences, had figured out a way to break away from the herd.
I talked to many of these ultra-successful developers, (I won’t use the term rock star here, since it is so overused,) and I found out how they were doing it.
I started applying what I was learning and discovering to my own career, and it didn’t take long before I was able to really break through my own glass ceiling and see that there actually was no limit to the earning potential of a software developer who knows how to market him or herself.
Since then, I’ve been hired for dream projects at my own price. I’ve been on numerous podcasts and publications. I’ve created a successful and popular blog that gets over 100,000 visits a month, and I’ve gotten countless other opportunities.
Now I want to share the information with you.
I’ve put together the guidebook that I said didn’t exist. The one that will help you break away from the herd and put your head right through that glass ceiling.
Only it will be more than just a simple guidebook. I’ve put together a complete package which includes two complete video courses; several eBooks on topics like how to market yourself, social networks, professional resume advice, networking; and even some video interviews with top developers who have already broken away from the herd themselves and will share their secrets with you.
This isn’t a scam or some marketing mumbo-jumbo, it is real tried and tested career advice from myself and other software developers who have figured out how to make their names stand out. The fact that you are reading this post proves that what I am offering works.
I used to think I was a real hot shot.
I used to think I could conquer the entire world all by myself with just an IDE and a mechanical keyboard.
I couldn’t have been further from the truth.
(Oh, and yes that really is a picture of me—don’t ask!)
All of us are stronger than one of us
Too many software developers today have that same flawed mindset that I had back when I was running around thinking I was hot stuff.
It is a limited way of thinking that prevents you from reaching your true potential. For years, my real abilities lay dormant while I pretended to be much more than I was. I thought I knew all the answers and that anyone that didn’t agree with me was wrong.
I was caught in my own trap—one I had set for myself. I was limited by my own ideas and perspective and I was filtering out anything that didn’t agree with my preconceived notions of how software should be developed.
The reason why I was caught in this trap, wasn’t because I was a big jerk—although the Perl developers that faced my wrath would beg to differ. No, it was because I was so isolated. I wasn’t part of the community. I was in my own little world.
Bad things happen when we isolate ourselves. Our thinking and perspectives are limited, but that isn’t the only thing that happens. No only do we cut off the ability for the outside world to influence us and shape our ideas, but we severely limit our own ability to influence others.
You might not think influencing others is very important to your career, but it is one of the cornerstones of building a network. People who benefit from a relationship with you, professionally and otherwise, are people who you can rely on when you need help in the future.
Many software developers severely limit their impact and influence by avoiding the community and staying holed up in their caves.
One of the biggest pains of going it all on your own is loneliness. Yes, it is lonely out there trying to conquer the world by yourself. Even if you succeed, who will you share the accomplishment with? Many otherwise fun activities lose their charm when we don’t have anyone to share them with. Victories are less sweet and defeats are far more painful.
The benefits of community
Fortunately, you don’t have to go it alone. There is a huge software development community out there waiting to welcome you.
By joining and interacting with this community you can avoid having to face all your struggles on your own. It is always nice to have someone whom with you can share the problems you are going though. Getting an outside perspective often helps you to think about a problem in a new way or to see something you didn’t see before. At the very least it validates your problem as a real one.
When you decide to participate in the community, you are suddenly exposed to a new world of opportunities. You never know what kind of connections you’ll make and how those connections will benefit you in the future. I’ve met so many people that have positively influenced my life or gave me that extra push through my involvement with the community.
But, perhaps the biggest draw to joining the developer community is the feeling of belonging to something bigger than yourself. The software development world is huge and it is easy to feel like you are just a small little voice in a room full of people shouting at the top of their lungs. When you join the community, you identify with the accomplishments of everyone in it. You go from a small little voice on your own to an integral component of a choir. Suddenly your voice individually doesn’t matter as much, but collectively it is much more important.
How to get involved
By now you might be agreeing with me that interacting with the software development community is valuable—both to your career and to your well being. But, how do you actually get involved and become part of the community?
There are many ways to get involved in the software development community, but one of the easiest ways is to just start being social.
Step outside into the fresh air and share what you have learned and the struggles you are facing. Jump on social networks like Twitter or Facebook and start a conversation. You can find groups on communities like LinkedIn and Google+ where many different developers or congregating.
You can even comment on other people’s blogs—or better yet start your own blog. If you are reading this post now, leave a comment and get involved. Instead of just reading blogs passively, start a conversation.
And don’t forget, networking events and user groups. There are plenty of user groups around most metropolitan areas that you can get involved with. If you can’t seem to find one, you can always start your own mastermind group with a couple of other developers to meet weekly and discuss problems each of you are facing.
Finding your unique gift
The most valuable members of any community are those members who can carve out a niche for themselves and provide specific guidance and advice to the community in that particular area.
Take some time to think about what your own personal brand is and what you would like to be known for. Do you have an interest in mobile development on Android? Are you a C# language guru? Perhaps, you are just comic relief for an overly stressed environment. Find something that you can do to contribute to the community in a unique way.
They key to a thriving community: giving value
There are many ways you can contribute to the software development community.
A good place to start is by creating your own blog and sharing what you know and what you learn with others there. Blogs are a very valuable resources for software developers and if you spend time writing blog posts, others will appreciate and start to recognize your contributions.
If you feel a bit more adventurous, you can create your own Podcast. Compared to many communities, there is a real shortage of podcasts in the developer community.
Writing a book, even if you just self-publish, is a way to contribute to the community and make some money while doing it—although, don’t expect to get rich from book sales alone.
And, of course there is open source. Many open source software projects need developers who are willing to put in some time and goodwill to help get them off the ground or to keep up with the maintenance associated with any large scale software effort.
The key thing to remember is that you help the community by creating value for others. A majority of it should of course be free, but not all of it has to be free to be valuable.
If you are with me so far, you agree that being actively involved in the software development community is a good thing and you know some ways to do it, but talking about it and actually doing it are two different things. So, how do you actually get started?
Well, the easiest way is to just jump right in and get involved in whatever way you can. You don’t have to be a genius or an expert on a topic to blog about, talk about it, or just share your excitement. In fact, sometimes being a beginner is a big asset.
If you want a little more help though—I know writing your first blog or trying to speak in front of an audience can be extremely unnerving—I’ve got something you might be interested in.
Next week on March 27th, I’ll be launching a brand new program called “How To Market Yourself as a Software Developer.” In this complete package, you’ll find lots of advice about how to get involved in the community by learning how to create a blog, and in other ways as well.
I think you’ll be particularly interested in my interview with Derick Bailey who is the creator of the popular open source project, Marionette.js. In that interview Derick explains exactly how he got involved in the the development community and how it benefited his career.
Software developers usually make pretty decent salaries, but did you know that companies that hire software developers usually make much more money off of a single software developer than they pay that software developer?
I guess, if you think about it, it is common sense. Why hire programmers if those programmers don’t make more money for your company than the salary you are paying them?
But sometimes this disparity between what a software developer actually makes and the value that software developer brings to the table is large—sometimes it’s really large.
In fact, if you are being paid an hourly rate as a contractor, you are probably making about half of what the client is being billed for, if even that.
Being a commodity
One of the big problems many software developers face is that they can be easily treated as a commodity.
This problem is becoming more and more prevalent as basic programming skills become easier to come by and more and more people are becoming programmers all over the world.
If you go onto oDesk or ELance today, you can find software developers willing to write code for less than $10 an hour; you can find really good software developers writing code for $25 an hour.
If you are letting yourself be treated like a commodity and the price of that commodity is dropping, you are in big trouble.
Forget about job security at a single job. You’ve got to worry about your entire career and all the investment you put into your skills.
If you want a long and prosperous future doing what you love to do, you’ve got to be able to justify why someone should hire you and keep paying you at your current rate instead of hiring someone at $10 an hour to do the same work.
What makes something a commodity?
In order to solve this problem, you’ve got to examine what exactly it is that makes something a commodity.
But, before we go any further, let’s take a moment to make sure we are on the same page about what a commodity is.
I like this definition from the Wikipedia entry on Commodity:
“The exact definition of the term commodity is specifically applied to goods . It is used to describe a class of goods for which there is demand, but which is supplied without qualitative differentiation across a market.”
The key thing here is “without qualitative differentiation across a market.”
This means that if the service or product you provide isn’t much different than what everyone else is selling, it can be considered a commodity. And, as such, the price will be determined by the market, not by the actual value you provide.
So, even though you may be providing your employer with $500,000 worth of value per year by writing code, your employer can turn around and pay you whatever the market says a software developer with your years of experience and skill level is worth.
That is unless…
You find a way to be something more than a commodity
That is the key to being paid what you are actually worth instead of what the commodity market for software developers says you are worth.
But, it isn’t easy to stand out. It isn’t easy to be perceived as something more than a commodity if you don’t know how to do it.
I want to show you an example of how some people break out of commodity markets and differentiate themselves to make more money.
Have you ever heard of a voice-over?
A voice over is when you have someone who has good oratory skills or a particular accent, or sounds create a recording for something like an advertisement or a cartoon character’s voice in a cartoon.
There is quite a big market for people who do voice overs. Just about every radio ad, podcast advertisement, and animated film or show needs voice over talent to create voice overs.
But, did you know it is a commodity market?
That’s right; I can actually go onto Fiverr.com and pick from a multitude of skilled voice over actors to do a voice over for me for $5. Not only can I do it—I have done it. I’ve hired two different voice over actors to do voice overs for my podcast for just $5.
But, believe it or not, some voice over actors get paid millions of dollars each year to do basically the same work.
So, what separates the voice over actors who get paid millions from the ones who get paid five bucks?
I’ll give you a hint—and it’s not talent—it’s marketing.
Those voice over actors that are making the big bucks have figured out how to market themselves to land the right gigs, which increases the value of their name and gets them more and higher paying gigs.
If you don’t believe me, go on Fiverr.com yourself and check out the talent level of some of the top people on there that are doing voice overs for just five dollars—you will be impressed.
No one tells software developers how to market themselves
In the entertainment industry self-promotion and marketing is the name of the game.
There are whole companies that do nothing but market talent. I mean, actors have agents, so do musicians, and yes, even people who do voice overs have agents… at least the successful ones do.
But, when it comes to software development, you are not very likely to find the same kind of resources of knowledge about self-promotion and advertising that envelope the entertainment world.
Have you ever heard of a software developer having an agent?
Well, even though it sounds silly, you’ve got to be your own agent if you want to rise above the crowd and stand out. If you want a chance at making the big bucks and setting your own price, you’ve got to figure out how to market yourself.
There are plenty of software developers that are already doing it. You’ve heard them on popular podcasts and read articles written by them in trade magazines or heard them speak at conferences.
But, no one ever talks about how they achieve their success… at least not until now.
Over the past few years, I’ve been talking to developers who have broken away from the herd. I’ve studied their careers and asked them about how they’ve achieved their success. I’ve been able to duplicate their results to a large degree myself, and since no one else is doing it, I want to share that information with you now.
Check out this package I am putting together called “How To Market Yourself As A Software Developer.” I’m going to be launching this this package, on March 27th.
Well, I hope this article has been helpful to you and helped you realized that you’ve got to make a fundamental shift in your thinking if you want to be able to really advance your career and not be treated like a commodity.
This is the 3rd post in a three part series about quitting your job and working for yourself. Check out the first post about why you should want to quit your job, and the second post about the fantasies and realities of quitting your job.
I want to start off by saying that I, myself, have had several false starts and I’ve witnessed countless others who think that they are going to quit their job and live their dream only to wash up, shipwrecked on the shores of reality.
I’ve already talked about the harsh realities of working for yourself. If that part didn’t scare you at least a little bit, or you think that what I said doesn’t apply to you, there isn’t much point reading any further, because this advice won’t help you either.
But, if what I said earlier made you sweat just a little bit; made you just a little bit more unsure of your brilliant plan, then you’ll probably find the advice I offer here immensely useful (I wish I would have had this, advice when I started out.)
Transition into working for yourself
Now, for some people this ends up working out. These are the people you hear of that quit their job to follow their dream and then they created some startup company that got purchased for millions of dollars. Some people also win the lottery and others, unfortunately, get hit by lightning.
But, what you don’t hear about is all the people who quit their jobs to follow their dreams and end up wasting a year or two of their life eating up all the savings they have accumulated from the past 10 years while they suffer from a bout of writer’s block that never ends up being cured.
The truth is, working for the man is quite a bit like slavery or prison. You can’t just be set free and expect that you’ll adapt comfortably to your new life and start fulfilling your dreams. It is a bit like when you get off that 6 week diet you were on and say “ok, I’m just going to pig out a little as a reward, then I’ll get back to ‘normal eating.’” What ends up happening is this instant transformation from the shackles of a restrictive diet to “free eater” doesn’t land us in the comfortable norm of “normal healthy eater” like we’d expect. Nope, instead we take a 1 way ticket to pig-out land until we eventually come crawling back to the comfortable diet prison that we hated, yet required.
The same happens to software developers, and other professionals who go from working for the man to being the man– they can’t handle it! They go nuts, and waste lots of time being unproductive without the structure of a workplace and someone cracking the whip on their back. Eventually, they crawl back to their cruel masters and begrudgingly reenter the rat race.
The problem is that working for yourself requires self-discipline. More than you’ve got right now. Yes, I know that your parents and friends have commented on how self-disciplined you are because you have excelled at your job by actually showing up to work each day and doing your job, but there is a huge difference between doing what you are supposed to do because you are supposed to do it and doing what you are supposed to do, because there are immediate and dire consequences if you don’t.
Stop shaking your head for a moment and listen to me. I know you think you are better than that, but you aren’t. Take a deep breath, dig deep and realize what I am saying is true. If you really want to succeed on your own, you are going to have to learn this skill as well; seeing an unfiltered view of reality.
In order to be ready to be successful on your own, without a boss, without a formalized structure and system of consequences, you are going to have to exorcise a few demons.
The best place to perform this religious rite is at your current workplace, in your current job. You will use this as a transition period and training ground to prove yourself, before you cut loose your chains.
The first demon: productivity
In my last post, I talked about the fantasy and reality of working for yourself and really what it focused on was the most critical component: productivity.
These days, productivity is like a drug; lots of people are peddling productivity hacks and productivity tools as if productivity means more than just working hard on what you are supposed to.
The trick is that it is much easier said than done. As I highlighted in the last post, most of us are spending very little time actually working productively at work. And, you will probably be in for quite a shock when you lose your shackles and find out that you aren’t getting nearly as much done as you thought you were– oh, and now you aren’t getting paid for goofing off.
So, my advice is: before you quit your job, you need to actually be able to put in a 6 hour day of hard work. No better place to practice doing that than in a paid learning environment.
How do we get there?
It isn’t going to be easy. But, nothing ever is, right?
I use a productivity technique called the Pomodoro technique to both measure and help me achieve a high level of productivity. The idea behind this technique is pretty simple. So simple that I actually overlooked it the first time I had been introduced to it and only later came back to it when a friend of mine, Josh Earl, mentioned how much success he was having using it.
The idea is that you set a timer for 25 minutes. During this time, you work on one focused task without interruption. After you are done, you take a 5 minute break and repeat. Nothing magic here. The magic is actually in the measurement. You see how many of these you can get done in a day and you track them. You can actually then plan out your work and estimate your work in terms of Pomodoros, which it turns outs, is extremely useful.
I’d recommend getting this book, Pomodoro Technique Illustrated (Pragmatic Life), to learn more about this deceptively simple seeming productivity tool.
I’d recommend starting to put this into practice at your regular job. Try to achieve 8 Pomodoros a day. This would represent close to 6 hours of productivity. And only count time that you are actually being productive. This means producing something of tangible value. You are going to end up not replying back to lots of emails and dismissing yourself from a bunch of meetings.
The second demon: gold-plating
On someone else’s dime it is pretty easy to forgo pragmatism. But, something I had to learn really quickly when I struck out on my own is that good enough really is good enough.
Don’t get me wrong. I’m not saying do shoddy work. And you already know that I’m not advocating not working so hard. What I am saying is, if you want to be super productive, you can’t make every piece of work you do a masterpiece. You have to find the right balance of time and effort.
Take this blog post, for example. I’m putting quite a bit of work into this post and the series of blog posts it belongs to, but I could actually spend weeks or months writing and rewriting parts of this post. If I did this, I might end up with a true work of art at the end of the process, but I’m not going to do that. Instead, I’m going to ship it when it gets to the 80-90% effectiveness mark and not worry about squeezing out that extra 10% of quality for another 300% cost of time and effort.
Don’t take this as an excuse to do s!*# work and ship a bunch of crap. That is easy, anyone can do that. Instead focus on being pragmatic. Get to the point where the work is good enough and let it go, then move onto the next thing. This is much harder than you might think– it is a delicate balance.
The third demon: consistency
Success is usually not the result of a glorious fight with a single dragon which you vanquish in a fierce battle, instead the road to success looks much more like running around Midgaard naked, killing rats over and over again.
Working hard and being pragmatic is completely worthless if you can’t do these things consistently week after week month after month. It is like starving yourself for a day and thinking you are going to lose weight, or running a marathon and sitting on the couch for the rest of the year.
So, how do you learn consistency? Simple, you cut out all the excuses. Make being consistent a matter of life and death. Don’t act like failure is an option. Pretend like just missing a single day or skipping a beat is the end of the world.
Eventually, you’ll be able to use your judgment to decide what you should do and when to make exceptions, but for now make rules for yourself. Rules that you will not break under any circumstances. Learning to live by rules like this will be a huge benefit to you. Everyone is weak-willed, no one can resist temptation; if you want to be successful, avoid judgment calls and decision making. Make your decisions ahead of time and codify them as rules that you follow every day.
I’ll give you an example, before I wrap up this post, because it is already getting quite long. Right now I am learning Spanish. I am using an app on my iPad called Doulingo to do this. I have a rule that I do this app at least 30 minutes a day, every day– no excuses. What do you think will happen if I obey this rule every single day for a year? I think I am going to be pretty good at Spanish. Unless I stick my finger in an electrical socket and fry my brains, it will be pretty hard for me not to succeed, so long as I follow my rule.
The hard part
If I haven’t lost you yet, you must really be serious. Good. You are going to need to be serious to stomach what I am going to tell you next.
At this point, if you start right now, you are probably still at least two years out from the point where you are going to be able to quit your job and not end up coming crawling back to the rat race battered and beaten.
I see far too many people come up with the ill-conceived plan of saving up perhaps 6 months to a year’s worth of living expenses and then quitting their job to pursue their dreams of starting their own business. (I’ve entertained this idea myself several times in my career.)
But, let me tell you why this is a very bad idea and then give you a much better one– a plan that will actually work and isn’t likely to leave you homeless or broke.
The reason why saving up a bunch of money and quitting is a bad idea is, because if you do this, you will be constantly racing against time. Instead of time working for you, you will have time working against you. You’ll make bad choices, you’ll feel panicked, you will not be operating under ideal conditions and you won’t be giving yourself room to fail– which you will inevitably do.
Here is a better plan. Instead, of thinking in terms of saving up X amount of dollars, think in terms of earning X amount of monthly income from a side business. Whatever business you plan on creating once you quit your job, start doing it now. Start building you future business while you are still working for the man. If you can’t get something going on the side without the stress and pressure of potential financial ruin, you aren’t going to succeed when you go it alone and add all the extra pressure and stress that comes with being self-employed and not getting a pay check.
Sure, it will take you longer. Sure, it is going to be hard to essentially work two jobs, but the question is, how bad do you want it? If you don’t want it that bad, fine, I’m not going to try and convince you otherwise– to each his own. But, if you really want it, and you are willing to both work and wait for it, then do it the smart way; build your business on the side while you are still getting a regular paycheck.
Well, I hope this series was helpful to you. I’m not an expert by any means on the subject, but I can speak from personal experience, and I’ve talked with enough other people who have made the transition to know that what I am telling you here is not my advice alone.
When I first quit my job, I was shocked at how different life was from how I had imagined it would be. I had to make some big adjustments really fast, because I wasn’t prepared. Hopefully, after this advice, you won’t find yourself in the same situation, or at least you’ll have a rough idea of what to expect and how to deal with it.
Update: check out what Loren (the guy I mention in this post) actually is creating. Pretty awesome. The things I say in this post are still true, but I apparently either had Loren pegged wrong or this post may have influenced him in some way. He’s definitely building something cool right now and he’s putting a great deal of hard work into it.
I read the saddest most uninformed blog post on hacker news yesterday which somehow made it near the top of the front page.
It is basically the all too common story of “I quit my job because I got bored and I’m just going to do what I want and I’m so excited, please give me self encouragement in the form of follow your dream, live your passion, etc, so I can feel better about myself and not realize that I am just lazy.”
Unfortunately this kind of thinking and mentality seems to accurately embody much of the general ignorance and blatant stupidity of the next generation of software developers.
The best and the brightest
Hacker news is full of plenty of smart and talented young people. There are, of course, experienced veterans of the industry there as well, but there sure seem to be a lot of really smart people that, like brightly burning stars, will soon fade into nothingness.
It is really sad to see someone peak at 22 or 23 years of age and then go down the crapper from there.
It doesn’t happen because they work really hard and burn out. It doesn’t happen because, as they like to imagine, the world wasn’t ready for their genius. It happens because they don’t know how to work.
The sad thing is, we are to blame for this. We have painted the wrong picture for youth. We have glamorized the world of software development and programming and told them that they will be carried through life on their abilities and brain matter. We have somehow imbued within them the misconception that being smarter than someone or possessing more knowledge than another makes a person not only superior to that person in every way, but gives them the right to publically efface and hurl all manner of insults at that person in the name of science.
What we haven’t told them is that nothing of any worth is obtained by any means except for good old honest hard work.
You see, these young and bright minds are being mistakenly fed the tasty meal of McDonald’s french fries and double whoppers that says work should be fun.
Hard, boring work
The big problem is that “kids today” don’t understand the value of hard, boring work. They think that they can just fly through life choosing only things that interest them and as soon as the thing stops interesting them, then they can move onto something else.
And it is fine, you can live your life this way. And if you do, you may start out ahead of the pack. Your passion may at first carry you further than your peers. But, overtime you’ll find those peers of yours that were willing to put in the hard work and stick to one thing, as boring as it might have been for them, will overtake you.
“The race is to the driven, not to the swift” – North and South
This is an extremely sad day, because it is a day in which you realize that while others have been carefully storing away nuts for the winter and fortifying their fortresses against all attack, you yourself have lived the vapid life of a vagabond merrily traveling from pleasure to pleasure in life ever thirsting, but never being quenched, every tasting, but never consuming.
It is really easy to sit at your desk when you are supposed to be working and browse hacker news, injecting in your sarcastic wit and sly comments, believing them to be of value, believing that somehow that in this false self-affirming reality that you are actually creating something of value, when indeed all you are doing is destroying and marring the work of others to your own detriment.
It is easy from the cushy back of your Aeron chair, provided to you by the fancy startup you’ve managed to secure a job at, based on sheer intelligence alone and no other human quality of any worth, to indiscriminately write-off the thought of lesser mortals and set them in their place as you spout off your hard earned knowledge of the industry and of how the very world works which was granted to you as a gift to mankind—your divine providence.
The sad truth of reality though is that while you are providing your service and value to humanity in the form of your irrefutable and distinguished wisdom, others are hard at work ever so humbly providing real value through their—at times—loveless toil.
They are building bridges a carefully laid stone at a time. You are crossing those bridges without a thought about how they got there and upholding your position as the great explorer and master of bridge building even though you just traversed a path that was already laid out for you.
The easy path
So, to those of you who want the easy path; for each of you that can’t stand boredom and despise work without pleasure, enjoy your brilliance while it lasts.
As you take flight from project to project seeking out only what it is that entertains your for the moment, you will be receiving your reward as you have earned it. You are like the man without a dollar in his bank account until payday comes who then quickly and excitedly cashes his check and spends it in its entirety that very weekend.
Check out this quote from Nietzsche which sums it up nicely:
But there are rarer men who would rather die than work without enjoyment in their work: the fastidious people, difficult to satisfy, whose object is not served by an abundant profit, unless the work itself be the reward of all rewards.
It doesn’t matter how brilliant you started out or how much faster you exited the gates than everyone else, those who consistently get up every morning and direct their energies along a single path, no matter how boring it may be, will eventually pass you on each of the many roads you haphazardly travel.
It may seem that I am suggesting that a software developer pick a single path, a single technology and stick with it for the rest of their life. But, this is not at all what I am suggesting.
Instead, what I am really saying is that to have long term success at whatever endeavor you are currently pursuing—and it can change drastically and many times throughout your life—you must have the wherewithal, the grit, to hunker down and work hard well past the point where the work is enjoyable.
It doesn’t matter what passion you pursue, the passion will fade, and you will be left with cold hard work in its place. At this point many people will mistakenly make the choice to leave that work and assume that it is time to move on, but any person who has ever produced any great work or achievement knows that it is only by pushing through the pain, by continually showing up every day and “paying your dues” that anything of value is ever really achieved.
The myth of burn out
I’ve written about this wall or barrier before, that many developers and like to attribute to burn out.
Burn out is just a rationalization for giving up early.
It is just a way to make an excuse for yourself to say that since everyone experiences this phenomenon, there is nothing wrong with me and no shame in my giving into it.
As I’ve grown over the years, I’ve come to realize that it is more than just a barrier. I recently read the excellent book “The War of Art,” and in that book Steven Pressfield describes this avoidance of work as resistance. He give resistance all kinds of diabolical characteristics that paint it as the true enemy that it is.
Even as I type these very words, I feel the force rising up in me. I created this blog originally because I thought it would be fun to write about what I thought about software development; to share my wisdom and knowledge about the profession. But, like all things, that feeling soon faded. What I was left with was the choice to continue blogging, even though it now at times hurt, or give up and move on to the next direction my heart led me to go.
And I could have given up and instead perhaps started a novel that I would never finish, or maybe a web application that I would someday sell as a service, or… and the list goes on.
The point is, no matter what avenue I would choose to pursue, the passion would eventually die, and I would be again faced with the same choice.
The same goes for the work I do at Pluralsight. Just last week I finished the 20th course I created this year alone, my 46th course overall. Do you think I wake up every morning and say “hey, I can’t wait to painstakingly produce and record hours of content?”
When I first started creating my first course, I had that feeling and felt that energy, but to be honest, it didn’t even last through the creation of that first course. By the end of it, I was ready to give up. This online video course production is for someone else, not me, instead I want to… eh, but I stopped myself. I started my next course, and when I was done with that one, I moved onto the next one and so on.
Now have I been miserable this whole time? Do I hate creating courses and writing blog posts with all my energy and inner being? Some days, yes, but most days it is not that black and white.
There are things I like and things I despise and it varies from day to day. I am, for example, having quite a bit of fun with this post. But, for the most part the rewarding part of what I do comes at the end—the finished product.
There is not quite any feeling like that of success that was achieved from long hours and hard work and toil. Work that is constantly pleasurable most often lacks this quality.
I’ve got much more to say on this topic including how I’ve been able to overcome burnout and learn to hunker down and do hard work even when I don’t feel like it.
I’m currently working on a top secret product that will combine what I have learned about this topic and more over the years with wisdom and knowledge from many successful developers much smarter than I am. Sign up here, and you’ll be the first to know when it is launched.
I discovered something about myself—I have an amazing gift to always make the very best technology choice.
No really, it is quite amazing.
When I look back at my development career, it seems to me that every programming language I was using at any given time was clearly the best one.
The same goes for frameworks and even operating systems.
Yes, I have this amazing ability to pick from the vast ocean of technologies, without even trying them all out, the very best one, and to vehemently defend my choice.
Perhaps as you’ve been reading this, you’ve discovered you have this uncanny ability as well?
Most developers are religious about technology
Don’t be ashamed, you are not alone. Myself, and just about everyone else, is with you.
Some of use are recovering from our self-imposed brain washing. Others of us are blissfully unaware of our predicament. But most of us have at least one religion we’ve managed to craft ourselves.
It is perfectly natural because most programmers got into the field of software development because they were passionate about it. Anything you are passionate about is likely to cause you to develop some highly charged opinions.
Take sports fans for instance. I’m not really much of a sports fan myself, but I know many fans of all different kinds of sports that religiously believe their team is the best despite all the evidence to the contrary.
This defense of our own choices and ideas is core to human nature. It is easy for us to adopt a new idea but we religiously defend the ones we have without needing much evidence to back it up. The problem is we tend to tie up our ideas about things with our identity and even our value as human beings.
It takes some deep soul searching, but it you look within yourself you’ll probably find that you can make a list of the best operating systems, programming languages, frameworks and so on.
Ignorance is not bliss
The problem with this self-imposed religion is that our technological religion blinds us from the truth.
I spent countless hours arguing about why Macs sucked so much before I had even really used one. Ironically, I am writing this post on a Mac right now, but I am using Windows Live Writer which I am accessing through remote desktop. Oh, and this blog post, well, it is actually hosted on an Ubuntu Linux server in the cloud on a PHP application you may have heard of called WordPress.
My point is, most of us vehemently will argue that our technology choice is the best without even having really tried the alternatives.
It seems ludicrous when you think about it clearly, but I still catch myself doing it even today.
When I look within myself to honestly ask the question “why,” I find that most of my motivations come from a combination of pride in what I have learned and accomplished and a fear of what I don’t know.
I find that it is much easier to dismiss a technology that I don’t know as “garbage” or “worthless” than it is to take the time to learn about it and see why others like it so much. As they say, one man’s garbage is another man’s treasure.
The problem with thoughtless religion
I don’t need to tell you that mindless religious zealotry is a destructive force in our world. You only need to go to your favorite national news web site or look in any history book to see that is the case.
So, while we may think our ignorance isn’t harming anyone and that they deserve it anyway because they are clearly wrong, the truth is, there is quite a wake of destruction that our ignorance can leave behind us.
I look back on my own past and I am embarrassed that I harassed Perl developers to the degree that I did, completely discrediting their work and ignorantly pushing my holy statically typed C-based languages as their one and only savior who could cleanse them of their filth.
But more than anything, I realize that I hurt myself.
Stop hitting yourself, idiot!
The biggest growth in my career came when I was looking for a job doing C# development and found a really good opportunity to act as a technical architect for a project written in Java.
I was quite torn by the decision. In my heart I knew that Java was bad and evil. I knew that because Java lacked properties like C# and required the use of manually created getters and setters that everyone writing Java code was clearly an idiot.
I almost didn’t take the job, but I decided that the pay was too good to pass up and that I would suffer through this awful experience like a prisoner of war until one day my Microsoft would rescue me. I thought I would at least get to apostatize some filthy Java writing scoundrels.
Well, it turned out that after a couple of years of mentoring developers on writing good Java code and unit testing, I realized that not only was Java not so bad, but there were some actual merits of the language and Java frameworks that could be appreciated.
More importantly though, I began to realize that my past code bigotry had closed quite a few doors on my face. It began to occur to me that perhaps all of my technology choices in the past were not necessarily the best. I began to start thinking that there wasn’t actually all the much difference between many of the most popular technologies.
I began to realize that understanding a wide range of technologies and programming languages made me much more valuable than ignorantly subscribing to my own religion about a particular technology that I happened to choose.
I found that my own understanding of individual technologies increased rapidly, because instead of just “eating what I was fed,” I could use my brain to compare and contrast differences between programming languages and technologies which left me with a deeper understanding of all of then.
I was rudely reminded of my own shortcomings that still exist in this area when I recently converted my blogs over to a Linux server in the cloud from Digital Ocean.
I was predisposed to choose Windows technologies for deploying web applications, but it was pretty hard to argue that a complete Linux server in the cloud that performed extremely well for $10 a month was not a good choice.
My point in all this is to say that being closed-minded about technology choices only hurts yourself in the end and severely limits your personal growth as a developer.
There is no “best”
I’ll finish up this post by imploring you to believe me when I say “there is no best technology or programming language.”
I’m not going to insult your intelligence by saying that each language has a purpose for a different situation because the truth is much deeper than that.
After creating over 40 Pluralsight courses on a very wide range of technologies and programming languages, I’ve discovered a few truths.
The truth is that there are multiple great ways to do the same thing using different tools and different technologies.
The truth is that all programming languages and technologies have big mistakes and weaknesses in them.
The truth is the more you learn about different technologies, the more you will find that at the core most things are pretty similar. What I mean by this is that most of the core concepts about writing software apply regardless of technology choice or programming language syntax.
You’ll also find, as I have, that if you are accepting about others technology choices and are able to admit your own ignorance and learn from it, you’ll find helpful friendly people willing to teach you what they know, everywhere you go.
If you found this post useful–or at the very least entertaining–sign up here and join the thousands of other Simple Programmers out there. Also, I’m still preselling my complete package on How To Market Yourself as a Software Developer for a limited time.
Do you consider yourself a good salesman?
If you are like most programmers, you probably don’t.
But have you ever stopped to consider what “selling” and “sales” really are?
Have you ever taken the time to dissect the process of marketing and making a sale and tried to see how it applies to your own life and career?
It’s OK if you haven’t—most people haven’t.
I’m selling you right now
If you’ve made it this far, it is going well for me. You probably decided to read this article because of the headline I created for it, “The One Thing You Don’t Know How To Do That You Do Every Day.” Then, the questions I asked in the paragraphs above must have held your interest long enough for you to get to my sub-heading telling you that I am selling you right now.
You see, unless I am actively selling you with my words, you aren’t going to be reading this blog. And, if you aren’t reading this blog, there really isn’t a point in me writing it.
This may not seem important, but the effects of a good sale are profound; especially when you magnify them by a huge number.
Imagine for a moment that this article lands in mainstream media and is featured on national media outlets—yes, a pipedream, I know, but bear with me for a moment.
What would happen to those ads over there on the right or at the bottom of this article? How valuable would they suddenly become?
How many people would subscribe to this blog? How many people would follow me on Twitter or check out the other things I am doing?
The difference between a thousand page views and a million page views is huge!
If I had the ability to “sell” these free words to millions of people each day, even my $0 priced product would have immense value.
When I am writing this blog post, it doesn’t “feel” like I am selling anything, but it is a mistake to think I am not.
I am selling you my ideas, my brand, my name and more. You are paying me with the single most valuable asset you have… your time. CHA-CHING!
You’re selling too
You may not think so, but everything you do in your life, every interaction, every word you speak, and even the clothes you wear are all part of one big sale.
It doesn’t even matter what your profession is, even if you are a programmer, you are selling something each and every day.
Take for instance the last conversation you had with your boss or your coworkers about what technology to use or what direction you should take to solve a certain problem. If you had an opinion at all on what to do, you were in the process of negotiating a sale. In this case you were selling your ideas.
Even the code you write is selling something. The code you write should be conveying something about what it does and how it works. If you can write the code elegantly, the reader of the code might not even be aware of the “selling” taking place. Great code sells itself, it seems apparent, like there was no other way to write it. Just like certain tech companies sell their products in a way that seems like they are obvious and your life wouldn’t be complete without them.
(If you lack the elegance of selling your code naturally, you may have to resort to hard sale tactics and add some comments to the code to describe in detail to the user what the code is doing and what its intent is.)
Your sale might not even be successful at all, as your reader may simply delete your code and replace it or ignore it completely.
Your code is also selling something besides meaning and understanding, it is selling your programming skills. When someone reads code they know you have written, they are making certain judgments about you as a programmer, and even you as a person, believe it or not.
Now, you may not think this amounts to much or is very important—and it may not be—but most sales calls aren’t. Professional salesman face a lot more “no”s than “yes”es, but for some salesman it only takes a couple of “yes”es to pay their whole years salary.
But it goes far beyond this as well. Even the subtle things like the clothes you put on in the morning and how you sit in your chair, are influencing people around you and shaping their acceptance of everything you are selling.
What you post on Twitter, even what you like on Facebook, are all either working for or against the image you are trying to sell.
Why selling matters
So, you may be thinking, “ok that’s nice and all, and I kind of agree, but seriously, why should I even care? So what if I am selling my “ideas” or my “personality” or something else, it doesn’t make a difference to my daily life.”
Do you know those kinds of people which seem to have everything go right for them?
Those people in which opportunity just seems to open its floodgates and rain on them pelting their heads with hailstones of success?
Guess what, most of those kinds of people happen to be excellent salesmen.
You see all those hundreds of sales calls that happen unconsciously every day of your life add up big over time.
If you are consistently “knocking it out of the park,” you are going to make a big impact and have huge amounts of influence.
This “influence,” which is really what sales is all about, will permeate all areas of your life.
If you have a large amount of influence, people will tend to like your ideas and agree with what you say. They will want to follow you and they’ll be buying into your personal brand and your message, whether it be “save the whales” or “give me a promotion.” (Which is exactly why so many companies hire celebrities to represent their brand or product.)
If you lack influence, you can actually have the opposite effect and create a repulsion. Think about the worst salesman you ever met. Did he make you want to buy the products he was selling or did he actually turn you off from them and make you never want to buy those products?
It is the same with us, we can actually become repulsive to the point that we are working completely against ourselves. We can get in situations where the more we try to promote our ideas or our vision of reality, the further away we actually push others from it.
Even if you are not trying to sell, you have to be good at it
So the bottom line is that we all need to learn how to sell and be better salesman, because even if we aren’t actively trying to sell something, we are still participating in the process of hundreds of sales transactions or more each day.
If we aren’t doing something to help make those sales transactions a positive influence for our interests, we may be inadvertently making them a negative influence.
You can be doing everything else right, but if you are selling wrong, you could be spinning your wheels or even going in reverse.
Now obviously, I’m not the best salesman I could possibly be, otherwise you’d probably be reading this post on the New York Times or CNN.com and not on simpleprogrammer.com, so you shouldn’t turn to me for sales advice. (I’m just telling you that you need to develop the skill.)
But, I do have a few suggestions of where to get started.
First of all, a book that I always recommend over and over again that doesn’t seem to have anything to do with sales, but in actuality has a lot to do with sales is “How To Win Friends And Influence People” by Dale Carnegie.
And second, the place that makes sense to me to look next is Amazon’s Best Sellers in the Sales and Selling category. (If you can’t figure out why to check this list, you may need more help than I can provide.)
By the way, I am working on a top secret specifically to help programmers and IT people learn to promote and sell themselves to help them increase their opportunities.
YouTube video for the week
And before I let you go, let me sell you on my YouTube video for the week about getting “punched in the stomach.”
Get Up and CODE: Episode 5, How to get 6-pack abs
And I’ve got one more free thing to sell, my latest podcast episode here:
What do you do when you make a mistake?
Not just in your job, but in life in general?
I’ve made some pretty big mistakes in my career
Just last month I was giving a talk at the Orlando Code Camp and I forgot to bring an adapter to go from DVI to VGA for my MacBook.
That was a huge mistake! I spent most of the presentation trying to get someone else’s laptop to work with my setup. Finally, in the last 5 minutes I managed to actually get my demo started. (Luckily the talk was about how to create a web service using Service Stack in 5 minutes.)
I’ve made huge career mistakes, like quitting a job with a certain company that got sold a year or two later, which would have resulted in a pretty big payday for me.
I’ve made dumb coding mistakes that have caused bugs to go into production and resulted in some embarrassing moments for myself.
I could take up this whole post just listing all the mistakes I have made.
The point is…
Everybody makes mistakes
It doesn’t matter who you are or how good you are at development or whatever else you are doing, you’ve made mistakes in the past and at some point in the future you’ll make them again.
The fact of the matter is that mistakes are just part of life.
We can try to avoid them. We can try to deny them. But, regardless of what we do, mistakes will happen, so it’s best to learn how to deal with them.
Own up to it
The most important thing to do when making a mistake is to own up to that mistake.
Chances are everyone else already knows that you made the mistake, and no amount of excuses or finger pointing will change anyone’s opinion of it. Trying to avoid the ownership of a mistake is more likely to make you look even worse and damage your credibility.
Sometimes the mistakes truly are only visible to you. In those cases it can be even more difficult to own up to the mistakes.
I have a tendency to try and pretend like somehow the mistake I made was not a mistake at all, but rather the wisest choice I could make given the set of circumstances I faced, regardless of how bad the outcome was.
This is called justification. Not only is it not healthy, but it is a complete waste of time and energy. When you justify your mistakes instead of acknowledging them, you completely void any possible benefit you may have gotten from making that mistake.
Justifying mistakes is tantamount to throwing your hands up in the air and saying “what comes, comes.” It is taking away your power and control over your life and career and giving it to everyone else. It is becoming a victim of your circumstances instead of a master of your destiny.
Long story short, when this !@#$ hits the fan in your life, it’s probably your fault, so own up to it.
Fix it (if possible)
You can’t always fix your mistakes.
Once I deleted my backup folder and emptied the recycle bin, BEFORE I had copied that folder to my new backup drive.
That was it, it was done. There was no fixing it at that point. Oops.
Fortunately though, in many cases mistakes are fixable if they can be identified and you are willing to own up to them.
There is a wise old Turkish saying that goes something like this:
“No matter how far you’ve gone down the wrong road, turn back.”
I always try to remember this saying, because the first tendency I seem to have when caught in a mistake is to try and ride it out with the foolish thought that I’ll save what I invested so far by continuing to go down the wrong road. As if somehow the wrong road will magically become the right road.
If you have made a mistake and you know what that mistake is and that mistake is fixable—fix it!
Don’t try and “ride it out” or build on top of it. Tear down the building to the foundation and fix the mistake, before it can get any worse.
Little mistakes become big mistakes when we let them fester. Big mistakes become tragically life altering mistakes when we ignore them.
Guard against future mistakes of the same kind
Now, like I said before, we can’t always fix all of our mistakes, (although you’d be surprised how many mistakes you can actually fix if you are willing to eat a little humble pie,) but we can guard against future mistakes.
The first thing that I try to do after I have made a mistake that I have identified, owned up to and have tried to fix, is to figure out why the mistake happened and how I can prevent it from happening again.
Far too many people make the same mistakes over and over again, because they don’t take careful steps to prevent the mistake from happening again.
It is very easy to move on from a mistake or dwell on the mistake without making any effort to analyze why the mistake happened in the first place and how it could be prevented in the future.
Many times in a rush to move on to the next thing, I’ve been guilty of this meta-mistake myself.
It is very important to examine a mistake with a clear head and honestly evaluate what brought about the mistake and why exactly it was a mistake.
Once you know what caused the mistake, it is important to put in place a procedure or some other sort of guard that will ensure that mistake doesn’t happen again.
In code, I’ll often add a new unit test or some other type of automated test to ensure that a bug I fixed can never happen again.
In life, I often don’t find it that easy. Many times the mistakes and the consequences of those mistakes are quite far apart, so it can require a very careful and honest analysis to determine the connection and find a future remedy.
I have a high tolerance for people making mistakes, because I know we all make mistakes. But, my tolerance wanes for people who continually make the same mistakes again and again.
Single mistakes are expected and accepted, repeated mistakes indicate incompetence and carelessness.
Move on… quickly
It is to easy to get hung up on a mistake and become paralyzed by it in such a way that it prevents you from having future success.
I seem to have an instinctual desire to throw away what I am doing or try to completely wipe the board clean, whenever I make a mistake.
I remember as a child playing Nintendo and hitting the reset button over and over again every time I died on a level or messed up in the slightest, instead of continuing on and doing my best from that point forward.
I’ve embarked on projects and ventures where I have made mistakes and instead of plowing forward to learn from them, have simply given up.
Giving up isn’t the same as moving on.
Sometimes it’s the same and you need to know when changing directions is the right course of action, but often we are so caught up in our mistakes that the continual focus on those mistakes shifts focus from what we should be working on and derails us completely from our track.
I’ve learned that is it important to quickly acknowledge the mistake, take corrective action, guard against it in the future and then move on.
This means letting go of it and accepting mistakes as the only way to move forward.
Fail, but when you do, just be sure you are leaning in the direction of success. Then when you fall it will be forward.
I’ve had many situations in my career where I know I’ve screwed up and I know what I did wrong, but the process and consequences of my mistake have drained the enthusiasm and spirit out of me to press on.
In those situations I’ve had to tell myself that I was not going to give up and I was going to make the best of my current situation, regardless of what it is, instead of making the worst of it.
What about you? What kinds of mistakes have you made and how did you recover from them?