Archive for March, 2009

How Much Time Do You Need To Build A Web App?

Monday, March 30th, 2009

I am constantly battling with how do I fit in the time to build my app?

Some people have funding to work on their app full time, but for most of us we do not have the time to build our application during the day as we have other commitments. I have a full time job, a young family, and I am studying for various qualifications so time is very precious.

Recently I have stopped watching TV in the evening, after my son goes to bed, and instead I use the time to build my web app. I work from 8.30pm to 11.00pm or so and I get so much done as there are no emails or phone calls.

I watched a great video from start up school recently that mentioned that Base Camp was built in one year working 9 hours per week. That inspired me a lot so I have decided to devote 10 hours per week after hours to this project at a minimum.

I have also set a very detailed project management plan, with milestones and deadlines. I am treating this like a paid project, it just so happens that I am the main contractor. I started work on this project last Monday and in less than a week I have a working wireframe, with all pages and fields. It is amazing what you can achieve when you have tight deadlines and a small amount of time, it really keeps you focused.

I think everyone has the time to build their own app, the question is how do you organise it and do you make it a priority in your time planning.

Project Preparation

Friday, March 27th, 2009

As you move forward in your working life, you find more and more success factors that make projects more likely to succeed.

I see a lot of people picking up their pencil to start designing, or opening their IDE to start programming; before they have the relevant project information and before the appropriate analysis has been completed.

Before you begin a project you must have at least the following:

Brief

What are you doing?
What is the scope of the project?

You need to know the benefits or business change that the project sponsor requires, or you will not be able to find the best solution.

Rationale

What is your rationale for the solution you have chosen?
Will it hold up to scrutiny and analysis?
Most importantly does it answer the brief?

You need to know you have found the best solution and done plenty of research to back that decision up.

Conclusion

Extra time at the start of the project for preparation means that you are more likely to have a successful project outcome.

We never start designing or programming until these steps are complete and as a result our pitching success rate has increased and our client satisfaction has increased.

Analyse The Competition

Wednesday, March 25th, 2009

When you are developing software that is evolutionary and not revolutionary, it is important to look at what is already on the market, learn from them and find ways to improve on their offering.

Most web apps have free trials, or it is even worth paying a small fee to see the competition’s software and “borrow” ideas.

I think the following is a good way to analyse what they do well and not so well:

  • First impressions – do not read the help guide, go onto the first page and see how intuitive it is to get started
  • Navigation – see how the navigation is arranged, can you find things easily?
  • Colours and styles – does the design and layout wow you?
  • Speed of use – does it take you ages to find what to do?
  • Typography – does it look slick and fit with the style of the site?
  • Shortcuts and signposting – can you find the actions you need quickly?
  • Consistency – is the navigation and actions consistent across the app?
  • What do they do well?
  • What annoys you about the system?

It is good to have a look around on the forums, and see what the users are saying and to see what they are suggesting that the application improves on.

It is not enough to copy what others are doing, but research gives you a good feel for the competition and can generate ideas. I like to make things as easy as possible and go back to first principles when designing the user experience. You need to make something that is materially different, or targets a new untapped market.

A Process For Estimating

Tuesday, March 24th, 2009

Following on from yesterday’s post, some people have asked me for my actual process of how we estimate.

  • Create the product breakdown schedule (PBS) – this is a list of products that you are delivering
  • Create the work breakdown schedule (WBS) – this is a set of hierarchical tasks and sub tasks
  • List any material costs from the PBS
  • List any HR costs from the WBS
  • Create a network diagram from the WBS
  • Ally the estimating strategies with the project life cycle

It is also very important to document the assumptions that you are making when you are estimating.

Estimating – The Lost Art

Monday, March 23rd, 2009

Estimating seems to be a lost art, it is one of the most important skills you can learn as it is one of the key factors in job profitability. If you do not get your estimate right and you have a fixed quote, you can literally end up out of pocket. If there is a big overrun then it can affect your reputation.

Estimating improves with experience and I am always calibrating my estimations at the project debrief. Also the more estimates you do the more you can see patterns and be able to increase the tolerance in your estimating.

Methods of estimating

There are many different methods of estimating, I have outlined a few that I have come across in different organisations. There is no right and wrong method, and the method used will depend on the project’s size and scope.

1. Top down estimating

This is used when there is limited amount of detailed information about the project, for example in the early phase of a project. Top down takes the whole view of the project. generally working by analogy with other similar projects that have accurate historical information.

2. Bottom up estimating

This works by breaking the project up into small pieces and estimating each individual piece. The people who provide the bottom up estimates are usually the ones that will perform the work. It is usually driven by the work breakdown schedule or task list. Bottom up estimating tends to underestimate as the inter-task elements or glue tasks, such as project management tend to get forgotten.

