I am working as a software engineer for a very successful startup. The hiring bar is high, pay is good and I should be happy. Except that I'm not. I am extremely bored to the point that I struggle to get myself out of bed every single day.<p>All I do is translate requirements to code. The biggest challenge is to understand what's already there and try to not break things. All the design choices are already made, and I just follow existing patterns.<p>As soon as you become familiar with these patterns, there is no growth. If you want to grow, you need to spend your own time learning things outside of the company, be it courses or whatnot.<p>My question is:
Have you experienced this and if so, what did you do to combat this?
Is this generally a normal thing in the industry or only specific to fast-moving startups?
Maybe my expectations are just unreasonable, and if so, how do I know?
How senior are you? Or is this your first job?<p>When you start out in your career, companies put tight bounds on what you can do. You get a narrow set of requirements with clear expectations for what you are to produce.<p>Over time, you prove that you're able to get things done on your own, exercising good judgment along the way. As you move up in seniority, the scope of your responsibilities expands. You're given bigger goals, broader targets, and more leeway for how to accomplish them.<p>This is a general rule, but there are exceptions, of course. Some companies end up so overstaffed that every step of the process is carefully divided up into different people's domains. Generally speaking, the more overstaffed the company, the less autonomy you're going to have and the narrower your scope. Highly funded startups are notorious for overhiring and therefore pigeon-holing a lot of people into gruntwork roles.
You seem to be in an org that has a well established process, and this can be a good thing. Many startups have 'requirements' scribbled on a napkin, and everybody 'just starts coding'. This type of environment is a little more 'exciting' than many would like. Perhaps you can seek to be someone who writes the requirements, or analyzes them for risks before they are passed to the developers. Learn every part of the process, and it becomes something you can bring to your next position.
There are 3 fundamental types of enterprise software.<p>Case management/workflow engine
Transaction processing
Inventory management.<p>Once you've done all three, you're pretty much spent in terms of novelty.<p>If, of course, you don't go up a level and start to ponder organization as system for producing output, or industry as mechanism for facilitating businesses and so on.<p>The labor is lame, the art is in learning to arrange the pieces and reproduce functional units of people. At least that's the trajectory I've been on as of late. It's at least taking me somewhere I haven't been before, even if it is further from the nuts and bolts.
If you want more "fun" in your job, seek out the things that no one else wants to do. These might be menial tasks or old software no one wants to own or gnarly tech-debt ridden projects that no one wants to touch.<p>Take those on. Solve problems with them. Automate and replace them. Everyone will ponder your masochism but will also love you. And since no one else wants to be involved in them, you can actually enjoy charting your path in how to work on them and make them better.
You may be better off in a less structured, earlier stage environment. That has its own share of problems, but you'll have more freedom. Like everything else, there's always trade offs..