I try to take what I got from University. It's nothing new or special, but it helps me get along. I generally stick with a rapid-prototype design and follow through the (collective "ugh") waterfall approach. Start with your requirements, formulate an analysis, follow through with a a design and work towards the implementation and testing with focus on post-delivery maintenance. It's not new, and it's not in any way "productivity porn". But, for me it works and that's all that really matters.
Tools I use: I try to stick with an IDE like Eclipse. I know they're sorta frowned upon, but I like convenience. I use Git, personal preference. Some spreadsheet program for managing tabular data, like milestones, word processor for keeping a journal, and a scratch pad or whiteboard for scratch-work.
Tips I've accumulated after a while:
* Milestones help you focus your efforts for the "session"
* Design documents and whatnot sound like a lot of paperwork, and it is, but they are incredibly useful to have and keep around.
* Try to not intermix phases of development. Don't do design and requirements gathering or design and analysis at the same time. Do things in order. It keeps things clean and separated.
Nothing here is incredibly new and much of it is probably incredibly obvious to most people, but as a person who studied computer science, software engineering concepts were not stressed. This methodology keeps me going without getting stuck in "programmers block" wondering what-to-do-next.