The Scotch Whisky industry is fiercely traditional as it needs to conform to strict definitions of what can legally be called ‘whisky’. So, it may be surprising to learn that even distilleries need to be agile and apply software innovation to compete.
Software engineers apply the principles of software engineering to the design, development, maintenance, testing, and evaluation of industry specific software. Within the Whisky Industry this can apply to a wide range of operational requirements, such as materials traceability, scheduling, cask fill levels and regulatory compliance to maintain a competitive edge. Giving better insight, easier reporting, streamlined processes and greater operational efficiency, ultimately saving time and money.
As a software engineer you apply the principles and techniques of engineering, mathematics, and computer science to design, develop and test software that can solve specific problems the business or wider Whisky industry is facing.
Main duties and responsibilities
As a Software Engineer you will create, maintain, audit and improve systems to meet a particular need. You will also write diagnostic programs and design and write code for operating systems and software to improve efficiency, diagnose and resolve system faults. Typical duties and responsibilities include:
- Analyse business and user requirements and problems. Review and scope the requirements.
- Research, design and write innovative software programs that address the technical issues identified.
- Execute full lifecycle software development.
- Develop existing programs by analysing and identifying areas for modification. Re-writing as necessary.
- Integrate existing software products and work to make different platforms compatible.
- Developing technical specifications and operational technical / feasibility documentation.
- Develop flowcharts, layouts and documentation to identify requirements and solutions.
- Write well designed, testable code. Applying best practices and applying standard operating procedures.
- Write systems to control the scheduling of jobs or to control the access of remote systems.
- Monitor and correct software defects.
- Execute end-to-end ownership of UI features including testing monitoring and troubleshooting the software.
- Troubleshoot, debug and upgrade existing and new software. Evaluate user feedback.
- Work closely with team members such as project managers, graphic designers, UX designers, system analysts and sales and operational professionals.
- Develop software and quality assurance verification and procedures.
- Write software user documentation.
- Work closely with cross-functional teams to communicate project status.
- Investigate new technologies and their potential to resolve operational problems.
- Maintain technical know-how by attending courses, workshops, reading manuals and accessing and evaluating new applications.
Skills and experience
As a Software Engineer you will design, develop and maintains computer software. You will use your creativity and technical skills and apply the principles of software engineering to help solve new and ongoing problems for an organisation. Typical skills and experience include:
- Experience with & understanding of machine learning models and principles.
- Experience managing the software development lifecycle.
- Proven experience as a software engineer or software developer.
- A comprehensive understanding of computer science concepts with extensive coding skills.
- Experience within a test-driven environment designing interactive applications.
- Ability to develop software in Java, Ruby on Rails, C++ or other programming languages.
- Excellent knowledge of relational databases, SQL and ORM technologies (JPA2, Hibernate)
- Experience developing web applications using at least one popular web framework (JSF, Wicket, GWT, Spring MVC)
- Experience within a test-driven software development.
- Ability to improve operations by conducting systems analysis, recommending changes in policies and procedures.
- Proficiency in software engineering tools.
- Ability to develop software solutions by studying user and information needs; conferring with users; studying systems flow, data usage, and work processes; investigating problem areas; following the software development lifecycle.
- Ability to communicate, engage and influence stakeholder requirements.
- Analytical and problem-solving skills and the ability to ‘troubleshoot’ issues.
- Ability to document requirements and specifications and demonstrate solutions by developing documentation, flowcharts, layouts, diagrams, charts, code comments, and clear code.
- Teamworking and communication skills, including the ability to communicate technical concepts to non-technical stakeholders.
- Resilience and the ability to adapt to different situations.
- Provides information by collecting, analysing, and summarizing development and service issues.
- Ability to work across cultures/geographies.
Technologies typically used:
- Java (core Java plus frameworks like Spring
- SQL
- JavaScript (Angular, React)
- Bootstrap
- AWS & Terraform
- JUnit
- Bitbucket/GitHub
- Maven
- CI/CD
Qualifications Required
You will typically need a 2.1 degree in a STEM (science, technology, engineering and mathematics) subject. Some roles may ask specifically for computer science or software engineering degrees, or a masters-level qualification. Some employers will accept 2.2 degrees or degrees in non-STEM subjects.
You may also need to have experience in specific programming languages such as Java, C++, C#, MATLAB and Python and an understanding of technologies such as SQL and .NET. In addition, you will need
- BSC degree in Computer Science, Engineering or similar relevant field
- 5-7 years’ experience building software.
- Java, Spring, Mongo DB & SQL, AWS, & Machine Learning
- Excellent knowledge of relational databases, SQL and ORM technologies (JPA2, Hibernate)
- Experience developing web applications using at least one popular web framework (JSF, Wicket, GWT, Spring MVC)
- Experience delivering solutions using Agile methods.
- Strong written and verbal communication and interpersonal skills.
- Creative problem-solving skills.