Matthew Hogan

  • Ireland, IE

Senior Software Developer

Building elegant, robust, and efficient systems is my aim. I am a developer with a track record in creating innovative and reliable systems at an enterprise scale. I have driven the implementation of improved development practices, mentored with regard to continuous integration, automated testing, programming quality, database systems, service-oriented architectures, and general geekiness.

Work History

Work History
Apr 2015 - Apr 2016

Senior Software Developer (Contract)

Citi

JEE/Web Services/BDD/Full stack development

Role: JEE Web Services (Apache CXF) developer on a globally distributed framework team for a payments services layer exposed to institutional clients. Coordinated with various test and development teams on a 24-hour schedule. Other than development, I improved quality metrics, mentored and supported junior developers, implemented a code review process.

Role: Team lead for a new internal automated test framework using the BDD methodology written from scratch. 5 developers on a remote development team worked on the project. 

Role: Full-stack development on a merchant web site intended to prove a new payment component under development for major e-commerce sites. 

(Ref: Eamonn Walsh/Sean Duddy)

Mar 2011 - Mar 2015

Senior Software Developer (Contract)

AIB

Digital Innovation/Process Re-Invention/Account Opening

Role: Lead JEE developer on a project to enable the bank to begin to bring the branch network to the customers by deploying a front-end on a tablet  (iPad), which securely invoked the middleware JEE application cluster via a VPN. 

The project saw the official introduction of the Agile methodology within the enterprise by McKinsey consultants who worked alongside us as SCRUM masters.

(Ref: Paul Sweeney/Robert Dee/Kevin Feeney)

Digital Innovation/Process Re-Invention/Personal Lending

Role: Lead JEE developer on a project that enabled customers to apply for loans and overdrafts through AIB Internet Banking and receive the funds immediately if approved.

(Ref: Kevin Feeney)

Mar 2010 - Mar 2011

Senior Software Developer (Contract)

Further Education and Training Awards Council/FETAC Business System

This application suffered from poor design and implementation. My role was to come in as a Senior JEE Developer on an Apache Struts/Weblogic/Oracle10i configuration and fix it. Participated in daily stand-ups. Re-designed the database schema. Refactored and added to the codebase. Worked closely with the business, test, and operations teams to make a successful deployment. The scope included the full stack from a JSP/Tags/XML front-end to the database and other data feeds.

Sep 2004 - Mar 2010

Senior Software Developer (Contract)

AIB

Enterprise Mortgage Systems/Printing

Role: Lead Developer.

Designed and implemented a Java/zLinux Suse Linux based solution that transferred printing documents to an external vendor for printing.

Skills/Tools used: KSH, Java, Linux, svn, Eclipse.

NBP/CCV

Role: Lead developer

This application involved a rethinking in the Bank's view of customers as determined by the customers' relationships between each other rather than simply individuals with accounts.

This was another JEE application with JEE, XML, DB2, SQL Server, MQSeries. 

We deployed a continuous build system using Cruise Control and an SVN SCM.

The front-end used Javascript, JQuery, Prototype, XML, XSLT, AJAX.

NBP/Markup

Role: JEE Developer

Joined this project in the development phase with an emphasis on JEE and DB2 development.

My main contribution was JEE and DB2 development expertise.

The front-end used Javascript, Prototype, XML, XSLT, AJAX.

Customer Lending/ICB

Role: Lead Developer.

Designed a middleware server that orchestrated calls from various banking systems to the external ICB system over a private leased line. 

The server was written in Java and was based on a simple Poller pattern that involved threads loading based on a declarative source that defined where to pass the data, and various other functions such as security. Client communication originated from many modes including MQSeries, HTTP, Windows Share, Sockets, Email.

NBP/Printing

Role: Lead Developer.

Designed a printing solution to be used across the branch network.

The bulk of the code was written in Java, with XML/XSLT/XSL-FO used to define the documents.

Branch Banking/NBP/NAPS

Role: JEE/XML Developer

Worked in the development/integration/test phase in a waterfall methodology. 

Involved implementing various branch teller functions with regard to underwriting for products such as loans. 

One-Stop-Shop

