It wasn't until years later that I would go to college and get a formal education and grounding on SDLC concepts, languages, parsing, compilation, refactoring, modularity and OOP stuff. But along the way I picked up some street smarts (as if nerds really hang out on streets. you know: outdoors. where the sun actually shines and people might burn or get eaten by wild animals or something) and it occurred to me during a recent conversation that one habit I've stuck with has never failed me:
Doodle your application designs on paper, with a real pencil.
Don't get any closer to a computer (of any kind) than 50 feet. Nothing but paper and pencil. Everything. ER diagrams, workflows, forms and UI's, APIs and hooks, interface vectors, all of it. You'll absolutely crumple some paper and build a pile of stupid ideas around the waste basket (after all: nerds are horrible basketball players). The bigger or more complicated the task, the better this works. N-Tier client/server apps, web services, desktop apps, mobile apps, API frameworks, web applications, infrastructure automation services, you name it. Paper and pencil.
This isn't radically new, and it's not even my own idea. It's been discussed for years, and for good reason: IT WORKS. There are many examples which discuss aspects such as UI design, overall design approach, templates for specific design aspects, 18 great examples of sketched UI wireframes, and dozens more. If you typically go from thought to keyboard, try this approach instead. You might be pleasantly surprised.
Paper and Pencil.
Don't write a word of code on a computer until you've ironed out everything on paper first. At least a few hours, if not a day, even several days. After you've worked out the mental challenges, then the modeling challenges, then the material challenges, then the UI design, then the security model, then the data flows, then the bathroom (you will need a bathroom break for sure), then lunch (or dinner), then transfer it to the computer, carefully.
Paper and Pencil. Try it.