Programmers are often preoccupied with improving their ability to implement complex solutions as efficiently as possible. While this isn't a bad idea, it should not be the primary goal. The goal of a software engineer is not to write as much code as possible, instead, it is to solve as many problems as possible. If each solution requires more lines of code, then you must settle for solving fewer problems.
Start With 'Why'
Your effectiveness as a programmer will be determined by WHAT you do, not HOW you do it. Before you start implementing a solution, reflect on the problem you are trying to solve. Does your solution do what is needed to fix the real problem? Does it do too much? Too little? Your solution should start with the smallest code change that fixes the problem. You can always add to it later.
Iterate
I can't emphasize this enough: you can always add more! If you can deliver a solution NOW that fixes the problem for 99%, then do it and address the edge cases in the next sprint. Delivering value to 99% of people today and the remaining 1% next week is much better than waiting until next week to help anyone.
Tending the Toolbox
Make sure you take the time to understand the tool available to you. You may be able to leverage existing solutions to save you time. But more importantly, you will avoid wasting time trying to force a tool to function in unintended situations. As the right screwdriver makes carpentry easy, so does the right software tool make programming easy.
Don't start coding with the intent to make the perfect solution. Make the smallest solution that can help people today and iterate on it tomorrow. Use your tools properly to simplify your implementation process. You will be able to make helpful software solutions as long as you remind yourself that you are here to solve a problem, not write code.