Hello HN,
I’m a python programmer but at some point I want to pursue a career as software contractor and I definitely know you can’t be a generalist so how did you guys found your niche when started out as software contractors
Based on my experience I actually wouldn’t say that you need to be highly specialized to work as a contractor. It certainly helps to have credible and targeted experience in areas clients want. It doesn’t necessarily need to be technology-specific, it can be business domains: e.g. customer billing, medical records, or inventory management. You may be detecting a theme in those examples: stuff that isn’t trendy or cool, but things lot’s of companies need. IMO, that’s the path of least resistance.<p>Another very helpful thing to break into contracting is building a reputation for great work as well as a large professional network. When former coworkers become managers and need help they’ll know they can count on you. And may be willing to bring you in as a non-FTE.<p>Lastly, I’d say work to be a desirable candidate in general. I had a multi-year engagement that came out of an interview after which the company enthusiastically wanted to hire me. I turned them down, but said I could contract 20 hours a week. They accepted.
I got a lot of mileage out of just being able to build and ship things quickly.<p>A surprising number of smart developers aren't actually all that good at building software that people can use next week. They get stuck optimizing for every conceivable edge case and refactoring to make sure everything is abstracted out so their CS prof would approve, and go down rabbit holes of tweaking interesting bits of technology. But they never get around to building the thing so that the people who need it can use it to do their job.<p>So after building enough things at enough places for enough people, I started picking up a reputation as a guy who could build things, so when those people started talking to other people at other places who needed things built, my name would naturally come up.<p>Eventually, I put together a collection of artifacts in the form of working SaaS products that I could point to as examples of things I had built from bottom to top, to skip the need to have other people bring my name up. And one of those SaaS products is subtly engineered to spawn customers with needs that are nearly, but not perfectly, met by the product itself. Thus making them natural candidates for short consulting gigs to build them a version of the thing that better suits their needs.
I literally wrote an article on this with my story on how I grew my specialization in search consulting:<p><a href="https://softwaredoug.com/blog/2020/12/22/hack-your-career-with-consulting.html" rel="nofollow">https://softwaredoug.com/blog/2020/12/22/hack-your-career-wi...</a><p>TL; DR I became attracted to a particular challenging problem and just blogged and wrote about it a ton. I jumped on professional opportunities well like authoring some open source that fit in strategically or writing a book. You need not go this deep, but at a minimum you can work on identifying the people in the niche you want to focus on, network with them, find other consulting vendors, let them know you want work (they might sub to you, etc).
You don't necessarily need a niche. I think all you need is, when looking for projects, to make sure you partially know the business domain (so you don't jump into something completely new, which is very risky).<p>Do use common sense, don't pick too-risky projects, and make sure you get better and better at estimating (this is a huge one!).
You got to find an unpopular language or platform and support that so you don't have much competition. Like COBOL, FORTRAN, Pascal, Ada, ARM assembly, X86 assembly, etc.<p>Learn how to make drivers and you can write drivers for a company with a new product.