Has been developing in C# for 8+ years. Including MVC, Webforms, WPF, console and Windows Service applications. Primarily in .NET 4.0 and above
Has been both a team member and lead architect for various MVC 4 and 5 applications
More recent applications have involved taking advantage of ASPNET Web API. Our AngularJS applications made heavy use of these
Has worked primarily with SQL Server. Entity Framework with Code First Migrations has been used for the last two years with great success
Developed and architected multiple N-tier applications. From small websites to large SPA used across 9 countries
Has been developing JQuery enabled websites through out his career
Recent apps have been development as SPA with AngularJS. Including a large multi national application
Designs clean and well formed HTML using LESS, bootstrap, HTML5 and CSS3 standards
Has followed the Agile Scrum process. Following 2 weeks sprints and iterative development, continuous integration and regular deployments
Recently has been refactoring some parts of our system to use CQRS. Denormalizing data to improve applicaiton performance
Has started looking into DDD to improve system architecture and increase the system relevance to the end user
NHibernate has been used on a couple of personal projects
Designing a system that will truely meet the clients requirements takes planning and thought. One system does not meet everyone's needs.
If a system can not be tested there is little assurance it will always work as required. Unit testing is the first step in assuring this quality. Integration and smoke testing also helps ensure quality.
A system is nothing if it can not be deployed and used by the end client. Automated and repeatable deployments are vital.
If a system's interface is not well designed it makes little difference how well it performs as the user will struggle and probably give up using it.
It is not good enough to produce CRUD interfaces. Users should be guided through the application. Each action having a purpose, guiding the user intuitively to their end goal.
Websites come in various forms; blogs, a point of contact for a person or business, an online shop front through to managing a business' end to end process. Choosing which form to use is important.
A website application can manage many things. They can provide real functionality, improve a users experience and improve a business' progress.
People also underestimate the time they spend debugging. They underestimate how much time they can spend chasing a long bug. With testing, I know straight away when I added a bug. That lets me fix the bug immediately, before it can crawl off and hide. There are few things more frustrating or time wasting than debugging. Wouldn't it be a hell of a lot quicker if we just didn't create the bugs in the first place?
Transparency is valuable, but while many things can be made transparent in distributed objects, performance isn't usually one of them.
An idea isn't worth that much. It's the execution of the idea that has value. If you can't convince one other person that this is something to devote your life to, then it's not worth it.
Listen to your customers, not your competitors
There’s a subtle reason that programmers always want to throw away the code and start over. The reason is that they think the old code is a mess. And here is the interesting observation: they are probably wrong. The reason that they think the old code is a mess is because of a cardinal, fundamental law of programming: It’s harder to read code than to write it.