Different software engineers get motivated by doing different things. Some get motivated by fixing bugs, others like trying to break the code. Software engineers like me however, like to solve complex problems, coming up with algorithms and data structures to solve the problem the best way.
While it is easy to provide enough bugs or code to break, it is much harder to constantly provide new problems that are challenging enough. As a result I often start to feel bored at work after a couple of months, but there are ways to solve this and keep the challenge.
Compared to fixing bugs, finding a solution to a complex problem will take a lot of time. Moreover it takes a lot of time to completely test it and verify it works as required. This means that the rate at which these problems have to be provided is much less, yet most companies fail to provide any of these problems at all.
The mean reason for this is that once the core of some application is written, only a couple of small new feature are provided in a ad hoc way of doing. These feature may contain enough challenge, but because they are treated as a ‘small extension’ not enough time is provided to properly investigate the problem but instead a quick solution is chosen. This solution is often not enough and new small extensions will be added later on.
Besides software engineers like me feeling bored, the result of this extension creep is a software application that lacks on overall feeling of integration, instead it is a bunch of loose coupled components that are sold together. I therefor highly encourage of having a clear vision of how things work together to create a bigger whole. When you do this, there will always be a challenge as reworking and rethinking stuff is essential to achieve this goal.
Another way is to seek new challenges by working on a project-basis. By doing this you get a lot of variation and there is always something new for you. If you are however like me and prefer to work on a product and see it grow and get expanded then this is not an option.
To all software engineers who feel like me and often have problems staying challenged for more than 6 months, I would advise to keep pushing for that vision of the product. If however the company or management doesn’t have an vision themselves then the product will never reach its full potential, nor will it succeed in keeping you challenged for long after the initial version. The best that can happen is that you get challenged from time to time as new features are added.