Tag Archives: software

Treat Performance as a First Class Citizen

Steve Souders wrote a very interesting blog post recently (http://www.stevesouders.com/blog/2013/08/27/web-performance-for-the-future/) about treating “performance as a discipline”.

The premise of this article was that performance is such a fundamental issue that a separate team should be created to focus purely on performance.

Seeing this view put in writing by one of the leaders in the performance arena was very refreshing to me. At Intechnica we have been pushing this message for a number of years and it is nice to finally see it gaining some traction within the industry. We formed the company to deliver this capability into other companies.

For me the battle that we face day to day is the battle to get people to treat performance as a First Class Citizen within the development industry. There does often still seem to be a sense that good performance is just something that developers should be able to achieve with more time or more kit.

The reality of course is that that is true up to a point. If you are developing an average complexity website with moderate usage and moderate data levels then you should be able to develop something that performs to an acceptable level. As soon as these factors start to ramp up then performance will suffer and will require expertise to solve the problems. This does not reflect on the competency of the developer, it is just a reflection that a specialised skill is required.

The analogy I would make to this would be to look at the security of a website. For a standard brochureware or low usage site then a competent developer should be able to deliver a site with sufficient security in place. However when the site ramps up to a banking site you would no longer expect the developer to implement the security, there would be an expectation that security specialists would be involved and would be looking beyond the code to the system as a whole. This is no negative reflection on the developer, just that the nature of security is so important to the system and so complex that only a specialist can fully understand the solution that is required. This is acceptable because security is regarded as a First Class Citizen in the development world.

Performance issues often require such a breadth of knowledge beyond simply looking at the code (APM tooling, load generation tools, network setup, system interaction, concurrency effects, threading, database optimisation etc.) that specialists are required to be able to solve them.

These are not better than developers, they just have different skills.

At Intechnica we have run projects where we have a performance scrum team. Leaving developers to deliver functionality with usual performance best practice but no specific defined KPIs. Then applying the acceptance KPIs afterwards and passing failures onto the the performance scrum team backlog.

We have also developed projects with performance engineers within each scrum team and applied KPIs as part of the feature we were developing and to the system as a whole.

Both are valid approaches. There are other valid approaches. As long as performance is treated as a First Class Citizen then you will be on the right track to performance success.

Advertisements

Leave a comment

Filed under Opinions

Positive Technical Debt part 3: Investor demanding payout

This is a slightly different problem related to Technical Debt and one that is more difficult to manage.

In financial terms I would liken this to having an initial investor who gives the business capital with no expectation of repayment. This capital drives expansion, but a certain point the investor demands full repayment.

From a technical perspective this is when a technology selection is made because it offers benefits in terms of business progression that allow you to get to where you need to be in the most beneficial way (e.g. because of speed of development, easy availability of staff, availability of other technologies/partners to integrate with). The system can be developed in a correct manner with no technical debt but at a point when technology becomes unviable and the only way forward is a fundamental re-architecture of the system.

The sort of events that could lead to this are

  • You reach the limits of the technology in terms of capacity for the level of usage that you now have. An example of this would be Twitter and Rails or Facebook and PHP. On a smaller scale I have worked with companies who wrote their first system using Access as a database and as the company grew hit the capacity of that platform and had to re-architect to use another database.
  • The platform/technology used is no longer available. This is a scenario that has become more likely now that people are using more 3rd party cloud based services. It is possible to wake up one morning and discover that a core part of your system is actually no longer available.

Again this is a positive form of technical debt, as it is taken on board with a view to getting benefit from a system as quickly as possible.

The way to deal with this sort of technical debt is largely down to good system architecture. Systems should be architected in such a way as to abstract away the connection with technologies as much as possible, making swapping them out as simple a job as possible. Systems should be built to horizontally scale to allow capacity problems to be dealt with by throwing tin at the problem. It can also largely be dealt with by technology selection; the majority of systems we write have a predictable growth plan (not many of us write Twitter!) and we can make a reasonable estimate of the longevity of technologies and technology providers.

Other posts in this series:

Leave a comment

Filed under Code, Technical Debt

6 Rules for Good Specifications in Software Development

In recent months we have overhauled the Intechnica development process to use a lot of the BDD – Behaviour Driven Development –  and “Specification by Example” (http://gojko.net/) processes and tools for specification definition. As such we have defined the 6 rules of good specifications:

 
1. Communication between client, BA, QA and developer:
The more all of these people talk, and the earlier they are involved in specification stage, the better.

2. Don’t define user experience and business functionality in one place.
It leads to repetition and confusion. It also tends to lead to underlying systems designed around the UI rather than the business domain.

3. Illustrate all business logic with examples
…not with wordy descriptions.

4. Illustrate all UI with annotated pictures
…or ideally full HTML prototypes.

5. Specifications must be testable to form objective acceptance tests.
Tests should be automated and built into your continuous integration process.

6. Specifications should be living documents
…and evolve into the living documentation of the system.

View some of Andy’s presentations about software development on Intechnica’s SlideShare

4 Comments

Filed under Opinions

First thoughts on Windows 8 – the Developer standpoint

I’ve been to a few demos recently of the full Windows 8 experience so thought I’d put a few thoughts down about it.

For those who have not seen it, Windows 8 really is “revolution not evolution”. It throws away many of the concepts we have been familiar with since Windows 95 (start menu, task bar…) and even some of the core concepts of Windows such as … well… Windows. It is the first OS designed to work across desktops and tablets.

The core of the new system is the Metro interface which genuinely doesn’t have windows. All applications are run full screen for what (I have heard called many times during these demos) is a “fully immersive experience”.

Windows 8 will seamlessly integrate between desktop, tablet and mobile.

The standard means of navigating around and between programs have been largely removed. There are no more close and minify buttons or menu bars. Instead addition options for programs are found by swiping the appropriate part of the screen. The right hand side is for the “charm” screen which is a set of common options that apply to all programs (notably search and share), while top and bottom can be used for application options. Programs are closed by dragging them off the bottom, and minimised by dragging across and bringing another program on.

This leads onto another key change: when a program is inactive its processing is suspended. To a certain extent this can be developed around but by default Metro apps do not allow multi-tasking.

The Metro screen displays all apps as tiles; tiles and other notifications can be fed information from within your application or pushed from remote services via a cloud based distribution service. This leads to a dynamic desktop and gives developers the ability to entice users back into their application.

There are probably a lot of people thinking that this will mean the end of traditional windows based applications but worry not, there is also desktop mode. In desktop mode traditional Windows programs will run in the same format as they always did. Desktop apps can be launched via shortcuts from the Metro tile screen or from a separate menu within desktop mode.

As always with Microsoft products the support and facilities given to developers for the new platform is extensive and supports all the systems needed for creating innovative apps but that is a subject for a blog post of its own.

Verdict

So, what do I think of all this? Metro is clearly designed to be a tablet interface; indeed Microsoft have said that it is designed for touch first and everything else follows out of it. As a tablet interface it is very innovative. The sharing ability between programs is excellent and a big step forward over anything that has been seen before. The built in cloud support for multiple devices is also a great feature, allowing synchronisation across multiple devices straight out of the box.

I think it works less well in a desktop environment; I have been trying to think about what applications I would use in Metro mode. Twitter, email, IM, and web browser immediately spring to mind. However I spend most of my time in Visual Studio, SQL Server, Office or other such tools and usually have the other tools mentioned above open at the same time, usually on a separate monitor so I can watch over them while carrying on working. Ultimately, I have paid for a large screen and I don’t want a fully immersive experience; I want to control my level of immersion by setting windows to the size I want.

The other issue I have is that, despite how many times I hear or read about Microsoft people saying how beautiful the Metro interface is, I am not wowed by it. I have never loved the look and feel of Windows phone and Metro is essentially and evolution of that theme. The tiles are great in their ability to stream real-time information outside of the application, but I find the look too busy and I’m really not keen on the way things flip in and out. Basically, I look at the Metro interface, I look at my iPad, and I’m not wanting to throw out the iPad.

The Windows 8 logo

Building a standard system across all platforms is a bold move and only time will tell how well it will work out. It is fair to say that Windows 8 is a pretty good stab at it.

What I find interesting is that to me this is much more of a consumer than a business solution. I feel that many of the business users who, like me, spend all day in tools like Visual Studio or Office may share my concerns specified above. Consumer users though will probably love the concepts behind the Metro interface. In this market a tablet is a serious alternative to a laptop to achieve their aims (web, email, twitter, IM, Skype etc).

This raises an interesting question about whether the historical vision of Windows as a shared system between business and consumers is actually flawed and Microsoft should be looking at selling Metro only (with no desktop) as a consumer option and a full Windows 8 system with desktop support for business users. The consumer version could even be a free offering (like iOS) that is funded by the profits on app sales.

I started by saying that Windows 8 was “revolution not evolution” and am going to end by saying that it may be revolution beyond just UX, and go to the heart of Windows as a product.

Leave a comment

Filed under Opinions