C#, JavaScript, T-SQL, CSS, HTML, ASP.NET MVC, Bootstrap, jQuery, AngularJS
- Efficient
- Simple
- Extendable
- Composable
- Easy to Maintain
- Understand and reduce task dependencies
- Use code generators
- Utilize separate coding scratch pads like LinqPAD and JSFiddle for quick debugging
- Balance the goals of design and performance
- Understand user behavior to design data flow and its timing
- Know general performance of common standard library components
- Avoid remote calls or reduce the number of remote calls if possible
- Write easy-to-test code
- Set up dependency mocks
- Balance usability and user experience
- User stories and acceptance criteria
- Reuse third-party components where they meet your requirements
- Small methods with single responsibility
- Establish common flow controls
- Use Layers and set up rules for each
- Open Close Principle
- Prototyping by extending first and minimize impact to existing functionality
- Inherit interface, not implementation
- Encapsulation can also be achieved with abstract base class
- Minimal, self-contained, independently-deployable services
- Having a code repository is a must.
- Automate builds
- Avoid release dependency
- Employ Blue/Green Deployment
- Allow runtime changes and modification if possible, such as CMS, to avoid deployment
- Avoid micro-optimization
- Set logging rules
- Monitor key indicators proactively
- Make the level of logging configurable (ideally even at runtime)
- Create two tasks for unplanned release (Short term and long term)