Here are some advices from my experience.
- Explore new ideas with the Mathematica frontend. Don't hesitate to use sections and subsections in the frontend to structure your work and experiment various possibilities.
- When you have instructions that work package them into functions, still in the frontend.
- Then package them into packages.
- Use Wolfram Workbench. It's really important from my point of view for big projects as having a debugger is very important. Also you can rename variables across multiple packages (files) which is very convenient.
- Once you already have a project big enough, you can write some functions directly in Workbench.
- Write unit tests, before or right after writing a new code that works. Workbench handles unit tests.
- Use code versioning, for example Git with the plugin Egit in Eclipse (that you will use if you use Wolfram Workbench).
- Reuse, reuse, reuse. Never write twice the same thing.