If there’s one thing to be said for a corporate software developer career, it’s that it’s a cushy job. I know this because I’ve had a few of them in my time and done consulting work with a number of corporate software developers.
Don’t get me wrong, you still have deadlines to meet and work to do, but it’s not as if you’re in a constant state of total disarray because you have far too many responsibilities and not enough time in the day to deal with any of them. Corporate developers have something that entrepreneurs don’t and that’s a layer of management over the top of them.
Software developers need time to get their work done and so it helps to not be interrupted every 2 minutes with interruptive requests that suddenly take a higher priority. The managers help keep the distracting stuff out of your way so you can focus on writing code. They attend meetings so you don’t have to. And they talk to everyone in the organization so that you don’t have to. Basically, they insulate you from the rest of the company so you can do what you’re best at which is writing code.
As a result, software development in a corporate environment also tends to be very isolating. You might have a couple of meetings each week with a manager or coworkers to discuss the status of the project you’re working on or chat with someone for a few minutes when you’re getting a cup of coffee but generally speaking, you don’t get out much.
You watch as those “slackers” over in sales and marketing are constantly chatting it up about one thing or another while you hunker down and build the stuff that they’re supposed to be selling. But that’s not even the worst part and most people don’t realize it.
Hear me out on this. Let’s look at the attributes of a corporate job and compare them to the things that as an entrepreneur will help you succeed.
|Isolation||Social networking with peers|
|Separation of responsibilities||Jack of all trades|
|Do one thing very well||Constantly learn & work on new things|
|Write resiliant & tolerant code||If it “generally works”, ship it|
|Narrow scope of focus/visibility||Has a view of the entire business|
|Follow the rules, be rewarded||Break social norms and be a bit rebellious|
|Failure can hamper your career||Failing helps you learn faster|
|You don’t need to know about sales/marketing||You need to know EVERYTHING about sales/marketing|
It’s pretty clear that as a corporate developer, your job responsibilities are probably limited to architecting and writing code. Yes you may be building a product, but generally speaking you do what the project/product manager tells you to do.
You have neither the visibility nor the influence into any other parts of the business which makes it very difficult to learn how to do anything other than writing code. And speaking of learning, have you ever asked to help the sales or marketing teams and been told no?
Let’s look at this from the company’s point of view and put yourselves in the shoes of management for a couple of minutes. What incentive is there to allow a developer to work on anything related to marketing? That developer most likely has no marketing skills and more likely than not, costs twice what an entry level marketing graduate costs.
So not only do you cost twice as much, you have half the skills, making it 4x more expensive for the company to have you work on marketing stuff. The same basic math applies whether you’re trying to learn more about sales, accounting, HR, customer support, etc. In relation to other positions in the company, software developers tend to be paid substantially more than other employees, with the exception of management or specialty research positions.
If you look at the list of attributes of a corporate developer listed above, it’s in the company’s best interest to keep you locked into a single position because it’s what you’re good at. In fact, it’s why they hired you to begin with. You’re good at something and they want to maximize their upside in that specific area.
Feeding you information about sales data or marketing tactics which aren’t directly relevant to what you’re working on today isn’t cost effective for them because it takes time away from building software. Since you don’t get to perform any other responsibilities, you’ll never get experience with them so you’ll never be as good at those activities as someone they would hire from outside the company or promote internally.
In addition, there’s a disincentive for you to attempt to do things that you’re not good at within the company. If you fail, then it can reflect poorly on your future at the company because you took a risk and failed. You weren’t able to come through and that loosely translates to the fact that you can’t be relied on to do things that are important to the business. The end result is twofold.
First, your reputation will suffer to some extent within the company. Second, you won’t be asked to do things that are important because of a perceived risk of failure. And third, when it comes time for yearly reviews, you’ll probably score lower because of “past performance”.
We both know that basing reviews on failures outside of your primary field isn’t exactly fair, but it still happens. There are reasonable ways you can stretch your experience at work without impacting your performance reviews, but unfortunately many HR departments don’t see it that way. The fact is that some initiatives just aren’t going to work out. That happens in every aspect of a business. But penalizing someone’s career for trying out something new in an effort to grow as a human being is just asinine.
Adding everything up, you quickly realize that the typical corporate environment isn’t set up to help people become entrepreneurs. And if you think about it… why would a company have any incentive for their workers to learn how businesses really work and then go out and set up potentially competing companies? Do you want to start growing competitors within your own payroll? My guess is probably not.
The end result is that when someone decides to take the leap from corporate developer to entrepreneur, they’ve been conditioned to not only do certain things, but to act in a certain way. You never payed any attention to sales & marketing in the past and you still got a paycheck every week. So why bother paying attention to it now? You never did it before so it couldn’t have been that important, right?
Most businesses are like icebergs. To the naked eye, there’s some subset of the company functions that are highly visible to any observer but the vast majority of it is hidden under the surface. Since you’ve never seen any of those pieces, you don’t know how they work. Even worse, you might not even be aware that they exist at all!
This leads to a neverending stream of developers who leave their cushy corporate jobs thinking that business can’t possibly be that difficult. Heck, if Adobe can make it work, then surely you can too, right?
There’s so much that goes on that you aren’t even aware of at a large company. Individually, most of those things don’t mean very much. But when you aggregate them, they create a substantial business. It’s a machine. A machine that generates money to pay its employees and generate revenue to the tune of six figures per employee. Even a small, 50 employee tech company probably has revenues exceeding $10 million/year.
This information is all well and good, but what’s a corporate developer to do? Is there a way around this seemingly stacked deck of cards? Fortunately, there is.
Don’t Ask Permission
One of my earliest jobs was at a wireless ISP called Clearwire. Someone bought the name and now they do something entirely different, but back in 1999, we sold line-of-sight fractional T1 internet access at ranges of 10-25 miles. It was pretty neat technology and while I helped a few of the engineers talk through some high level architecture problems, I didn’t write a lot of code for the product. Mostly, I was involved in working with the IT group to help support the engineers and make sure their desktops were always available.
One day while I was between jobs, I decided to play around with Perl. A very short time later, I built an internal webpage where engineers could request support for their desktops for things that weren’t working. Pretty soon, it was a company-wide tool.
Later, I was having a conversation with one of the field engineers about their jobs and he was complaining about how hard it was to keep up with the orders that were coming in via email because they always had to go back and forth to get more information that was inevitably forgotten. I threw together a couple of web forms and before long, the sales team and field engineers were routing all of their sales through the internal web portal I built.
Clearly I was young and naive, thinking that I could build an internal sales tool for the company from nothing within a couple of short weeks. But the fact is that I did it and everyone loved it. This wouldn’t have been possible had I done what most people would have done in that situation.
I didn’t ask permission. I just did it.
When you ask permission from management to do something, you’re forcing them to make a decision based on facts. And the fact is that you have nothing to show them and you’re asking them to commit resources towards something that quite literally has no groundwork, no traction and nothing going for it. That’s a risky proposition for a manager.
On the other hand, if you just start working on something and show them the results after the fact, you’ve walked right by the gatekeeper and he didn’t even know it. Now you’re farther along and the manager will start to see the potential upsides rather than immediately thinking of all of the potential downsides. There’s still the risk of the project getting shut down but if you’re up to date on all of your other work, then there’s very little downside to allowing you to continue working on something in your spare time, especially if it looks as if it can significantly help the company be more efficient or make more money.
In addition, you’ve proven yourself as an individual who’s driven to and capable of contributing to other areas of the company. You’ll develop a knack for getting involved in other areas of the company and learning how they operate. Eventually, it will become clear to management that you not only have the skills, but the business knowledge to make these endeavors succeed and they will start asking you outright to contribute in those ways.
Most of the time, it’s not a matter of knowing how to write code. It’s knowing how a business operates. That’s one of the major chasms that exists between a corporate developer and an entrepreneur is that understanding of how the business operates and where it makes money.
Don’t aim for perfection. Aim for “good enough to learn from”
One mistake that many developer-turned-entrepreneur make is trying to make everything bulletproof. Some people simply aren’t capable of making their code bulletproof which is a “lack of skills” problem. But most developers have a hard time developing the ability to know what it would take to make your code extraordinarily resilient and consciously choosing not to do so. Developing this ability will help you as an entrepreneur because the first thing this does is allows you to ship a product faster.
That doesn’t give you a license to ship something that is barely functional, but neither does it mean that you need to have everything perfect before you do decide to ship something. This is an extremely valuable skill to develop because it translates very well to being an entrepreneur.
Many times, you simply don’t know the best way to handle a particular problem so going with a half-baked solution can help you to either learn that you’re on the right track or find out faster that you’re on the wrong track so you can double back before implementing a full-blown solution that isn’t going to solve the problem.
Learn as much as possible about every aspect of the business
Don’t get me wrong. There are some things that companies do which are more than a little bit dumb. But companies are in business to generally do one thing: make money. If a procedure isn’t directly or indirectly making money for the business, it will usually go away at some point.
What that basically means that everything a business does serves a function for the business. In aggregate, all of those things add up into creating profit for the company.
The fact that you don’t understand why something is being done doesn’t make it dumb nor does it means the actions are unnecessary. You probably just haven’t learned enough about it yet to understand the impact to the bottom line.
Ask questions and be inquisitive. Not in a “I’m going to rob this company blind someday” kind of way. Just pay attention to what’s going on around you and figure out how all of the different pieces fit together. More importantly, pay attention to why they fit together that way.
Most businesses are structurally like software. They tend to be modular and different parts of the business perform specific functions at different levels of efficiency. Those functions have an impact on other parts of the business and in how the company acquires sales leads, keeps existing customers happy, keeps employees happy, etc.
The role of the CEO is to identify individuals with the talent to oversee operations for different parts of the business. The job of those people is to eliminate errors (debugging) and increase efficiencies (optimization), which ultimately improve the bottom line for the company.
By learning how the different pieces of the business work, it will give you insight into the importance of each of those business functions. By virtue of that, you’ll understand how businesses work in general in such a way that as you’re building your own, you’ll have ideas about how to make things work and be able to identify the gaps in your own profit machine.
There’s no substitute for experience
You can read all the books on entrepreneurship you like but there’s no substitute for experience. This experience in the corporate world can put you in a better position when you decide to make the move into entrepreneurship, but only if you branch out and learn how real businesses work. There’s a big difference between looking at the cogs in the wheel and understanding how all of them work with one another.