3. Comparative or analogous estimating

This is another method where estimates are driven by analogy with the details of previous projects. It is frequently used to estimate project costs when there is little detailed information about a project (early phases).

4. Delphi Method

Uses a number of different estimates from project staff and then uses a weighted average. It uses expert opinion of a group to arrive at a consensus. The process is iterative and anonymous. After each person has estimated the coordinator gathers the estimates and re-distributes them. Each person then re-estimates based on these new guidelines and the process stops when a consensus has been reached.

5. Parametric estimates

Uses statistical models obtained from historical analyses of cost, effort or material data. This is mostly used in life cycle costing to see the costs over the lifetime of the product. These costs look accurate so can be dangerous.

6. Three point estimate method

Uses an optimistic (O), most likely (ML) and pessimistic (P) value of time and cost. To get the planning value (PV) from the three point estimate with the following formula: PV = (O + 4ML + P) / 6. The multiple of 4 acts to weight the figure in favour of the most likely.

Remember that estimates should be reviewed regularly throughout the project.

Office Atmosphere

Tuesday, March 17th, 2009

The atmosphere and culture in your organisation are really important to the moral, energy and productivity in the office.

This has really come to light recently as two of our team have had to return to their native Australia, and the mood in the office has changed a lot.

I personally like quite a loud office, people talking and throwing ideas around, a bit of music, people laughing and enjoying their work. Obviously there needs to be urgency and focus in what you do, but the reason we do not all work from home, is that interacting with great people everyday breeds a great culture.

The office atmosphere is driven by a number of things:

  • Layout and configuration – are your desks set for privacy, lone working or collaborative group working
  • Music – do you play music or is there silence
  • Personalities – let your personality shine, have fun, and contribute to discussions
  • Collaboration area – do you have an area where people can sit, brainstorm and chat – comfy chairs for people to hang out in
  • Books – we have a large library of books for people to browse to get the creative juices flowing
  • Wall coverings – colourful or fun, paintings – we have huge space invader stencils on the wall
  • Impromptu meetings – where everyone gets involves and shares their ideas

?WhatIf! do this very well, check out some of the pictures of their office: http://www.whatifinnovation.com/Space_for_Hire

Coding Standards – Are They Worth It?

Monday, March 16th, 2009

We have a very agile and elastic team, so if we have a large project, we manage outside contractors if we already have a heavy production schedule.

The problem with this is that the quality of code, and style of code differs hugely from person to person. This is more and less of a problem in some languages, PHP affords much more style flexibility over a language like Python.

How do you make sure that everyone is coding and thinking the same way?

Documented coding standards are the best way to achieve a consistent coding style. Now it does require some up front learning, and the use of peer reviews but that is a small price to pay for consistent code.

What should coding standards contain?

They should contain all the rules, and standards for writing code in your organisation:

  • Should curly braces go on a new line?
  • How many spaces do you indent by?
  • What is the convention for class names? Camel case, lower case?

I wrote the coding standards with my team, and it spans six pages, which sounds like a lot, but once you start coding after a day or so, you never really need to refer back to them.

I love coding standards and they have helped us a lot in writing clean, consistent code and managing and integrating contractors into the team.

Adding Value

Friday, March 13th, 2009

When you work on a project, or receive a brief from a client, you should always be looking to add value.

If you have a brief you must answer it, but always look to add something extra, can you think of something else that is missing from the brief that would make the solution incredible. This extra time is well spent as it can really make you stand out when the client is going through the procurement process.

Think about the end users of the solution, what do they really want, what will make them go wow. Try not to add features for the sake of it, or features that you would want; features should always be driven by the end users.

If you blindly follow the brief without thinking, there will be someone out there who adds value and even if they are more expensive that you, they will probably get the job.

If you always look to do a bit more, go that extra mile, you will really start to see the rewards.

PHP To Django – Lessons From Our Migration

Wednesday, March 11th, 2009

I have been a PHP programmer for a long time, it was the first web scripting language I learnt, and I have built some very cool apps, and it has served me well over the years.

However running a team who code in PHP has a lot of drawbacks:

  • No de facto framework
  • No coding standards
  • Relatively slow benchmarks

Frameworks Rock

I personally love frameworks, who wants to code boring CRUD (create, update, delete) statements, build yet another admin, or yet another news management feature. Like all good programmers I am inherently lazy and hate to code the same thing over and over again.

PHP lacks a really good unifying framework, there is no de facto framework; Ruby has Rails, Python has Django, PHP has … CakePHP, Symfony, Zend Framework and Code Ignitor.

I have used all of the mainstream PHP frameworks:

  • CakePHP – I like the syntax, but the docs are poor and performance is a real problem
  • Symfony – I could not get my head around the workflow and it is very slow
  • Zend Framework – does not seem like a framework to me, more a collection of libraries
  • Code Ignitor – is the best of a bad bunch, and personally my favourite for PHP

