www.aestheticio.com
AESTHETIC IO
www.aestheticio.com
AESTHETIC IO
Contents
Contents
How you can get ahead by focusing on principles and not technologies5
Why should you focus on principles and not technologies?
Conclusion
10
11
11
11
12
12
13
13
13
14
Start today
14
15
Developer productivity
15
Elegance
15
Usability
16
Security
16
Reliability
16
Performance
17
Scalability
17
Testability
17
Interoperability
18
18
18
Deployability
AESTHETIC IO
19
20
20
21
21
22
Appropriate comments.
22
22
23
23
24
Conclusion.
24
www.aestheticio.com
25
AESTHETIC IO
AESTHETIC IO
platform agnostic. They are very different beasts yet they share a few core
characteristics.
Since they share characteristics you can safely assume that they will also have
some of the same problems in your web app. How do you handle versioning of the
RPC call? If you have a large distributed team, how do you limit uncontrolled
growth of your remote APIs?
The more you focus on the underlying similarities the larger head start you will
have the next time something new comes along.
By all means learn those new web app technologies but dont just learn the new
API, try understand what makes this new solution unique (if anything). Try see
how this new solution is just a re-incarnation of a previous one. Over time as you
do this you will gain perspective.
Principles like information hiding, decoupling, simplicity and the like are universal
and change very slowly if at all. Technologies like Microsoft Application Blocks,
Ruby on Rails, the latest IoC container change at a break neck pace.
www.aestheticio.com
AESTHETIC IO
Conclusion
Any good web app developer eventually starts seeing these trends just based on
depth of experience. You can get a head start by actively paying attention.
Are you happy with running to stand still or do you want to get ahead of the pack?
The choice is yours.
www.aestheticio.com
AESTHETIC IO
AESTHETIC IO
10
AESTHETIC IO
www.aestheticio.com
11
AESTHETIC IO
12
AESTHETIC IO
Start from the assumption that whatever you want to do is possible and then work
your way back. You might find that what you wanted to do is impractical for the
time being but with the pace of change in todays world, it might become practical
sooner than you think.
It always seems impossible until its done.
- Nelson Mandela
13
AESTHETIC IO
14
AESTHETIC IO
Question everything.
If you get a set of requirements that dont solve the right problem. Speak up! You
are more than a code typist, you are a problem solver.
Start today
I know this list is long and it might seem like a lot to take in.
You dont have to do it all at once though. Try this; find somebody you work with
who is also on a mission to be the best they can be. Pick one question per week
and commit to asking each other that question at least once a day. Think about
your answers, be honest, be better.
Good luck!
www.aestheticio.com
15
AESTHETIC IO
Developer productivity
Since smart people are the most precious resource you have any framework or
architecture we adopt needs to help optimize developer productivity time.
Attributes:
Simplicity
Concise but not obtuse
Standardized way of doing things
Great supporting tools
Short feedback loops
Expressiveness
Quality 3rd party packages?
Elegance
The elegance of the solution speaks to how well the solution fits the problem
space and how coherent the solution is.
Attributes
Consistent way of solving a problem.
The most common tasks are the easiest to do.
Clear guidance on how to make architectural choices.
Easily extendable in the appropriate places.
As simple as possible but no simpler.
www.aestheticio.com
16
AESTHETIC IO
Usability
Usability is vitally important for a number of reasons. It improves trust, customer
satisfaction and reduces support costs. Any technology you use should allow you
to build a world class user experience.
Attributes
No vendor specific technologies
Support the latest standards
Must provide fast response times in the UI
Allow for use of graphic and charting capabilities
Allow animation where appropriate
Must support A/B testing
Must support analytics
Security
Security is the capability of a system to reduce the chance of malicious or
accidental actions outside of the designed usage of the system, and prevent
disclosure or loss of information.
Attributes
Passes 3rd party penetration tests
Uses security standards wherever possible
Follows security best practices.
Reliability
Reliability is the ability of a system to continue operating in the expected way over
time. Reliability is measured as the probability that a system will not fail and that
it will perform its intended function for a specified time interval
Attributes
It doesnt crash
Autonomic when it crashes it heals itself
No single point of failure
www.aestheticio.com
17
AESTHETIC IO
Performance
Performance is an indication of the responsiveness of a system to execute
specific actions in a given time interval. It can be measured in terms of latency or
throughput. Latency is the time taken to respond to any event. Throughput is the
number of events that take place in a given amount of time.
Attributes
Support an appropriate level of performance.
Low latency to the UI (< 250 ms for 90% of requests,, <2s for all requests) or
provide mechanisms to compensate (messaging, caching, etc)
Scalability
Scalability is the ability of a system to either handle increases in load without
impact on the performance of the system, or the ability to be readily enlarged.
Attributes
We prefer scaling out to scaling up.
Easy to add more processing nodes.
Easy to load balance new nodes.
Each node should be low overhead.
Licensing should not prevent scaling.
Testability
Testability is a measure of how well a system or components allow you to create
test criteria and execute tests to determine if the criteria are met.
Attributes
Provide mechanisms to mock data.
Trigger back end processes via scripting.
Batch processes should be fast when using small data sets.
Easy to create known data.
Ability to automate UI testing.
www.aestheticio.com
18
AESTHETIC IO
Interoperability
Do you play well with others? Communication protocols, interfaces, and data
formats are the key considerations for interoperability. Standardisation is also an
important aspect to be considered when designing an interoperable system.
Attributes
Use open standards where available.
Publish standards where not available.
Provides you with many options when selecting 3rd party systems
www.aestheticio.com
19
AESTHETIC IO
Deployability
Deployment and propagation through different environments is a huge cost. A
product that is difficult to deploy requires longer release cycles and makes it
harder to respond to change or fix bugs.
Attributes
Automated scriptable deployments
Automated tests are easy to write.
Fast build times.
File based configuration or easily scriptable configuration.
Small physical size.
Licensing should not prevent multiple environments.
Easy rollback
Next time you evaluate a web stack or your app design go through this list and try
see if you can tweak your design to tick more of the boxes outlined above.
www.aestheticio.com
20
AESTHETIC IO
21
AESTHETIC IO
22
AESTHETIC IO
Appropriate comments.
If you need to do something for a reason that isn't made clear in your code have
pity on your future self and leave a note describing why you had to do it.
Comments tend to get stale quickly so I prefer having the code as self describing
as possible and the comments are there to say why you had to do something, not
how it was done.
23
AESTHETIC IO
your head). The shorter this distance the easier it is to re-build your mental model
when you return to your code at a later stage.
If you are interested in learning more about the functions used in FP have a look at
my article on functional programming for web developers.
www.aestheticio.com
24
AESTHETIC IO
Conclusion.
In the end it boils down to this: as a programmer your goal is to construct the
simplest possible semantic model that would solve your problem. Translate that
semantic model as closely as possible into a syntactic model (code) and provide
as many clues as possible so that whomever looks at your code after you can recreate the same semantic model you originally had in mind.
Imagine you are leaving breadcrumbs behind you as you walk through the brightly
lit forest of your code. Trust me, when you need to find your way back later on, that
forest is going to seem dark and misty and foreboding.
It sounds simple but in reality it is very difficult to do well.
www.aestheticio.com
25
AESTHETIC IO
Free Registration
www.aestheticio.com