David Hutchison

Software Development Lead

David Hutchison

About

I am a software developer with over a decade of professional experience delivering solutions using a range of different technologies. I am passionate about building robust, maintainable software and a strong believer in automation of tasks to improve their speed and reliability. I thrive when working under pressure and enjoy learning new technologies.

I am always looking for a challenge.

Employment

Software Development Lead

January 2015 - Present

Software Developer

July 2008 - December 2014
The SEEMiS Group LLP, Hamilton

My role in the organisation has expanded as my knowledge and experience have been proven. In my time here I have honed my skills with a variety of technologies while also gaining confidence in my abilities as a developer, a development team lead, an aspiring software architect, and all the other roles I perform on a day-to-day basis. With the number of responsibilities I have, this requires strong time management skills to assess priorities, but also ensure that others get support at the right time to ensure that bottlenecks are not introduced.

Knowledge sharing is an integral part of my role. As a development lead I mentor teams to improve their skills, promote best practices and ultimately work towards being able to function as more of a self-managing team with the knowledge & experience to do so.

I have proven abilities in the full project lifecycle, from requirements capture involving clients and external organisations through to the integration and support of a delivered solution. I am able to design an implement quality systems both on my own or leading a team.

  • My current primary project is the development of a new application & platform, replacing core pieces of the existing application suite, built on AWS using a micro-services based architecture. Key technologies including MicroProfile, Payara Micro, PostgreSQL, DynamoDB, and a CI/CD solution built on top of the AWS Code suite of tools. I am a technical lead on many areas of the design & implementation, including deployment, application design, and parallel running. I also lead the implementation team which is primarily focused on the API and backend development, and soon to be legacy integration
  • Many years of experience designing & developing a large JavaEE application suite with many interdependencies and interlinks. Combining a mixture of new developments and additions to existing systems. More modern projects introduced RESTful (JAX-RS) API development, with also a lot of experience with SOAP (JAX-WS) web services and a variety of older technologies
  • Always looking for opportunities where frameworks could be used or developed to reduce repetitive boilerplate, simplify development, and improve efficiency
  • Advocate for always considering how changes in the industry or team dynamics can change processes to optimise the delivery process and lower costs
  • Worked in agile (using Scrum/Kanban as appropriate) and waterfall projects
  • Always considering resilience, security, performance, and efficiency in designs & developments
    • Working with both internal and external security specialists to support penetration testing and resolve/mitigate any issues found
    • Using monitoring tools proactively during performance testing to identify application tuning opportunities that were not identified during reviews.
    • Designing performance test plans, either based on anticipated usage from business requirements, or extrapolation from monitoring of small-scale releases
  • Work with both technical and non-technical people across the organisation for everything from requirements capture through release & end user support
    • This includes a wide range of roles, which requires tailoring communication to the right level for use by SMT, Development/Project Managers, other Development Leads, Infrastructure, Business Analysts, Testers, Trainers, and the Support Team
  • Extensive experience in supporting applications, including
    • setting up & using monitoring systems for proactive & reactive purposes
    • application and platform troubleshooting, including deep dives into protocol or application server internals
    • providing third-level helpdesk support
  • Heavily involved in technical screening & interview process for new developers
  • Brought in many improvements by using more automation over the years, including
    • process automation
    • automated testing & quality checks
    • release process automation
    • introduction of configuration as code and scripted server installation processes for both application servers and local development environments

Education

Training for Professional Scrum Master (QATPSM)

QA

2016

AgilePM (2014) Foundation

Training ByteSize / APMG International

2015

Java SE 6 Programmer

Oracle Certified Professional

2012

2.1 BSc. Hons. Computer Science

University of Strathclyde, Glasgow

20042008

Skills

Through my time doing professional, academic, and hobbyist software development I have worked with a wide selection of software technologies. I enjoy learning new technologies as required to solve problems and try to keep up to date with both new technology and industry developments.

Outside of the self-driven research & development I do which is related to the technologies used in my day-to-day work, I also dabble in IoT, home automation and some web development. I, somewhat infrequently, write a blog detailing solutions that I could not find good material on. Some of this research & development ends up feeding back in to solutions to problems faced in my day-to-day work, or takes the form of proposals for improved tools & technologies.

I am used to delving into the internals of open source libraries to reverse engineer why something works the way it does, and provide feedback (or fixes) to issues I encounter.

Programming languages: Java 11 (from 5), TypeScript, Bash, HTML, CSS (with SCSS/LESS), JavaScript, Angular, Ruby, Python

Application libraries: Java/Jakarta EE (JAX-RS, JAX-WS, CDI, EJB), MicroProfile, Swing, JasperReports, iText, JSP

Build tools: Maven, Ant

Databases: Microsoft SQL Server, PostgreSQL, SQLite

Testing Tools/Frameworks: Junit 4/5, TestContainers, Mockito, Jmeter SoapUI, Postman, RestAssured, Wiremock, Jest, Jasmine

Continuous Integration: Jenkins, AWS Code suite, GitHub Actions, Sonatype Nexus, SonarQube

Monitoring: AppDynamics

Deployments: Payara, Glassfish, Jboss, Tomcat, Apache, ApacheDS, nginx, Docker