Senior Software Engineer (BBBH12693) Florence (province), Italy
My client is a global high technology leader investing in digital innovations, connectivity, big data, artificial intelligence, cybersecurity and quantum technology.
The company provides solutions, services and products that help its customers businesses, organisations and states in the defence, aeronautics, space, transportation and digital identity and security markets.
ROLE: SENIOR SOFTWARE ENGINEER
The Senior Software Engineer will be part of a talented software team and will be responsible for software development and operational support activities while providing expertise in the full software development lifecycle, from concept and design to configuration management and testing.
He/She will design, test and evaluate computer software applications.
Duties of a senior software engineer include: designs and develops programming systems; responds promptly and accurately to bug reports; assesses and repairs legacy code; conducts system analysis and development; keeps up to date with changing technologies; analyzes, designs, coordinates and supervises development software programs; analyses system requirements, derive software requirements and divides them into tasks; analyzes the performance of programs of the company; tests programs; documents programming codes consistently; prepares presentations to customers and clients and maintains strong and positive client interactions.
- Analyze, design, coordinate and supervise the development of software systems.
- Analyze system specifications and translate high level requirements into functional requirements to perform the design, development, testing, and maintenance of software from inception to the production system.
- Design and develop large scale applications for critical infrastructure systems, delivering high-availability and performance.
- Contribute in all phases of the development lifecycle.
- Write well designed, testable and efficient code.
- Be responsible for analysis of programs including performance, diagnosis and troubleshooting and designing solutions.
- Be responsible for the development of new programs, analyze current programs and processes, and make recommendations which yield a more cost effective product.
- Support continuous improvement by investigating alternatives and technologies and presenting them for architectural review.
- Document code consistently throughout the development process by listing a description of the program, special instructions, and any changes made in database tables on procedural, modular and database level.
- Be responsible for adopting and using tools and equipment involved in performance of essential functions of programming including measuring instruments.
- Communicate with system engineers and manufacturer's technical staff regarding programming needs and performance.
- Provide assistance to testers and support colleagues as needed to determine system problems.
- Software tool selection, installation and configuration for development, integration and production environments.
- Provide recommendations to management concerning issues of programmer productivity and software development management.
- Make presentations to customer, client and professional peers.
- Maintain strong and positive relationship with the customer and suppliers.
- Work as a member of an Agile team
- Masters’ degree in Engineering (Telecommunications, Electronic, ICT).
- Min. 3 years’ experience in the design and development of complex software architectures.
- Fluent in Italian and English.
- Proven hands-on experience with Web Application development (more than 3 years)
- Knowledge of Object Oriented analysis and design using common design patterns
- Experience with test-driven development
- Required strong knowledge of:
- Coding skills in Java;
- Spring (Web and Security);
- RDBMS SQL (Percona, MySQL, Microsoft SQL Server Etc.);
- A good knowledge of one or some of the following points enforce the profile:
- Linux OS;
- WebServices/RestServices development (SOA, REST, XML, JSON);
- Modular application and multithreading application development;
- OSGi, JPA;
- Nice to have knowledge of:
- Standard protocols such as SNMP, Modbus, OPC, HTTP, etc;
- Keycloack (Oauth2/oidc);