Role: JEE Developer

This was my first role onsite in AIB where I was contracted to work on a distributed middleware application.

Jan 1999 - Sep 2004

Senior Software Developer (Contract)

Resolution Technology

Offshore Banking/Conversion Project

Role: Lead JEE Developer

Converted the Offshore Banking project to JEE over the space of a year.

The ASP was replaced with a JSP/XML/XSL based solution, the IIS components with the JEE application including Servlets, EJB, JDBC. SSL security was implemented with server certs internally and authentications at the customer level.

Offshore Banking

Role: Application Developer

The client-server application provided customers with online access to offshore accounts and was deployed in the Isle of Mann.

Developer in a team. I wrote code for the front-end in ASP, common dll in C++, activex programming in Visual Basic, SQL for an Oracle8 database.

IBM

Role: XML Developer

Wrote XML/XSD scripts for the Clearlake product in their office in Dun Laoghaire. 

Financial Services Projects

Role: Lead/Application Developer

I worked on various similar applications as a developer and, later, as lead. The user and DAO interfaces were Visual Basic and the applications typically involved OLE automation/DDE with Office components, ftp'ing files to servers in other institutions, SQL Server/Oracle databases. I designed a generic application generator that did most of the grunt work when starting a new project for a client. I also wrote a component that generated documentation in a similar fashion to javadoc, but for commented BASIC code.

Education

Education
1998 - 2002

BSc Computer Science

Trinity College, Dublin
1993 - 1996

Bachelor of Arts (B.A.)

University College Dublin

Skills

Skills

Technical Design

Technical Design has been one of the aspects that I have been consulted on, in particular application and logical design, which I have documented over the years in many design documents and UML diagrams. I have designed database schemas, distributed messaging systems, client-server, n-tier, even some by now outdated desktop user interfaces.

SDLC

I was a member of the innovation team in AIB that was trained by external consultants from McKinsey and tasked with demonstrating and evangelizing the Agile methodology to replace the existing Waterfall SDLC as a means to improving time-to-value to make the business more responsive to market pressures. I have roughly 5 years of experience in Agile Development methodologies, working with analysts to sprint plan from Epics through to tasks as well as taking part in daily scrums, sprints and retrospectives. I've used various other methodologies such as Prototyping and Waterfall. My involvement in the SDLC has mostly been in Requirements Analysis, Design, Development, Integration, Test, and Implementation.

Technical Lead

I have played the role of Technical Lead on a number of projects and my style would be to try to mentor and encourage inexperienced developers and testers to learn with minimal instruction and to eventually operate with minimal oversight. I like people to voice their opinions on analysis and design matters and take part in design and retrospective reviews of development standards.

Programming Languages

Some languages that I've coded in: Java, C++, C, Basic, JavaScript.

Java

Over the years Java has become the my main programming language expertise and I have designed a number of applications from scratch to live. I like to keep up with the various tweaks as they come into fashion. Most of the applications I have worked on recently have used 1.7, while my current application is using 1.8, though I have been using it since 1.1.

Java Enterprise Edition

My first exposure to JEE was in 2001 when I was the Java expert on a team that converted an online banking application from an ASP/IIS implementation to J2EE. Since then I have worked on various application servers and all versions of JEE and been exposed to most of the platform.

Patterns

Singleton, Command, Abstract Factory, Factory Method, Facade, Proxy, Adapter, MVC, Business Delegate, DAO, Front-Controller, Service Locator, Filter, Data Transfer Object

Frameworks

Some of the frameworks I've used:JEE, Spring, Struts, Spark-java, Play, myBatis, iBatis, Hibernate, JPA, JMS, JDBCJUnit, mockito, TestNG, jax-rs, jax-ws.

Web/Application Servers

I have been deploying and writing applications to WebSphere since version 4 using various IDE's such as VisualAge for Java, WebSphere Studio, Rational Studio, Eclipse, Spring STS. I would be familiar with the architecture for zOS and network deployment versions and can specify and deploy configurations such as data sources, thread management, transport layer security configuration, web server, load balancers, etc. I have also written various python and jython scripts for deployment and management of applications. I've also deployed applications on WebLogic ,Tomcat, JBoss, and Wildfly servers. I have also configured apache web servers as load balancers and content servers on the WebSphere platform. At the moment I am investigating the Grizzly NIO Framework as a scalable alternative server.

