I Can’t Seem to Find the Right Company Fit

“I’m considering a career change. I really want to stick with programming but the way most companies seem to work don’t fit in with my personality (ie. emphasis on agile, too much teamwork, etc.)”

With all of the demand for software developers, if you’re unhappy with your current job, you should try to find a company that’s a better fit for the way you want to work before considering a career change. From your description, it sounds like your exposure has mostly been with larger companies, which will tend to have cumbersome agile processes and naive ideas about teamwork. Smaller companies will tend not to have much process and value individual productivity more than team collaboration. 

I’m going to assume that if you knew of another job where your personality and working style was a better fit, it would be more appealing than switching careers. A company where you might be happy may look something like this:

  1. Individual productivity is valued over being a team contributor.
  2. Self-direction is valued over formal processes. 
  3. Creative freedom is valued over strict requirements.

All three of the job requirements point to either joining an early-stage startup or being a freelance contractor. 

Startup environments (should) only focus on getting a product to market. Startup founders look for the quickest way to accomplish this, which is typically giving creative freedom to trusted individuals. As time-to-market is the priority, there are no distractions, and you are left alone to code as much as you can as fast as you can. Over time startup cultures can change as they grow, and as they hire more people, you may find that the culture changes to one you don’t like. In which case, you can move to another startup. 

The reason large companies reject authentic startup cultures – which I suspect you would be happy in – is they do everything they can to avoid or mitigate risk. Putting their faith in an individual contributor is frightening as they believe that if the person were to leave, there would be a significant negative impact on the business. This mentality stems from a lack of trust, which in turn has them focus on distributing work across many people and call these people “teams.” While this may – in their mind at least – mitigate the possible consequences of an individual developer leaving, it still doesn’t solve the trust issue. To compensate for their lack of faith in their developer’s work ethic and dedication, they impose processes that they call “Agile,” but are typically only a 2-week Waterfall process with poor requirements and worse expectation management.

Not liking this risk-averse low-trust working environment is very common, and I suspect no software developer enjoys working under these conditions. Nonetheless, companies stick to these cultures as they are standard practices in manufacturing, and software development is seen as nothing more than a modern off-shoot of factory work. As factories function by assigning fungible labor to a single task in a repeatable process, the thinking goes that so too should software development. Ironically, this situation works for no one. Top talent leaves companies for startups, and companies then have to buy startups at premium valuations because they are unable to innovate in their factory-based model of software development. 

Aside from being joining (or forming) a startup, you may also consider being a freelance programmer for hire, which is a form of contracting. Essentially, you would find your own clients, negotiate your own rates, and complete work however you saw fit. You would make your hours, and never have to deal with other people or any process. The scary part for most people is finding clients, but you only have to regularly attend tech meetups to start building a network of people looking for freelance talent. Provided you have a great portfolio and reasonable rates, and you should be able to get your first client within several months of dedicated networking. During this time, it is best to maintain your current job and only leave once your first client is secured. If networking is not something you feel you can do, then freelancing may not be advisable, as the challenge will always be to attract and retain clients – preferably with generous retainers for maintenance and upgrades. 

As time goes on, your first client then acts as a reference for your second, then your third, and your business grows. With so much business, you’ll need to hire more developers. Eventually, you’ll make a bad-hire (everyone does) and will start to trust your developers less. You will then make them work together as a group under a heavy “Agile” process to make sure client work is actually getting done. At which point, you can sell your thriving business to a larger company and retire, thus perpetuating the cycle. I am kidding, of course, but I wanted to illustrate that companies are not evil to adopt factory-like models. At this point in human history, we don’t know of another way to scale software development, so we stick to what worked for the last hundred years or so. The side effect is good developers leave larger companies for startups or to be freelancers, but it’s not clear that this is necessarily a bad thing. Perhaps there is a need for factory-like software development, but personally, if that were the only choice, then I, too, would consider switching careers. 

This article is part of the Ask Neil series and was originally published on Honeypot

One thought on “I Can’t Seem to Find the Right Company Fit

  1. For anyone interested, here is how ChatGPT (Dec 15th, 2022 version) answers the same question:

    It’s understandable that not every work environment is a good fit for everyone. If you’re considering a career change and want to stick with programming, there are a few things you can consider to find an environment that better aligns with your personality and preferences:

    1) Look for companies with a different corporate culture: Some companies place a greater emphasis on individual contributions and allow for more autonomy in their employees’ work. Researching a company’s culture before applying can give you a better idea of whether it might be a good fit for you.

    2) Consider freelance or contract work: Freelancing or contract work can give you more control over your work environment and schedule. You can choose the projects you want to work on and have more flexibility in terms of where and when you work.

    3) Think about working in a different industry: Different industries have different work cultures and expectations. For example, working in a startup or a smaller company might be more flexible and allow for more independent work, while working in a larger corporation might have more structure and teamwork.

    Ultimately, it’s important to find a work environment that aligns with your values and preferences. It might take some trial and error to find the right fit, but it’s worth taking the time to find a job that you enjoy and feel fulfilled in.

Add your thoughts