Pete O'Shea

Curriculum Vitae / Résumé

Personal Statement

Highly motivated software engineer with over 25 years of experience using various languages and development environments. Works well as part of a team, with experience as junior programmer all the way up to lead developer, mentoring junior programmers, and peers. Also comfortable working on solo projects from concept all the way through to completion. Strong belief in clean, simple code, ideally test driven, and always keen to learn new skills, which is the most important part of being a developer.

Core Skills

  • Full stack developer with experience of a variety of, mainly object oriented, languages.
  • A love of Test Driven Development, which drives high code quality and maintainability.
  • JavaScript/TypeScript using Node.js, React & Next.js with brief exposure to Svelte & Vue.js.
  • Extensive use of Delphi and PHP but have also worked with C, C#, Objective C, Python & Rust.
  • DevOps/IaC experience, managing mainly AWS resources, with Terraform and Ansible.
  • System administration skills with Linux (mainly Red Hat and Debian based systems).
  • Automation using scripting languages like bash, including CI/CD using GitHub Actions.
  • Using Docker and dev containers to ensure consistency across different environments.
  • Agile development techniques, specifically Scrum, including some time as Scrum Master.
  • Good working knowledge of Git using GitHub, BitBucket and GitLab.
  • Experience designing, implementing and using RESTful and GraphQL APIs.
  • Current desktop OS of choice is Windows 11 but some experience with MacOS.

Employment History

2017–Present
Lead Developer
Polaris Elements
Remote

After company restructuring became a software engineer in multiple Scrum teams, keeping the title as leading by example and mentoring were still an essential part of the role. Tasks include:

  • Coding in various languages, including JavaScript and TypeScript, with a focus on TDD.
  • Consistent provisioning with automation where possible, using Terraform and Ansible.
  • Managing containers, including migrating certain projects to use dev containers.
  • Documentation and automation using various scripting languages.
2013–2017
Lead Developer
Polaris Elements
Taunton

Quickly promoted to Lead Developer, managing a team of 5 developers working on multiple projects including Windows applications and services based around POS systems, written in Delphi, and various web applications. Tasks included:

  • Actively developing on all of the Delphi and PHP projects.
  • Allocation of work to ensure the various projects stayed on track.
  • Mentoring developers to help improve the quality of code produced.
  • Unit testing, including getting a lot of legacy code under test.
2012–2013
Senior Developer
Polaris Elements
Taunton

Re-joined previous employer after change of ownership and rebranding. Tasks included:

  • Solo project to design and build online loyalty system with a RESTful web service API.
  • Written in PHP using CodeIgniter, a Bootstrap based front-end with a MySQL database.
  • Migrated source code from Subversion to Git which greatly improved flexibility.
  • Setting up and maintaining various Linux VMs running on Citrix XenServer hosted on multiple dedicated physical on-prem servers.
2010–Present
Freelance Software Engineer
Self Employed
Remote

Started a small business. Very varied work including:

  • Creation of an iOS app to help find suitable ski accommodation.
  • Bespoke Windows application for a waste management company.
  • Web site design and setup of e-commerce sites, using Crystallize GraphQL API.
  • Regular software development for previous employer.

This was the sole source of income for two years but was scaled back after returning to full-time employment. Now just occasional tinkering on personal projects.

2000–2010
Consultant
FBH Associates
Taunton

Started off working on UniVerse, and later jBASE, systems for the first few years. This included system administration of Unix, and later various Linux, systems.

Cross trained to Delphi, outside office hours, creating a small Windows application which was used internally for many years. Soon became an integral part of the Delphi team working on the main POS products. Role included:

  • Delphi development as part of a small team.
  • Source control using CVS and later Subversion.
  • Craft SQL to access the Firebird databases used to store the POS data.
  • Design and create various reports for end users.
  • Liaising with clients and partners to define development requirements.
  • Creating specification documents and time estimates.
1999
C/C++ Programmer
IBM Global Services Australia
Sydney

3 month contract during a year out travelling the world. Working as part of a team to check code for any Y2K issues and fix, as appropriate. This expanded to checking a variety of different languages including Visual Basic, Java and Unix shell scripts along with C and C++. Some simple Java programming helped locate tokens and automate fixes.

1997–1998
Analyst Programmer
Brithene Films
Bridgwater

Database programmer for a manufacturing company. Developing mainly with UniVerse BASIC, but some contact with Visual Basic. The work comprised of controlling the entry, storage and analysis of data relating to production, sales and accounts along with maintaining a mainframe system.

1994–1995
Industrial Trainee
ICL (now part of Fujitsu)
Bracknell

Placement year while studying at university. Role included the following:

  • Programming in C under various Unix based systems.
  • Writing shell scripts.
  • Building, installing and testing new products on various machines.
  • Preparation and execution of presentations for new products.

Education

1992–1996
Mathematics & Computing BSc (Hons)
University of Bath
Bath
1990–1992
4 A-Levels
Taunton School
Taunton
Maths (A), Further Maths (C), Physics (C), Business Studies (C)
1985–1990
9 GCSEs
Taunton School
Taunton
Maths (A), Physics (A), Chemistry (A), Additional Maths (B), French (B), Biology (B), Business Studies (C), English Language (C), English Literature (C)