Ask HN: Are you working on interesting technical problems? - <AUTHOR> 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.<p>Anyone in the same boat? <comment><USER4> You might as well have asked who among us won the lottery.

I've been struggling with this for years now; after 4 boring jobs I finally gave up even the expectation that what I'll be asked to do will be even remotely interesting (or socially useful). The chance of landing an interesting job is absolutely minuscule - the market rewards whatever it rewards at the moment, and that's where jobs flock. These days, one of the bigger thing the market rewards is writing a web-based CRUD that's 99% chrome, 1% of actual functionality. Extra points if you can get some user data to sell to adtech industry.

(My own criteria for "interesting" these days are a bit different. I'm not looking for "interesting technical problems", as in advanced CS stuff, but "interesting outcomes" \- pushing the humanity forward, or alleviating a social problem for some group of people. I find it hard to even _find_ companies that apparently work on something like that, and even then it seems they have to do _lots_ of boring work as well.)

\--

EDIT: Then again there's this topic that has been casting shadow on my happiness for a long time, that I finally seem to be able to define. Maybe our civilization has finally crushed my soul, and I noticed it just now. But it feels to me that the revealed goal of our market-driven world is to _abstract everything away with money_. The end-game is that as an individual, your responsibility in the society is to pick a skill - _whatever skill_ \- that makes you money, and then to use money to solve everything else with your life. It doesn't matter what you do, there is only one meaningful meta-skill - making money fall out of the system, into your bank account.

Maybe I'm just realizing something obvious that parents should have taught me when I was a kid. I don't know. Maybe it was wrong of me to seek meaning in the things one does? Maybe that approach is no longer supported by our civilization?

<comment><USER5> There should be a name to the phenomenon that humans seem to become crushingly depressed once they start to grasp the big picture dynamics of the system they're encapsulated within. I think it's an effect that we're not quite prepared for as we reach closer and closer to science dotting all its i's.

It's as if childhood primes us to think that life is all about figuring out what the heck is going on around us, and as a consequence some of us go into something science-y, but then we reach a certain stage in adulthood where we feel like we have a pretty good rough closed form solution to the problem, and now the journey all of a sudden seems empty and without purpose and we just keep going with the lives 16-year old selves planned out for us, with too much cost sunk to pivot. I almost suspect the end-state of science is not some sort of blissful state where we feel like we understand everything, but an utter dread and feeling of emptiness at no longer having a purpose.

<comment><USER6> This feeling is because in our current stage of development, we are very primitive spiritually. Some of us don't even believe we have a soul. That it is all meaningless. Science in its current form also looks at our material world and concludes the same. Nasa tells us we are just a speck of crap in a giant space as well, with no beginning or end.

You guys talk about boxes. Well there are huge ones for the mind, carefully constructed to be believable for the masses. Too complicated to understand, they require you to put beliefs in people with credentials, who will repeat to you what they found in the books they were given, or the math they got shown.

If you want to understand your purpose here, you have to step outside of scientific thinking to start with, and that's a huge problem for almost everybody. You have to look at origins of the matrix we are living in, the illuminati, the Egyptians, book of the dead, the occult.

<comment><USER7> The Aeon of Horus is here: and its first flower may well be this: that, freed of the obsession of the doom of the Ego in Death, and of the limitation of the Mind by Reason, the best men again set out with eager eyes upon the Path of the Wise, the mountain track of the goat, and then the untrodden Ridge, that leads to the ice-gleaming pinnacles of Mastery!

<comment><USER8> Not enough quantum in there.

</comment></comment></comment></comment></comment><comment><USER9> I was in the happy position of finding a job (post being a failed academic) doing stuff at the intersection of architecture and algorithms (high-speed regex implementation) and getting to to this for 11 _years_ straight (2 years as a researcher, 5 years as a startup CTO, 4 years as a Principal Engineer at Intel). Got a decent if not ginormous exit too, which was nice. Also got to IMO change the industry - Hyperscan (github.com/intel/hyperscan) is used in a lot of places.

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.

<comment><USER10> > I am thinking about blogging about this

I'd probably read it.

<comment><USER4> Me too.

<comment><USER9> Well - thanks, guys. If you bookmark [https://branchfree.org/](https://branchfree.org/) perhaps eventually I'll stop wibbling on about bits-to-indexes and pattern match algorithms and SIMD long enough to post some experiences and some thoughts on the modestly profitable world of the algorithmic startup, from an "expert" who is batting a massive 1 out of 1.

<comment><USER4> Good luck! And don't forget to submit those posts to HN when you write them!

<comment><USER9> ... and done.

Submitted to HN, and on my blog at [https://branchfree.org/2018/06/12/some- opinions-about-algori...](https://branchfree.org/2018/06/12/some-opinions- about-algorithms-startups-from-a-sample-size-of-approximately-1/)

</comment></comment></comment></comment></comment></comment><comment><USER11> We are developing a matter compiler. We are working on designing molecular Lego to assemble them into new catalysts, therapeutic compounds, atomically precise membranes and sensors for proteins and small molecules. The goal is to make molecules that can do everything that proteins can do and that can be designed by human beings with computer assistance. We've developed a programming environment with a custom compiler and Common Lisp implementation for designing these molecules. We are looking for programmers with chemistry experience. [https://www.youtube.com/watch?v=8X69_42Mj-g](https://www.youtube.com/watch?v=8X69_42Mj-g)

<comment><USER4> I've been to your talk in Kraków on the European Lisp Symposium! I love what you're doing!

Do you have any updates on that water-filtering molecule you showed us then?

<comment><USER11> Yes - but we aren't ready to publish yet.

<comment><USER4> Great to hear; I'm now impatiently waiting for new papers or related talks! Don't forget to post it here when you publish!

</comment></comment></comment></comment><comment> Const-me I generally like what I do.

I stay away from webdev. I did a couple of small projects but the web was just an outer API, the main work was done by native code running on CPUs or GPUs.

I stay away from enterprise systems, or fin.tech, or ad.tech. I removed enterprise-targeted keywords from my resume, Java, J2EE, SOAP, SQL. I have some experience with them from my early career but I don't want to use them anymore.

Also, for many years I've never worked in/for huge companies, i.e. google/amazon/microsoft scale. My employers/clients are/were mostly small to medium companies.

What do I do? Almost everything else. Native desktop, native mobile, embedded, GPGPU, robotics, GIS, videogames, CAD/CAM, streaming media. Many startups, and small to medium companies, have problems to solve that I find interesting to work on.

There're still boring parts in my work. But because of my experience I usually find ways to minimize the time I'm spending on them. The most generic advice, pick the right tools.

<comment><USER12> You have to be really GOOD at your field to have this freedom. Good for you, dude.

I also like to abstract away the non-sense part of a problem, so that I can focus on the real intellectual puzzles.

<comment> Const-me > I also like to abstract away the non-sense part of a problem

Some boring problems need to be solved anyway, and they can't be abstracted away. Just when you're picking the right tools, it shouldn't take too much time.

For example, that CAD/CAM app I've developed has a lot of very interesting algorithms inside. But the software still need to appear on the user's PCs somehow, i.e. we needed an installer. I've picked [http://wixtoolset.org/](http://wixtoolset.org/) It's mature, well supported, first-party i.e. made by Microsoft, open source, integrates nicely into visual studio. Because of these things, I've spent less than a week in total over the course of 1.5 years working (=develop, test, and support combined) on the relatively boring installer part of that software.

The installer was just an example, many commonly encountered boring problems already have good solutions. E.g. need RPC, pick .NET and WCF. Need to store structured data, pick the highest level library that fits other requirements (despite I generally don't like SQL, I still know it and I've used sqlite a couple of times when it fit well). Need to expose JSON HTTP API on MacOS without much performance constraints, pick Python + CherryPy, the Python is sufficiently high level and it's already installed there. Without picking the right tools, I'd spent a lot of time solving these boring problems.

<comment><USER12> Yeah a good point.

I think the issue here is order: solving which first. Algorithms motivate you, Handling interface demotivates. So start with the motivator.

</comment></comment></comment></comment><comment><USER13> I work at a boring company but I manage to get interesting projects to work on. I left CRUD behind about 5 years ago and I couldn't go back now. I just don't find most business logic problems interesting enough.

The transition for me came when I started a new job and my first project was to fix a slow batch job. Then I managed to get a second performance improvement project and soon I was the performance guy focusing entirely on performance projects. I really loved it.

Then through side projects targeted at problems I saw at the company, I built valuable tools using new open source tech and I got made tech lead of a new platforms team, solely focused on resolving technical problems and improving the system. Since then I have been an R+D engineer and now starting as a big data developer at the same company.

I am no genius, failed my interviews to get into big tech companies. I am a pretty big fish in a pretty small pond, I am known as one of the best technical guys in the company, which opens many doors and gives me a lot of freedom to move about inside the company and get some of the most interesting technically focused projects.

<comment><USER14> I think that actually "boring" companies with "boring" products often have more interesting problems.

</comment></comment><comment><USER15> It took several years but I finally found my dream job.

I work as a software engineer for an ISP. We're a startup and so of course our mission is to disrupt the industry. The great part is we're actually doing it!

Fun stuff I've done so far:

\- Wrote a library to find the best available subnet given our set of IP blocks, set of existing subnets, and the desired subnet size. This may not sound like a big deal, but we've shown our IP block utilization to other ISPs and they are blown away that we achieve a perfect 100% utilization of each block. (Typically at ISPs of our size this is done manually and so there tend to be a couple leftover subnets in each block which are too small to use).

\- Wrote a monitoring system for OLT hardware which A) does not provide out- of-the-box monitoring and B) does not have an API. We actually managed to build a robust system on top of its CLI interface. This is huge for us. If there are hardware or fiber problems, or if a customer simply unplugs their modem, we know instantly. It can even pinpoint where the problem is.

\- Wrote a system which is able to talk to our OLTs, core switches, core routers, and customer modems to do things like provisioning or upgrading/downgrading our customers' bandwidth. Again, there is nothing even close to an out-of-the-box solution for this. You have to build real software!

\- We have some upcoming products I can't share, but one of the most exciting things right now is that we are focusing on helping our customers troubleshoot their networks. This is a surprisingly complicated thing to do while providing a top-notch customer experience, and we think software is part of the answer.

So, do I feel like I've been using "computer science" knowledge? Not really. Closest thing would be using binary trees to do subnet stuff.

But what I _have_ been able to do is flex my software engineering muscles, go back to first principles, and design software from scratch. No CRUD, no huge frameworks and package managers, just plain old fashioned programming.

(Ok, we do have CRUD and framework stuff. The web browsers have to talk to _something_!)

<comment><USER16> Wow you've done some great stuff. I work in the same industry in a company that has been around since 2007 and we don't have anything remotely similar to provisioning systems for client or backbone equipment, everything is done manually.

What kind of equipment do you use mainly ? Cisco, Juniper... ?

<comment><USER15> I am not sure whether we share that publicly or not, so I'm going to be conservative and not share it here. But we are hiring! We'd love to talk.

Here is our web site: [https://pilotfiber.com/](https://pilotfiber.com/)

Here is our Who is Hiring post (contains my email):

[https://news.ycombinator.com/item?id=17209386](https://news.ycombinator.com/item?id=17209386)

</comment></comment></comment><comment><USER17> I'm hesitant to post because there is so much anguish here about winning the lottery for interesting work.

I have been extremely fortunate in my career. I'd say I won the interesting lottery. I started very early by today's standards, taking my first programming class at the local university when I was in 5th grade, back in '76.

At 17, in '82, I had a game company selling nationwide in Sears & KMart a few Vic-20 games I wrote. That got me a beta testing role with the unreleased Macintosh. Which got me to move to Boston, where I worked for Mandelbrot & DeVenney on the initial publishing of Fractals.

Basically, I've been fortunate to be an early developer for a series of advanced technologies: \- initial 3D graphics research community (back when the question was "how to do 3D graphics at all"), \- initial GUI developments (before Windows 3.1, there were a lot of competitors), \- early real time mapping / navigation, I worked on one as my first post graduation job \- early streaming media, I was writing media players for CD-I/CDROM/Network back in '90-'92 \- early 3D gaming consoles, I was an OS developer for the 3DO and the first PlayStation \- early 3D games, lead developer for games for 15 years \- VFX, left games and worked on 9 VFX heavy feature films at an academy award winning studio \- startup, left VFX and spent 7 years doing a ML based 3D reconstruction of photos to realistic 3D avatar web service \- Facial Recognition, closed my startup and now I develop facial recognition software for an industry leader

There is not time enough in a day to explore all the stuff I've done or am interesting in further pursuing. Luckily, I am one of those that sleep less: 5 hours leaves me groggy, and 4 is just right. So I spend my daze 10 hours coding for work, and another 4-6 pursuing "mad science".

<comment><USER18> Wow, it sounds like you've had a fascinating career. You say you may have just been lucky to get in on the ground floor as it were, but would you attribute your success to any other habits, behaviors, or personal qualities?

<comment><USER17> I'm enthusiastic, almost to a childish degree, and I obsess. The joke at work is I'm "Sheldon", and I don't watch that show so I'm only vaguely aware that he's some type of bad communicating nerd. I think I communicate better. I'm also somewhat fearless, accepting projects over my head and still delivering.

</comment></comment></comment><comment><USER19> Pretty much everyone is in the same boat. Even if you have an advanced degree, most of what businesses need is plugging together components and adding business rules to create a product.

As a discipline, we're too young and our technology is too immature to support a true split between engineering/science and computer programming.

If you want to work on interesting problems you're passionate about, there's a few ways to do it.

First, you can do research. Years ago I joined a lab as a professional researcher to follow my passion for machine learning and sensor networks. It's not the easiest path, but labs need disciplined programmers to complement the skills of PhD students.

Second, you can consult. If you're passionate enough about a topic that you have encyclopedic knowledge, I guarantee there's someone out there who will need that expertise and will pay for it. It might not cover all your bills, but it gets you exposure (and potentially a job if they need your skills a lot).

Third, you can start a company. I followed my passion for the challenges of learning from sensor data at scale into entrepreneurship and eventually started a company, [http://sentenai.com](http://sentenai.com) . As a technical founder, I chose carefully the technologies we use (Haskell) and the problem we were tackling (making it fast and natural to combine multiple sources of time series data and find temporal patterns). You still need to solve somebody's problem and build a business, but you can at least lay the foundation.

<comment><USER20> Nice, I'm building something similar with TTN - using Haskell to glue MQTT/SQL/WebSockets to be able to stream data from sensors and also optionally store data in timescaledb. For web fronted I really want to try miso ([https://haskell-miso.org/](https://haskell-miso.org/)).

<comment><USER19> Unless you're targeting consumer you might want to be careful with tech like web-sockets. After a decade of using sensors in industrial facilities I've come to appreciate the value of on-device buffers and transactional logging systems that don't maintain persistent connections. Real-world environments are unfortunately really tough on technologies designed for browsers.

<comment><USER21> You sound like you have some experience in this area so I'll ask. I'm working with fielded devices that typically sit on enterprise networks. We operate much like an IoT device, but without the hardware constraints. The current c2 system uses a traditional polling REST HTTP protocol and we're looking to migrate something more real-time (for config pushes) and lighter on the server. Currently looking at everything from HTTP/2 SSE, Websockets, MQTT over WS, or even HTTP using something like Google's Cloud IoT. As you can probably tell we'd like to keep the wire protocol enterprise-network friendly. Any advice?

<comment><USER19> It really depends on your edge data model, but the enterprise network should always be considered hostile.

At my previous company we ran SSH servers on our gateways for server->client pushes and it ran into the fewest problems with enterprise firewalls. We also ran our own mesh wireless networks a lot using our own gear. I'm guessing that's probably not an option, but when there's no admin running around looking for unauthorized wireless signals it's quite efficient.

Now all of these require a local host machine (or several) behind the firewall that do the brunt of routing and orchestration for pushes. There's a good reason for it though: It's a lot easier to get several hardened systems authorized to cross the firewall than a bunch of IoT devices. And if you can't get that authorization, you can put a cellular connection in the box or boxes more cheaply than one in every deployed device.

Happy to chat more if you want specific advice about certain situations. I also spend a lot of time investing in and mentoring Boston-based IoT startups so I have seen a broad cross-section of situations that can happen. firstname.lastname@example.com

<comment><USER21> We have the full support of the network admin staff, so punching out is not an issue, we just want to keep it as clean as possible. My guess is our control channel will likely end up being some combination of WSS/Redis (if it plays nice w/ mutual auth and load balancing) or a variation of our current polling HTTP/REST solution. Thanks for the offer, I might take you up on it ;)

</comment></comment></comment></comment></comment></comment><comment><USER22> I'm working on a team that is miniaturizing a synthetic aperture radar system.

The amplifiers, processing, and data storage used to take up most of the space of a small cargo plane. Then it got down to four half-racks. Now it is the size of a dishwasher.

We hope to get it drone-sized. It is a never-ending series of interesting technical problems that span the entire STEM range, including RF, network, system, electrical and mechanical engineering, HPC, data science, voodoo- mathematics I will never understand, system administration, and plain old software development.

Everyone here is expected to cross-train in various disciplines. My background is CS but since starting here I have done electrical and mechanical engineering work including diagnosing micro-fractures, visible only through a microscope, in connectors on a bunch of VPX chassis stuff, caused by bad soldering work by the manufacturer.

On top of all of that once or twice a year we all get to go on operational deployments of the system. This year we went out and imaged thousands of miles of coastline, 6 engineers crammed in a tiny airplane hopping from airstrip to airstrip in support of a coastal erosion monitoring program. Data scientists are expected to haul around amplifiers and radar engineers are expected to live patch code while in the air.

The only reason I got this job was because I was a bored programmer teaching a Linux course as a side-hustle and a bunch of engineers came through and started asking questions way beyond the scope of the class. They were radar guys struggling to learn Linux and a couple of post-class drinks later I had an interview.

I guess my only advice would be to have a side-gig and network as much as possible, peppering everyone you meet with questions about what they do.

If what they do sounds cool, ask for an interview.

<comment><USER23> Do you have a web site for your company? Your current work sounds similar to the work I did in my graduate studies in Ocean Engineering. Thanks.

</comment></comment><comment><USER24> I'm in the exploratory stages of starting a noncommercial project focused on hosting, processing and serving a vast amount of climate data for scientists and researchers. I've "seeded" this project with my own bare metal hardware, electricity and internet access. This includes 136 vCPUs, 512GB of RAM and 128TB of hard drive storage capacity (with room for another 456TB). As my own money permits, I plan to slowly add to this lab over time.

My initial consideration is to develop and host a sort of public Wolfram Alpha, but specialized for climate data queries and visualization. I'm open to other suggestions, as I'm currently in the process of architecting the system and reaching out to climate scientists for feedback on what they need that isn't well-served yet.

Once all the infrastructure work is done, I'd be happy to contribute to climate modeling more theoretically. But for now my prerogative is to develop a central repository for as much climate data as possible, normalize it as reasonable, and store it in a queryable format.

There are interesting technical problems here due to the scale of the data, the variety of its native (raw) formats, the frequency with which each source updates and the types of information involved. But speaking directly to the title of this post: I don't think anything I'm doing is strictly an unsolved technical problem, it's just a complex technical undertaking. There are plenty of data serving and processing pipelines for this that have already been proven capable.

<comment><USER25> Wow :)

High-level questions:

\- At the risk of birthing a page-long subthread on ZFS-vs-everything-else... what storage solution are you using, and why?

\- What sort of hardware are you using? (This is a non-catalyzing question, and is just out of curiosity)

\- How did this get started, and how are you managing this?

\- Will you ever be interested in accepting donations or funding? (Including on a voluntary basis; and including with clear stipulations/structure about management)

\- What sorts of decisions/motivated this initiative?

More focused:

\- Do you have any interest in creating this as a "community hub", with a central code repo that data scientists can push updates to that then get run on the cluster? If the visualization data (or prerendered bits of it) are openly cached/accessible, having the code that generated the data equivalently open/available could be interesting.

\- What kind of availability/openness are you looking at with data? (TL;DR translation: rate limiting)

You may already be aware (very likely), but AFAIK archive.org is interested in this kind of thing. Interesting bunch of people, but the various projects do like climate data, and they have a few hundred PB of space, FWIW.

<comment><USER24> Thanks for expressing interest...I'll respond in order.

 _> \- At the risk of birthing a page-long subthread on ZFS-vs-everything- else... what storage solution are you using, and why?_

Right now, XFS and HDFS. This is primarily due to my prior experience with it; I have considered ZFS, and might move to that later on. I may also dispense with HDFS for shared storage and to reduce the redundant JVM memory footprint. I'm attracted to ZFS for compression and error correction features, I just don't have any actual experience using it.

 _> \- What sort of hardware are you using? (This is a non-catalyzing question, and is just out of curiosity)_

Four bare metal servers, three of which have dual Xeon E5-2630 V4s (10 core, 20 thread 2.2 Ghz), one of which has an i7-6900K (8 core, 16 thread 3.2 Ghz). The latter server has 10TB SATA SSD capacity and four GTX 1080 GPUs. The other three have 2TB of NVMe SSD capacity. Each of the four has 128GB DDR4 2400 Mhz RAM. Currently all storage is local to the hardware, but there is a SuperMicro SC847 for future expansion. Every server has dual 10Gb/s SFP+ connections in bonded 802.3ad LACP, and are connected via a 16 port 10G network switch in the same rack. I think that's everything at a high level, off the top of my head.

 _> \- How did this get started, and how are you managing this?_

I joined John Baez and a few other scientists/researchers working on the Azimuth Climate Project, which sought to preserve critical snapshots of climate data in the event of mass defunding. Later on I decided to take this a step further since those snapshots were becoming very out of date and the multifarious data repositories were never very well documented, organized or normalized. Not sure what you mean by "managing this" though.

 _> \- Will you ever be interested in accepting donations or funding? (Including on a voluntary basis; and including with clear stipulations/structure about management)_

I initiated the process of starting a formal nonprofit, but not for the purpose of soliciting donations; rather, just so that it would be clear it's a noncommercial activity. I might be interested in that kind of thing - <USER3> either way you mentioned - once I have exhausted my own reasonable resources for the task and have to significantly expand.

 _> \- What sorts of decisions/motivated this initiative?_

It began with reading worrydream's blog post, "What can a technologist do about climate change?": [http://worrydream.com/ClimateChange/](http://worrydream.com/ClimateChange/). Not much more to it than that.

 _> \- Do you have any interest in creating this as a "community hub", with a central code repo that data scientists can push updates to that then get run on the cluster? If the visualization data (or prerendered bits of it) are openly cached/accessible, having the code that generated the data equivalently open/available could be interesting._

Yes, that's an interesting idea.

 _> \- What kind of availability/openness are you looking at with data? (TL;DR translation: rate limiting)_

Well everything is intended to be extremely transparent, so I'm going to open source all software (infrastructure, development, research, etc). I'm also going to keep all data open. In practice there will probably be a limit of 1000 or so queries per day per IP address, but I'll burn that bridge when I get to it. It really depends on how "real time" queries end up being, and how much abuse the system actually receives.

<comment><USER25> Thanks for the reply! Not sure if you'll see this; had some unexpected delays finishing this comment.

Everything is duly noted; I'll just expand on some bits.

> _I joined John Baez and a few other scientists /researchers working on the > Azimuth Climate Project, which sought to preserve critical snapshots of > climate data in the event of mass defunding. Later on I decided to take this > a step further since those snapshots were becoming very out of date and the > multifarious data repositories were never very well documented, organized or > normalized._

Archive.org is _very_ probably interested in this sort of thing then, FWIW.

> _Not sure what you mean by "managing this" though._

Heh :) I was curious what sort of work you do in order for this initiative, which appears(?) to be somewhat of a side project, to be viable in terms of budget and adequate spare time. I'm also interested in storing/working with somewhat large amounts of data too (one project I want to try at some point is implementing an infinite browser cache so I can "Google" the content of every version of every webpage I'd ever visited), so I definitely want to optimize for something that doesn't require much time :) (don't we all)