These frameworks all compete with each other, instead of all working together to help build one PHP framework to rule them all.

Learning Curve

People love PHP because it is easy to pick up and get going with, you can write your first PHP script very quickly, and have something working in an afternoon. This works for good and evil, as there are so many people out there who code PHP who actually do not understand what they are doing. There is nothing inherently wrong with this, but this tends to mean that PHP has less coding standards.

On the other hand, getting Python to work is not as easy for a new developer and deploying a python site is even worse. Also as Python is a OO language it seems scarier to most new developers. I love Python as it just fits with my philosophy and I love the way that it FORCES you to write beautiful code.

Why Django

As I mentioned that as a PHP shop we have already looked at all the mainstream PHP frameworks and none of them in my opinion are good enough.

I had a look at Ruby on Rails, but the publicity and hype around it, coupled with the reported scaling issues made my wary.

My friend and fellow CTO Ben Philips over at Playfire, suggested that I check out Django. I had a read of the documentation and I was seriously impressed with the feature set. It was not the easiest learning curve there are a lot of pages to read on the site to get you up to speed.

I also started listening to the excellent podcast, this week in django, and I fell in love with the philosophy and elegance of Django.

Installing Django

Installing Django on my Macbook Pro was not an easy task, it took me a whole evening to get up and running; I had to tweak the MySQL python library and I needed to install XCode developer tools to get the Django built in webserver to work. This was not a good start for me!

Our First App

I did persevere through the installation and I was glad I did, the Django API is very elegant and for simple tasks very easy to pick up. I did have some issues managing images, but the Python Imaging Library helped me there. Also I had to get my head around the middleware stack, and the templating language. After a day or so I was ready to build my first app.

I wanted to really try something in a real working environment, so I decided to build the Oracle Acquisition App in Django. In less than two days the app was built including LDAP requests to the corporate directory, and SSO authentication into the Oracle unified sign on.

What I Liked

I loved the loose coupling of URLs, the encapsulation in models, lazy SQL queries, well defined code layout, adherence to DRY principles, admin out of the box and the powerful template language.

What I Disliked

Importing functions into the models and views was tiresome, the sometimes cryptic error message, no SQL query logging and lack of hooks for the admin (which had since been rectified).

The Future

Overall I love Django and I cannot imagine going back to PHP, the next step is for me to sell Django into the Company. It will take some effort of the part of the developers who cannot code in Python, but most good programmers can pick Python up very quickly.

There will need to be a migration process, but I will be slowly migrating all of our systems and future projects over to Django and will be recuiting a specialist Django developer soon. If you are a superb Django developer who is looking for a job in London (and you know a bit of PHP), then have a read of this post.

We’re Hiring – Trying a Different Approach To Finding Excellent People

Tuesday, March 10th, 2009

In the past we have used job boards and recruitment consultants to find the best people to work here at Busara. Sometimes this approach works and sometimes it does not, but one thing is for certain, this approach is going to be a long and very painfully slow process.

So this time I am going to try something different, I am going to advertise here on my blog for the ideal person to join the team. I am also going to add the job listing on some of the more niche sites like Djangogigs.com.

About the role – PHP & Django

We are looking for a superb PHP and Django developer with a passion for all things digital. Your role will be to manage the day to day running of projects and report directly to the CTO. The role will be a mixture of programming (60%) and project management (40%). The role is client facing at times, and will involve direct client contact to help them achieve their vision. It also involves a high degree of autonomy, and the ability to work with and code with an existing development team.

Here is a link to the person and job description. If you are interested please email me at cv at madebybusara dot com (no agencies please, we do not use them).

You can see our work and philosophy on our website: www.madebybusara.com.

Interview process

The interview process is very informal and friendly, and we are looking for the right person as much as the right skill set:

  1. Send in your CV and portfolio of work
  2. We will find the ones we think are best and create a short list
  3. We will invite you in to our office for an informal chat, nothing heavy, we just want to get to know you and see if you fit in with our culture
  4. If we think you are the one for us, we will invite you back to meet the team and they might ask you a few questions
  5. If the team think you are the chosen one we will give you a call with a job offer the same day

About Busara

Busara is a global design and technology agency based in Clapham, south London, and Perth Australia. We have a vibrant, creative, hectic office full of energy and buzz. We work some of the biggest consumer and technology brands in the world, and are always pushing our solutions and ourselves. We are very collaborate with both designers and developers working very closely with lots of joint work and brainstorming. We have plans to open another international office within two years.

Here are some pictures of the office:

Busara Office Busara Team

Here is a video of our Christmas party last year, which was so much fun!