Settings

Theme

Ask HN: How to get out of making CRUD apps?

49 points by Distozion 3 years ago · 39 comments · 3 min read


Past few years I've been feeling more and more that no matter where I look, no matter to what companies I talk to, a lot of the jobs in the market around me essentially boil down to be exactly the same.

- A basic app (just because it’s thousands LoC, doesn’t make it less of a CRUD app)

- Deployed on AWS/Azure (rare occasion GCP), using pretty much the same setup to deploy

- The difference is the copy - quite often even most of the styling is similar…

Only challenges so far came from having more customers on the app at the same time, but even then it leads to more conservative tech choices, nothing else of note.

Yes, I know my skillset is quite generic - heavily JS/Node/React based, with a few years of experience in Python and very light knowledge of some lower level languages (had some passing interest in Go, Rust, no commercial experience to back it up).

I went through quite a few industries, but at the end of the day, all of them just feel the same. Working on a platform for a hedge fund felt no different from building for a retailer or a real estate company. Everything behind the scenes is so much of the same that unless the devs intentionally made some random tech choice or decided to use a barely stable new framework - you could hardly tell them apart from code PoV.

I’ve tried startups - but majority of them, until a pretty late stage are mostly smoke & mirrors, where you do everything to acquire customers while pretty much lying about the capabilities of your tech. Can be fun in the beginning while figuring out what the product is, but so far, all of them end up being a CRUD app, just with a different skin. When going large corporate, you get an extremely small part of the bigger stack to work on, which might be interesting first time around, but gets old after changing the search bar for who knows how many times that year for marginal gains (yes, while the changes are marginal, I do realise they can translate into millions every month).

I’ve had little luck of going for roles that do not directly correlate with my current experience. It seems that recruiters have very little interest in talking about any roles other than ones that fit my current stack exactly (node/react/python). Even had one that was a bit more direct than others and blurted out - “Why would you want to change with so much experience in your current stack”. I get it, easy payday for them if they hire someone who can work full on from day 1, but there's nothing in it for me to encourage a change. Sadly, recruiters are often the gatekeepers for a lot of the roles and as far as I can tell, unless I’m an easy hire with experience in the stack being hired for - they have little interest in a “wildcard”.

So here’s the question - is there a way out?

Any experiences of a major transition and how did you pull it off?

Is contracting the only way - accept that I'll be making CRUD apps and might as well maximise income from that?

agentultra 3 years ago

The vast majority of jobs out there in software development are CRUD applications. As you're well aware there is hardly anything novel required for these jobs other than domain expertise. As an engineer you're there to essentially do the busy work of gluing together frameworks and libraries.

Even startups are rarely doing anything novel with software engineering, computing systems, etc. They're usually stumbling around in the search for a market niche to exploit. It happens that they mostly use software these days to achieve that but it's absolutely a secondary consideration and hardly the most important. If the company manages to survive and gain adoption it's likely that the original code they wrote will get thrown out the window or wrapped up behind layers of glue code.

There's very little work outside of that which isn't dominated by people with decades of experience and expertise who aren't going anywhere because the jobs are few and far between. Compilers? Real-time operating systems? Traffic control systems? Filesystems? Operating systems? Media codecs? Security? Typically the funnel for these jobs come straight out of universities. They don't need to hire generalists, there's a smaller market of job posts for these projects, and they have a well-established base of people who've built up these niche skills and rarely leave jobs like this.

If you want to get out of line-of-business CRUD applications I think the key is specialization. You need to work one something niche and become a known contributor in that niche. It's more about who-you-know and being connected with the community in that niche.

  • _ah 3 years ago

    This, 100%.

    Of course, to get a specialization you have to become an expert. No one is going to pay you for that. There are more ways in than just out of university, but they typically require a lot of additional work/effort.

    A buddy of mine always wanted to make games. He's done it successfully... after several years working on "normal" software in Big Tech, he successfully transitioned to the games industry and is now a graphics engine expert. Victory! But it took a long time to get there: he had to learn a LOT in his spare time, and then it's been ~10 years of crappy underpaid jobs (with multiple layoffs!) for him to finally build up enough industry cred to where he can do the work he loves and get paid well for it.

  • DistozionOP 3 years ago

    While I do not expect to go for very niche jobs, in part of them being quite heavily location specific, even things that seem dev adjacent do not feel very easy to get into.

    As you mentioned, straight out uni funnels seems like one of the best ways to go into niche tech, but even few years back when I tried to go from senior to a junior role in a different space people were skeptical (at that point it was software engineering -> data engineering). I guess they do prefer someone they can train vs someone who comes with their own experience - be it good or bad.

  • cooperx 3 years ago

    The vast majority of applications out there are CRUD applications

