John Harman Programmer and digital consultant
Date of birth: August 1983
Location: Uckfield, Sussex, England
Contact: john at johnharman.co.uk
Downloadable CV: PDF
C.V. Layout: Scan the page to find what interests you, then simply expand those areas to read more.
If you've noticed a web of information between this box and the main content then you're clever enough to be using a modern browser. Click in that area
to view the content in full. Otherwise, shame on you!
I'm a very driven, self-taught web developer who has a keen interest in good user experiences and delivering a
product that is as useful to the user, as it is maintainable for the developer.
As a born and bred farmer until the age of 20 I didn't have access to computers regularly until
I was 17 which is when I found that I loved using them. When I was about 18 I started creating websites for family and friends
A lot has changed since then, I've now got over 9 years of experience in website development, working on both backend and frontend in
numerous platforms and technologies. Along with that experience you get a very passionate and personable developer who believes strongly
that good communication is the key to success.
My more recent aim has been to become a programmer who is ubiquitous in whatever platform / technology available. There are obviously restrictions to what one man can do but I believe the more I know about other systems and other languages the better a programmer I become.
- get things done
- learn quickly
- work in a team or solo
- mentor and manage others
- plan and manage projects
- think creatively and problem solve
- understand the client's / user's needs
- make quick and decisive judgements
- work to a high level of quality
- a hard worker
- a good communicator
- interested in who I work for
- a pleasant person to work with
Tools of choice
Recently I've really enjoyed using the following tools during the development process.
Mac OSX / Windows 7
Personal projects @ Home
Period: December 2012 - February 2013
While I'm in Whistler for the season I've got a couple personal projects I'll be working on. They mostly involve PHP, Backbone and Behat for BDD.
While creating this project in PHP I've been using a lot of MVC design patterns to make my code as testable and de-coupled as possible. This also meant that I've learned a lot of the newer features available in PHP 5.4+ which has led me to think that PHP isn't as bad as I used to think.
Web developer @ Avvio (contract)
Period: September 2012 - November 2012
Before I went away in August I was asked to come back to Avvio for September which quickly turned into October and November as the technical lead handed in his notice. During this period I helped fill the void that he left and worked on other projects in parallel.
I can't actually say much about this project right now as it is still in development due to the client changing their mind on how the site would function. However I can say that it was a showcase site providing information and interaction to keep the user interested as they went through the site. The site was created with touch screen devices in mind so we could use the native features on the device to give the user the best experience possible. I can show this when meeting in person if interested.
Head of Digital Knowledge Share
During my last month with Avvio a new Head of Digital started to replace the old Technical Lead. I was heavily involved in getting him up to speed on processes as well as having many talks about the structure of development at Avvio and what could be done to improve it based on our shared experiences.
Web developer @ deltatre (contract)
Period: June 2012 - July 2012
deltatre provide digital media, broadcast and back-end services to the sports media industry. Originally only booked for one month they asked me to stay on for more, however I could only stay until the end of July because I was away in August.
Channel 4's Paralympic Website
- ASP.NET 2.0
- XML AND XSLT
Channel 4's Paralympic website was already up, however a new design along with new features was already well under development. My main role was to help them ensure an ontime and smooth delivery. This entailed learning and using their in-house CMS which is specifically designed for sporting events. I wouldn't say that the role was technically challenging but I did have to learn a lot very quickly to get everything rolling. The sort of work I was doing was:
- Creating web pages and includes using XML and XSLT.
- Working with Channel 4's accessibility agency to ensure the site was accessible to at least AA standard, this also entailed using screenreaders such as JAWS for testing.
- Enhancing clunky features, an example would be the schedule which I managed to fixed the headers to make everything more visible while still being accessible.
- Ensuring the website HTML validated as much as possible, there were some scenarios that this was not possible due to accessibility features actually breaking full validation.
- Generally discussing usability issues with the team to see what we could do to make it a better experience for the user.
Web developer @ Avvio (contract)
Period: May 2012
I was asked to come in and work closely with the technical lead to develop an interactive touch screen pod.
Getting behind the British Swimming team - British Gas
- Swimming game: three.js was used to create a 3D-esq retro style game where users had to dodge randomly dropped obstacles that became more frequent as time moved on.
- Snap: three.js was used to create a simple snap game where the swimming team would be used on the cards that the users had to match.
- Create an avatar: Users could create their own swimming avatar by dragging different clothing and accessories onto the model. A screenshot was then taken of the user's avatar with Canvas and stored locally on the machine for later retrieval.
- About the team: Users could watch video on each of the four main swimming hopefuls in the GB team
Web developer @ dreamm (contract)
Period: December 2011 - April 2012
I was brought in by dreamm to build a bespoke LMS for Canon. During this period I was used on other projects where deadlines were either tight or where other programmers workloads were becoming unmanageable.
Bespoke Learning Management System
- ASP.NET MVC3
- SQL Server 2008
The LMS was created so that Canon could easily train their partner companies' staff. The staff to be trained could be located anywhere within the UK and the machines they would be learning on were mostly going to be slow with bad resolutions. My role in the project included the following responsibilities:
- Reading and maintaining the specification document, ensuring that it describes all functionality required by the system.
- Discussing technologies to be used with the technical director at dreamm and creating the project using them.
- Ensuring that all involved in the project were up to date with its current status and making sure that deadlines were going to be met.
- Liaising with other companies to ensure SSO integration with partner companies was successful.
- Deliver the product to testing and complete all bug fixes.
Career Progression Tool
- ASP.NET MVC3
- SQL Server 2008
This tool is an internal site which helps staff create goals for their career progression. It does this by allowing them to create and review goals on a quarterly basis, this review process is done remotely with the manager via the site. I was asked to create the backend administration for the tool so that dreamm could administer the options available.
New dreamm Site
- ASP.NET MVC3
- SQL Server 2008
The new dreamm website had been in the pipeline for some time but no-one ever had time to complete it. So I was tasked with creating their new site
in three days. The website was very simple in structure and layout, which made the task achievable. However the site is still not live due to the guys at dreamm still
being too busy with client work to finalise content and launch it. Watch this space.
.NET Programmer @ Avvio (contract)
Period: September 2011 - November 2011
Avvio had a large amount of work come in from their client BSKYB which required more resource to work on the job. I had previously worked
on the project for 3 years, so it made sense for Avvio and I to work together on this.
Intranet, mobile intranet and extranet integration
- ASP.NET C#
- Client facing
Historically the intranet, mobile intranet and extranet are three different websites. The intranet is managed by the Internal Communications team
for staff that worked on site at Sky or over a VPN and was created by Avvio.
The extranet was managed by the Supply Chain for engineers out in the field so that they could get the latest news, it was also created by Avvio. The mobile intranet
was managed by Internal Communications but created by Sky's internal mobile team. It allowed staff that had a windows BSKYB login to access the intranet content
while they were outside the network on their mobile, tablet or desktop.
In an internal re-shuffle Supply Chain became part of Internal Communications, this created the opportunity to streamline the communications process
to all staff of Sky as well as opening the possibility to enabling comments and likes to anyone that was able to view the content on either website.
The main tasks of the brief were:
- Allow content to be published via the intranet CMS onto individual or all three sites. Including being able to only show to particular sub user groups in each site if necessary.
- Can handle sharing of images and videos that are used in the article.
- Should be resilliant enough to handle connection down time and continue as usual.
- Any comments or likes made from either site would be available on all others almost immediately.
- The site was to be moved onto a new environment which included two load balanced web servers and a clustered SQL server.
I was involved in all meetings once the project was started, often going into Sky to speak with the clients, who I have always had a good relationship with
due to working with them for 3 years previously. After the initial development and testing period I worked at Sky HQ to ensure that the code was functioning correctly and performing satisfactorily. This meant I worked with Sky's CADM team and their performance testing team over a two week period until all were satisfied.
The above is only a synopsis of the main work that occurred on this phase of the project, there is more but we can discuss that in person. The project was delivered
on time and is in production as we speak.
Frontend and backend web developer @ dreamm (contract)
Period: July 2011 - September 2011
dreamm needed additional frontend resource as well as someone with .NET experience to help them on some up and coming projects.
Having worked with dreamm previously at Avvio they knew what I was capable of and were quick to take me on.
eLearning content for desktops and iPads
My brief was to create a simple and extendable frontend engine that would allow designers with frontend knowledge
to develop eLearning content that would work on all desktop browsers (including IE6) and iPads. The system needed to allow designers to create
their own functionality and interactions while giving them the basics of simple page transitions.
eLearning content creation tool
- ASP.NET MVC 3
The second phase of the engine was to create a tool that would be used to speed up content creation by helping the user create / edit content directly in the browser. I came into this project after the initial editing tool was created and helped to improve it by adding more functionality. This helped to create a system that could be used as it was or one that could be easily be extended for any requirements. I was then working on any bugs while the tool was used on its first project.
ASP.NET MVC 3 was used as the backend to manage screens and save changes to disk, other features were added including the ability to see the difference
between two saved versions of the same screen.
Study planner for College of Estate Management
A study planner was created for CEM which helps students to plan their weekly study plan.
Students would go through a step by step guide asking for input of study points required and their commitments such as work, leisure, sleep. Once all
steps had been completed the user was informed if they had enough study time booked in or if it need to be adjusted. If the study time was correct it then analyzed their plan and if necessary would suggest other tips to help them, e.g. splitting up study blocks if study sessions were too long.
Head of Digital @ Avvio
Period: September 2010 - May 2011
After being at Avvio for two and a half years, our Head of Digital went on sabbatical for 6 months,
and I was asked to take on the role while he was away temporarily away. After 4 months he decided that he would not return to Avvio,
at which point I was offered the position permanently. It was with great disappointment that I had to decline that offer
because I wanted to move back to Sussex. However I continued the job for an additional 4 months to ensure that my team and
Avvio were prepared enough to carry on without me. My notice period was only a month, but I felt it was necessary considering my new position
and the responsibility I felt towards my team who are also my friends.
Managing the team and recruiting
During the transition from Senior Developer to Head of Digital
I was made line manager for the rest of the team, including two digital designers and our two developers (one being
a contractor until my old role was filled).
At first it was tricky, because I would say my team were my friends more so than my colleagues.
Naturally, I wondered how I would balance my new duties and responsibilities with those friendships.
I think my approach has worked, I made sure that I was available
whenever they needed to talk about anything, professional or personal. I also tried not to
pull weight over them unless necessary, meaning that I discussed issues with them in such a way that
they would reach their own conclusions. On top of that I tried to encourage their good work with verbal
and written thanks as well as doing things like taking
the team out to lunch to show them our appreciation.
On the side of managing the team and settling into a new role I had to recruit for my old position of senior developer.
I worked closely with the Studio Resource Manager to make sure we found
someone that had the necessary skills, mentality, personality and drive. In fact, their personality and mentality
were almost more important than their skills, as we needed someone that would knock down barriers
rather than put them up.
Client meetings and winning work
- Client facing
Being the Head of Digital meant that I had to be more client-facing than I had been previously.
It was critical that I was at meetings with Account Directors or Senior Account Handlers to impress clients with Avvio's
technical knowledge and understanding of the user's experience. As a result of this, during my time as Head of Digital
I was involved in pitches and many other general meetings that lead to us gaining new clients and winning more work.
Additionally, as part of this role I would also try to build up a relationship with their internal technical teams. I found this made
a massive difference in ease of delivery for the project and I would recommend it for any third-party.
Future of Digital
- Forward thinking
An on-going job was to ensure that digital was
aligned with the business' needs and direction. This meant regular meetings with other heads
within the business to ensure that we were all agreed on what offering we could give to clients.
This then lead to thinking about the skills we had in the team and any additional resources we had available
i.e. freelancers in specific fields
I could then make sure that any possible jobs that came in could be dealt with in confidence, from pitch through to delivery.
Senior Developer @ Avvio
Period: February 2008 - September 2010
Avvio is a small company comprised of roughly 40 employees.
This meant that as Senior Developer (with the only other developer being a flash developer,) I was involved in projects
in many different ways, such as brainstorming, client meetings, requirements gathering, estimates, planning,
hardware specifications, development, management, working closely with client
IT or development teams, testing and deployment.
- .NET 2.0 - 3.5
- SQL Server 2005
While I've been at Avvio
I've worked on many projects, including: emails, micro-sites, intranets, distributed scheduling tools
and our own internal libraries such as a search tool.
During these projects I've taught myself all of the libraries found below and have used techniques
that I have read about in books, online or by going to
Developer Developer Developer
and finding out about the latest new technology. The things that have excited me the most over the last
two years have been Inversion of Control, NHibernate and Lucene.NET, not to mention a few things recently that
I haven't had a chance to use at work but I have tinkered with, including: NodeJS,
KnockoutJS, Razor view engine and OpenWrap.
- .NET 2.0 - 3.5
- SQL Server 2000
- Relationship building
While working on
I used many different skills and abilities. Some out of necessity and some through a natural learning curve.
The site was hosted internally at Sky, so as a third-party we only had access to one of their testing servers.
Originally only being deployed via a zip file, the deployment process was improved over time by
creating simple to use installers.
I was often contacted directly by the client, either to discuss new features / ideas that he may have.
If a bug appears on the site, he will often speak to me directly so that we can resolve the issue
as quickly as possible for him.
Working with Sky's internal development team use to be a difficult experience.
We improved this relationship by involving them as early on as possible in the update process,
including them in testing and asking their opinions on functionality.
We also made strides to build a more personal relationship between the two teams by bringing
them together over lunch to discuss the project and other aspects of our work.
Sky's intranet was created using a, no longer supported, code generation template for data access, a no longer supported. I decided that
the best approach to take on the site's continued development and evolution without a re-write was to
start using NHibernate for new features and to gradually move across the old features as necessary.
Some features, such as integration into other systems internally, would have been tricky
for us to implement. Instead, we created container areas so that Sky's development team could plugin
their own features to enhance the site.
Avvio use a model whereby the core digital team is small but is
bolstered by contractors for additional man power or specialist skills when required. This means that we couldn't
always use the very latest technology because finding contractors last minute that could do
those skills was either very difficult or very costly.
I would say the biggest technical changes I made at Avvio were; moving from SourceSafe to Subversion,
.NET framework 2.0 to 3.5, and starting to work on a new set of libraries
to help speed up development of features that were created time and time again. I also setup
CI for less friction during the development lifecycle,
this also had the bonus that contractors didn't need to be shown how to deploy to our test servers.
- Hardware knowledge
- Decision making
Avvio use two server environments, testing and live. I was responsible for both
environments and had to decide:
- What specifications are required to serve each environment
- what should be installed
- what conventions should be followed, e.g. website and structure
- FTP setup - including management of users and access
- ensuring security is strong enough so that our client's data is safe
Contractor @ Revenue+
Period: November 2007 - February 2008
Revenue+ was a fairly new company that was creating a new
booking system for a ferry transport operator.
Once the system was created it was going to be re-sold to other operators around the world. I was brought in by
my ex-manager at Friday-Ad who had moved to Revenue+ shortly after I left Friday-Ad.
ASP.NET Training Day
- .NET 2.0
I was asked to come in and give a day's tuition to two full time developers
who were due to start building the booking system mentioned above.
I was asked to teach them the basics of ASP.NET and go through solutions to simple scenarios that they
frequently came up against.
I tried to teach what I considered to be best practices when programming in ASP.NET
However, it was quickly evident that they had not touched upon
OOP before and that they had a lot to learn. To aid
their learning I created a very small example application that they
could refer to during their development.
ASP.NET Booking System
- .NET 2.0
- SQL Server 2005
After giving the day's training course I was asked to come on as part of the team to
help start build their new booking system. The system had already been planned by the development manager, but
not to a huge amount of detail.
As a result, we frequently had to use our own common sense because we were often
mapping loose ideas to the way that pages from an older system had worked.
If I was to work on this contract again I would get the team to review each other's code
far more often. This did happen, but only really when helping each other.
If it was made part of the daily cycle the quality of the code would have been better
and knowledge of the system would have been shared more evenly.
Contractor @ Avvio
Period: October 2007 - November 2007
It was my frontend expertise that
got me the contract at Avvio. However, they quickly realised that I could be utilised in other ways. They
asked me to do various backend and accessibility tasks, which I not only did without much management,
but quickly and to a high standard.
It was during this five week period that I was offered a full-time position, (which I turned down).
- .NET 2.0
- SQL Server 2000
I was brought in originally to tidy up the CSS that had become a mess and
was misbehaving in various different browsers but mostly IE6. I fixed all of the layout issues of
the site and also tidied up the use of HTML, which was semantically very wrong in a few places, e.g.
strong being used as header tags. I did it far quicker than expected and
quickly moved onto other tasks that needed doing, such as fixing bugs on already existing administrative pages,
creating new features such as an audit trail, and adding polls to the site
Web Developer (Contract) @ Friday-Ad
Period: March 2007 - August 2007
Friday-Ad asked me to come back in as a freelancer. Originally I could only do one day a week due to other
commitments, but eventually I was working there five days a week there again. During this time I worked on various sites that needed
to be updated or created from scratch.
- .NET 2.0
- SQL Server 2000
Simon Harriyott (contractor) and I
were given the task of creating the website from scratch.
We we're given the brief, page designs and part of the database structure. We then had to work through
the rest of the project, including; project task management, completing the database structure,
working with the QA department before the final deployment.
This site is still mostly as it was when it was created. This website is now three years old
and the techniques that I used at the time show. If I was to do it now I would want to
output much cleaner HTML using some MVC framework and I would use Lucene.NET
to create the search feature.
Fine Art Company (Contract) @ John Harman Ltd
Period: Feb 2007 - March 2007
I was hired by the Fine Art Company to bring to life their vision for a new site. They were managing
the old site page by page in an HTML editor and uploading this to their server. This meant that their
site took up a lot of administrative time, lacked consistency, and that changing simple things like VAT across the
entire site would have been a nightmare.
- Client facing
- .NET 2.0
- SQL Server 2005
I worked closely with Laina, the owner of
The Fine Art Company,
to plan the site. We had to make sure that we had both the user's needs and the administrator's needs
were met. Laina then used our plan and objectives to come up with designs,
these designs were then tweaked to take on board some best practice advice from myself.
I then got to work on the site, building it using ASP.NET 2.0 and SQL Server 2005. It was not built
on top of any already existing e-Commerce site because I thought that her needs were too bespoke to try
shoehorning into the way another e-Commerce site worked.
However, if I'm honest, I always used to think that a bespoke build was the best
solution, but now I think that isn't always the case. There are so many different
options available, either as a bought product or open source, that it's fairly likely
one of those options will fit the needs of the client,
which in the long run will save time and money.
I built the site using progressive enhancements so that the site was as accessible as possible.
I had to integrate the site into Mal's eCommerce for the payment gateway because the client decided
that they wanted to continue to using it, as it had worked so well for them previously. The site was delivered
within the deadline of 1.5 months and has had a few updates since. I'm proud to say that there have been
zero front end updates and as far as I know everything still renders well in all browsers.
Web Designer / Web Developer @ Friday-Ad
Period: May 2004 - Jan 2007
I started working at Friday-Ad as one of their two web designers. As time went on my role changed
into a full-time developer, mostly due to my interest and keenness in learning things like CSS,
ASP, ASP.NET (VB and C#) and SQL Server while on the job. Towards the end of my time at Friday-Ad I was often mentoring others
and was asked to work on a few of their higher profile sites.
I originally designed various websites, emails and basic banners. Eventually I was given
the opportunity to design the main Friday-Ad
website. Although designing is not my main skill, I still believe I have a good eye for design.
SEO updates on www.Friday-Ad.co.uk
Although Friday-Ad owns a lot of different websites, their busiest
site was www.friday-ad.co.uk. One of the main reasons for this
was because of the amount of content on it
and that the fact that this content was easily found through search engines.
SEO changes that were put into place by myself and our SEO
consultants were the reason for this. My part in this process was to plan and update the website so that
search engines could index the different
categories and results for specific areas, therefore targeting local content.
This system worked so well that it was only replaced in 2010.
My other interests
Sports and exercise
I have an overall interest in keeping fit, generally through a variety of sports including running, squash and football. Snowboarding is another love of mine and I'm going to be forfilling a dream of living on the mountain for three months in Whistler this season (2012).
I love programming. I like it so much that I do it when I get home as well.
I read a variety of industry related books in my spare time, including subjects like best practices,
technology specific (Lucene.NET, ASP.NET MVC) or even design principles. That's not to mention the various blogs I get feeds
from, which these days has decreased due to the use of Twitter but is still a valuable resource for me.
I also like to go to events like #ddd
or get-togethers like Reading Geek night, async or alt.net beers.
I would like to start contributing to an open source project but so far this has been minimal. I'm hoping that the more
I use git and Github the more likely this will happen.
Here's a quick list of things that I have looked at briefly but want to get more involved in:
- NoSql, specifically RavenDB or MongoDB
I can see real value in using each of the above technologies in different situations, so I'd like to know about them
so I can judge when they are best suited.