Stephen Fletcher

Projects | Experience | Skills | Education | Interests

💻 After more than 20 years in x-ray hardware development - where I was troubleshooter-in-chief for a large high-tech engineering firm - I decided to change career and follow my love of problem-solving into the world of software engineering . Over the years I've built many transferable skills: in product design and development, customer service, fault finding and diagnosis, team-working, coaching, management and leadership.

🌱 Nonetheless I clearly entered the software engineering space with knowledge and skill gaps - so I have been working assiduously to address them: I’ve learned a wide range of languages and frameworks; I’ve worked solo, in pairs, and as part of an agile team; I’ve practised working with APIs and OAuth 2.0 for one of my personal home automation projects; and I’ve grown my understanding of common web security risks (e.g. OWASP Top 10).

Projects

These projects demonstrate a range of technologies used whilst developing applications at Makers Academy bootcamp.

Name Description Tech/tools
Reef Runner A 2D side scroller game that can be played on a mobile phone or desktop computer.
Currently deployed here: https://reefrunner.herokuapp.com/
Our team demo video: https://www.youtube.com/watch?v=zRn2Lerc43c
 from approx. 4 min to 15min in the video
Phaser, Javascript, Heroku, Cypress
Acebook A social media web app where you can make posts including text and images. You can like or comment on posts Javascript, Express, Nodemon, Handlebars, Mongoose, ESlint, Jest, Cypress
Makers BnB A website for viewing and booking Bed and Breakfast accommodation Ruby, Sinatra, Rack, PreSql, Bootstrap, Rspec
Bank Tech Test A bank account app developed using TDD Ruby, RSpec
JS Bank Tech Test Tech test as above in Javascript Javascript, Jest

Software Experience

Makers Academy (June 2022 to October 2022)

  • Became proficient in two new programming languages (Ruby and Javascript)
  • Built several web apps collaborating within a small team using paired programming
  • Practised agile techniques and Test Driven Development
  • Applied previously understood knowledge with Object Oriented Code

Team Treehouse and Codecademy (2021 to 2022)

  • Learned Python, Django, and CSS on solo projects
  • Built some applications using OAuth 2.0
  • Deployed one of my projects on python anywhere

Hardware Experience

Nikon Metrology (2017 to 2021)

System Testing and Integration Lead

  • Technical lead responsible for the development of an ambitious and complex high Voltage x-ray source
  • Set the technical direction for a multidisciplinary team to ensure the large number of separately developed hardware subcomponents interacted safely and performed well upon integration
  • Designed and implemented systems testing regime and proportionate risk assessment, redundancy and controls

X-Tek Systems Ltd (1997 to 2017)

Senior Technical Development roles

  • Range of technical leadership roles in bleeding edge x-ray hardware development
  • Responsible for every step of the development process:
    • Conceptual design
    • Validating business and customer needs
    • Test design, build, test and iterate
    • Install and configuration on-site
    • Debugging of new and legacy components
  • Extensive customer support experience
    • In person and remote
    • 1st, 2nd, and 3rd line technical support for products
  • 2D Engineering drawings using Draftsight
  • Created Microsoft Excel Macros to meet business needs
  • VBA scripts to customise control of x-ray hardware

Skills

Collaboration

At Makers I had to build applications both in small teams and using paired programming. I took the time to get to know my team and pairing partner and to understand their knowledge, skills and preferred ways of working and communicating. This meant I could make sure we were working to our strengths, meeting each other's needs, and organising the work optimally. As a result of this collaboration, my work was much higher quality than any of us could have produced individually. The intensity of the collaboration is evidenced in my GitHub repos.

When leading the team developing a novel x-ray source at Nikon Metrology I needed to solve problems that crossed over different disciplines. I brought an electronics engineer, a mechanical engineer, and our engineering workshop together to openly discuss ideas with me, and challenge their assumptions. The impact was the production of useful prototypes that addressed design issues cutting across the disciplines.

Testing

I wrote a tech-test style command-line app that modelled a bank account, with deposits, withdrawals, and bank statements, following a Test Driven Development approach. I designed tests based on requirements, then created the minimum code needed to pass each test - resulting in an efficiently developed, readable, and robust application that behaved as expected, including edge cases.

At Nikon Metrology, one of our products was consistently failing to meet customer expectations for reliability or performance - and was damaging our corporate reputation. I was tasked to rectify the situation by bringing about design improvements. I designed a systematic programme of tests - first to identify and understand the problems, and second, to develop and iterate necessary design improvements. Using a prototype, test, improve cycle, I worked with colleagues to release a product that passed tests, met customer expectations, and began to rebuild our reputation for reliable, quality products.

Troubleshooting

During my final project at Makers, the game my team was developing ran too slowly on mobile devices. I needed to establish the cause of this poor performance. One by one I disabled different components of the game (change debugging) - e.g. obstacles, scrolling 3D-effect background, and gravity to uncover which of these had the greatest impact on the speed of the game. I discovered the scrolling background had by far the most impact and discussed possible solutions with the team member who had implemented the background. They solved the issue by presenting a simplified background for mobile devices.

In hardware, I diagnosed a subtle output stability issue with a high voltage x-ray power supply:

  • X-ray voltage would violently oscillate under some conditions
  • All subcomponents performed as expected and passed tests
  • I devised a series of system tests to determine the origin of the oscillation
  • Further tests varying system parameters to fully understand the cause and nature of the oscillation

I discovered the x-ray high voltage stability was marginal by design. System variations and tolerances (e.g. attached capacitance) could cause unstable high voltage.

I explained this in detail to an analogue electronics expert, enabling them to redesign the voltage feedback loop. The redesigned circuit produced stable output even with extreme system variations.

Education

University of Bristol (1994 to 1997)

  • BSc Chemical Physics

Interests

🎹 Classical Piano (grade 8)
🎻 Classical Violin (grade 8)
🪚 All aspects of practical DIY, kitchen fitting, bathroom fitting
⚙️ Car mechanics, engine & gearbox repairs
📺 Domestic appliance repairs