mdcds 3 years ago

> I’ve had little luck of going for roles that do not directly correlate with my current experience. It seems that recruiters have very little interest in talking about any roles other than ones that fit my current stack exactly (node/react/python).

Yes! so frustrating! this is the reason why I left SF Bay Area circa 2016. No one wanted to talk about what I wanted to do next and my prof interests. Only about past experience and existing skills that I could immediately contribute.

I started my career as a fullstack dev doing crud at startups. Eventually I got interested in FP and learned Haskell in my free time. Then little bit of Scala. After I got laid off from a startup, I knew that FP and/or large scale systems was what I wanted to work on next and wasn't willing to compromise.

Eventually a F500 company with an office in Portland OR agreed to hire me as a contractor because they were looking for strong FPers to program in Scala and local programmer market was almost non-existent.

That's how I pivoted to working on distributed systems and products with millions of users, and never looked back.

Generalized advice: learn a skill with a high barrier to entry that is also in demand.

  • bruce511 3 years ago

    >> No one wanted to talk about what I wanted to do next and my prof interests. Only about past experience and existing skills that I could immediately contribute.

    This makes complete sense from an employer point of view.

    Firstly, they likely filtered you for an interview based on your current skill set. Meaning their need is for _that_ skill set.

    Secondly they're not interested in you learning new stuff on their dime. Especially because you'd just take the fruit of that learning elsewhere. [1]

    Getting hired into a place where they want your expertise "_after_ you've learned it" is a long game, and they need an actual body now, not some hypothetical body who may work out a year from now, who may leave.

    So here's the thing. If you want to learn something new, learn it (on your own time). Don't expect an employer to pay for that. [2]

    [1] given that they're not looking for that skill set themselves.

    [2] that said, the ability and willingness to learn on the job is an asset. Every business is unique in some way, and adaptability is itself a very useful trait.

  • DistozionOP 3 years ago

    I did try to do it, currently not yet successfully.

    Since I had interest in law, I started working on a LLB (a law degree that would be first step to be a lawyer in the UK) on the side, thinking I could pivot into a niche of legal tech (combining CS degree + law degree). At least that seemed like a potential possibility. While I'm quite happy with the skills I gained going through the law degree, it has yet to payoff when it comes moving to a more niche position.

    Next goal is probably committing more time into Rust, since I at least found it enjoyable (at least when compared to Typescript...).

    • mdcds 3 years ago

      you can do patent law!

      at least in the US you need an undergrad in a technical discipline + law degree

kingkongjaffa 3 years ago

This skillset is literally the poster child of HN.

> Yes, I know my skillset is quite generic - heavily JS/Node/React based, with a few years of experience in Python and very light knowledge of some lower level languages (had some passing interest in Go, Rust, no commercial experience to back it up).

Don’t be discouraged, lots of successful places are using this for good reason.

It’s a perfectly valid and respectable way to make a career.

  • DistozionOP 3 years ago

    For me it's getting to the point of it feeling like a grind.

    Yes, all things considered, my current pay is good. Looking around the market, it is on par with some more niche roles and around MAANG level here in London.

    The closer I get to top pay possible for the skillset as an IC, the less I'm interested in yet another role doing exactly the same.

VoodooJuJu 3 years ago

Why do you want out?

