Profile
Senior Java Software Engineer specialized in back-end developments, with a strong focus on quality, use of patterns and, in general, improving the processes and practices of the teams where I’m involved. Having an extensive experience (10+ years), my goal is not just delivering working software but consolidating solid architectures and optimizing the maintainability of the final result.
Core strengths
- In-depth understanding of Object Oriented principles and Design Patterns
- Passionate about Clean Code and Agile principles
- Good organizational skills; focused on getting results
- Team worker; always open to discussion
- Continuous and quick learner
Technical skills
Java Ecosystem
- JDK 1.4 to 8, including good knowledge of Concurrency / Multithreading, Streams and Lambdas
- JEE stack: JAX-RS, JAX-WS, JAXB, JPA, JSP, JSTL, Servlets, WebSockets JTA, CDI, JMS, JMX
- Frameworks: Spring (Core, MVC, Security, Batch…), Hibernate, OSGi
- Integrations: Jboss Fuse ESB, Apache Camel, ActiveMQ, Apache CXF
- Other libraries: Apache Lucene, JasperReports, Guava, Apache Commons, Swing
- Testing: Junit, Mockito, PowerMock, Cucumber JVM, Spock, Geb, JMeter
- Application servers: Tomcat, Jboss, SAP WAS
- Development tools: IntelliJ IDEA, Eclipse
- Static analysis tools: FindBugs, PMD, CheckStyle
- Building: Maven, Gradle, Ant
- Other JVM languages: Groovy
Software Architecture
- Solution architecture: UML, high level design, non-functional requirements
- Patterns: GoF Design Patterns, Software Architecture Patterns, Patterns of Enterprise Application Architecture, Enterprise Integration Patterns
- Web Services: SOAP protocol and REST architectural style
Data Processing
- Relational databases: Oracle, PostgreSQL, Microsoft Sql Server
- SQL, PL/SQL
- NoSQL and Big Data: MongoDB, Hadoop
- Message formats: XML (including XSD, XSLT, XQuery, Xforms, etc), JSON
Miscellaneous
- Front End: HTML, CSS, Apache Tiles, Bootstrap, Javascript, AJAX, jQuery
- Agile methodologies and practices: SCRUM, BDD, TDD, Refactoring
- Cotinuous Integration: Git, SVN, Artifactory, Jenkins, Bamboo, Sonar, Stash
- Virtualization: Docker, Vagrant
- Cloud: Google App Engine, SauceLabs platform
- Code reviews: FishEye / Crucible
- Management tools: JIRA, Redmine, Microsoft Project, Microsoft Office
- Other languages: C, C++, Visual Basic for Applications
Work experience
2016 to present: Software Engineer at Pivotal Labs (London)
2014 to 2016: Analyst Programmer at Motability Operations (London)
Motability Operations is a financial not-for-profit company that operates the Motability Scheme, which enables disabled people to lease a car
- Designed and implemented an integration project (using Jboss Fuse and Camel as core technologies) to generate documents requested by legacy systems, in order to keep posted more than 600.000 customers and extensive network of dealers and finance services
- Created solid architecture for the project (using Pipes and Filters architecture, plus well-known Design Patterns), to minimize the effort when the business requests adding new letters
- Attention to non-functional requirements (high availability, transactions, audit, etc)
- Improved development processes and guidelines in the team, using Clean Code, refactoring, code reviews and static analysis tools as techniques to reduce the technical debt
- Implemented BDD methodology, involving QA analysts and business analysts in the process
- Fostered the use of testing techniques, achieving a test coverage increase from 20% to 95%. Developed a testing framework to run integration tests replicating the production context as much as possible
- Standardized features used by different teams (i.e. audit) in the form of Camel components
- Delivered diverse presentations to the whole division, in order to improve efficiency: BDD, IntelliJ IDE tips and shortcuts, Geb and Spock testing frameworks, Gradle
- Optimized Continuous Integration pipeline, reducing build times based on the run of unit and smoke tests, and running complete plans overnight to get full test coverage reports
- Created thorough documentation, focusing on practical aspects to facilitate incorporation of new developers to the team
- Improved reliability of legacy systems (initially 0% test coverage), by creation of functional testing framework (based on Geb), which tested the systems end to end
- Standardized environments of legacy systems to run in same version of Java and use the same build tool (migrating some of them from Ant to Maven)
- Led presentations (technical and sprint reviews) to the business
- Conducted induction meetings with new starters
2013 to 2014: Senior Software Developer at AMS Geomatics (Madrid)
AMS Geomatics is a consulting services company specialized in mass information processing systems
- Delivered first versions of innovative project, centered around the generation of 3D models of buildings based on aerial pictures (insurance industry)
- Implemented REST Web Services (using Spring MVC) as the back-end for desktop application, fulfilling strong requirements of high availability, low latency and idempotence
- Designed and implemented JEE Web application to manage assignments of daily tasks (based on areas grouped by geographic coordinates) to the production operators, as well as the generation of modeling statistics. Worked in both the front-end and back-end
- Re-designed this application based on RESTful architecture
- Coordinated with a development team based in the USA and a production team based in Asia (400 operators working 24/7)
- Collaborated with the development of a desktop application to generate sketches, using C++ and Qt
- Supported and assisted in the performance tuning of the production environments in Asia
2007 to 2013: Analyst Programmer / Lead Developer at Adasa Sistemas (Madrid)
Adasa is an engineering services company specialized in sector-based and technological solutions for application in the management of the integral water cycle and the environment
- Started with the company as a Programmer and promoted to Analyst Programmer after two years. Performed the role of Lead Developer in several projects, reporting directly to the Project Manager
- Participated in projects of different scopes for Spanish public administration customers and the European Commission, from short-term projects (two months) to long-term projects (more than five years), often working on several projects at the same time
- Acted as a bridge between the customers and the company from a technical perspective
- Coordinated tasks in a team composed of four developers, being responsible for integrating all the components into the final solution
- Successfully delivered tools to support information reporting processes that satisfied European Commission directives (technologies: JEE, XML, etc). They were based on workflows to extract, validate and format all the data uploaded by users from different Spanish areas, pushing the information into an EU platform. The deadlines for these kinds of processes were very strict with heavy fines to be paid by the government if not delivered on time
- Implemented several JEE web-based information systems. These systems were based on the SOA and Reflection architectural patterns and consolidated huge amounts of data from different sources into a common model. Technologies: Spring, Oracle, Apache Lucene, HTML, AJAX, jQuery, etc
- Designed and maintained relational data models, optimizing consistency and performance
- Trained and supervised newly incorporated programmers
- Prepared and delivered presentation of ID-TAX application to an audience of over 200 people in the Ministry of Agriculture, Food and Environment (reference: http://bit.ly/1FQnZ7q)
Early career
- 2007 (March to September): Programmer at Indra Sistemas (Madrid). Development of C++ applications for a real-time management project of take-off and landing of scheduled flights
- 2005 to 2007: Programmer at GFI Informática (Madrid). Development, design and testing of C++ applications under Linux environment for projects in the telecommunication and insurance industries
Contributions to Community
- Blog: www.raulavila.com, about Java and best practices in Software Development. I use my native language, Spanish, because I think the value I can add is bigger than writing in English. (The internet is full of awesome blogs in English, but not as many in Spanish, being the second language in the world)
- GitHub: www.github.com/raulavila. It basically contains challenges, projects where I experiment with technologies and code that I comment on my blog. You can have a good idea of my programming style, even though, due to the nature of these projects, most of them don’t have a good test coverage
- Regular attendee to events and talks in London Software Craftmanship Community and London Java Community. I even delivered one lightning talk in the LSCC (16/7/15, slides: http://bit.ly/1e3t3xe)
Education
- Bachelor’s Degree in Computer Science. Complutense University of Madrid. (Graduated top student)
Certifications and additional courses
- Sun Certified Java Programmer. Sun Microsystems. 2008
- Oracle Certified Web Component Developer. Oracle. 2011
- MongoDB for Java Developers. MongoDB University. 2013
- Uncle Bob’s Clean Code: Agile Software Craftmanship. Skills Matter. 2014
- Java SE 8 Lambdas and Streams. Oracle MOOC. 2015
Interests
I’m an eager learner, so I spend most of my spare time reading (books, articles, blogs, etc) and watching training video courses or presentations about new technologies and practices. My other main interest is music.