Since then I have failed to find an incentive structure which actually rewards programming. I've worked inside of standard agile teams, and typically I can handle the tasks which management can prepare for work within a matter of a couple days if not a number of hours. I'm not incentivized to excel in these environments, since I'm not rewarded more for producing output faster than the rest of the team, and there's social consequences for making other programmers "look bad" and increasing management expectations.
In principal I would be happy to just finish my tasks, and then spend the extra time working on projects which interest me, but due to IP clauses in contracts, it's not possible to do this during the many unused work hours without causing issues.
I have tried freelancing, but it seems that most clients want to have a time commitment. So basically they want to have someone acting as an employee, but only for several months vs. a long term commitment. So the same problems arise as you have with the FTE situation.
Currently I transitioned into management, just because I was so bored having to find ways to stretch several hours of work across multiple weeks. I'm a fine enough manager, but it seems kind of silly since I have much more unique value I can add as a programmer of my experience relative to what I can do as a manager.
So basically I am a very prolific programmer, and I am capable of producing a very large amount of value per time on the keyboard. It seems like there must be some way of monetizing this skillset, but I have yet to find it.
Programming is a skill sure, but it does not create value, it creates programs.
Programs may create value, so, the valuable skill is not really being able to create a program, but being able to find some problem, whose solution creates value.
Programming may be required if the problem can be solved by a program, or if a program can solve a problem so much better or faster or cheaper that there is additional value in employing the program..
I'm a programmer, I love programming, but I'm entirely aware that actual programming is not what makes the money. If I had _the_idea_ pop into my head, I'd probably start developing prototypes, that's where my skill would be best applied at that stage.. If they showed promise, I'd likely start full-time development on it, but I'd be looking carefully for the point where I'd be able take on additional programmers and focus more on _the_idea_ and what's around that, I'd definitely hire marketing and leadership too, since those are also not my core competence.. I realize that means that my obvious core competence (programming) is unused, and that's true, my main role would be to try not to screw it up.. Nobody got rich on technical excellence, it's half the time not even a requirement for success.
"I'm a pianist. I'm good at it. How to monetize piano playing?"
Well, first off, someone has to listen to your music. Playing for your own ears is nice and all, but if nobody else can hear your music, then it's not going to generate income.
Second, that music needs to be the kind of music that someone appreciates/needs/values. If you're into weird experimental random-generator-style music that nobody else enjoys in practice, chances are you won't be able to monetize it.
Finally, even if you manage to get good music to the ears of people who want to listen to it, it needs to be delivered in a manner that actually generates income for you. This may require a significant investment to begin with. Do you sign up with a record label? Do you create a channel and monetize via ads? Do you rely on donations? Do you create a company to manage your music?
I realise I have answered exactly zero of your question, but I think talking about music seems to make sense, and suddenly exactly the same problem with coding elicits a "yeah but...". So the point I'm making here is that there is no yeah but in reality ... all the above that applies straightforwardly to music, also applies to coding.
If it's a small company, it means you'll be hands on, but also expected to work very, very hard. Compensation is directly linked to how well your code performs, this is especially true if you're in a latency-sensitive environment, like market making / HFT.
However, these jobs tend to only existing in a few locations in the world (Chicago, Boston, NY, London, Hong Kong, Singapore, and maybe a few other places), and they're rarely advertised via normal channels. You're gonna have to make best friends with some actually competent recruiters and get on their short-list, and wait for a call.
Alternative might be to look at crypto trading startups. There are a few well-funded crypto "hedge funds" out there that are attempting to develop market making strategies in that space. You may also find that a lot of exchanges, big and small, have semi-secret market making offshoots that do a lot of prop trading on their exchanges, both to keep the order books full, and to skim profits.
Sports betting is the same, a lot of market makers in that domain are secretly owned by the same people that run the exchanges.
They might pay you to do something they don't like or something that can make you a load of money. You need to get into something lucrative e.g. funded startups, Banking or any business field where they are lacking technical skills that can be applied to their particular issues.
In the past I've been involved in banking, startups, domestic utilities supply, national gas infrastructure. The work was interesting but you need to pick up the domain knowledge to become interesting to clients.
People don't want someone to do programming, they want someone to make them money or solve their problems.
If you like that you can just keep going. There are people who charge $50,000 a week. Or you could make it known you want to confound a startup. With lots of management experience and well out of the ordinary programming skills that’s a plausible use v of your time.
Why not try FAANG/MAGMA if you haven’t before?
Sure enough, there are certainly many differences to be found between construction and programming. But testing the details of the method of comparison is besides the point. The idea is to do it on a high enough level which is good enough to drive a point home:
Both construction and programming happen in a broader context. There are reasons why you write code or lay bricks. e.g. you derive satisfaction from the act of making leds blink in certain patterns, you leverage your expertise to scratch your own itch e.g. build your own RSS reader, or solve a problem other people have which you think is worth your while e.g. you build a teaching platforms for students to get access to learning resources. Or in construction: school buildings, library buildings, campuses and so on.
That last part is key. Nobody is going to use code or build walls they have no need or want for. You don't get paid to erect walls or scaffold controllers. You are paid to cater to someone else's need or want. You could directly go to the consumer as a business owner; or you could do it through someone else's business as an employee.
We tend to look at technology as a separate industry distinct from other industries. But that's not exactly true. SpaceX is an aerospace business, Netflix is a movie rental business, Amazon started out (and arguably still is) a book shop. All the cool technology they have developed is subservient to core business goals which are anything but technological.
> It seems like there must be some way of monetizing this skillset, but I have yet to find it.
Looking at programming as a skillset you want to monetize in it's own right, you will always end up at consulting gigs as a freelancer or employee, doing work for disparate customers, problems, industries, etc.
Far more interesting: What's an interesting problem space I would like to get into, providing solutions, and building out a career, through my programming / management skills?
I've worked for companies as a software engineer where the CEO insisted on using a third-party agency to host and develop part of their software... When it would have been trivial to develop everything in-house and to host it ourselves on Amazon EC2... I told them it was a bad idea but most of these CEO types are too dumb to understand... I since learned to keep my mouth shut and let them make their mistakes. It's not my business. My goal since then is also to maximize my billable hours.
This isnt that serious, is it? At my previous job (a large company) we even had one so-called 10x programmer (which some people claim doesnt exists, but I saw him with my own eyes), and it wasn't such a big problem overall. He was assigned more difficult tasks or more tasks, and that was it. (Although yes, his salary wasn't 10x).
I spend a few months knocking out work that’s fed to me and I use that time to understand the business and the code base and where they’re not playing nicely at a high level.
Once I understand the code and the business, I generate and argue for my own work. If I’m successful with this, the evidence of my contribution is plentiful and I get rewarded.
Pretty soon my code is legacy and my days are filled up mentoring, debugging and reviewing other peoples contributions, which effectively lets me focus on only the tricky bits and identify dev ex rough patches.
My own limited coding time is filled smoothing out the dev ex of my system. This is basically the top of the heap as far as I’m concerned. If you get bored, rinse and repeat with a larger problem space or bigger org.
I mean don't take this the wrong way, but your post reads a bit like you're humblebragging about how good a developer you are. I think you know the answers to your question already.
- use your knowledge to troubleshoot broken systems, companies that are in trouble are utterly price insensitive
Obviously the advice “start a start-up” has some caveats, but this is Hacker News, I mean this whole site/community started with the idea that “hackers” should just start start-ups, for similar reasons to this.
The good news is there is nearly unlimited demand for programming work. However, you have to filter it very carefully, learn how to market yourself and become very selective and specific about what you want to do.
Pick a very specific niche which is specifically designed to be highly profitable, low custom work and doesn’t involve whole cloth creative agency work (trust me; you don’t want it).
Strongly recommend finding a simple, repeatable system or workflow that allows you to constantly come into contact (in a valuable, engaging way) with your target audience (people who are going to pay you to do stuff).
This can be a podcast, community, dinner series, workshop, roadshow, summit you organize. The objective is to make it valuable for you to be constantly reaching out and getting in touch about something OTHER than selling that person your services.
I also recommend designing or developing your own IP. Create your own stack or best practices, turn that into a brand and go promote it. Try to only get work applying that exact stack. You don't want a disconnected stream of random work with no narrative. You want to anchor your consulting work or business in some fixed constraints so it becomes repeatable.
Furthermore, you should be very specific about what work you want. You probably don't want to be doing end-to-end full stack "from zero" development. You would be better off applying some repeating system, taking over maintainance of running systems or selling your own IP.
Find a community or start one where your target market hangs out and make yourself useful, visible and valuable. Learn how to select clients and stack retainer revenues. Quality over quantity.
Another option is fixed price, fixed scope builds. You price in line with the rest of the market, then build it fast and pocket the profit.
Both of these, however, require a lot of work that is Not Programming. You’ll need do some sales, some client management, some project management, etc. That’s the gig, but these things can be fun too.
The big factor is that you’ll be 100% exposed as to whether the high volume of code you’re putting out is all truly effective. Your clients on the above kinds of projects don’t care how much code you wrote and they may never see your PRs. They care if their thing does what they wanted it to do. You have to deliver value, not just code. That can be exhilarating, just make sure you’re ready for it.
PS: some resources: https://github.com/fossjobs/fossjobs/wiki/resources
Just my two cents, coming from someone who has worked mostly for small companies but often observed big companies through the lens of a consultant.
On an agile team once, I was anticipating a vacation before a larger project came up and for whatever reason I completed a bunch of work tasks in a couple days. The PM at the time had said that work was supposed to last the team a couple weeks before the larger project kicked off. So I get the social/team consequences of just pumping out a lot of quality work. That work mostly languished until my return because nobody really had time to oversee it getting thru the process to being deployed to production.
As you know there are a lot of other elements than programming needed to deliver a software product. Analogies usually fall down with any close inspection but I'll use one here. If we replace software development/programming with house construction/wall assembly and someone was very prolific with wall assembly and wanted to monetize that skill-set it sounds kind of odd. Usually someone would be a carpenter and be able to work on walls, staircases, trim work, roof trusses, decks, etc. Someone prolific with just wall assembly skills can't really build a house for a company where it is safe and profitable and it doesn't really make sense to have someone like that on staff because they are doing a very narrow part of the overall job.
The software development job market doesn't really work that way either where a specific skill, like time on keyboard and programming, is an entire job by itself.
Sometimes we'll get an interesting bug that requires a pretty involved deep-dive, but I definitely spend a lot of time twiddling my thumbs, too.
I've heard with WFH, some devs are multiplexing multiple jobs simultaneously. Seems effective, if not somewhat unethical and potentially stressful if one job suddenly requires a massive time investment.
I wish I could tell you it has the full solution to your problems. I don't think it does, but it's well worth the read, because it does such a good job at mapping out the problem space that we have.
His proposed solution is to form what he calls "efficiencier firms", software consultancies that work from a directive of making the client's business more efficient, rather than working from specs like "this button should be blue". I think that's indeed how software developers should operate, but I don't see how you sell that idea to clients, who like you said, expect someone they can treat like an employee and just tell them to shut up and make the buttons blue. They'd take a very big risk to give you money and wait and see what you come up with.
There's also the problem of execution. We have to get a reputation for consistently successful software projects on time and on budget. Which I think is possible given all the tools and literature, but I feel most developers are never get good at it because they are stuck on a few death march projects for their entire careers.
What I am struggling with most is that I don't have any incentives to give my best and I'm oftentimes simply bored, because there are not enough high visibility projects for me to work on. I've tried picking-up bits and pieces that are left behind and need to get done, but this does not create any visibility for me and is not valued by others. And I am too tired of stretching things out just so that I have something to do during the week. So like OP I would also like to find a way to be paid for projects and not the time I put into implementing them.
I would be happy to connect with anyone else in a similar situation, email is in the profile.
- Start your own company, either products or services
- Join a startup that is generous with equity, as an early employee
- Join a worker co-op (not that many of these generally, but IME they're overrepresented in software)
You basically want skin in the game, from the sounds of it, and employment generally doesn't offer this (intentionally).
You can try to convert they leisure time into more money, but I'd recommend putting it into yourself and something you enjoy. It's like halfway being "retired" while still making big money.
But anyway getting to the core question. Without venturing on your own, working at a large company with strong technical leadership and a deep individual contributor (IC) career path has been my approach. Note that the 'individual' isn't the kind of solo 10x dev, but more like some of that AND the ones that level-up teams and the company. I tried at smaller startups but 'top-out' in around 2-years and either have to go into management or another company.
Ever heard of team playing? You basically want to scratch your balls because you finish tasks faster? wtf?
Programming is so little about typing code, at least if done right. It is really about making decisions: product/api design choices, system architecture choices, code organization and patterns, etc.
The actual typing of code can be done by anyone who can follow clean examples and operate development tools. This arguably should get automated away someday.
IMO, the best way to monetize good development skills is to float between product and tech lead -- not actually writing much code.
It seems you have a much-needed talent, but software is only half of software business; find your complement (some people use meet-ups, others MBA programs to meet their co-founders).
Update: Sorry I guess "bug bounty" isn't the right term. I meant sites like bountysource.com
edit: work from home?
While I’ve been more of a product leader than engineer, my best friends are engineers and we’ve had many long talks about the experience.
After serving as an agile coach, SaaS founder, and doing lots of freelance web dev/digital agency work, I came to the same conclusion.
How is there not a model for harnessing the genuine power of programming?
The other answers I’ve seen here are ones I’ve said myself many times before, but they’ve just proven unsatisfying.
So here’s the conclusion I came to:
We need a new business model design explicitly to achieve this outcome.
I ground it in intrinsic motivation:
(Some) engineers love building things that help people
That’s the beauty of a small startup, as an engineer you are proximal to the user.
You don’t just get to build something helpful, you get to feel when it’s helpful. You get rich feedback, you can use your intuition.
So my question was - could we create even more intimacy between engineers and the people they help in a way engineers enjoy?
At first that might sound scary. We’ve all faced the overwhelm of engaging with users who don’t “get” the process.
So the key is to edit the context.
First, we rule out “growth at all cost.” The engineer needs full autonomy to regulate the pace at which they engage with the user.
So at the entity level we’ve made the decision to never sell - meaning no investment capital, no board with a vested interest in overriding the engineering experience.
That also means we need to edit the alternative model - a service company. The engineer must have decision making power over whether or not they want to keep working with a client. We put that into our agreement with each client.
We’ve already fired our first few clients that weren’t a culture fit. It’s amazing. Our engineers now work with companies and people they want to work with.
Once the engineer has autonomy and real control over pairing with users, something magical happens - they get really excited about the novel problems they uncover and just dive in. The productivity is ridiculous.
And we keep it at 80% WIP.
Here’s the technical innovation that has enabled this: Coda.io
It turns out sophisticated low/no code tools enable computational thinkers to solve business problems so fast they can even design internal products in real-time with the user.
Talk about feedback loops.
The emotional payoff is incredible - we’ve literally had users on calls cheer, cry, and say they feel like they have hope again that their work won’t always be a grind.
If this all sounds a bit unbelievable, you aren’t alone. Every engineer who has joined our team has gone through a journey of testing “wait, is this for real though?”
I’m not sure if we’d be a fit for you or you for us.
The wisdom you’ve gained, and that you seem to still have your curiosity and heart, makes me so curious to get your take on what we are up to.
Everything we are doing is so new most of the time my answer to questions are “I don’t know” but I’m having the most fun of my life figuring it out with our team.
My info is in my about section.
Good luck on your journey!