Ask HN: Are you working on interesting technical problems?
I have been feeling disappointed that I haven't been able to use my computer science degree to it's full potential. Most of my work seems to be boring CRUD work where the challenge is gluing libraries together or figuring out business requirements. Actual interesting technical problems seems to be mostly wrapped in ready-made libraries / SaaS services.
Anyone in the same boat?
440 comments
[ 2.6 ms ] story [ 340 ms ] threadWhenever I have spare time I'm trying to build a solution like Walk Score for where I live, where such a thing isn't available. Hopefully something will come of that.
Some recent activites: 1. Workshop on evolutionary algorithms I made https://matsemann.github.io/walkingea/ 2. Workshop on max flow algorithms people worked on: https://github.com/Matsemann/maxflow-workshop 3. We played elevator saga 4. Lightning-talk bonanza where people prepared small talks related to hard problems / CS theory. 5. This week programming LEGO robots
Business: here is a continuous stream of problems, most of them are boring, some of them are hard, but you have to solve them all regardless.
Does your employment contract allow you to do this in your own time?
For me, I'm more interested in a particular domain, rather than the technologies around it. So, for example, I like marine biology, so the projects (and work) all revolve around that. You might like distributed databases, so why not work around that. Find what interests you, and move towards that direction. Some people have contracts that say that their employers owns all their work even when they are not at work, and some say they cannot do open source work, so this could be a constraint.
The most exciting thing at my old job was this DFS I had to do once.
That said, there are very interesting tech jobs out there - such as scaling boring old CRUD apps. The high frequency trading space also has many interesting problems. Imagine working on a system where you start to care about nanosecond optimizations. I interviewed (and failed at it, lol) at Optiver [0]. You should check them out.
[0] https://www.optiver.com/na/en/
Side projects are good for your brain and in the long-term good for your career (lest you stagnate with old technologies). I recommend having this outlet. On the plus side, having a somewhat interesting job + really interesting side projects gives you both good money and intellectual freedom.
If you want to solely focus on interesting technical problems, I'd recommend working in a research lab or going to academia. On the downside, you may lose that nice paycheck, but your curiosity will remain forever piqued!
If you join an industrial lab, rather than a lab in a university, you can keep the pay but still do the same thing as the academics.
I think we need to look at how any given company makes revenue. In most cases, it isn't innovation, just same ol' day by day. The only viable escape seems to be to run away with a startup (circus). They can be real fun, but many do flame out and crash. Hard to pick the winners with a technical viewpoint. Again, it comes back to business fundamentals and investor vicissitudes.
The day job still pays the bills but finding something that interests me personally while also offering potential future rewards is what keeps me going.
[1] https://blutick.co.uk/demo - alpha stage right now
[0] https://thedailywtf.com/articles/Programming-Sucks!-Or-At-Le...
For "normal" contracts, I'm usually leveraging open sourced libraries when possible, and implementing things in the most uncontroversial way possible. My main goal is to leave the customer with a product which does the job, performs well, and can be easily understood by the next developer to pick it up. In these type of projects, my main outlet for creativity is in custom tooling and workflow automation, not anything user-facing.
Other than that, I solve lots of interesting technical problems in my free time.
Have you tried looking here for inspiration? The challenges here may be less technical, but that doesn't necessarily make them less interesting...
I'm lucky in the sense that I get to work on things that uses Gorgonia at work (though I don't actually work on Gorgonia itself proper). Took a helluva long time to get here though. And very many failures
[0] - https://github.com/gorgonia/gorgonia
Writing complex code to solve a gnarly problem is often the wrong path, because it's harder for coworkers to understand the code, and harder for future maintainers to keep it correct. Thus it's often better to encapsulate the hard problem in a nice interface, and possibly release it as a separate library.
That's where most of those libraries you're gluing together come from. A tough bit of code that needed writing but also encapsulation.
A tougher problem than most CS problems you'll find while writing CRUD apps is getting architecture right, so that adding new features isn't an uphill struggle and doesn't involve piles of boilerplate. Getting the aesthetics right, making the code clear so that anyone can maintain it - this requires experience and the mastery that comes from it pays off in the longer term, because you can more easily leverage other people's efforts too.
If you can't find solace in mastering software design, you're better off moving away from CRUD apps and move to a developer of tools. Tooling, whether it's compilers, OSes, databases, whatever - has more interesting and deep technical challenges. Watch out though: tooling often doesn't pay particularly well because developers enjoy making tools themselves. They'll prefer to build their own shoddy hammer 9 times out of 10, precisely because they're in the same boat as you right now: they don't feel challenged.
All of the above help me with finding a new company in case the current one goes out of business too.
So far it's all boring CRUD - but there may be interesting problems to solve as our team and product grows. I'm trying to position myself as the guy to tackle these interesting problems by taking a proactive role in planning and project management, without cornering myself as an irreplaceable part of the boring part of the business.
So mush optimism..... just check out the other replies on this thread. Good luck anyway.
At the same time, more difficult problems intimidate me on the one hand, and on the other, I feel more difficult problems are more because of bad architecture decisions (urgh, microservices) or some other kind of mental masturbation. That last one is mostly me being cynical and jaded though.
This nice run has come to an end for me and my team and it's made me realize that getting to work on nifty, complex algorithms and do real CS is not the default. To say the least.
I'd like to try to figure out how to do it again: the "algorithms startup" is a fun thing to do. You aren't going to be raking it in as having the 'nice library to do task X' doesn't allow you to capture huge amounts of value relative to the people selling boxen/UI/SAAS/etc. that wraps up your library. But you can work on a decent scale.
I am thinking about blogging about this; generally I've been sticking to tech stuff on branchfree.org so far but having done this successfully once makes me wonder if it could be done again.
I'd probably read it.
Submitted to HN, and on my blog at https://branchfree.org/2018/06/12/some-opinions-about-algori...
Where would you like to work next?
US has it. They live and breathe tech. 5 largest companies by market cap are all Tech. They eat other tech companies for billions of dollars. Everyone and their dog in SV has a startup on the side. There are conferences on how to invest in startups. Some people just exclusively invest in startups. It’s crazy.
Sydney also has a tech brain drain. I lived in Sydney for 10 years and most of my friends moved out here too. Just better opportunities.
Sydney is such a nice place to build a startup though. Sucks that the ecosystem isn’t there. Vancouver has a similar problem too.
It is a nice place to live, though, and the Atlassian guys proved it's not impossible to build a pretty kick-ass startup here. There's also a pretty decent pipeline of smart people around. Part of my hope is that you can do smaller-scale stuff here without the Go Huge Or Go Home mentality of SV. What would be interesting is to work on things that interest me, make some money and influence the field. I don't think SV is mandatory for that.
Yes, please do.
I think it's all about the motivation and setting your expectations that you won't make it every time.
My playbook is: 1. Join a product company. If you work in a software house, it will be optimized towards path of least resistance. You need to work at a company that has long-term relationship with the product for it to even have interesting problems. 2. Be joyful about solving boring CRUD stuff. Don't over-engineer, your enjoyment is not the goal. At this point, you need to build trust that you are indeed trying to solve a problem, NOT entertain yourself. ( Be careful about future-proofing. ) 3. Now, at some point, there will be a project that nobody wants to do. It will be a mess, so natural inclination of most people will be to turn it away, run from it or try to ask for better research / drag the initial phase or whatever stalling tactic will be handy.
But, inside that messy, scary project is an interesting technical problem. What you want to do is to volunteer to take care of that mess without any prior experience and with a feeling that you have no idea what you are doing. You will also need to take full ownership of it.
The best solution is to establish a Skunkworks-like setup, where an extremely lean team has low communication overhead and is isolated a bit from the rest of the company.
Benefits of it will be: a) You will gain 3 years of "company experience" in 3 months, so you will be a better candidate for next interesting problem, b) People know that everybody dreads a certain project. Usually, you can make it in half the time everybody else will think it takes. You can coast on the reputation for months and not really do much work once you solve it. Also business is extremely happy since dreadfull projects are worth more than the entire year of mundane work. c) You will push the edge and expectation inside the company. Once these dreadful projects go away, the resources and infrastructure are ready for more sexy projects. You will have the pick at them because you now have a reputation for not-overengineering, delivering and solving technical issues.
But, it is: - scary - unknown - uncomfortable
Of course - as I said, not every organization has those problems and introducing them prematurely where CRUD will suffice will actually hurt you. You need to have product knowledge and understand what business need is solved this way. There will be business/marketing overhead and you cannot avoid that. You need to think about customers needs first and foremost.
This is how I put myself in a position to solve one interesting technical problem after the other at Automattic.