Sounds like you have a comfy, easy, copy+paste way to make a living with good income you can use to pursue serious passions - that's the dream. At the end of the day, it's just a job.

  • matt_s 3 years ago

    This is also the fundamental problem hiring managers/directors/recruiters face. Engineers are good at identifying patterns and patterns in different apps across different industries like CRUD apps is one of them. Once an engineer realizes many of these companies are doing similar things, there aren’t really compelling reasons to leave. Sure there are “mission” values of a company but really when it comes down to it as long as its not that industry (which will vary per personal experience) then as long as people are treated decently why leave?

  • DistozionOP 3 years ago

    While I do run a separate business on the side (brewing drinks), it does not help if the "job that makes the money" has close to no excitement.

    Getting through work hours is just that much harder.

ozzythecat 3 years ago

I did crud apps earlier in my career. I moved on to big tech, where there was again crud but at scale. Sometimes building workflows, but a lot of it comes down to doing X in a scalable manner and keeping costs low.

How’s your work environment? I’d encourage you to consider how much do you like your team, your leadership, growth opportunities other than just crud vs non crud.

I worked in big tech. Learned a ton. Made a bunch more money. Worked with some of the toxic people in the world. I mean, leadership was abusive. As I climbed the ladder, got coached on being an asshole to people.

Figure out your priorities. Grass isn’t greener.

hellohowareu 3 years ago

CRUD is just one of an application's layers. It allows adding/removing/updating data. This is simply a data-foundation for an application.

Of course it feels the same across apps and industries-- it's a concrete slab upon which you build things.

Add layers on top of that, such as:

- Data visualizations. You have data from your CRUD, so do something creative with it. If you're familiar with ReactJS, check out open source, free libraries such as: https://nivo.rocks/ and https://charts.ant.design/

- Data integrations. Depending on the business you're in, experiment with integrating your CRUD app with external data sources via REST API or GraphQL. For example, a CRM like Salesforce or Marketo. Or a REST API in a particular business domain. Or a Google product which a customer might use, such as google drive.

barelysapient 3 years ago

Sounds like your tired REST CRUD. Maybe try switching to RPC CRUD.

simne 3 years ago

Unfortunately, this is Pareto's rule: 20% of work make 80% of results, and there is Hollywood type distribution, that few biggest companies have 80% share of all industry.

So, 80-90% of all work, median of work, are low-tech type.

Where you could look for some high-tech - most probably in large corporations, air-space industry, and universities.

Sometimes, high tech appear in small business, but this is rare, mostly they struggle to be profitable, not for minimize tech debt.

Other heuristic is that on market grow, appear new opportunities and some of them are focused on good architecture; on other end, when marked shrink or recession, all businesses shrink new development and mostly just support existing features. So just wait for next economy cycle, or try to find, which segments have good grow.

Or create your business (startup).

unifyjs 3 years ago

