We use the .NET framework and Sitecore CMS to develop a variety of websites, applications, and web services.
A solid foundation makes a big difference in the evolution of a project. Gather artefacts and communicate with stakeholders in order to propose an architecture, and be ready to shape it while retaining qualities such as scalability, extensibility, performance and reusability.
Find out from the beginning of the project the purpose, scope and how much extensibility you need to deliver. Decide the servers’ infrastructure and if a CDN will be used, as sometimes the solution architecture and code can change depending on this.
We love design patterns, but we make sure we know when to apply them and what their benefits are. Implement them in their simplest form first. We are using the Castle Windsor dependency injection framework in conjunction with Glass.Mapper framework.
We prefer MVC (no competition!) but we still have older projects that require WebForms. Use MVC as the default for new projects where possible.
QA engineers are our best friends but we also use unit testing. We write unit tests to cover our code functionality, build more robust solutions and prevent failure of builds on the deployment server through Team City. The main unit testing framework we use is NSubstitute.
We use ReSharper and code analysis tools (FxCop and StyleCop) to make sure our code is of the highest standard. Review of other developer’s code is a common practice: it helps us detect potential problems, bugs, and understand how other components of the project work. Therefore make sure you create a pull request in Git for new features.
We are using Sitecore versions 6.6 and 7.2. We always encourage clients to use the latest stable versions of Sitecore to benefit from the latest features.
We want CMS editors to have a clear view of their content so they can easily edit and customise the components of their website pages. To do this, a Friday content strategist works with engineering throughout the project. We separate content from presentation and then create patterns and rules for its use. Pages are split into logical components so they are easily reused. At the end of every project, we create a manual with instructions to familiarise CMS editors with the new capabilities.
Although Sitecore has more than enough capability built in, we always expand on the basics and provide our clients with customised components, pipelines, processors or workflows to improve web users and CMS editors experience.