> _It began with reading worrydream 's blog post, "What can a technologist do > about climate change?" ... Not much more to it than that._

After having read that page I now understand the sentiment of that statement. Major TIL :)

And if only all webpages were that well designed... (The interactivity was a bit of an information overload, but I _really_ liked the layout.)

</comment></comment></comment></comment><comment><USER26> If there's a bottleneck anywhere in what you're working on, that's the most likely place for you to apply CS. But it's a tricky business; there's a risk benefit trade-off.

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.

</comment><comment><USER27> I think with time you may find such drudgery is present in every field. Ninety percent of any kind of work we do is gluing together components and solving boring business needs. It's part of the reason I think we engineers love side projects so much -- they're easy to start up, and you can try out academically interesting things (obscure programming languages, cool algorithms, etc.) without caring about the bottom line.

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!

<comment><USER28> > 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.

</comment></comment><comment><USER29> Wow, a surprising number of responses agreeing with boredom... I'll share a different point of view.

I've been running DNSFilter for 3 years. We're (still) facing interesting texhnical challenges - ranging from BGP community strings being used to balance a global anycast network, to handling volumes of time series data [1], to designing a golang daemon to ssl sign incoming requests on the fly for domains we won't know ahead of time, to figuring out new ways to pass data in DNS, and support cutting edge standards like DNS over TLS, DNS over HTTPS.

I was just saying to my wife the other day how ridiculous it is that most things we do are technically challenging, and you have to think outside the box how to get it done -- while I was implementing a block page for user agents which requires a 19 step process to determine the user's DNS Agent ID, and display the right logo on the block page ;)

Some might dismiss these challenges due to our use (abuse) of DNS for purposes it was not intended for. Fair. Also, welcome to the real world, and we're solving problems are customers are asking for... and just figuring out interesting ways to get the job done.

