1. Think then write code
I teach CIS courses at the college level and I have to tell students this all the time when writing code. THINK then write code. Solve the problem in your head or on paper, then write the code. Too many people when they start out are focused on writing the code and not solving the problem first. Programming is 90% logic and 10% syntax (one person I know said the remaining 10% was something totally different but I can't repeat it) Software Development is mostly about solving problems, not making things show up on a screen and in a browser. People pay developers ridiculous amounts of money to solve problems that save time, money or both. Those business people do not care about the code, they just care about if the software does what they want it to do.
2. Break Big Problem Up Into Small Pieces
Another piece of advice I recently have to tell students is don't try to solve a big problem all at once. Break the problem into small pieces and solve the individual pieces. Now I will admit this can get you in trouble but for the most part it works.
A few years back I went to a developer conference and this guy gave a keynote on Complexity. He talked for a good 90 minutes about complexity and how to deal with it. I'm not going to type for 90 minutes so I will just sum up what he said. The way to deal with complexity is to break up the problem into smaller pieces.
3. Learn From the Past
If you have read any early computer age software development life-cycle books they all mention flowcharting. You mention flowcharting today people think you're crazy. But they did that for the simple fact that they learned that you should solve the problem first before writing any code. I have seen too many people just starting out in programming get stuck on a simple problem because they are trying to solve the problem and write code at the same time. You might be able to do this once you have more experience. If you develop the skill of solving the problem first then writing the code your productivity will definitely increase because you won't spend time going down dead end paths. For the more complex problems I still whiteboard the logic first before writing any code. Just because you can think and write code at the same time does not make you a better developer than me. (smile)
Bonus Advice - Read
I know many people do not like reading boring technical books. But trust me the lessons of the past can still help us with the future. Go and read a few of the classic software engineering books. There are plenty of posts on Dev that have those books. Free free to make recommendations in the comments.