This is really nice work, and it does showcase your skills, ability to learn, persistence and attention to detail.
I disagree with others who complain that either the design was copied or a few little details are not exactly the same as the original – I don't think that's the point here.
Since the ESTA is a visa waiver program, by taking advantage of it you don't require a visa so would not have to pay this fee. At least that's my reading of it...
It's sad to see all the negative comments considering that HN is often the go-to place for similar requests. This is a great idea, although I can understand how it can be risky for big tech employees.
Nice work anyway. Maybe you could market it for bugs/issues rather than just account suspensions. It reminds me of https://xkcd.com/806/
I've found myself thinking the same. Maybe researchers don't have the data and/or the platform? Not sure who records what they eat, and if they do they don't share it?
You raise a very valid point and yes, it could be a net negative.
However, what I was trying to do here is to reach organizations or people that already work the way I'd like, so that work is already organized in a flexible/async fashion and the arrangement can be a net positive for them.
And I think you should apply the same reasoning to the definition of "interesting work" or "meaningful work". Try to see the big picture, from a bird's eye view: a piece of work can be interesting or meaningful even if it has boring parts. Almost anything has and we probably wouldn't be here as human beings if we couldn't handle that. Carrying sick people up and down the stairs is strenuous (and repetitive?) but can still be a net positive because you feel so good for helping them. Same goes for writing software or any other kind of work.
I think that, as a manager, you should not shield me from the boring parts of any work but you should make sure that my overall "working experience" is a net positive for "interesting" and/or "meaningful".
Writing tests and documentation or diving deep into debugging hard issues is what I consider part of "good work" (and that I have also enjoyed doing), and I can't wait to do good work. It just has to be compatible with the rest of life. It's mostly the way we work that has to change rather than the content of the work.
Thank you for the thought provoking article and discussion.
I like to imagine that there is a virtual priority queue of software tasks out there, waiting to be done.
Some of it is feature development, some of it is detailed bug investigation, some of it is documentation, and some of it is user interface work.
What might be incredible would be to declare your interests and skills and start picking from the priority queue, with appropriate rewards as you progress, and at your own pace, knowing that you're contributing back to important tasks of the day. Ideally with a social safety net to allow people to enjoy life and adapt to changing circumstances.
I think I get where you are coming from and am quite tempted to start a discussion.
I'm one of three directors of a small IT company in the UK and I'm feeling more and more compelled to steer it towards more innovative and societally important things. We are very small in the grand scheme of things but you will have heard of some of our customers. I am a pointy headed boss (PHB) who runs Arch Linux on his laptop and has a 3D printer on his desk. I also have a hammer drill and a set of sockets on it at the moment. That's at home.
I could probably find some jobs for you but frankly I suggest you start your own firm/organisation, do your thing and get all the rewards in whatever form that means - may not be financial. You sound very close to having a vision. Focus on what you really want to achieve and do it.
He is 26yo, he clearly states he needs a job, he seems desperate or untenably bored. Not uncommon, to be fair, but this ad is sort of a Hail Mary... so I would NOT suggest him to start his own firm right now... hopefully, next year.
Then I would very carefully reconsider the wording of your article. This article would discourage most recruiters and hiring managers I know.
"You will give me interesting or meaningful work"
To be direct: this sounds entitled. Lots of growing companies don't have the resources to babysit and hand feed work to engineers. They need driven, self motivated engineers who can identify problems and help identify solutions, create and drive projects in ambiguous circumstances, that serve the businesss. It sounds like you're disconnecting from the requirements of a business to succeed in a market. I've worked on teams who got the "only give me the interesting programming tasks" engineer and they are a rot to the company. Whether or not you mean it to, that's how this pattern matches for me. Lots of work isn't interesting and is hard to rate the "meaning" of, and successful teams and companies need this work to be done by the whole engineering team.
"I like Python. I don’t like PHP and Java."
I would omit this entirely, as the language isn't related to how meaningful the work is and contradicts your previous paragraph.
"No technical interviews or coding challenges"
Again I think this shows immaturity and not understanding the needs of a business and hiring. Technical interviews do indeed have all sorts of problems, and they're generally the lesser of the evils of technical interview styles. Not every company has the luxury of "let's hire this person to figure out if we like them" and not every engineer has the luxury of "I'll do an unpaid take home that takes up my time instead." Onboarding takes time for lots of teams in a business, and getting up to speed on the domain of the business is an investment for everyone. Who you hire is one of the most important decisions a business has to make. Having a technical interview process of some kind is important, even if it has challenges to be objective with.
"I will prefer payments in cryptocurrency"
Just my personal taste, this one is an irk to me. It's a sort of removed-from-reality "I don't care about your real world taxing and accounting needs, I like crypto." Most companies flat out won't / can't do this, so it's a weird request unless you're specifically looking at a crypto company.
The great irony of this post is it's all just things you want, and not really anything about you or your skillset. The things a hiring manager or recruiter would actually look for are completely absent from this post. There's a hint with contradictions that you're looking for a mission driven company, beyond that I don't understand the point of this article. It smells of "companies, come to me, I'm special" while immediately setting limitations like "I don't like PHP." The hiring managers I know would say "this person doesn't sound like they know what they're looking for in a company, why would I consider them?" It sounds like you've already checked out from your own responsibility of understanding a company and why you might like them.
I completely understand your point of view and I would think the same if I were you, but that's probably the kind of work I'm trying to avoid.
I only have one life, and I just don't want to be paid to "stay around and do the boring bits", or at least not full-time and in an office. Just as an example, having to stay in the office if there's nothing else to do for the day was absolutely soul-crushing for me. I might be happy doing that kind of work part-time and remotely (almost nobody offers part time work) or I might want to do that later in life.
I read a post about Gumroad here on HN, and that's how I want to work. The way Gitlab does it is also very interesting.
There must be other people who feel and think the same, and the post is just a way to try to reach them.
Just as an example, having to stay in the office if there's nothing else to do for the day was absolutely soul-crushing for me.
That should literally never be the case for a developer though.
You can always be improving the documentation, increasing the test coverage, optimizing for speed/bandwidth/complexity/some other metric you've measured, working out how to measure something, learning new tools or tech that could be applied to a project, working on a spike for some future feature that needs upfront research.
If you see those things as "the boring bits" that you don't want to do then you're not a developer. You're a hacker. You want to hack what you see as the fun stuff rather than developing complete, robust applications that can ship. That's fine, and loads of fun, but no one will pay you to that. You don't get a role like that unless you're some sort of programming savant on a par with the likes of John Carmack or Fabrice Bellard - someone has proven they can invent amazing things by being left to their own devices. Unfortunately, you really need to prove yourself first before you can land a gig like that. If it was easy we'd all have done it.
> Just as an example, having to stay in the office if there's nothing else to do for the day was absolutely soul-crushing for me.
> That should literally never be the case for a developer though.
After 20+ years I've both been in such a position FULL TIME, as have others (eg: Many devs at ServiceNow) - hired on to work on cool things at an old small company and then literally sat around every day with no tasks and no responsibilities while everyone around me either didn't show up or watched TV on their monitors (open-plan btw).
I've seen big company devs do the same, making up busy-work tasks and literally not committing any code for months at a time playing the priority-game of "wait until something more important comes up, someone else will make a workaround" which was surprisingly effective.
The reality that a developer shows up and have nothing to do happens OFTEN in all sorts of organizations - eg last day of sprint, how many times have you pulled in a new multi-day ticket? Developer accountability is at an all-time low when software developers (across many sub-disciplines) can't make accurate estimates, can't meet anyone's estimates anyway, and are at an all-time-high demand. Managers are in a different boat, but same result. Perverse incentives and lack of a consensus (or willpower) on what constitutes value makes for do-nothing-and-get-paid while someone else does the work.
There will always be times when you don't have anything that you've been told to work on.
That is not the same as having nothing to do.
At a certain "senior" level (in terms of attitude rather than job title) you're expected to be a self-starter and think of things to do for yourself. Once you can do that you have no excuse for having nothing to do.
In my experience, it is not like that at all. The not having anything to do simply does not happen. What happens is "not being under pressure". But I was always able to find useful stuff to do, not including learning.
I do learning in work time. Learning could be backup for when there is truly nothing to do, like when git is down or something. But those chances are so rare, that I have to learn while there is stuff to do.
> eg last day of sprint, how many times have you pulled in a new multi-day ticket?
I was in exactly one team where you would wait on this situation. In literally all other teams, it was 100% normal to work on something multiday for next sprint. And that one team was dysfunctional in more then one way.
eh, that's not really the case in a lot of developer jobs these days. A lot of agile/scrum adoption/bastardization has meant that all work done has to be decided by the team and pretty much every piece of work has to be approved by a product manager. This can often lead to some demoralising meetings where you can either lie about the effort/risk/goal or you can give a true value estimate that gets shot down. If you lie, you can end up spending your own free time working on that refactor or documentation etc. For most devs working on a codebase, its not theirs, and they don't determine what has priority.
In reality, for a lot of people, if you start refactoring the codebase while waiting for a new task you are likely to break something and its just not worth the hassle for the developer or the company.
Learning new tools is always great ofc but it can be very hard to find the motivation in such a role, where unless you are a senior developer, you probably won't have much say on adoption, and you will likley just develop a half baked understanding of a new library that you will never get to use in production. Its much better to have some real free time where you can focus on your own projects and learn that way.
So in short, maybe it should never be the case that devs are in that position, but it often is. Especially for devs with less experience
That’s pretty sad and disempowering. For what it’s worth at companies like Facebook it’s completely the opposite. If you aren’t taking any initiative you will not meet expectations at performance review.
I just had a good chuckle at this. I’m skeptical, to say the least. I don’t have direct experience. But I do work at a company that has poached several FAANG employees this past year and whose thoughts...differ from yours.
I can second dkasper's observations -- the PSC cycle is engineered to reward initiative. That said, depending on the team, the practice does not always follow the theory, so it makes sense that the FB employees your company could poach may have been the ones unsatisfied with the way their team rewarded initiative.
Kent Beck became a former Facebook employee because he wasn't in to proving he was moving the needle on Facebook's key metrics. He was only giving world class mentoring to young Facebook engineers and improving the development culture.
Likely you were able to poach them since they didn't thrive in that environment. Or you got them from the more traditional top-down Microsoft, Apple or Amazon.
That sounds like academia, where people are also expected to be constantly innovative on demand and, when the majority just can't pull it off, they invent BS research and produce worthless papers which clog the system.
> if you start refactoring the codebase while waiting for a new task you are likely to break something
The risk of this is in proportion to the lack of test coverage. If you are afraid to refactor, this should be an indication that you need to apply more test coverage, so do that first.
> If you see those things as "the boring bits" that you don't want to do then you're not a developer. You're a hacker.
Well put. Professional software is only a mean for business not an end by itself. I recommend not deriving your satisfaction from code only if you work for a company otherwise you risk to both spoil your hobby and always be unhappy at work.
> If you see those things as "the boring bits" that you don't want to do then you're not a developer.
Don't we already have enough gatekeeping in software development? I don't particularly enjoy writing documentation, despite how important I know it to be. That doesn't make me "not a developer." If I were lazy and simply chose not to do the things that bored me (despite their importance), it might make me a bad developer (or more accurately a developer of bad software).
I design and implement software. That makes me a software developer. The pieces of that process that I find boring or exciting are tangentially related at best.
> Don't we already have enough gatekeeping in software development?
No. In fact I hope anyone who's actually worked in the software industry would see that we don't have nearly enough!
Look I'll agree with you about the evils of gatekeeping if we're talking about who gets to call themselves an artist or a writer. Those kinds of distinctions rarely create life or death consequences.
But software can. Not all the time, but certainly in medical, airplane control, banking and financial, and many many more areas.
I wish software would take notes from other engineering fields like structural or architectural. Can you imagine an engineer building a bridge who was like "I don't want to do the boring stuff like stress analysis or geological surveys, I just want to make cool shapes and build them!" Can you imagine trusting your life to a bridge built like that?
Software increasingly runs our world and real software engineers who work on things that really actually matter know they have a responsibility to "do all the boring things" because those things are essential to doing their job right. Hearing about major hacks and exploits every day like SolarWinds, Experian, Facebook that expose our personal information and put us at risk makes me feel like we desperately need more gatekeeping in our field to keep cowboys and hackers from getting the chance to get anywhere near these systems.
I've been in this career for 20 years and the thing I learn more and more is that writing code is perhaps the most trivial aspect of what we do. It's everything around it -- the process, the testing, the security, the collaboration and how teams and organizations operate that are the real challenges to be solved. Anyone can hack together some working code. The hard part is the systems and organizational structures in which it operates.
There are plenty of things to work on in software which are of no real consequence, but as the OP is finding it's pretty difficult to find someone who wants to pay you to work on something which has no value. That's called a hobby not a profession.
As important as those things feel after 20 years you must remember you are hired to write code. As easy as code is to write without none of the other processes are required.
If they wanted someone to just write documentation you wouldn't be hired. A technical writer would be.
If they wanted someone to just test you wouldn't be hired. A QA person would.
Same for whatever processes you create. They would hire a process specialist.
Same for project management. They would hire a pmp certified person first.
Same for business analysis and business requirement gathering.
As a developer there are better people to do all of those jobs at better rates. None of them can code. That's why you are hired. If you couldn't do that than your qa abilities don't matter.
Things have changed over 20 years. Not every company has a qa team or bas or support team. So these tasks end up being picked up by the developer. Often if this slows development teams are created of non-developer specialists. Some developers end up doing very little coding because your job is to go to meetings about projects that never start. But you are still hired to code they just need you on standby.
Anyone cannot hack together something that works. Only a developer can. A hacker would find ways to use an existing system in an unintended ways.
Gatekeeping over this makes you more management than developer.
The tao of programming has a different understanding of what a developer is and isn't
People are better at what they enjoy, but I know very few people who enjoy documentation. I have apent most of my career as what the gp would call a hacker. My redeeming quality is probably my love of testing. I despise formal methodologies and processes, and people who fall in love with tools or languages or language features are hard for me to work with.
I don’t understand that general lack of love for writing documentation. It’s a part I like very much in a project: explaining how it works, why some things are done a certain way, the limitations of the software, the possible configuration options... It’s funto write.
I definitely don't begrudge anyone who likes documentation - but we all have different parts of the dev cycle that we like - some folks love to architect solutions and hate implementation because of the fiddly bits and details - other people dislike the stress of having to come up with overarching approaches and get analysis paralysis but when it comes to splatting out the vision into code it's meditative. Still other folks love to break things and enjoy needling edge cases in unit tests (if you find one of these or are one of these - know their value, they are a hot commodity). Then other folks love the teaching/explaining part that comes with documentation.
I think that there is a way we can improve as an industry to let more people specialize into their niches (which would move us closer to a factory/assembly line sort of setup) but right now most developers are artisans that receive some vague ticket and produce code and everything for it as a result.
I appreciate the validation, as much as I like to see things eork, I also love to break things. Pathological unit tests are fun, but the real low hanging fruit is in finding how two services implemented the same service contract with different assumptions.
If the organization or the product has any amount of complexity, all of those have communication roadblocks. While it’s technically possible to always be learning or practicing something, much of the effort will be wasted by either a focused or a bureaucratic organization. Repeatedly doing work just to give the company an unlikely option on it is counter-productive as it leads to burnout. It’s better to stop work when enough is done for the day or week to stay focused on the efforts that matter.
Probably the best way to apply the “if you have time to lean, you have time to clean” mindset, if it must assert itself, is to actually let developers stuff packages or weed the grounds or something else that can clear their minds. :)
> If you see those things as "the boring bits" that you don't want to do then you're not a developer. You're a hacker.
This point parallels the distinction made in the Software Engineering at Google flamingo book between programming and engineering. Engineering comprises the tools and processes to maintain software over time (this is a rough paraphrase), of which docs, for example, is essential.
So to use their language with your point: this sounds purely like programming and perhaps not engineering.
You may want to rephrase your proposal a bit. Include the part that you are willing to do the boring parts of an otherwise interesting project.
The way it is worded, it would sound to me, as a hiring manager, that you might not finish the work. Because we all know the prototyping / experimentation part of a project is the most challenging and rewarding. Taking it live will involve dealing with the boring parts.
I am not claiming you _are_ such a person, but you might want to make it clear.
> The way it is worded, it would sound to me, as a hiring manager, that you might not finish the work
You read that correctly. The OP said clearly he has no intention to do documentation or testing, meetings, or much of anything other than just write code for about 40 hours and then quit.
I retired close to 7 years ago, and I have a similar set of guidelines for doing part time work. However I have another stipulation which is that if I don't personally know you, I'm not interested, at least for paid work. I've done some volunteer work where I've had introductions from someone I know and that's worked great. And for any given paid job the max I will work is 20 hours/month. That is I might work more than that, but I will only bill that. That allows me the flexibility to put the effort in I think is needed to do what I think is acceptable quality, without imposing my standards on someone who just wants something that will solve a problem immediately in front of them. Good luck!
if you don't care about pay and you want to work on interesting projects, why not start your own?
people typically get jobs because they have bills to pay, not because it's fun. If you are in a position where you don't need to pay the bills with work, then you're in a great position and can have fun all day long - so why not just do that?
If you work on something that also turns out to be marketable then you might even end up with a viable business that you love working on.
> people typically get jobs because they have bills to pay, not because it's fun.
If a position across the street becomes available which allows you to pursue a personal goal you aspire and afford your current lifestyle, would you remain at your current "non-fun" job or give it a shot and apply?
Many people don't just get job because they have bills to pay, they get jobs that they don't like because there is no alternative available to them which meshes with their lives.
To an extent, you could argue "that's personal responsibility, everyone makes tough choices".
Then again, the author tacitly references to the fact they were still obligated to physically attend an office space, even though they could their work remotely. Now expand that to the millions of workers who are forced to make long commutes.
obviously there's such a thing as better or worse jobs, but OP suggested that they were willing to work on whatever, as long as it's fun, for any arbitrary amount of pay.
So OP is in a position where money is not important to them. So why have a job at all? Have a fun or meaningful hobby instead, or start a personal project.
The author doesn't ask so much for a job, as reflects about something more profound: meaningful, purposeful relationships with others which enables them to manifest their morals, values, identity,...
Interesting work isn't interesting for the sake of spending 8+ hours a day "doing" something. It only becomes interesting when it has an impact on the world which one feels is meaningful.
For sure, a novelist could write books for no other reason then deriving enjoyment of the sheer act of committing words to paper or a screen. But the vast majority of people feel that the things they do in life truly become meaningful when they are seen, used, enjoyed,... by others.
One could argue that one could do so by volunteering, taking initiative, or starting one's own business. However, the vast majorities of opportunities to enter meaningful professional relationships still involve signing a dotted line and a salary.
> work on interesting projects, why not start your own?
For what it's worth, many people who don't need the paycheck, or don't need a particular paycheck still go to a "real" job just because the scope of what they can do on their own doesn't match what they want to achieve.
People also join projects to learn things that are harder/less efficient to learn on your own.
I'm certainly not saying you can't do an interesting project on your own, just that many people are interested in projects they can't practically do on their own. Some might scratch that itch with an open source project or whatever, but especially if it requires hardware development, it may not be practical for many individuals.
Of course, but if it's part-time and full remote then it doesn't take away most of your day/life and I would have no problem with that. I also do translation work which can be tedious at times but I really enjoy it because I can do it from anywhere and just a few hours per week.
The "needs to be interesting" part is more tied to the "pay what you want" thing.
> Just as an example, having to stay in the office if there's nothing else to do for the day was absolutely soul-crushing for me.
The only times this ever happened to me was while I worked in the gaming industry and I absolutely still had work available - but we had some pretty rough overtime expectations that lead to constant overtime even if a different department was behind.
On principle I would just sit there and relax as best as I could in the office if my team wasn't behind. But, keep in mind, that this was also all unpaid overtime at the employee's expense because thank you EA lobbying and a terrible industry. I occasionally lost money on these evenings since transit would shut down and I'd need to cab home.
Now that I've left the gaming industry I doubt I'll ever be in that position again and I continue to have oodles of work in front of me, though, due to ADD and such - I often have trouble with motivating myself to do the boring bits they are part of the job and go with the good.
There are plenty of people who feel and think the same.
Many people find it very difficult to understand that money is not always a motivator. This is a particularly difficult concept for managers to deal with.
If an employee is not motivated by additional remuneration, or in the case where they do not require an income, the relationship between employee and employer is fundamentally different.
> that's probably the kind of work I'm trying to avoid.
The boring bits _are_ part of the job.
> I only have one life, and I just don't want to be paid to "stay around and do the boring bits", or at least not full-time and in an office.
The part about "in an office" is a fair goal, but if you want to avoid docs/tests/support/refactoring work, don't do this job. Writing code is just one part of it, any way you take it, and avoiding the rest is cutting corners. Even our consultants have to write tests and update docs.
I created a part-time jobs board, ParttimeCareers (https://parttime.careers). I collect remote and part-time jobs (mostly engineering jobs, but sometimes marketing jobs).
Yeah, I can see where you are coming from. Some people want to look for part-time jobs because they want to spend more time with their passions, kids, parents, or friends.
Just look for part time positions. You can also try to make your own by applying for full time jobs and then springing the part time thing on them at the salary negotiation phase. Yeah, some will balk, but make a cogent argument about how working less hours means your performance per hour should be higher. Which is easily supported by current research. Provide citations if you want. It's sufficiently hard to find good developers, that if you're good enough you can get jobs like this.
I've been working part time, fully remote last year and it was wonderful. I don't think I'd go back to full time work.
After achieving enough trust with the company, I negotiated working alternating weeks. Having a 9 day weekend every 5 work days is incredible. Yeah, I didn't make much money, but I spend that time on my startup, so maybe it will pay off one day. Either way it is a lot more fun!
> and I just don’t want to be paid to “stay around and do the boring bits”
I’m a little ADD, so my most hated work is paperwork and administrivia. Nevertheless, I recognize that it is sometimes necessary (documentation, performance evals, collecting metrics, etc.) and I just get my favorite coffee and suck it up (the work, but also the coffee).
Programmers have arguably the least boring jobs in the world (we can literally automate all the most boring bits except for certain types of paperwork/administrivia) so to hear a developer complain about doing a little bit of boring work smacks of a special brand of entitlement to me. ¯\_(ツ)_/¯
> Just as an example, having to stay in the office if there's nothing else to do for the day was absolutely soul-crushing for me.
This only happens at terrible, un-enlightened companies who are more willing to waste both of your time and pay you a little less than they are to either give you meaningful work or let you go to the beach but stay on-call. Bosses should not be babysitters.
Don't want to stay around to do the boring bits required to make a working product that serves a real world use case? Go into academia! Not making a generalization about academics, it's just that academia is one of the few places you can carve out a place to just work on interesting things and get paid for it.
> having to stay in the office if there's nothing else to do for the day was absolutely soul-crushing for me
Maybe nothing you want to do, but I doubt there was nothing to do. Improving docs, tests, small refactoring to old code to make it more readable are a few examples.
The way you talk about the work culture you want to avoid makes me think you might be interested in "opale" companies and the way they operate. Check "Reinventing Organisations" by Frederic Laloux, there are a couple of software and none software company examples which might be of interest to you.
Have you considered just coming up with your own projects? Set some arbitrary, useless goal that will be an interesting engineering challenge, and have at it. Nobody will force you to write docs or do any other "boring bits". It's a great outlet in my experience.
I think the solution needs to live on both fronts.
IMO the boring bits are boring because there's no time spent to make them not boring.
On all layers of society there are tasks that are under-tooled and under-organized and if you make them worth doing, people will enjoy doing them 24/7.
A lot of people on this thread seem to think that boring work provides job security. Based on your experience it sounds like you have reached a different conclusion. I believe you have the right intuition, that you find valuable work interesting.
I think you'd really like Jason Fried's writing. You can find some short posts [here](https://m.signalvnoise.com/author/jason-fried/), but his book It doesn't have to be crazy at work is really great too.
And VS code with C++ is downright horrid, almost nothing works properly using the official C++ extensions. Yes it autocompletes and it sometimes manages to find the right files when you switch header/source, but that's about it.
I still use it at work though because we don't have CLion there and that code base does not use CMake, but only because it is just slightly better than plain VIM with some plugins. But compared to CLion + CMake it's just one small step beyond a glorified text editor.
"AI" means all and nothing. I'd say just learn what you like and go with the flow.
Maybe you should think a bit more about why you like those topics (and start from a subset of them once you have a good answer, ideally the subset you like the most).
I don't mean to be rude but if your only goal is to add a side topic to your learning list I'd say either skip it or pick a random one as they're both technically interesting.
I disagree with others who complain that either the design was copied or a few little details are not exactly the same as the original – I don't think that's the point here.
Congrats!