1: [https://blog.dnsfilter.com/3-billion-time-series-data- points...](https://blog.dnsfilter.com/3-billion-time-series-data-points- dnsfilter-replaced-influxdb-with-timescaledb-d9f827702f8b)

</comment><comment><USER30> My suggestion : forget you CS degree, drop the idea of doing something interesting during your work hours, think about it as inevitable procedure to earn your montly salary. At 5pm run away from your office and focus on whatever you think is interesting.

<comment><USER31> Is this view that common?

I'm all for work-life balance and working on passion projects on the side.

But do that many people really think of their developer job as a salary and a daily grind?

<comment><USER32> I work on "boring" stuff (CRUD, frontend and backend) and love it.

Maybe because I remember all to well what jobs I used to have:

\- farm hand (heavy work on smaller less automated farms)

\- construction (noisy, wet, dusty etc)

\- security

\- help desk

Being paid 8 hours a day to work on borderline interesting tasks, getting free lunch, being paid to study etc feels great. Oh, and I can work from home if I need to.

I also make my work interesting by putting some effort into it.

<comment><USER33> How do you get over the chaos that is front end (hip frameworks every week).

<comment><USER32> Agree this is a problem. Here's how we make it work:

Work with great people. Also code reviews make sure new dependencies don't usually in unless the team agrees (we are a reasonable bunch).

Standardized on Angular. It seems to me Angular has less churn. Yes: there is a life cycle and we have to follow the releases but it is mostly well documented.

</comment></comment></comment></comment></comment><comment><USER34> I have a degree in CS and one in Physics.

For the first 7 years I worked as a "programmer", ie. writing code, a lot of C++, and of course web stuff. About 6 years ago I (accidentally) became a "data guy". I do a lot of data infra/engineering, a lot of stats and analytics, and lately ML. Also I do a lot of management stuff and hiring.

I'm lucky, this is a pretty sweet time to be working for me. My skills are a perfect match for the work, I'm able to do impactful work and can get paid for it.

I don't really care about interesting technical problems that much, in the sense that I don't want to solve an interesting technical problem just because it's interesting. What matters is having an impact on your users and the business.

I think if you're looking for those types of technical challenges, it's better to contribute to open source code, rather than doing it at the day job. At the day job, you should always choose the method which makes sense to move fast..

</comment><comment><USER35> Academics: just take an interesting problem that you can generate potential solutions for, but if you can't, just pick the next problem.

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.

<comment><USER36> That's tenured academics. A lot of academics are still struggling to make a name for themselves, which means more like: pick an interesting problem. If it gets any attention whatsoever, work on it and its variations for years. Maybe drill down into increasingly niche subsets of that problem. If at some point it appears there is no solution, make one up and defend it anyway, or add unrealistic constraints that will never be generally applicable, then promote the hell out of whatever you've got.

</comment></comment><comment><USER20> I've left master CS studies to be able to do robotics and be free to learn stuff I want/need. After number of years hacking stuff all around in local hackerspace I'm finally getting onto something which is an attempt to create distributed motion control system ([https://distrap.org](https://distrap.org)) which is also one huge experiment with generating code from Haskell utilizing Ivory Tower framework made by Galois ([https://ivorylang.org/](https://ivorylang.org/)). During the process I've realized the potential of this framework and started writing a book about it ([http://48.io/~rmarko/book/](http://48.io/~rmarko/book/)) so people don't have to spend half a year reverse engineering it.

Beside that we're also building vpsAdminOS ([https://vpsadminos.org/](https://vpsadminos.org/)) for running LXC on top ZFS. At [https://vpsfree.cz](https://vpsfree.cz) we currently run openVZ with the intention to migrate to vpsAdminOS which is currently tested by members.

In my experience you gotta sacrifice stuff (like well paying job) so you can do stuff you really want.

</comment><comment><USER37> Hmm, maybe. I work in Natural Language Processing for medicine, and there are many interesting challenges ... a lot of them still academic even. But the biggest thing I'm worrying about these days are more business oriented. Machine Learning, and Natural Language Processing in particular, is nowhere near advanced or accurate enough to fully automate things. So most of my thinking goes into things like "given the limited abilities and limited data, how can we still make something that is useful". That's both a business and a UI/UX problem...which suck up a lot of brain cycles for me. Up to the point that I've become somewhat cynical and wish I was doing CRUD work instead ... since all the hype around NLP usually amounts to saying "yeah no, that's not really how it works, and you'll [the customer] be disappointed if we actually did that". The hype train is both a blessing and a curse

</comment><comment><USER38> Technically challenging is great and all, but I would rather write IE6-compatible HTML tables if I thought my product was something useful to the world. I did a project recently where we used voice and 3D in an open space and a all kinds of other stuff that was completely new to me and it was utterly unfulfilling because the thing we built was pure eye candy and totally useless.

<comment><USER4> Same here. I used to seek jobs in technologies I like. I finally got some. It made me realize that even working with my favourite tools becomes a chore if the product is bullshit.

</comment></comment><comment> daniel-levin Absolutely, yes. Using your CS skills to write CRUD apps is the path of least resistance to create economic value. Where I live (Johannesburg), the demand for CRUD apps is so high that no single firm or group of firms can absorb it all. You can happily create a thriving software development business in Johannesburg without worrying about competition (maintaining standards and hiring well is a different story).

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/](https://www.optiver.com/na/en/)

</comment><comment><USER39> I've been very lucky in finding a job that has a good mix of typical 'trench digging' (read web app development) and really cutting edge algorithmic work. We are a 3D printing startup that use 6 axis robots + extruders to print large scale geometries. Some days I'm implementing CRUD REST APIs, today though I happen to be working on Octree based collision detection.

Finding jobs like this isn't easy and mostly requires luck - my last job was very different, it was just maintaining a plain old CRUD app. Not the most mentally stimulating work, but it's probably 90% of the work that gets done on a day to day basis by software engineers.

Try looking for people who are solving a problem that is technical in nature. Business problems use technology as a tool, technology problems require development of brand new tools or the use of existing tools in novel ways.

</comment><comment><USER40> I've worked a lot on networked multiplayer games on the gameplay implementation side of things. Lots of fun and interesting challenges in terms of latency hiding, client side prediction and keeping everything in sync. Game development in general let's you dabble in lots of different areas and gameplay in particular can cross disciplines. Obviously it also comes with a bunch of downsides in terms of pay and working conditions.

Now I'm working at a startup making a collaborative VR modelling tool which applies all the same problems to a more 'serious' end.

Both still have a fair share of plumbing work as well. But that can be a welcome relief. I find solving hard problems (particularly under pressure) can become obsessive and make it hard to be present with my family and sleep!

</comment><comment><USER41> There are three responses:

1\. "Interesting" has more to do with the person who is being interested than the task. There are people who insist on telling me about various sports statistics as if it is amazing and interesting, and they really want to meet famous athletes. There are others who really want to work with the machine code etc. Can you maintain interest?

2\. I bet you even the ideal interesting jobs you can think of: say Elon Musk's job running multiple firms probably feels like yours from the inside. Board upset that he can't get the manufacturing levels up, sleeping in the factory, trying to figure out what is going wrong by staring at who knows what while asking SpaceX to hold off on the meeting this week.

3\. Sleep early and drink caffeine -- not kidding -- and your job might seem more interesting.

Edit: There is probably someone out there complaining that they have to figure out boring technical details when they really want to learn more about the business challenges.

</comment><comment><USER42> You sound like you're very early in your career. It took me about 8 years before I found a job that I really, really found interesting.

Think about it this way: The real interesting jobs don't take chances on recent graduates. There's just too much on-the-job experience needed.

The best advice that I could give to my younger self would be to think a lot more critically about when to change jobs. The time that I left the boring CRUD job was a huge mistake. (I should have kept looking instead of taking the job that I took.)

The second best advice that I could give my younger self would be, when in a boring (but stable) job, is to avoid recruiters and try to network more with people doing interesting things. Recruiters are better when you aren't very picky about the kind of job (or employee) you want.

</comment><comment><USER43> I feel so sorry for you. Life is so very brief to be working on something you don't like. I look forward to going to work every (week) day.

I work in a different corner of the development biz doing computer vision, graphics and new products for companies. This week I'm working on "reading" test strips for a new medical device. Last month I was working on the graphics for a landing radar.

At the risk of of telling you to "eat what I do and you'll be as tall as I am", I think you might find more developer happiness if you can get off the rails of business/web development and instead, work for small companies on desktop and/or embedded products. I think the key is working for small or tiny companies. Heck, maybe working just for a tiny company might make using your skills fun again. In a tiny company you get to wear a lot of hats so you learn things and use new technologies.

<comment><USER4> Not the OP, but regarding the "eat what I do" \- how do I get your food? How do I get to work on medical test strips, or landing radars?

<comment><USER43> That is a difficult question to answer. I mean, I get my work through reputation [1] & luck and 30 years experience but that isn't actionable advice for you. I would say that the trick to getting into work that puts the most "happiness under the curve" is to find a small company [2] that really needs you. Look for that advertisement on Craig's list, talk to your friends, develop a skill that you can leverage. [3]

[1] As I tell people: "People know my reputation - and yet they hire me anyway."

[2] The last company I worked at before going independent consisted of 3 people. The owner/engineer and 2 software devs.

[3] "Develop a skill you can leverage": By that I mean, _start_ to learn something that you want to work with and then find a place to work at that will let you _really_ learn it. For example, suppose you want to work with the Internet Of Things stuff; get a development board and do an IOT project with something like C++ and leverage your existing skill set (Javascript, Web stuff). Then take that little bit of IOT stuff and try to get a job doing IOT and then maybe C++ embedded. Does that make sense?

<comment><USER4> So no royal road, just working well and actively steering towards working on the things of interest :). Thanks for sharing.

</comment></comment></comment></comment><comment><USER44> I do a lot of robotics software engineering from top to bottom: UIs for mapping spaces, web APIs, web servers, databases, ROS nodes to handle mapping, web-based controls, industrial integration APIs, error handling, etc.

I've excitedly taken on every little task thrown at me over the years, I think, because I went to school for GIS, earned geography degrees, and never in my life expected to do anything remotely as interesting as this. It's as if my career expectations began so much lower. So when I was asked to do all the dull work, it wasn't dull for me. I've built a very complementary skill set that's rather valuable almost anywhere in the mobile robotics field. All without any engineering or CS education (which makes me really angry at the education system for barring me from engineering or CS, but that's another story)

<comment><USER25> > _All without any engineering or CS education (which makes me really angry at > the education system for barring me from engineering or CS, but that 's > another story)_

I wouldn't mind hearing about that, huh. (In my case my story was learning difficulties I only began to get past at around 25, with virtually nil remembered schooling (besides what I could figure out on my own) from before that point, more or less.)

<comment><USER44> The short story is:

I'm naturally smart, motivated, curious. I grew up surrounded by technology, tech enabling parents and siblings. I got into robotics via. FIRST. I love building stuff. But if you ask me to sit quietly in any class for an hour it's game over. I just _can 't_. So my grades never got within a mile of the minimum cut-off for ENG or CS programs.

So I guess I found my own route into engineering. But on occasion I will feel livid about how much I lost out on by not getting to go to school for engineering. Usually it's in a moment of, "okay I would probably understand how to manipulate these matrices if I had learned it in school, but yet again I have to play catch-up."

On top of that is a longer story about the struggle with ADHD, people always assuming you're just lazy or that ADHD isn't real. About the ADHD drugs that allowed me to adjust a slider between Focused/Antisocial/Suicidal and Energetic/Social/Impatient and how I very slowly learned how to cope without the drugs that I was pretty sure would kill me one day.

</comment></comment></comment><comment><USER45> I think about this a lot. With the rise of cloud computing, I wonder if what I am doing is even programming. I even searched Stack Overflow recently to see if working on complex configurations counts as programming or not. There obviously wasn't consensus.

I saved this thread to "read later" in the hope that I can identify how to get into a position where I am working on interesting problems but more or less, I implement business logic. Of course, it's still slightly interesting when you think about the scale or what I actually created but it's not technically interesting.

<comment><USER10> I'm not sure about "Software Engineering", but "Programming" to me sounds like making a computer run something to your liking, which would include configuring it.

<comment><USER46> IMO the problem is that today we generally still only have one name for all of these jobs (software dev|engineer) when it reality we probably need 2 or 3. It makes planning one's career and searching for the right job very difficult.

</comment></comment></comment><comment><USER47> One of my challenges is that I don't like easy problems, they are too simple to solve and I get bored. Because of that I have always invested most of my time into interesting technical problems instead. Just not always at work.

There are a couple of things intertwined in the phrasing of this particular question, job satisfaction and the quest for a challenge.

I stepped into this mess when interviewing a candidate who shared that they were looking for a new job because they wanted greater challenge (and this is a fine reason to change jobs in my opinion). I asked them what they were doing now that was challenging. That lead to a good discussion on how much of the problem of lack of challenge was their problem, and how much of it was their managers problem? Clearly a good manager would try to keep you challenged but a good employee can seek out challenging things without needing their bosses approval. One need only look at various online courses to realize that with no more than a few git clone operations and an AWS account you can start looking at very challenging problems. There are programs like the HeroX one which seek out participation in technical challenges, and there are local opportunities to engage in challenging problems that impact the community around you.

The discussion came around to this question, "What prevents you from taking on challenging problems right now?" And the answer was, for this candidate, nothing really, they had just not felt empowered enough to choose their own path.

My advice is that if you like your co-workers and your management and the work isn't hard, just repetitive, then automate as much of it as possible and look for your challenges outside of work. If you don't like your work environment then change it if you can.

</comment><comment><USER48> I somehow managed to push myself towards working on interesting technical problems. ( That of course depends on what you mean by "interesting technical problems" )

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.

<comment><USER49> This is sage advice. When other people run away, you run towards. The skunkworks setup is ideal if your company/team can swing it; it will be a catapult to a new world of experience and reputation. Good luck!

</comment></comment><comment><USER50> I'm working on numerical methods for solving differential equations and running the JuliaDiffEq organization to build all of the newest methods into DifferentialEquations.jl. So much of this field is undocumented or has never been tested, so it's awesome to just come up with new ideas and new schemes and test them out. My PhD was in control of stochasticity in biological organisms (how do you control the internal randomness of biochemical reactions?) and the methods for simulating such models. So I get to work with hot off the press new biological "big data" and develop new techniques which use some of the newest advances in mathematics (stochastic analysis) to do something that can have some very practical outcomes.

If you're really looking for interesting technical problems, I highly recommend looking into systems biology. There's interesting mathematical, computational, and biological problems being worked on here (with lots of funding!).

<comment><USER51> If you don't mind sharing, what are some of the problems in systems biology that you find more interesting, and who is working on them?

<comment><USER50> I find the Irvine school of systems biology to be a very intriguing methodology/outlook which is based around complex models to understand unintuitive biological behaviors matched with data validation (a lot of mathematical biology is very disconnected from biology, and a lot of systems biology is more bioinformatics). For accessibility, here's some videos which will never go behind a paywall.

I think Arthur Lander gives the most accessible talks. A lot of his talks around growth control [1] and pattern formation [2] where he shows the tradeoffs between different cellular network and feedback mechanisms and how this influences the robustness of development. Then you have people like me [3] and my PhD adviser Qing Nie [4] where we describe how noise, the randomness that exists in biochemical interactions, is able to be controlled and used by biological organisms to improve developmental processes. And then there's people like John Lowengrub who talk about the morphology of tumors [5] to be able to predict and describe how the behavior can be derived from the shape.

There's a lot of movement going on in the data generation side of systems biology. Single-cell RNA-seq methods allow us to quantify almost all of the RNA generated by each individual cell for a whole group of cells, which lets us know exactly how cells are generating different proteins and by what amounts [6]. This of course opens up a whole lot of questions, along the big data computing side (how do you handle such a large dataset and extract something new out of?) and from the mathematical side (what kind of models is this actually validating and invalidating?). With this kind of data, there are questions about how well we can fit computational models directly to data and improve prediction accuracy beyond qualitative results [7]. These models are becoming precise enough that people are starting to test their uses in pharmocology, doing personalized drug-dosage prediction using covariates and large internal systems biological models called PBPK models [8].

[1]: [https://www.youtube.com/watch?v=Dza0hM2vBNk](https://www.youtube.com/watch?v=Dza0hM2vBNk)

[2]: [https://www.youtube.com/watch?v=8jFx9I7lBOg](https://www.youtube.com/watch?v=8jFx9I7lBOg)

[3]: [https://www.youtube.com/watch?v=_h5fVDvGp-8](https://www.youtube.com/watch?v=_h5fVDvGp-8)

[4]: [https://www.youtube.com/watch?v=tRzrBvGqOOE](https://www.youtube.com/watch?v=tRzrBvGqOOE)

[5]: [https://www.youtube.com/watch?v=NVFFoGfC4Uk](https://www.youtube.com/watch?v=NVFFoGfC4Uk)

[6]: [https://www.youtube.com/watch?v=8KpIDpPEGV4](https://www.youtube.com/watch?v=8KpIDpPEGV4)

[7]: [https://www.youtube.com/watch?v=5nIeYVe_yDo](https://www.youtube.com/watch?v=5nIeYVe_yDo)

[8]: [https://www.youtube.com/watch?v=2Ut-Utim- wU](https://www.youtube.com/watch?v=2Ut-Utim-wU)

</comment></comment></comment><comment><USER52> I'm doing a PhD on cryptography/blockchains and working on the Cardano cryptocurrency ([https://cardanoroadmap.com/](https://cardanoroadmap.com/)). It's very technically interesting and challenging (though it pays a fraction of what I used to earn as a Software Engineer in a big company in Zurich.)

I spend most of my time thinking about mathematical problems that I feel are impactful and important. The solutions make use of theoretical computer science (computational reductions and such). Validating the results requires running small Monte Carlo style experiments typically written in C++, Python, or Javascript. This isn't rocket science code, but it's still challenging to think what kind of assumptions and constraints to put in the model / code and which ones to leave out (although the coding part itself is pretty standard.) Other than that I mostly write TeX :)

But our solutions are implemented by the IOHK software engineers that are working on the production software implementation of Cardano. It's quite interesting to guide that work through our papers, as it handles a multibillion dollar market cap and the responsibility for making sure everything is secure is big. As for social impact, this people may disagree with, but I feel we're building next generation economies and this will impact the whole of society in making it more egalitarian, giving access to money to everyone, and making salaries more equal across the globe.

<comment><USER20> Cardano is really nice and also a very good Haskell marketing opportunity ;)

</comment></comment><comment><USER53> I've created work that wasn't hard from a computer science point of view but was transformative of how my company worked. And the work was my own idea. That was more than satisfying.

Working on computer science for its own sake isn't a draw for me. Helping people is. Your values are up to you, but don't be surprised that working on abstract problems rarely equates to adding real world value unless you look for a job where that's explicitly the case.

Also don't overlook the dynamic that you're being paid now rather than being the customer like you were in school. Your career is ideally going to be fun and enriching overall, but don't let yourself forget that's secondary at any given time to providing the value you were hired for.

</comment><comment><USER54> Currently working on high speed JESD204B data converters and clocking; synchronizing clocks across 9 boards for (essentially) software defined radios for defense applications. The system has something like 15 Kintex Ultrascale parts and a Sitara processor as well.

Working with some _very_ serious FPGA people in a high functioning group doing really hardcore DSP, high speed memory interfaces, networking, etc.

I was in your boat before. It made me want to drive off a cliff.

</comment><comment><USER55> Nope, getting an interesting problem to work on at work is a rare occurrence.

I'm 38 years old, and I'm convinced that if I hadn't been constantly working on side projects and pursuing learning on my own (books, MOOCs, etc.), and relied solely on the skills I could pick up "on the job", I would be absolutely unemployable now.

Seriously, doing nothing but writing glue code was old 10 years ago, now I'm really starting to feel burnt out. Today, I've been staring at a screen full of bad Java all day, knowing exactly what needs to be done, but can't force myself to do it. Maybe tomorrow.

Funny, I have no problem pouring myself into my side projects in the evening. Hmm....

<comment><USER33> >knowing exactly what needs to be done, but can't force myself to do it. Maybe tomorrow

It's really unfortunate I know all too well how this feels. How do you hedge since you are nearing "old" in industry?

<comment><USER55> My industry is defense/aerospace, which doesn't engage in age discrimination as much as the wider 'software industry' does.

Part of the reason I can't seem to land a real lead/architect position (despite what my title says) is that I'm waiting on all the boomers currently parked in those positions to die/retire.

</comment></comment></comment><comment><USER56> If you're bored you're doing it right. Read 'Programming sucks! Or at least, it ought to'[0]

[0] [https://thedailywtf.com/articles/Programming-Sucks!-Or-At- Le...](https://thedailywtf.com/articles/Programming-Sucks!-Or-At-Least%2C-It- Ought-To-)

</comment><comment><USER57> The sad truth is every interesting problem turns into a job eventually. I was very proud of myself when I did my first custom linux kernel for an ARM machine, rev 0 hardware bringup and all. Pretty proud when I wrote the first working kernel driver as well.

Now I'm doing that stuff regularly for various industrial applications, and it's pretty meh. Still beats churning out javascript for the 10000th online store, that's true.

</comment><comment><USER58> Currently, I'm implementing BLS signatures in Go and Solidity. A couple co- workers are implementing a threshold ECDSA signature scheme from the paper announcing it. Last night we had a jam session with a cryptography professor at a top-10 CS school to discuss our system design.

Getting the opportunity to dive back into the literature, get involved with research, and still code has been amazing.

</comment><comment><USER59> At work? No.

Outside of work? Yes, but most of that doesn't involve programming. Mostly doing stuff with pre-industrial revolution era woodworking and blacksmithing. I do have a few interesting programming side projects too, but I haven't felt like sitting on the computer after work for a while. Maybe when it's winter and I don't feel like going out.

For doing projects outside of work, I've had to learn some patience and preserverance. Previously I'd put all my might into a side project and then burn out and abandon the project. Nowadays I try to keep the side projects in a state where I can easily pick them up and leave them dormant for a while. I've got projects that I've been working on for 5+ years and they're still going.

As for working with boring projects... I just had to get used to it. I've never enjoyed any work I've done (in exchange for money), but the pay is ok and I can aspire to do great things outside of work.

</comment><comment><USER60> I have recently been interviewing and people have been asking me very CS- specific questions that, quite frankly, never come up in my day-to-day work. Not only that, but they _haven't_ come up in the past 15 years of work. I had to really think about some of the answers because I just never do it.

The roles were for more CRUD-related gigs. I don't really get the emphasis on those CS particulars when you don't really run into them much.

Anyway, no my job is not interesting. The challenges are organizational and political rather than technical.

</comment><comment><USER61> > Most of my work seems to be boring CRUD work where the challenge is gluing > libraries together or figuring out business requirements.

This is ~80% of software development. To stay sane find a domain where the business logic interests you. Maybe you're into sports, crypto, sci-fi, whales, whatever.

Try and find a job in these domains. In my experience it makes the day-to-day grunt work of developing software more enjoyable since you're solving novel problems in area that you care about.

</comment><comment><USER62> This was one of the reasons I went to law school after getting a CS degree. I now practice law, focused on patent litigation.

My experience generally has been that the work is more varied, and there is more learning as opposed to mechanically doing.

Sometimes I get to deep dive into interesting technical topics. I've taken things apart and reverse engineered bits of software and worked with experts. Plus I am deeply fascinated by computer history, and sometimes I get to dive into that as well when looking for prior art.

On the other hand, some patents really suck and have claims that were clearly written by people who didn't understand what they were writing about. Arguing over these requires you to almost suspend disbelief to operate in a world where the claims make sense.

<comment><USER63> I have been considering making a switch from software engineering to patent law. Are most patent lawyers employed by large law firms or is it common to work for yourself or in a small practice?

<comment><USER62> For patent litigation (fighting out infringement claims in court), I'd say it's mostly done by large general practice firms and medium-to-small boutique firms that focus on IP.

For patent prosecution (drafting of patent applications and advocating before the patent office to get them issued), there are some solo practitioners, and probably more small practices than there are for patent litigation, though the big firms do prosecution as well.

</comment></comment></comment><comment><USER64> Hang out with the folks in biotech if you want to be inspired. You can literally see progress on a daily basis for a host of age related diseases ;)

You can also participate indirectly by tracking the market and making small investments in say: AbbVie, Gilead, Regeneron, Spark Therapeutics, Ginko Bioworks, etc. Or apply your skills to Kaggle style ML competitions, citizen science projects, open access gene banks, etc.

Stay positive!

<comment><USER38> I did a biotech project as a college student for a cheap hourly rate. It was amazing and I didn't really appreciate it at the time. I've spent most of the last 20 years working in IT or digital marketing (building branded web and mobile apps mostly). I've had a handful of interesting technical challenges, but nothing close to working in biotech.

</comment></comment><comment><USER65> If you want consistently interesting work you need to be proficient in two different disciplines. Computer Science isn't enough. Interesting work is the product of being an interesting person.

If you are a computer scientist and say, a _marine geologist_ , there is some work that only you would be able to do, and some innovations that only you can see, that plain CS guys knee deep in the CRUD cannot.

<comment><USER4> That's an important realization that crushed me a bit when I achieved it. Going into programming, I felt I have _the most interesting_ skill in the world. Turns out, it's only interesting if you can apply it to something interesting - and if you (like me) only know programming well, then you'll be stuck writing trivial stuff and tools for programmers :).

I wish I'd know that 11 years ago. I'd go to study aeronautical engineering or biology instead of CS. Now, I play the catch-up game, trying to learn a completely different field, just to have something interesting to apply all my programming knowledge and experience to.

<comment><USER65> Indeed, it is far easier to study another field and catch up to computer science than the other way around.

There is so much content and libraries out there for programming that it's becoming more trivial to write effective code, especially if performance is not an isssue. You barely need a CS degree anymore.

</comment></comment></comment><comment><USER66> For me that's where side projects come in. I'm working on Maths teaching software [1], which allows me to combine my teaching experience (figuring out what feedback to give as students work through problems and when) with my (limited) technical experience (which admittedly has been 80% gluing libraries together!).

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](https://blutick.co.uk/demo) \- alpha stage right now

</comment><comment><USER67> Completely. After 10 years it's still just data in, data out and the only real challenge lies in deciphering business requirements.

Whenever 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.

</comment><comment><USER68> Right now a colleague of mine are working on a project called TallyLab. It's a "data diary" based on IPFS and OrbitDB. By utilizing those technologies we hope to create a distributed, decentralized, end-to-end encrypted, peer-to- peer system that gives people full control over their data. We believe it will be the first of many "GDPR-first" or "HIPAA-first" apps.

Sign up for our beta program at [https://tallylab.com](https://tallylab.com) :)

</comment><comment><USER69> I know how you feel. Most of it is chalked up to where you live, then the company you're at, and then the team you're on.

The first two are pretty easy to remedy if you're young and adventurous enough, but the last one might leave you searching for a long time. I've up and moved all over the place, and never stopped searching. After 10 years in this field, I've finally got a job that really brings me satisfaction. What most people don't tell you is that it's all about your boss. If your boss knows you, and helps you reach your potential, any job can be fulfilling. Most bosses aren't that good though, and they will stifle your growth and make your life miserable because their boss is doing the same to them.

The real key is to know yourself, know your skills, and advocate for yourself tirelessly. Make yourself accountable, and then deliver. People will take notice, and if they don't, pack your bags and move on to the next spot and try again.

I'm Director of Engineering for goin.org now, and I'm doing exactly what I love to do: understand a business problem really deeply, and then construct a series of large software systems to automate those business problems. Software engineering in it's truest sense is what I love. Structuring systems and code so that they all scale easily, and adding new members to the team is easy because the code is setup in such a way that new people can get up to speed and start contributing right away. Technical debt can only be allowed for an immediate life or death business situation, and once we've made it through, it is reconsidered and fixed.

</comment><comment><USER70> I'm CTO of a machine learning/computer vision company, and quite a bit of the team's work is "gluing libraries together" \-- but even so, it's an intensely interesting, rapidly evolving field. Plus I get to play with pixels and cameras and VR. That being said, I paid my dues in the 90's and early 2000's doing web services and boring J2EE and gluing Java to native and PHP to Perl to CGI [bleech]

<comment><USER71> How did you earned that position despite your experience? Seems impressive to jump that far given that industry prefers very young and buzzword oriented (or phds in that particular field).

</comment></comment><comment><USER31> I was raised to think that in many professions greater technical knowledge/experience would lead to greater challenges, pay, and value creation.

This can be seen in medicine and law --> Doctors vs PAs vs Nurses / Lawyers vs Paralegals.

But in tech, which feels like it should be as meritocratic as others, the links between technical challenge/pay/value creation are much harder to find.

<comment><USER72> As someone in the healthcare space, those positions in healthcare are gatekept by degree issuing universities and government-issued licensure. This is for good reason: we wouldn't want a system where drugs can be dispensed by just anyone, we want some assurance that those who we give tightly regulated powers to are indeed qualified. Tech to me feels like much more of a nascent industry, there is much less of a guild system with its pay-your-tuition and do-your-internship type of requirements. Rather, software is much more of a free-for-all, winner takes all type of labor market. Also, software is not given the same visceral examination as prescribing of drugs or prosecution of crimes. So, while technical skill in those other fields is likely correlated with the degrees, in tech it may be that highly skilled individuals get roped into management positions or into work on high-value yet low-interest business projects.

</comment></comment><comment><USER73> A lot of people have told me that I would never use the maths, physics and CS I have learnt at school... and the opposite happened! In my job (at Distran, a start-up based in Zürich - founder), I had to use a lot of maths, electronics, physics that I learnt at school. Most of the people here are using their scientific/technical skills to simplify experiments, create new algorithms etc... of course this is the 10% part of the job as implementing ideas take most of the time. And you have the gluing part as well.

My answer to you would be to work in a start-up where a broad spectrum of tasks are to be solved by a single person. Hardware start-ups in particular need to cover an even broader spectrum...

One aspect I found very important was to "choose the good combats", something that is worth to fight for, so that even after years you are still motivated and proud of what you have done. E.g we are making a gas detector that have obvious good effects on mortality or environment.

</comment><comment><USER74> That is one of the main reasons why there are so many open source projects; many developers are bored in their day jobs and want to scratch their interesting problem itch in their free time.

But you have answered your own question: if you want to work on an interesting problem full time and get paid for it, one of the best ways is to start a SaaS on something you like.

</comment><comment><USER75> My day-to-day is mostly CRUDs, yes. However, the consultancy-company I work for has various interest-groups. I'm leading one for "Algorithms". We meet (on company time) and do various things related to that theme. Workshops, learn stuff etc. I think it's a smart way to keep us motivated, while also creating knowledgeable consultants.

Some recent activites: 1\. Workshop on evolutionary algorithms I made [https://matsemann.github.io/walkingea/](https://matsemann.github.io/walkingea/) 2\. Workshop on max flow algorithms people worked on: [https://github.com/Matsemann/maxflow- workshop](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

</comment><comment><USER76> I'm happy the technical part of my work is boring because as a business owner I receive more than enough excitement delivering excellent service to my clients. I think it is important to be a stakeholder and have complete ownership of a problem. Then you might prefer boring because all you care about is delivering a good result.

</comment><comment><USER77> I love working on user-facing stuff! It gives me the chance to learning about interests, human behaviour, interaction, etc.

But I think your main issue might be about keeping learning. Personally, specially since I never studied CS (Industrial Engineer bachellor here), I loved reinventing the wheel about programming while at university for fun. I made a bootstrap and jQuery clone that ended up quite popular. Since I have finished, it has been more difficult because of time and energy, but here I am, reading HN while working on my robot before sleeping.

I have given it a thought to ask for part-time working next time I am looking for a job to be able to focus on my passions on ny free time: [https://codewithoutrules.com/2018/01/08/part-time- programmer...](https://codewithoutrules.com/2018/01/08/part-time-programmer/)

</comment><comment><USER78> I'd take 20% pay cut to work on something important or useful to our world. The tiny problem is... there is no such thing. Everything seems meaningless crap, especially in small startups where I generally try to be. So yes, depressingly maybe, I'm with you OP.

<comment><USER79> A place to start are the YC NGOs

</comment></comment><comment><USER80> I'm not sure you'll have a lot of luck finding that in a job as much as pursuing personal projects.

That's where I let my creative and experimental ideas run free. Who knows, maybe one will become popular. Remember, it's quantity over quality with this kind of thing.

As for things you've been taught in college, and this is just my opinion: if you're being taught it in college, odds are there's about a thousand wrappers or frameworks to do the same thing without the need to about it. I doubt there's any demand for things popular enough to make their way into your curriculum. I'd say a lot of college is fluff and a waste of your attention.

</comment><comment><USER81> As a freelancer, occasionally I am hired specifically to solve an interesting or novel technical problem a particular organization is not staffed for.

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.

</comment><comment><USER82> I have a problem that appears to me to be both interesting and technical: There are about 3 billion people using the Internet, and there is lots of _content_ on the Internet, e.g., just for the _data types_ still images, video clips, Web pages, PDF files, audio clips, Web cams, IoT, and maybe more.

So, how is a person with an interest, at some time, to find the content for that interest? Uh, treat the interest as unique in all the world. Part of the challenge is _meaning_ , how to get the content with the _meaning_ they want?

So I used some pure math prerequisites and derived some new applied math for a solution. No, it's not data science, machine learning, artificial intelligence, cluster analysis, regression analysis, principle components analysis, classification, random forests, regression trees, discriminate analysis, neural nets, sigmoid function approximations, categorical data analysis, speech recognition, natural language processing, the semantic graph, etc. I haven't assigned a name to the math.

For users, the work is just an easy to use Web site, with just two main pages, very simple HTML, no cookies, no user IDs, and nearly no JavaScript.

The code is based on Microsoft's .NET with IIS, ASP.NET and a little use of ASP.NET. The total, on-line and off-line, is 100,000 lines of typing with a lot of in-line comments and about 24,000 programming language statements. There is also a lot of documentation external to the code.

I didn't use an "integrated development environment" and, instead, just typed in the code using my favorite text editor KEdit with some dozens of my KEdit macros.

So to me the problem has been interesting and so has the solution. Deep in the code is my new applied math. Also there are some new or tweaked computer science algorithms. As time goes on and I have a significant server farm, there may be more interesting problems with interesting solutions.

So far all the code appears to run as intended. It's my first code for this project and my first Web site, but I tried to write production quality code and not prototype code. And the site is supposed to be a good solution and not just a "minimum viable product". The architecture of the code and the server farm are fairly scalable just by some simple _sharding_. If this project gets to be a big thing, then scaling might become challenging with some serious changes in the code.

I'm a sole, solo founder and 100% owner.

I intend to announce alpha tests here on HN.

</comment><comment><USER83> My job (developing an interactive VR surgical training platform) has lots of interesting technical (and non technical) problems to solve. Shipping any product involves solving a fair amount of not so interesting problems and satisficing however.

I left a well paid job in games to work in VR because I thought there was a lot of interesting potential for non games VR applications. Seeking out work that interests you does often involve taking on more risk and often a pay cut relative to 'safe' / boring software jobs, although perhaps with some chance of a bigger potential upside in the right startup.

</comment><comment><USER84> What would be interesting for you? What would you like to do?

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.

</comment><comment><USER85> I am... I'm working on Gorgonia[0]. My goal this year is to provide a good alternative to Tensorflow and PyTorch. At the same time I'm working on several side projects that I believe will cause the fruition of an AGI.

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](https://github.com/gorgonia/gorgonia)

</comment><comment><USER86> Of course not. Neither am I working on a meaningful product. If people could just do the jobs they wanted to do, could you imagine how many cancer researchers, doctors, food distribution chain specialists and so on there would be?

Interesting technical problems are boring compared to meaningful problems - but there's hardly the money to improve society. Instead we get to put together software that shuffles money around or does the same thing as something else with some integration or blows up people in the middle east because that's what makes money.

</comment><comment><USER87> Been working on trading algo for almost 17 years. For the past 5 years the % positive results have gone up 10% yearly.

2018 was the breakthrough year.

Happy about the accomplishment...but a bit sad the project is completed...

</comment><comment><USER88> Photographers have a similar issue with a different take: they are trained on a tool, and apply it to a wide variety of problems. The difference, I find, is that in photography circles, photographers express a vast array of motivations and interests. They may be doing what they do because they are an artist, a scientist, a journalist, a human rights advocate, maybe even a computer scientist.

I would encourage you to look at computer science through a similar lens (pun intended). What _human_ problem are you solving?

</comment><comment><USER89> Welcome to a career as a Software Engineer my friend, every company seems to interview you like you're going to be a rocket scientist when all they need is someone to mop the floors

</comment><comment><USER90> IMHO technical work tends to be very boring and tedious unless you have a vested interest in it someway. I think the key to finding interesting technical work is to first set your sights on some problem or issue that is personally meaningful for you, and then see if can be solved by a technical solution. Case in point, my current day job would probably be categorized as "technically interesting" since it is a project using fairly cutting edge technology and methodologies to try and solve a problem that previous attempts have failed at multiple times. Now that is fine and all but a little over a year in, and while progress is going great, I just don't care anymore. I care about my team, and my organization but my personal interest in the work is non-existent. The luster of novelty has worn off, and it is easy to see a long stretch of road that glitters from time to time but offers no real peace of mind. I think my peace of mind will come from less technologically fanciful endeavours and more meaningful work, such as providing better local educational opportunities for the community than what I currently see being offered. As such, I'm currently in the process of transitioning into this line of work while also taking a huge pay cut, and I couldn't feel better about it. Good luck to you.

</comment><comment><USER91> No. I'm in engineering/desktop dev and very aware that if I ever switch to the web side of the world then I'll either do very menial stuff like CRUD, or very complex stuff like scaling CRUD. Unless there are actual _algorithms_ in what I do, I get bored very quickly!

I think it sounds like you should find a job with more algorithmic challenge. Games, finance, insurance, simulation, engineering.

Or just work on write the libs and tools. I don't want to write a sql query I want to write a sql parser.

</comment><comment><USER92> There are interesting problems (technical and business) in boring businesses. If you want to work on interesting technical problems you probably need to excel at a technical company. At an enterprise you are likely to find "interesting" business problems which you should really endeavor to solve in the simplest most fault tolerant manner. If you can work out which parts of CS interests you maybe you could find a problem to apply that to or research in depth.

</comment><comment><USER93> > Most of my work seems to be boring CRUD work where the challenge is gluing > libraries together or figuring out business requirements.

I think there is plenty of work out that is technically challenging, but most companies want apps that do solve their business requirements. (Shockingly, they want to make money :) .)

But I've found that 10-25% of my time is spent on tough technical problems. They may not be pure CS, but architecture, optimization or troubleshooting are all tough and technical.

</comment><comment><USER94> I'm currently working on a very interesting problem, currently we are making software that makes automatic phonetic transcriptions: [https://github.com/persephone- tools/persephone](https://github.com/persephone-tools/persephone)

The quick summary is that you take audio files which you process then run through some models that do labelling and at the end you get out transcriptions in the international phonetic alphabet [https://en.wikipedia.org/wiki/International_Phonetic_Alphabe...](https://en.wikipedia.org/wiki/International_Phonetic_Alphabet)

In the past I've worked on things that were very boring but also things that were very interesting, sometimes even in the same company. Even if you structure your career to try to spend as much time on interesting problems you'll still run into some boring stuff. If you really want to work on interesting problems it will likely take some effort with deliberate planning and you may end up making less money than if you did other work but these are the decisions that you will have to make. Try to find things that interest you and give you opportunities to master whatever it is, this tends to make work a lot more fulfilling whatever you do.

Incidentally in this language project I've done some work on a Web API that's mostly routine but it's very satisfying because I can very directly see how it makes a lot of other people's lives a lot easier. There's some very clear impact there and it makes some otherwise routine things a lot more enjoyable.

</comment><comment><USER95> Just submitted my PhD in ML (waiting to defend) and started working as a contractor in an exciting enough arm of a boring enough company.

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.

<comment><USER96> > but there may be interesting problems to solve as our team and product grows

So mush optimism..... just check out the other replies on this thread. Good luck anyway.

</comment></comment><comment><USER97> First of all, let me point out that this:

> 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.

...isn't a problem. It's a sign of maturity of the field. In 2018 _most_ problems that you can solve with a computer _should_ have an off-the-shelf library or service. (And most of the job of most working programmers should be mostly selecting and configuring existing solutions according to known design patterns. Like most engineering.)

Second, you've got to take into account that NN/ML/AI et. al. is going to "eat" a portion of all programming work within the next fifteen years or so.

(I think we're due for a _contraction_ of professional programmers, at least as far as the job has been done for decades.)

If you really want to tackle intricate problems you're gonna want to look at biology or nanotech. People in this discussion have already mentioned "matter compilers" and "systems biology".

If you really want to stick to Computer Science problems I would suggest coordination and control of swarm robots. (That's what I'm working on, FWIW.)

<comment><USER33> >Second, you've got to take into account that NN/ML/AI et. al. is going to "eat" a portion of all programming work within the next fifteen years or so.

Are there any repos I should look at to learn this? How is this possible when even humans can't read sarcasm online? I'm genuinely blown that this is even possible?!?

<comment><USER97> Repos, no. But, no coincidence, I have open two relevant tabs right now:

"Software 2.0", Andrej Karpathy [https://medium.com/@karpathy/software-2-0-a64152b37c35](https://medium.com/@karpathy/software-2-0-a64152b37c35)

> It turns out that a large portion of real-world problems have the property > that it is significantly easier to collect the data (or more generally, > identify a desirable behavior) than to explicitly write the program.

"Deep Learning is Eating Software", Pete Warden [https://petewarden.com/2017/11/13/deep-learning-is-eating- so...](https://petewarden.com/2017/11/13/deep-learning-is-eating-software/)

> The pattern is that there's an existing software project doing data > processing using explicit programming logic, and the team charged with > maintaining it find they can replace it with a deep-learning-based solution.

</comment></comment></comment><comment><USER98> Two essays on "interesting technical" problems.

"Richard Hamming : You and Your Research (1986)" : [https://news.ycombinator.com/item?id=4626349](https://news.ycombinator.com/item?id=4626349)

"Three Golden Rules for Scientific Research : E. W. Dijkstra" : [https://news.ycombinator.com/item?id=1504402](https://news.ycombinator.com/item?id=1504402)

</comment><comment><USER99> You should dabble in gamedevelopment, lots of room for innovation. Often you'll end up implementing some custom algorithm or solution where there were no previous library X that solved your exact problem. Sure, there are obviously lots of engines, algorithms, libs, standards here too... but I think it's one of the areas where you often have to come up with some new creative solution. At least, most of it is not CRUD ;-)

</comment><comment><USER100> Software is about design, not algorithms (by and large). There are _lots_ of design problems you can work on. The major issue is that this is as much a people problem as it is a technical problem. If you want to work on something interesting, you will have to transform your skill set.

And yes, gluing together libraries is part of the problem. How do you solve that problem. And no, your CS degree will not help you in the slightest.

</comment><comment><USER101> I think you are expecting 2 different goals to align itself for you: 1) work on interesting project 2) to be paid salary for it.

It rarely happens. If working on interesting project is very important for you, you can do it as side project or start up. Or, seek out specific department in companies where such interesting work is happening. You might also have to sacrifice some amount of salary to work in such companies/startup.

</comment><comment><USER102> I work on Primitive, a novel way of visualizing and interacting with code in VR: [https://primitive.io/](https://primitive.io/)

Half of the technical work is built around compiler technology (and more generally the implementation of programming languages, such as the various runtimes). It's been fascinating to understand how widely-used programming languages are implemented, which I talked about in a blog post about inner classes in Java ([https://blog.primitive.io/inner-classes-in- java-1804ed51b7de](https://blog.primitive.io/inner-classes-in- java-1804ed51b7de)). Similarly, it's been great to look at large open-source codebases and try to understand them. For example, we dug around the internals of IntelliJ IDEA ([https://blog.primitive.io/how-intellij-idea-knows-your- code-...](https://blog.primitive.io/how-intellij-idea-knows-your-code- smells-c0ea60e406d8)).

It's true that we often use compiler APIs that are already available, but we still have to understand how those compilers work, and what language features we have to support in our data extractions. Right now, we're a small, scrappy team, but in the future, we'll surely have to build out more infrastructural technology ourselves.

The other half of the technical work is working with 3D graphics and in data visualization, another area of CS I really enjoy. Making code _accessible_ at a glance is always challenging, but when I get to use that visualization to understand new code, all the hard work is worth it.

Combining all this with the non-technical work a startup entails (business development, UX, etc.) means I get to really flex my mental muscles!

</comment><comment><USER103> At my job? Nope. And I'm totally okay with that. I've worked on interesting technical problems in the past, and I've worked at companies with a huge social impact. I'm pretty have those behind me. Those things will eat me alive every time.

It's not that I don't care about my current job or that I don't do it well. It just doesn't involve anything even remotely interesting technically or socially. I work for a company that makes money. That's it. And I'm quite happy with that. I show up in the morning, do my job, and go home.

I don't have a wife or a family, but I do have me to take care of. And after years of neglecting myself physically and mentally, I'm taking the time to get some balance in my life. Get some exercise, spend more time with relatives and friends, more time with my girlfriend, and develop some of my own pet projects (both technical and musical) that I've been putting off for a long time.

You don't need an excuse to have a boring job that leaves you with extra time on your hands. It doesn't have to be because of a wife or husband or kids or a sick parent or anything. Taking care of yourself is a good enough reason to pull over into a slower lane or enjoy the one you're in now.

Most people are not really doing anything that interesting in the technology world. Many people who think they are doing interesting things are just hyped. The vast majority of the world's problems that can be solved by tech, have been solved. The only thing that's left is to implement them, and that's not super exciting a lot of the time.

If you feel the need to do more, you're going to find that need best met on your own or with a small group of friends working on projects. Most likely not at work.

</comment><comment><USER104> My work is also similar to OP's: CRUD and figuring out business requirement (so called 'domain driven design'). It's kinda boring but the pay is good and there is almost no pressure. Some of my better coworkers are leaving for big data/ai/next big things startups, so to keep my mind from getting too cruddy I am doing the following: \- Keep learning, reading old good algorithm books, trying new techs and skills to improve myself. My employer actually encourage this. \- Sharing what I have learned with my coworkers so I can have better understanding and also help my coworkers too (sometimes). This is also encouraged by my employer. \- Foster adoption of those techniques in company's own project. Even CRUD apps benefit from good type safe functional programming practice, or batching with akka stream etc... \- Aside from those I also help my friend with his analytics startup as my Scala skill is useful for that line of work.

All of the above help me with finding a new company in case the current one goes out of business too.

</comment><comment><USER105> I work at Cloudflare, and I at least feel that we work on interesting things. There, of course, still is components which are CRUD, but there are also people who work on hard crypto, low level optimization, networking at scale, managing petabytes of daily logs, etc.

The jobs exist, but you have to get pretty deep into the right technical universe before you're the right person for them.

</comment><comment><USER106> I've been doing this gig for a long time, and have worked on my share of "interesting" problems, but even while working on interesting things, the work that I perform is the rote, mundane day-to-day tasks of moving data around, gluing libraries together, all to prepare some work unit for the "interesting" stuff.

Think of it this way - an architect designs a house, it's fun, creative, but the work of actually building a house comes down to sawing a lot of wood, and hammering in a lot of nails. Even if we come up with some really cool solution to some difficult problem, the work of implementing it will be like building that house. Computer development is closer to a craftsmanship position than anything else, as pretty much everything is a one-off.

"Interesting" is also subjective. Have you thought about what interests you? Do you have a hobby or activity which excites you? If you find a job that intersects with it somehow, you will have a much more interesting job, subjectively.

</comment><comment><USER107> Seems like the issue is that any company will prefer to avoid a technical problem for $10k rather than pay $100k to do it in-house. I personally do a lot of interesting work purely because the stuff I'm doing cannot possibly be done externally (since I'm a scientist and systems engineer).

So I guess the trick then is to work someplace where what you want to do is exactly the business problem they're solving. Anything that isn't directly their offering is likely to be farmed out, and I think that will only accelerate.

I don't know the right software analogy, but I wouldn't advise a client to research new ways to manufacture PCBs if all they actually need is to have working PCBs. But if their business model revolved around a new PCB manufacturing method, it would make perfect sense for them to hire me to help them develop that new method.

Assuming it's similar with software, if you want to research making databases run faster don't work for a database consumer, work for a database provider.

</comment><comment><USER108> I'm very fortunate to be trusted to work/research in anything I think could benefit the organization in the long term. One of the coolest thing I have done was to figure out a way to vectorize part of our CPU bound algorithm. I was able to speed up at least 500x using AVX intrinsics. All that was done in C to be used in java via JNI. It blew my mind away.

</comment><comment><USER109> I only work on interesting technical problems in my free time. Nobody's really willing to pay for open-ended research.

(Luckily, interesting technical problems in computing don't actually require resources, other than time, and their interestingness is their own reward, so it's not like I need or expect anybody to pay me to work on them.)

</comment><comment><USER110> I am working on a problem that I find interesting, but may not be super cool by HN standards.

I am working with Julia migration from 0.5 to 0.7(beta) for a huge codebase, and currently contributing to the LibPQ.jl open source library that connects Julia to Postgres.

It was borne out of project need, but being able to help the open source project is very exciting for me.

</comment><comment><USER111> The technical problems I work on are interesting to me personally because I enjoy getting good at the particular subfield I am in. I don't think they're necessarily "interesting" in the sense of "advance the state of the art and publish a paper" but really that's a question for other people.

</comment><comment><USER112> Change jobs? I was working in digital identity, working on fairly interesting things like fraud detection and federated identity. But honestly alot of it was still gluing code - various vendors to handle various parts of the processes mostly.

Now I'm at another SaaS company that builds a CRM. Definitely less interesting on a purely subject/industry level but I'm happily learning new things that are personally interesting/satisfying - finally a chance to work with React, ES6, DevOps, even ML stuff. And just started a book club as well, going over structure and interpretation of computer programs.

Plus I gave myself a 50% raise and better benefits all around at this company - win win win. Granted I was obviously underpaid at my last job.

Don't stay if you're unhappy - there are plenty of places to work at that should keep you technically interested as a software engineer these days.

</comment><comment><USER113> Non-technical academic (Grande École in France) here. I'm at the edge of technical issues every day, though they fall just outside my responsibilities as security consultant and Risk Analyst (they are for the architects to deal with).

My technical knowledge/know-how (acquired over years of Linux, BSD, HN, etc.) still gives me an edge in understanding issues my clients face.

I'm not dealing with technical issues per se, but I can make the link between tech teams and management/non-tech: what one party expects from the other, whilst not sinking into a bottomless pit of unreasonable requests and expectations.

The work is fast-paced (~8 hours at most/project, over the course of ~3 weeks) so I have to adapt to a number of situations, where tech people might deal with said technical problems - and I can give them my 2 cents.

I'm also using my free time to work more on my machines, etc.

</comment><comment><USER114> I'm working on a project that utilize RGBD camera (realsense) and radar to extract body measurements. I've been developing a react binding for Qt Quick (react-qml) which allow you to develop cross-platform native application faster and easier. Personally I feel it quite challenging and rewarding.

</comment><comment><USER115> I'd like to think I'm working on something technically interesting: as part of my sabbatical I created "Expressions of Change": [https://expressionsofchange.org/](https://expressionsofchange.org/) As it says on the website: "The aim of the project is to improve the tools for constructing ever-changing computer programs by putting the changes themselves central in the programming experience." The idea is: if something is a large part of the problem domain, we better make it part of the solution as well.

The results are promising, that is: not ready for production yet by a long shot... but the kinds of things that I expected to work well in the "change as a primitive" world actually seem to work well.

</comment><comment><USER116> Used to be developing hardware and software swarm tech for drones. shows. (yes, I'm that guy)

Company didn't want to spend millions in sustainable infrastructure and evolution (we found another company to do it, they threw big bucks! Wink!) and instead politics pushed things to wilder [IMHO, unachievable] ideas. But that's research nowadays: politics and money. Went into walking robots last year, and... similar result. Now in product development, gluing s/w libs and resoldering circuits from a CM overseas. What a roller coaster last 5 yrs. But it pays the bills.

Hard to do anything challenging today, once the MBAs and sales folks come in (now at very early stages) all challeneges get snubbed for the release date, presentation deck, ecosystem "messaging" and manufacturing.

</comment><comment><USER117> >I have been feeling disappointed that I haven't been able to use my computer science degree to it's full potential.

Sometimes I feel this, which is exactly why I have multiple side projects which I can flitter between as and when the wind takes me. Like any subject, I think you need to remind yourself why you chose it and get back to the core of what you enjoy. I've not yet personally experienced burn-out in my job (and hopefully won't), but I can see people who have their work-job as their only interaction with computers and begin to resent it.

Depending on how much excess time you have, you can really float the boat out there. Time is the most valuable asset you have (which is what companies exchange money for), find a split between work, a hobby and socializing.

</comment><comment><USER118> I've been working in games industry for almost 10 years now (mobile games), just started a new job and it's horrible. I was completely burned out in my previous company due to simplistic and boring projects (did I mention toxic management?). So I'm two weeks into my new job and I'm bored out of my mind already! The problems present at previous company are gone, but there is a whole stack of other problems, like enormous tech debt, complete lack of organisation, just chaos. I'm tired, I don't want to fix someone else's mess again. I don't want to force people to start doing things properly. They are quite happy with how it is, so why bother? Now, I can stay here, pretend it's fine (salary is decent) and just plow through. But I can't stand it. Just going to work everyday is a pain. I need to find something meaningful, mobile games are just a pile of garbage. I remember when I started, everything was exciting, making games - a job you'll enjoy every day, yeah, right, it became the same thing over and over. And I find it difficult to work for someone else, especially if they are incompetent or don't respect people who work for them. I was thinking about moving to PC games, maybe one of the big studios (although I've already heard enough about most of them, that I'm not really interested), so maybe indie games or completely outside the industry, simulation, VR? Working on lower level stuff seems interesting (embedded programming), but I don't have required skills. No skills, no time to acquire new skills and I'm completely stuck... I still believe there is something I could be doing, that would utilize my skills and make the world a better place (even if just a tiny bit...).

That was slightly off topic, wasn't it? ;)

Am I working on interesting technical problems? There were some interesting problems in the past, but I'd say just a few each year, which is definitely not enough. I still find it interesting to work on personal projects, even though they are not that different from the games I'm making at work. Just putting the game architecture together, so every part fits nicely into place, is still fun.

</comment><comment> m-i-l Welcome to the real world:-) In my view, that's where interesting side projects come in. Either "side of desk" projects at your company, if you're fortunate enough to work for one which encourages or at least recognises innovation and/or has some form of incentive mechanism, e.g. management who actually know something about technology and who might actually be impressed by your enthusiasm and extra-curricular activities and consider you for promotion or a bonus or whatever as a result. Or if you really are in a dead end job with none of that, then side projects in your own time that keep you interested in technology and your skills current and which might even help you get your next job.

</comment><comment><USER119> At least Google/Facebook/Amazon/Microsoft seem to be hiring experts in all areas of Computer Science (compilers, machine learning, operating systems, networking ...), though the interesting jobs seem to be need a PhD or at least a Masters. If you have the degree, trying to get into a good group in any of these companies might be a solution to your disappointment. (you probably need to prep for jumping through some whiteboarding hoops, but still...).

At least in the USA (and probably Israel and China as well), there seem to be enough jobs that need solid academic credentials.

Alternatively. keep the CRUD expertise, move into the business side (which is fascinating if you have an interest in how the non technical world works).

</comment><comment><USER120> I'm curious to hear the tips of people who've avoided the extreme boredom/feeling of uselessness that many of the people in this thread have voiced.

I'm working at a startup, about to go into college, and am worried about this myself -- I've already started feeling that boredom a little bit, even though I'm lucky to have a job this interesting at my age, and this is only my second real tech job. I'm planning on majoring in CS and MechE, which I think opens up some opportunities for combining coding and building physical things, which I hope I'll find more fulfilling.

I know I don't want to spend much of the rest of my life writing code that I don't really care about -- how can I avoid that?

</comment><comment><USER121> Yes! (at least for me). I'm building a gamified iOS keyboard (self employed), and I have to build an auto–corrective, predictive engine for it. That was a detour for my main target, but is part of the MVP of a keyboard (as we are in 2018, and it's expected by every user).

The constraints of time and memory, really pushed me in revisiting a lot of data structures (mostly tries and DAWG), there is not much information out there, and not much libraries already build, so I have to get creative, read a few papers, tech blogs, etc and do it myself.

So, from what I'm reading here, the moral of the story is, _probably_ you will find joy pursuing your own interests, don't expect to find tech–challenges in your average job.

<comment><USER25> I had a look at the website, but don't quite understand how this will work, as there are no animations of the keyboard in action.

It does sound undeniably interesting though.

<comment><USER121> thank you for your feedback, I will change the typing animation ASAP, with a real action video.

</comment></comment></comment><comment><USER122> In my experience one of the main issues is those who hold the reins often do not have the technical expertise to envision something interesting. Therefore there is no directive to do something interesting, and thusly people do not innovate.

My solution to this is to 1) gain rapport with executive level people and inform them of paradigm shifting opportunities and 2) do the interesting things anyways, when no one is looking... This requires you to master your current position to a point that you make free time within your working hours. Automate, clean up, pay off techdebt until you find it easy to deliver enough to keep managers happy. Then start to work on toy projects to prove out interesting applications of things.

</comment><comment><USER123> I've been in and out of that boat for years. There's something about doing basic work that just drains creative people. I've found some solace in choosing projects that have a social good component associated with them -- CRUD that feels good. I think a big part of personal happiness is learning to shift your source of joy from actions to outcomes they lead to.

I'm also working on an open source programming assistant to help automate that kind of joyless work so developers can focus on the novel parts of their projects. Hoping it helps people like you get back to what you value. [https://github.com/opticdev](https://github.com/opticdev)

</comment><comment><USER124> A couple of months ago I quit the tech startup I founded to focus full time on research. So far, I'm hugely enjoying it and really glad I made the (scary) jump.

[https://octavian.ai](https://octavian.ai) if you're curious.

</comment><comment><USER125> I am at a point where I consider using a different framework than the usual to glue things together "interesting".

It used to be even worse though - I spent almost two years maintaining and developing an 8-year-old JavaScript codebase. Sure, it was _interesting_ , but in way I wouldn't wish upon my worst enemy.

Eventually I found an outlet for this need in my work after hours. If you're childless and your line of work is pumping out CRUD apps then you should easily have the capacity to spend an average of at least half an hour daily on interesting things. Embarrassingly enough sometimes I feel I've created more during these thirty minutes than a whole day doing the stuff that pays the bills.

</comment><comment><USER126> We all use stackoverflow a lot. And a bit of github too. I am trying to build a website similar to quora using the stackoverflow data dump. But here I am gonna recommend users questions to answer so that he can improve his reputation by answering them.

<comment><USER25> I completely misread this the first time round, so, to clarify just in case: the idea, as I read it, is to surface unanswered stackoverflow questions.

(I thought it was something about listing answers underneath questions or something, woops.)

This is indeed a VERY interesting idea, as the whole of Stack Exchange has pretty much hit saturation point now, where 99% of questions have already been asked.

The main challenge is that only Stack Exchange has the page metric data :) indicating what pages of unanswered questions are being visited the most.

<comment><USER126> No, I didnt mean that. I meant to create a different application mainly for software developers in discovering very interesting questions for them to learn from and then show them relevant questions for them to answer hoping to get their reputation increased.

</comment></comment></comment><comment><USER127> I've felt that way in the past, but IMHO the trick to doing interesting work is finding ways to make the job you're already at more interesting.

I started out as a simple PHP developer working on very boring server-side rendered CRUD apps, but pushed and pushed to get more responsibilities, and ended up redesigning those apps as a single-page web app with UX workshops determining the flow of the application. Later on pushed to be involved in management's research projects, which ended up landing me a job as principal architect of a hadoop-based IoT platform.

All the while the other developers at my company were complaining how boring their job was. You can lead a horse to water...

</comment><comment><USER128> In college I took a break to work on a startup for a while... that folded, so finally finishing my degree, I went into the military. They actually paid me to play OPFOR in war games and jump out of airplanes. When I realized that you get pigeonholed by your initial choices, I decided I wasn't going to make a career of it.

The next step was government contracting. That was a pretty cool company where we actually got the title "Computer Scientist," and it was pretty exciting as we worked on some interesting big data analytics problems and actually did some computer sciency stuff with natural language processing and entity extraction.

And that was great, except they started to have management issues. So I took a friend's advice and applied to AWS, where I got to work on a fairly new service team. I started to appreciate all the cloud hype, here we had a service that let you request specialized hardware on demand, so you fire a big blob of JSON off and set up a whole network in minutes.

After a while, the stress of the pager was getting to me, and I was tired of working deep on the backend and not being able to explain what I did to regular people. So now I work in consumer finance. I work on a financial methodology optimization engine. The problems are surprisingly fun, though it's complex as all hell and I'm procrastinating as usual... (And, granted, most people can't follow me beyond "oh, I have a 401k" but still.)

Moral of the story: at no point would I say I had a dream job, every one of them had some downsides and no one job used my CS degree to its full potential.

But in all of them, there were definitely projects where I felt I made a notable contribution. Over the years, I've definitely got my money's worth on that degree. All I've ever done is looked for interesting jobs, not so much asking "is this is my life's passion" but "are these people doing interesting things?"

(Another thought: some areas like government and finance are shockingly primitive, technologically. If you find a company that has smart people working in an area that's primitive, you can be one of the first movers.)

</comment><comment><USER129> Yes. But I understand you, and I agree. I was there. I quit my job in a big tech company a few months ago so I could work on more interesting problems. I started a company a few months, and it's been hard - exactly what I was hoping for.

</comment><comment><USER130> I think answers here will be skewed, since people who work on trivial programming tasks often don't visit websites like this.

I've worked on moderately interesting problems in some positions, and I've also worked in positions where everyone with experience was sucked into fixing infinite streams of fuck-ups from junior developers and contractors, who end up doing all the actual development.

IMO, it mostly boils down to control. If you have control and you are knowledgeable, you can solve "boring" problems in interesting and fulfilling ways. If you don't have control over how you do your job, programming can quickly turn into glorified data entry.

<comment><USER131> > I think answers here will be skewed, since people who work on trivial > programming tasks often don't visit websites like this.

This is a big assumption you're making, and given the answers, it would appear that assumption was incorrect from what I've read so far?

From what I can tell, most people don't find their work interesting but work for the money and find interesting things to do outside of work. The exception to this is probably those in leadership or research positions. At least that's what I have seen so far in this thread and also witnessed in my own experience.

</comment></comment><comment><USER132> I do. I gave up many higher paying opportunities and took risks. It is tough to turn down a good offer without a better alternative just because the work is displaying data on a web app. I've found the trick is find interdisciplinary teams. Look for jobs building medical/scientific research equipment, or renewable energy, or robotics. Also, the more experience that you get building CRUD apps, the more inertia your career has in that direction. Go to meetups, build cool things and show them off. Look at R&D grants from your state and cold email those companies. It will take time, but good jobs are out there.

</comment><comment><USER133> Have been in that boat on several occasions. Eventually escaped to do a PhD and research. Intellectually very challenging and eventually satisfying ... but the money was dreadful. So I'm back in the biz end of IT, boring but well paid.

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.

</comment><comment><USER134> We're not a boring company, but there is boring work to get done, and that sucks up a lot of time in a start-up where we should be focused on the more interesting stuff. Not only because it is challenging, but because our customers want it.

But, there is no way of getting the product into the customers hands, billing, support, marketing, etc. and all the other "boring" CRUD stuff that needs to be done to support the product.

This may explain why so much work is considered boring. Unless you have a highly specialized skill, and even then sometimes, expect the majority of your time to be taken up with more menial tasks.

</comment><comment><USER135> Longevity : www.infino.me

Sadly, getting funded for such important missions seems hard somehow

My advice: get yourself working in a pharma company or a hospital. They need people with real software skills. The pay will suck, but you will be saving lives.

</comment><comment><USER136> The last job I had where I did interesting things was my first job in the industry, fresh out of school. Pay was abysmal and it was part time, but the things I did actually helped people and made their lives easier.

Since then, despite my best efforts to create technology that actually improves things, the things I make mostly just end up being co-opted to game bullshit metrics.

I think the truth of the matter is that most of the work that keeps the world running is just plain dull, and about 80% of it is just to make the people at the top feel like they're actually doing something.

</comment><comment><USER137> technology drives business, switch your thinking from interesting technical problem to an interesting business problem solvable through the application of technology.

There's many more options when you think in those terms. For example, decreasing ER frequent flyers through figuring out a way to measure and track patient's medication usage. That's a real problem that, solved, would save a hospital tons of money and dramatically improve the quality of life for many people (especially the poor/homeless schizophrenic community).

</comment><comment><USER138> I'm twelve years out of college and I wrote a BTree for the first time since college this year. It'd been primarily CRUD up until this year, I've been with this job for upwards of six years, but it's been shifting into more hardcore data stream processing and I've been getting to write a lot of multithreaded high performance code utilizing cool things like hyperloglog's and cuckoo filters. It took twelve years but I'm finally getting to use a _little_ of my comp-sci.

</comment><comment><USER139> "figuring out business requirements"

Have you tried looking here for inspiration? The challenges here may be less technical, but that doesn't necessarily make them less interesting...

</comment><comment><USER140> I spent the first year doing manual testing hired as a dev, switched jobs and spent the next 4 years mostly fixing bugs in legacy C/C++, migrating build systems and upgrading compilers. Wrote 1 new feature which was mostly a hack on said legacy code. I would say most of my work is boring as hell, but the job pays well with decent benefits so I stick around. Slim pickins out here in South Florida. I've also given up on finding work that is not mind-numbing AND pays well.

</comment><comment><USER141> "Innovation is 1% inspiration, 99% perspiration" \- Thomas Edison.

If there is a 1% interesting part, and 99% boring parts, that is normal. I often have a interesting idea, and try it - this is starts out fun and interesting. Then I have to prove it - getting the benchmarks to prove it starts interesting but all the special cases I need to check gets tedious. If at the end of all that my idea turns our to actually be good I then have a lot more work to roll it out everyplace in our code.

</comment><comment><USER142> I feel it is sometimes helpful to see the other point of view. Lets say I had an interesting technical problem to solve and some funds, why should I give it to you instead of somebody else?

Also, as an aside, I've found that "interesting technical problems" stop being interesting when you are building a product. The sexy stuff is finished very early on, and then the vast majority of time is spent on polishing/bugfixing/documentation and decidedly non-sexy stuff.

</comment><comment><USER143> I sometimes try to look for process improvements & optimizations. It allows you to use some of those problem solving CS skills even if the actual day to day work is mundane

</comment><comment><USER144> I was a couple months ago, then I started my own thing and I feel great again. It's called Sidepact and it's actually really relevant to this problem! It's a weekend program for employed engineers to start companies—to get people out of their local maxima. Check it out and apply if what you're looking for next is to maximize fulfillment in your work and you want to own it :) [http://sidepact.com](http://sidepact.com)

</comment><comment><USER145> I do a lot of CRUD, and while it is really boring and very similar work, It all builds up to my global system that I basically developed from the ground up at the charity that I work for.

I have been able to invent my own projects along the way, such as mp3 to subtitles and a student portal for the college side of the charity. It's been really fun. However without writing a crud page for some new idea that someone has once a week I dont think I'd still be here.

<comment><USER25> > _mp3 to subtitles_

Interesting, how does that work?

</comment></comment><comment><USER146> Database technology for feeds. It's complex from a business and tech perspective. It does mean that I need to work long hours, but I really enjoy the challenge.

</comment><comment><USER147> I work as a consultant at a multi-discipline engineering consultancy, where we get to work on cross-discipline projects involving both mechanics, hardware and software. It is quite interesting, although not in the "advanced CS"-way but more in the "I get to build a windmill"-way :)

I know that many of these consultancies exist where I am, so it should not be impossible to find something similar, wherever you are located.

</comment><comment><USER148> There's a nice dictum from Hamming that goes something like, "In engineering, if you don't know what you're doing, you shouldn't be doing it. In science, if you know what you're doing, you shouldn't be doing it." You got a degree in computer science, but you are employed as an engineer. In most projects you should have at most zero computer science challenges. Once in a while you find a project where a quick back of the envelope calculation says that spending a certain amount of time up front trying to solve a particular research question is worth doing. That's unusual. The whole point of having a mature discipline of computer science is so that we can operate as engineers.

The interesting problems being wrapped in ready-made libraries and SaaS services is an engineering success. As a profession we have managed to take a hard thing and change the cost of it from some number of expensive engineers for some years plus maintenance on it to $29.99/month.

But that means that if you want to work on interesting problems of this kind, you need to be in a company that is building that switch from requiring an expensive team to off the shelf. And to identify that, you need to have a broad understanding of your domain, and where the pain points are that are shared but aren't worth the money for individual companies to solve.

Or you need to be at a company that is big enough that it can afford to work on those problems. Boeing, for example, has dumped a huge amount of effort into spline libraries beyond what the rest of the world has. At their scale and for what they do, it was worth the investment. Facebook wrote a replacement database backend (RocksDB) because the space savings it gave them over InnoDB far outweighed the cost of having a team build it.

It's a well known fact in other engineering disciplines that all the detailed physics and math you learn in college isn't what you use most of the time. The Engineering Commons podcast has [links]([http://theengineeringcommons.com/episode-124-mad- skillz/](http://theengineeringcommons.com/episode-124-mad-skillz/)) in one of its episodes to a number of studies MIT did on this subject.

Your other option is to say, "I don't want to be an engineer. I want to be a scientist." And then you have to look into the rather fraught career path of a researcher.

</comment><comment><USER149> Haha no. Lots of problems here but every time they're solved we go back 5 steps when we get a new set of software from the vendor and have to solve them again. And trying to automate that just means more steps to do every time we get a delivery because we have to retrofit all those scripts into the new software set, which we never know what actually changed and if our scripts will even work with the new stuff.

</comment><comment><USER150> I've been in the same boat... guess in any profit focused business eventually the cs stuff has to be wrapped up into some form of value adding service, and 'CRUDified' and delivered. I suppose which team you're on or maybe at a startup depending how early on you get into it, could impact how much time/opportunity you'd have to work on the interesting problems

</comment><comment><USER151> I'm cobbling together a language that is stock standard C with classes. Just classes, nothing more. I'm calling it C+.

</comment><comment><USER152> I'm a consultant, currently helping a bank move to the cloud, creating the base infrastructure needed to allow a few projects to get started. It can be slow at times, as you still need to connect back to the bank, but the challenges are very interesting, and getting closer to having a production load running out there is rewarding.

</comment><comment><USER153> Instead of looking for interesting technical problems, how about looking for interesting business problems. I find far more personal value in solving real problems for people than I do in technical challenges. Also, you're more likely to find more money is present in creating things that offer meaningful business value.

</comment><comment><USER154> No. We "moved to the cloud", everything became a "microservice", put together using existing libs, and I now spend my time trying to figure out why things running in obscure black boxes stop working in the middle of the night. I hate it. I wish I was coding instead of pushing buttons.

</comment><comment><USER155> Yes. Every day I get home from my Node.js CRUD-app drudgery and learn something new.

Sometimes I work on my machine learning skills (CuDNN/caffe).

Sometimes I design high-performance FPGA boards that meet tight EMC tolerances.

Sometimes I build game engines in C++ with Vulkan.

I'd hate to do any of these things as a day job, that would take all the fun out of it.

</comment><comment><USER156> If a job is "boring CRUD work" doesn't that imply an opportunity for automation?

I know it's not always possible to simply add "make my own job obsolete" to your own job description, but sometimes those who question how things are currently done are the ones who are asked to change it.

</comment><comment><USER157> Yup, all the time. Nothing is stopping you from using your degree to it's full potential, you are waiting for someone to assign an interesting problem to you. There are tons of interesting and difficult problem out there. Step up, find what interests you and take a go at it.

</comment><comment><USER158> job interviews are not just for companies to pass judgement on you, they're your chance to judge them. Take full advantage of this when interviewing.

You should quit your current job and find a better one, as we've seen in this thread, many people are happy. Maybe it's a technically challenging job, or maybe it's a boring company but filled with meaningful work or inspiring coworkers. The job interview is your chance to find out.

In your next interview, mention that you wrote this post. If the interviewer responds "oh yeah, I read that and felt the same and decided to quit this job", then great! youve learned that you shouldnt even bother finishing this interview. If on the other hand they say "oh, I read that and this place makes me happy" then it's a good sign.

Take your interviewers off script and feel free to be straight and honest about what you're looking for and what it's like there. Nowhere will be perfect, but this is a great way to learn if this job will be a good fit, or another soul-sucking chapter of your life.

A word of caution: managers will bend the truth and tell you what you want to hear. Devs on the other hand will often be incredibly frank if you ask then a direct question.

(I had an interviewer at Google and I asked something like "you sound kinda down, are you ok?" and they told me about how they're really depressed and their project is terrible and they don't like their job)

When I interview, candidates will ask me questions like "wow, that problem- space sounds really interesting. Are you planning on adding machine learning etc?". Recruiters will take this question and run with it, spinning an image of all the cool stuff you'll get to work on at some future time. I just respond "honestly, no. It's basically a CRUD app, the tech is nothing special but the area the business is in is very interesting and exciting and you might make a lot of money. If that's not what you're looking for, you probably shouldn't work here since I can't promise you'll work on somethjng cool like ML and I'm not going to dangle that in front of you for the next three years before you bitterly quit"

</comment><comment><USER159> Generally the technical stuff is fairly easy, at least compared to understanding the business requirements!

That said, probably 50% of my job is involved with interesting technical problems, combining cloud scale analytics and machine learning in the engineering sector.

</comment><comment><USER160> Yeah. I don't know - it doesn't seem that hard to get into problems you enjoy. Learn technology that's in interesting spaces, write a book on it or something. Then find work that fits your interests. Maybe I'm over-simplifying it?

</comment><comment><USER161> Well, someone wrote all those ready-made libraries/ SaaS services. If that's what you wish for, why don't you try writing one yourself? It might lead you to new interesting problems to solve down the road...

</comment><comment><USER162> Yup, I work for a company that does power systems optimization software. I get to work on the core problem and find ways to improve performance. It's a lot of fun and it combines software and electrical engineering.

</comment><comment><USER163> I arrived at a very similar spot after having spent about 10 years in tech. Many of the jobs I'd found myself in seemed to be comprised of busy work, or work that didn't actually contribute much to society as a whole. It was pretty disheartening, and I'd jump from position to position, looking for something "better".

Eventually I decided that my world was going to be of my own making, and that I didn't want to spent it unhappy. If anything was going to change, then I alone was responsible for initiating that change in my life and my perspective.

I ended up quitting my job and going to Europe, where I worked with traditional cheesemakers. I learned how to make cheese, milk and to take care of livestock. When I arrived back in NA, my wife and I moved to a more rural location, bought a small herd of livestock and began building our own dairy. For me, working with the animals, and producing these rustic, old-world styled cheeses brought a lot of fulfillment to my life that I hadn't found elsewhere.

It's now almost 10 years later and we've just expanded our operations again. Our production will likely be 4-5x what it was when we started, and we have an incredibly supportive and dedicated customer base that love our cheeses. Being able to talk with them, make them happy, and get their feedback on our cheese is one of my favourite times of the week.

The last 10 years have held some of the most challenging periods of my life. I've had to learn and master entirely new skill sets - marketing, plumbing, veterinary skills, MacGyver'ing equipment to work for just another day before we can get it fixed properly. We've also had our share of the bad times - <USER3> farming, the unexpected happens frequently, and we've teetered on the financial brink a couple times. Certain aspects of what I'm doing now have also become, "just a job" \- I don't really want to scrape livestock poop in the pissing rain, but someone has to do it. (And sometimes that turns out to be someone we hire to do it for us.)

I still pick up the odd tech contract during our slow periods, though those are getting fewer and further between. Turns out that tech wages pay for things a lot more quickly than farm wages, and a 2 month contract can pay for some shiny new farm equipment much more quickly.

I often joke with my wife that our decision to strike off on our own and start our own business was either the best-worst decision or the worst-best decision in my life; I just haven't picked which one it is yet. :)

Link to some of our cheeses and ladies: [https://imgur.com/a/VC2aire](https://imgur.com/a/VC2aire)

</comment><comment><USER164> I think that's where side projects come into play. I'm working on a language project on the side because, just as you mentioned, work consists mostly of CRUD APIs around tracking business resources.

</comment><comment><USER14> Well, the most common technical issue I ever have to deal with, I guess, is "this has to work for a huge volume of data," but it's not like it's day after day of hardcore optimization.

</comment><comment><USER165> Only doing interesting work in my spare time outside the office :(

</comment><comment><USER166> Geek for science!

There are trade off for sure, but I would go back to building things in the physical world rather than program for any other reason. note: I have been happily at it for decades

</comment><comment><USER167> What we're asked to do on the job shows a lack of imagination among employers, more than anything.

If you want to do something cool, go do it! (on your own time, of course)

No one is stopping you, after all.

</comment><comment><USER168> Though your job may be one thing, the Free/Libre and Open Source Software (FLOSS) community provides endless opportunity to do meaningful work on another thing.

</comment><comment><USER169> Mechanical: how do you reciprocally sweep a plate the size of a golf cart chassis such that it moves through space up and down at at least 10 times a second?

</comment><comment><USER170> Learn how to make no money from machine learning

[https://vimeo.com/232544884](https://vimeo.com/232544884)

Money, Time, Fun. Pick two.

</comment><comment><USER171> No, I'm only working on a boring problem. But since I can't say I've got a real computer science degree, I find it hard enough already.

</comment><comment> lachlan-sneff As someone who is a student, I'm working on writing a new-kind of operating system this summer for GSoC. I find it pretty interesting :)

</comment><comment><USER172> I suppose perhaps you can try and write a library or SaaS service that you find interesting? Or join a company that does?

</comment><comment><USER173> I used to be the product lead for AR. This may seem interesting but in reality, it wasn't at all.

</comment><comment><USER174> Wao. After all these responses, it would be interesting to know what are you thinking now.

</comment><comment><USER175> I'm doing research so I'm working on interesting technical problems everyday :^)

</comment><comment><USER176> It's a mix between technical problems and design but I'm working on making the law-making process more transparent and part of the challenge it to show meaningful diffs for each change. Concretely, we would like to parse each amendment, apply them to the text proposal and then apply the proposal to the current legislation.

TL;DR: putting the laws into git

</comment><comment><USER177> Using Haskell everywhere--from web browser, to backend, to mobile apps.

<comment><USER178> Haskellize all the things!

</comment></comment><comment><USER179> I've spent the last three years (straight out of college) teaching high school computer science. I'm headed to graduate school in the fall, but I've loved teaching, and think it's a shame that fewer CS people go into the field. (Pay isn't as good as in tech, obviously—I think teachers at my school generally make in the $50-80k range—but from a meaningful-work perspective, things are so much better!) A few points:

* My colleagues and I sometimes gripe about parts of the job, but we all agree we're never bored. We are shifting to a new environment (new classroom) every forty minutes; there's a ton of meaningful human interaction; and the life of the school depends so much on the particular kids in your classes / the whole school each year. And the pedagogical questions are really interesting, too (more on that in a moment).

* I'm lucky to teach at a school that supports a four-year computer science curriculum and has given me the autonomy to to do whatever I'd like with it. There are plenty of areas I didn't study in my undergrad CS degree (networking & concurrency, operating systems, distributed computing/cryptocurrencies, combinators and monads) that I've had the chance to dig into (read about, plan lessons about, develop assignments and demos about) in teaching my more advanced students.

* CS pedagogy nationally is in a strange place. There is a political push (and a good deal of funding) to get CS in every K-12 school. But very few people trained in CS go into teaching, and there is little consensus about how it should be taught or what curriculum should look like. Companies like College Board, Code.org, as well as corporations like Apple are stepping in to provide curriculum and training to teachers, but these curricula (in my opinion) leave something to be desired, partly because these companies have other interests. For example, Apple wants everyone coding Swift on iPads, and CollegeBoard wants people paying for AP exams. Things are in such a state of infancy now, though, that by getting involved in the community (going to conferences, blogging, creating high-quality materials, setting and example in your classroom), you have a chance to join the debate & help build a better consensus around how CS can/should be taught. There are a number of people doing awesome work already, and several really stellar CS programs at high schools across the country. But we need more!

* It's really amazing having diverse colleagues whose interests span many disciplines: I have colleagues who have PhDs in physics and English and Classics, who direct plays, translate poetry, write novels... In the tech industry, the majority is young, male, white or Asian, and consumes a similar "cultural diet" of news sources, books, movies, hobbies, etc. It's nice to be somewhere a little less homogenous.

</comment><comment><USER180> Machine learning on circuit board autorouting

</comment><comment><USER181> I'm academia and it's still interesting.

</comment><comment><USER182> as a C programmer, basically everything I've worked on for the past 10 years has been interesting.

</comment><comment><USER183> No.

<comment><USER184> Thanks for pointing out how poorly this question is worded.

</comment></comment><comment><USER185> Nope, still rocking.

</comment><comment><USER186> I feel I am working on interesting technical problems. However, it didn't come over night, and while there was certainly some luck involved, it also took a lot of hard work on my part, and actively looking for the challenges I wanted to be involved with. This is a little long winded, but here's how I did it:

I took a job right out of school in the early to mid 90s doing boring CRUD work. I did it for 2 years and made a good living at it. But I wasn't interested in it. I learned a lot by going on site with actual users, but I knew I wanted to get out of doing that type of work.

I was pretty passionate about Mac development and decided I should be making a living at it. I ended up applying to a few different small to medium-sized businesses where my couple of years at a (boring) Fortune 500 company looked good. I found one that was doing boring Mac development, but it was Mac development. I took the job, and the work conditions were horrid. I left after less than 6 months.

Here's where it gets interesting. I specifically looked for jobs that weren't working on business or productivity applications. I really liked graphics, video, and audio development. (I had been doing some in my spare time and even released some shareware that never made any money.) Eventually I found a small company that did Photoshop plug-ins and printing-industry graphics work. It wasn't as cool as game development or visual effects, but it was pretty cool. The company, though, was horribly mismanaged (by a husband and wife team that ended up getting divorced shortly after I left the company a few years later).

After seeing how poorly run the company was, I ended up starting my own company writing video plug-ins. I also started going to conferences related to Mac development, graphics, and video. I made connections at these events. I also met people in real life that had helped me with programming questions online. I signed up to be on user mailing lists where potential and actual customers hung out to see what the problems they needed solved were.

I ran my company doing VFX plug-ins for about 5 years. While the company wasn't going broke, it also wasn't making any money. I decided to shut it down, sold the assets, and found a job working on a well-known professional video editing suite. I've been at that job for over a decade and love it. It has given me numerous interesting projects to work on. It involves a lot of the same stuff that game dev does, but without the crazy schedules. (Well, usually.) I do interesting graphics and video work. (I could probably do audio if I wanted to, but the graphics stuff is keeping me very busy at the moment.) In addition to the boring parts of just cutting together clips, I've written hundreds of visual effects filters, transitions, and generators. I worked in 3D, VR, AR, etc. I've learned an enormous amount of human biology (why do we see things the way we do), technical specifications (29.97 vs. 30fps, color spaces, etc.), algorithms, artistry (can I make a real camera do this effect? If so, can I imitate it with a virtual camera?), craftwork, etc.

When I was getting ready to graduate college, I really wanted a job like this. I went to a pretty good school (so, yeah, a little bit of lottery winning in there), but there were enough students better than me that I didn't get picked by the cool companies. But I went on to study the things I thought I would have done at those companies on my own and eventually ended up back at one of those companies I didn't get accepted to originally.

Every painful step along the way taught me something. I learned a lot about users, business requirements, and the development cycle from the boring Fortune 500 company. It wasn't interesting stuff, but it was useful and important. I learned not to waste time with poorly managed companies at my first Mac gig. I learned a lot of graphics stuff writing Photoshop plug-ins. And I learned how to make connections, and figure out what users want from running my own company. And now I have what it takes to work where I wanted to work in the first place. It took me about 12 years from graduation to starting this job.

</comment><comment><USER187> yea, mee too.

</comment><comment><USER188> _Most of my work seems to be boring CRUD work_

Ditto! I operate a consultancy which does this for every company, most of which are non-profits. We do CRUD apps on nearly zero profit margin.

 _High tech fun stuff_

We've another ad tech company, where we are writing lots of Rust and Go code. And some auxiliary products which are lot more fun.

I think it's quite difficult to find everything at once place.</comment>