Managing Phone Dev Projects
John McKerrell
Introduction - About Me
My Education

Received a 2.1 in Computer Science from
University of Leeds

Was taught Pascal in 1st year, C++ 2nd & 3rd

Final year project was in “Classic” ASP with SQL
Server
My Experience

Worked in Manchester on the official website for
the Barclaycard Premiership

Also other bespoke Content Management
Systems built on LAMP (Linux, Apache, MySQL,
PHP)
My Experience

Went on to work for Multimap.com building their
JavaScript mapping API

Worked for Microsoft for six months after they
bought Multimap
Freelance
Have been developing for iOS for over 2 years

Have had 50 apps available on the iOS app store

Recently launched 18 apps on Android Market Place
Brainstorming, Ideas
Brainstorm Features
Post-it notes are a great
way to brainstorm

  Write down lots of ideas

  Collect related ideas
  into groups

Also good for
“User Stories”

  “slim and high-level
  requirements”


                             HTTP://WWW.FLICKR.COM/PHOTOS/YANDLE/2055035926/
Brainstorm Features

Mind maps are a great way to collect and organise
ideas

  Can use online tools such as mindmeister.com to
  allow shared use within a group

  Also offline tools such as Freemind are available
Brainstorm Features
Ideas can come at any time


Take time out away
from the computer

Give yourself as much
time as possible to
think things through



                        HTTP://WWW.FLICKR.COM/PHOTOS/CPOYATOS/4374856699/
Designing your app
Design


Collect together thoughts from brainstorming

Prioritise

Build up a picture of what you're going to build
Design


Always stop and think before doing any large
chunk of development
Design
Build up a high level view of the system

Identify ways to split work into modules

  Allows work to be split between people

  Helps with re-use

Look for existing code that can be used, Open
Source libraries etc.
Prioritise
Lists!


Task list gives you something simple to follow as
you work through the project

Individual tasks become much less about the big
picture and more focussed on the task at hand
The Trac Project
Project management and issue tracking system.

Fine-grained control of issue management

Integrated wiki

Can hook into source control to link checked-in
code to resolved bugs

Free Open Source Software

            HTTP://TRAC.EDGEWALL.ORG/
Github


Free hosting for Open Source Software

Provides basic issue tracking system

Also allows code check-ins to resolve issues



              HTTPS://GITHUB.COM/
Lots more options
http://tadalist.com/

http://www.rememberthemilk.com/

iCal

Outlook

Google Docs

etc!
Managing your Code
Source Control

Git

  Simple to use on your own, doesn’t require a
  central repository

  Better support for branching

  Great for distributed teams
Source Control

Subversion

 Requires a central repository

 Can be simpler to understand than Git

 Been around for longer than Git
Keep your source tree
tidy
Your code should be modular so arrange it in
subdirectories

Root directory of your project should usually
have as little as possible

Separate modules can even be placed in
separate source control repositories
Commenting

Really is important

Especially with particularly fiddly code, such as a
complex algorithm

Although... when using identifiers with sensible
names, commenting can be reduced
Commenting

Best thing with a difficult function or method is
to write it out in English or “pseudo-code” first to
get the functionality clear in your head

Then go through the function again, filling in the
gaps between comments with working code
Testing
Test-driven
development
Generally written as unit tests

Write the tests before you write the code

In a similar way to lists, minimises the “thinking”
you have to do

Works best with self contained modules or
specific algorithms
Documentation driven
testing

If you document what the system will do well
enough, the functionality can be tested by simply
going through the design and confirming that
features work as expected
Test Plans


For entire apps or website, full user testing is
needed to be sure of quality

Creating a detailed and complete test plan
ensures testing is consistent
Found a bug?

Add the bug to your issue tracker

If possible add unit tests that find the bug

Add checks to the test plan that look out for the
bug in the future
Conclusions
Allow yourself as much
time as possible
Spend time working out
what you’re going to do
Use good tools to aid
your progress
Be meticulous and
organised
Thank you
John McKerrell - http://johnmckerrell.com/