Be ready for the opportunity. Get experience with the alternatives. Study event based architectures like the "Kappa Approach" (great presentation - https://www.youtube.com/watch?v=0cJ565r2FVI), install Apache Kafka and build something with it.

The world is slowly coming around to a better way. There are definitely jobs out there, mostly in the start up world, but even enterprise is making a shift, too.

I spent many years building many iterations of an event based platform as a side project (the most recent is https://unifyjs.io/) and am now living the dream - working part time as Head of Technology for a funded startup building an event based platform using Apache Kafka. The opportunity materialised and I was ready for it.

You are a kindred spirit! Don't lose faith, there are better ways than CRUD, and we're getting there slowly!

eklitzke 3 years ago

Do personal projects in some other lower level language you're interested in. Keep a personal blog and write about what you've done. Then apply to companies that are interesting to you. Obviously you will likely have to apply for more jobs in whatever new domain you're interested in than if you were applying for web development jobs.

I did this myself and after ten years of writing Python/Go professionally I switched to C++ and work on interesting low-level problems not related to web apps. I don't know exactly what you want to do but in the first job I got writing C++ professionally I was grilled pretty hard in the interview loop about my C++ knowledge specifically. Once you get your first job though things will be way easier because you'll have the right stuff on your resume and you'll also have day-to-day fluency with the language.

recvonline 3 years ago

I learned Rust (same background as you). This opened up a whole new set of companies.

Companies who are looking for Rust engineers usually do more heavy duty backend work or Blockchain. You can even try to pivot to embedded!

I doubled my salary and work finally with a great language!

  • jawmes8 3 years ago

    That's inspiring. Did you have to put up a portfolio of personal projects before switching to that?

    Other comments in this thread mention that dilemma as well. I'm in the same position trying to get Golang jobs, coming as a junior dev then running an IT service business.

roland35 3 years ago

Firmware isn't as lucrative as other types of software engineering (pay is generally in between electrical engineering and other software engineering) but it certainly isn't CRUD.

There are lots of types of embedded engineers. Some use embedded Linux, some use tiny 8 but processors with 16 kb of flash memory. I've also had a number of recruiters contacting me about designing custom server chips, like for security.

More and more big tech companies are getting into hardware, and it isn't just IoT. Pay at big tech for firmware would match other SWEs so it's a pretty good deal!

edmundsauto 3 years ago

> as far as I can tell, unless I’m an easy hire with experience in the stack being hired for - they have little interest in a “wildcard”.

What signals lead into your perspective?

If you have been explicit about taking lower comp for a more interesting role, you should be aware (external) recruiters are usually paid a % of your starting salary. So they would have no self-interest in helping you here.

My recommendation is to hang out where people are using tools you find interesting, then ask them directly about their employers. Try to find the internal recruiter, externals' incentives are not aligned with your situation in particular.

avereveard 3 years ago

Well user facing app are about exchanging data with users, so it's hard to escape it.

Data scientist and machine learning experts get to have more fun with data in general.

To escape data itself is even harder tho. High performance computing, iot and large scale networking touches data, but they have niches more concerned with moving it fast and reliably than actually interact with the content.

Eventually it all comes down to moving bytes around tho. Data is how computer founds mentally operate. In the byte space there's work to be had in encryption and compression, but those are quite saturated topics.

muzani 3 years ago

I've been saying do Flutter if you want to build CRUD apps fast. Do native iOS/Android if you want to build something a little more.I think being a native developer somehow aligned me to doing non-CRUD.

Projects I got to work on included a social media app with heavily customized camera, fraud detection app, a Netflix-style video app, a modern punch card with liveness camera.

Side projects might be another route. I have a side project that lets me mess with AI/procedural generation/evolutionary programming. Presumably this may lead to a job in those fields some day.

allisdust 3 years ago

The whole universe is a big crud. There is no escape unfortunately.

ragebol 3 years ago

Get into embedded software. Grab an Arduino and make it do something fun/useful. Then some other microcontroller etc. So learn C or maybe Rust.

I do robotics (I think manipulating stuff in the real world is more interesting than bits on a server or screen) and occasionally interact with a CRUD system, but can't recall the last time I did really.

KwisatzHaderack 3 years ago

I heard Amazon is looking for drivers.

ThrowawayR2 3 years ago

What you might try doing is to first decide what kind of non-CRUD stuff you want to do, find a company that does both that and web work, join the company, and then work your way around to an internal transfer after proving yourself there.

lakomen 3 years ago

It's all the same and that's good. Boring is good, boring is predictable, boring lets you sleep at night.

If you disagree, do rpc.

The hard or time intensive part is frontend/presentation anyway. Backend being boring is a good thing

dev_0 3 years ago

Everything is essentially CRUD app. Even Kubernetes has API....nothing wrong

is_true 3 years ago

I run a couple of services and 90% of the job is doing the CRUD part, making the user life's easier is a big selling point.

The project which has "less crud" is a weather related service.

dangarbri3 3 years ago

Learn a new stack, doesn't matter how simple the project is, it's for you. Then slap the new stack on your resume and apply. You can honestly tell the recruiter about a project you did in the stack they're looking for and then interview with the team where you can also talk about your project you did with their stack and the work you've done in the past.

I recognize the problem, this is how I managed to go from embedded systems firmware to sys admin/web engineer.

uptownfunk 3 years ago

You don’t have to do this type of work, you could join AWS in some type of role and switch to something else within a year

codegladiator 3 years ago

Automate your way out of it

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection