Congratulate yourself for actually accepting planning is required with SharePoint. I know Microsoft likes to tell us you can just turn it on and use it, but we all know that’s just not the case. Too many places are stuck with the pilot that never ends. Starting with pilot or POC is great approach, but for it to work you need to circle back and actually plan a proper deployment that includes DR, Availability and Performance. The Pilot that never dies had none of these consideration and is like a ticking time bomb, who will be the first user that picks up the phone to complain the site is unusable? Will it be the CEO? More importantly will you be able to fix it?
To begin with make sure you have the correct people for the job. If you are going to train up internal resources to do the job, ensure the training happens early, ideally before any solution planning. This is because the team planning the SharePoint solution will need to lead the end users to the solution. It's hard for the end user to ask for what they want, when they don't know what is available. Ask any SharePoint professional and there are many tools, tips and quirks to using SharePoint that only someone with experience would think of. If no one knows how SharePoint works, it becomes the blind leading the blind. Which is why, even if you are planning to train up your internal resources, you should ensure you have an experienced SharePoint professional on the project. As we all know, there are something's that only experience can teach us.
Once you have armed your team with this knowledge, the end users are going to ask for things that are known limitations of SharePoint. While it is always a great strategy to use OOTB functionality, don't be too rigid on this. Rather than just saying no, or agreeing to a complex custom solution, be prepared with work arounds or alternatives that may speak more to the spirit of the request. After all, if the site is usable to the end user, who is going to use it. But if it's overly customized who is going to support it?
Now that you have enough information to design a solution that will meet the end users' needs don’t' forget to consider the following in your design: High Availability, Disaster Recovery, Automated deployment to the multiple environments (UAT, Staging, Production), Security, Internal vs. External access, mobile (becoming bigger by the day), performance and of course monitoring.
Be agile in development, especially with people that don't have much SharePoint exposure or experience. Again, when people don't know SharePoint, they can't know what to ask for. By giving the users prototypes or sneak previews into the solution you can identify gaps early and have a much better chance of delivering a solution the end user will actually use.
Test, test and test; be sure testers also have SharePoint training. Otherwise how will they know what to test and how to test OOTB features? During this testing be sure to test in an environment that simulates production. If you're going to have a highly available environment with multiple Web Front End Servers, or you're using SSL, be sure to test these conditions. I've seen many issues arise from these that are not reproducible in a single WFE, non SSL setup. In addition ensure you test your nonfunctional features like Performance, High Availability, Disaster Recovery and monitoring. After all if you don't test them, you don’t' have them.
Now that you have it in Production, the job isn't over. We've simply moved to the next step in the SharePoint lifecycle: Build, monitor, review and improve. After all the end users job is always evolving, your site will need to keep up.