Managing Phone Dev Projects

  • 1.
    Managing Phone DevProjects John McKerrell
  • 2.
  • 3.
    My Education Received a2.1 in Computer Science from University of Leeds Was taught Pascal in 1st year, C++ 2nd & 3rd Final year project was in “Classic” ASP with SQL Server
  • 4.
    My Experience Worked inManchester on the official website for the Barclaycard Premiership Also other bespoke Content Management Systems built on LAMP (Linux, Apache, MySQL, PHP)
  • 5.
    My Experience Went onto work for Multimap.com building their JavaScript mapping API Worked for Microsoft for six months after they bought Multimap
  • 6.
    Freelance Have been developingfor iOS for over 2 years Have had 50 apps available on the iOS app store Recently launched 18 apps on Android Market Place
  • 7.
  • 8.
    Brainstorm Features Post-it notesare a great way to brainstorm Write down lots of ideas Collect related ideas into groups Also good for “User Stories” “slim and high-level requirements” HTTP://WWW.FLICKR.COM/PHOTOS/YANDLE/2055035926/
  • 9.
    Brainstorm Features Mind mapsare a great way to collect and organise ideas Can use online tools such as mindmeister.com to allow shared use within a group Also offline tools such as Freemind are available
  • 11.
  • 12.
    Ideas can comeat any time Take time out away from the computer Give yourself as much time as possible to think things through HTTP://WWW.FLICKR.COM/PHOTOS/CPOYATOS/4374856699/
  • 13.
  • 14.
    Design Collect together thoughtsfrom brainstorming Prioritise Build up a picture of what you're going to build
  • 15.
    Design Always stop andthink before doing any large chunk of development
  • 16.
    Design Build up ahigh level view of the system Identify ways to split work into modules Allows work to be split between people Helps with re-use Look for existing code that can be used, Open Source libraries etc.
  • 17.
  • 18.
    Lists! Task list givesyou something simple to follow as you work through the project Individual tasks become much less about the big picture and more focussed on the task at hand
  • 19.
    The Trac Project Projectmanagement and issue tracking system. Fine-grained control of issue management Integrated wiki Can hook into source control to link checked-in code to resolved bugs Free Open Source Software HTTP://TRAC.EDGEWALL.ORG/
  • 20.
    Github Free hosting forOpen Source Software Provides basic issue tracking system Also allows code check-ins to resolve issues HTTPS://GITHUB.COM/
  • 21.
  • 22.
  • 23.
    Source Control Git Simple to use on your own, doesn’t require a central repository Better support for branching Great for distributed teams
  • 24.
    Source Control Subversion Requiresa central repository Can be simpler to understand than Git Been around for longer than Git
  • 25.
    Keep your sourcetree tidy Your code should be modular so arrange it in subdirectories Root directory of your project should usually have as little as possible Separate modules can even be placed in separate source control repositories
  • 26.
    Commenting Really is important Especiallywith particularly fiddly code, such as a complex algorithm Although... when using identifiers with sensible names, commenting can be reduced
  • 27.
    Commenting Best thing witha difficult function or method is to write it out in English or “pseudo-code” first to get the functionality clear in your head Then go through the function again, filling in the gaps between comments with working code
  • 28.
  • 29.
    Test-driven development Generally written asunit tests Write the tests before you write the code In a similar way to lists, minimises the “thinking” you have to do Works best with self contained modules or specific algorithms
  • 30.
    Documentation driven testing If youdocument what the system will do well enough, the functionality can be tested by simply going through the design and confirming that features work as expected
  • 31.
    Test Plans For entireapps or website, full user testing is needed to be sure of quality Creating a detailed and complete test plan ensures testing is consistent
  • 32.
    Found a bug? Addthe bug to your issue tracker If possible add unit tests that find the bug Add checks to the test plan that look out for the bug in the future
  • 33.
  • 34.
    Allow yourself asmuch time as possible
  • 35.
    Spend time workingout what you’re going to do
  • 36.
    Use good toolsto aid your progress
  • 37.
  • 38.
    Thank you John McKerrell- http://johnmckerrell.com/