Middleware

Polarlake ESB - I have written a number of circuits using their XML based schema. MQSeries - I have written a few applications that query MQSeries infrastructure and I'd be familiar with deploying and application programming. Over the years I've written SOAP, RMI, JMX, MDB, EJB components.

Database

Having designed a number of schemas and worked on many others, I have written SQL and PL/SQL, SQL/PL, T-SQL for IBM DB2, Microsoft SQL Server, Oracle, MySQL on various platforms. Recently I have been developing an interest in alternative data storage paradigms such as NoSQL (MongoDB, Cassandra) and NewSQL (VoltDB). I have written a few prototype applications and my next step would typically involve trying to find a business case to apply those skills in a production system. 

SQL

I have been programming with SQL for more than 15 years with various databases such as Oracle, DB2, Microsoft SQL Server, MySQL, PostgreSQL, and others.

DB2

I have implemented schemas and extended existing schemas on DB2/zOS versions 8, 9, and 10, as well as DB2 LUW systems, writing stored procedures , triggers mainly in native SQL along with a couple of Java and C procedures.

Oracle

I've worked on Oracle databases on and off for roughly 15 years in a development role, writing basic SQL, stored procedures, packages, triggers, and other objects, as well as taking part in performance analysis and optimization.

Microsoft SQL Server

My main exposure to SQL Server has been in versions 6 & 7 where I wrote a number of desktop applications in Visual Basic/C++ that contained embedded SQL and invoked T-SQL procedures, as well as creating a few DTS packages to run scheduled jobs. I also worked on a couple of J2EE applications which invoked procedures that I wrote on the 2000 version.

Scrum

Daily scrums are part of my daily work practice, a practice which I believe has improved communication between the business and technical departments in particular.

Web Services

I have developed and deployed SOAP based web services, though of late JSON has taken over. Professionally, I have written a couple of APIs for JEE middleware applications exposed to mobile/tablet front-ends with JSON. 

SCM

GIT, SVN, Rational Clearcase, Visual SourceSafe

Virtual Machines

I first deployed a production application to a VMWare Virtual Machine in 2006, and since then I have used and attempted to encourage their use as a useful development tool. I've deployed many instances of Linux and Windows to VirtualBox and Virtual PC for this purpose over the years and found them to be an invaluable development resource.

Scripting Languages

Over the years I have picked up various scripting languages with varying degrees of expertise including: Python, JavaScript, PHP, VBS, BASH, KSH, DOS Batch.

Systems

Some operating systems that I've used: Windows, UNIX, Linux, DOS, OS/2, Amiga, Apple, IBM Mainframe z/OS.

Linux

I have development experience on Debian & Redhat Linux and have deployed applications on Solaris UNIX running on midrange hardware, zLinux running on z/OS.

Microsoft Visual Studio C++

I have written a few minor user interfaces, dlls, windows services, network programming, though in recent years I have been almost exclusively programming in Java/*ML/SQL ecosystems. I have also linked a number of custom dlls, which I wrote, to Java programs using generated JNI interfaces. My last professional involvement with Visual Studio was with version 6.

Visual Basic

Before I programmed Java, I programmed in Basic, in particular for user interfaces, interfacing with OLE applications like Microsoft Office, Win32 API programming, activex component for IIS. I have worked with other flavours of BASIC including VBA, QuickBASIC and VBS. 

XML

I have written tons of XML, XPATH, XQUERY, XSL, XSL-FO over the years.

Certifications

Certifications
2001 - Present

Sun Certified Java Programmer

Sun Microsystems
2011 - Present

IBM Certified Database Associate -- DB2 9 Fundamentals

IBM

References

References

Eamonn Walsh

Senior Vice President

Sean Duddy

Architect (Citi)

Robert Dee

IT Project Manager (AIB)

Kevin Feeney

IT Project Manager (AIB)

Paul Sweeney

IT Manager with Digital Innovation Strategy (AIB)