
Joshua Hayden
Verified Expert in Engineering
Java Developer
Wichita, KS, United States
Toptal member since December 22, 2016
As a results-driven, agile software engineer, Josh focuses on implementing high-quality code. He is thorough with details and iteratively drives projects to completion. He is equally comfortable owning an entire project or dividing the work across a team. He also regularly contributes to all phases of the software development lifecycle.
Portfolio
Experience
- PHP - 10 years
- JavaScript - 8 years
- Test-driven Development (TDD) - 5 years
- Java - 5 years
- REST - 3 years
- AngularJS - 3 years
- Git - 2 years
- Node.js - 2 years
Availability
Preferred Environment
Eclipse, IntelliJ IDEA, Visual Studio Code (VS Code), Git, Windows, Linux
The most amazing...
...project I've built was a relational database with dozens of tables and nearly 1000 fields that was metadata driven for creation and insertion.
Work Experience
Software Engineer in Test
NetApp - E-Series Web Services
- Developed with a QA hat on a REST API product for managing the E-Series storage systems. Exposed root causes, and resolved issues with test and production code.
- Identified scenarios, implemented automated tests, and created technical documentation for release of new security feature required for clinching multi-million dollar sale.
- Coached QA team members on best practices for improving test coverage and maintainability of test code for higher team efficiency and product quality.
- Pinpointed concurrency and other issues within complex technology stack to the component or specific code in error to drive resolution from the appropriate teams.
Software Engineer
NetApp - E-Series Core Productivity
- Built and maintained several web and desktop apps along with back-end databases for tracking test component details. Supported 100+ engineers in use of apps.
- Designed and implemented metadata-driven SQL Server database to ingest XML data for tracking and reporting 900+ data points of SAN storage systems under test. Developed and performance-tuned reports. Eliminated time spent on manually creating reports.
- Architected a solution as a personal innovation project with the existing database schema along with other internal apps to quickly begin ingesting and reporting customer use of SAN storage systems. Achieved working solution in weeks rather than months or longer.
- Identified delayed responses for user support requests and created support team rotation that successfully cut typical response times from days down to hours.
- Organized requirements and design across multiple user and developer teams and apps for verifying SAN storage system configuration details. Successfully integrated the components, meeting user need.
- Introduced to team test driven development for PHP code bases, version controlling and automatically applying database schema changes, and automated end-to-end web app testing with WebDriver, resulting in improved quality and stability of apps.
- Reduced the scope and optimized the planned order individual components were developed for a hardware version tracking system. Engineering organization gained value months sooner and provided feedback for iterative enhancements.
- Started new projects with GUI, CLI, and/or REST API mockups and examples to flesh out details with users and product owners, which quickly met expectations and needs.
Experience
Single-page Application with a RESTful Web Service and Tests
I primarily focused on implementing the end-to-end tests following a page object pattern to create reusable test components with well-factored, clean code. I also contributed to various other layers of the stack including front-end Angular JS and tests, RESTful services, Java Swing UI, and POJOs for Hibernate.
Our tech stack included AngularJS, Windows Server, Java Jetty, Jersey, Jackson, Hibernate, and SQL Server with REST integration with our Java Swing UI desktop app. We developed with Eclipse and Gradle. We used Jasmine for JavaScript unit tests and JUnit for Java unit tests, RESTful service tests, and end-to-end tests (with Selenium WebDriver).
Metadata-driven Database Schema and XML Shredding
I defined a metadata schema that described the 900+ attributes, data types, and relationships between various entities within the XML document. I then used this schema for both generating the SQL DDL for creating and maintaining the tables with foreign key references as well as for parsing each incoming scan XML document and inserting into the appropriate tables.
I created database views with automated integration tests for various common reports while providing ad hoc querying capabilities directly to the tables. I performance-tuned the views by adding indexes and reworking the SQL as needed.
I utilized PHP DOM and PDO_SQLSRV and Microsoft SQL Server. This was the first major project on which I practiced Test Driven Development to achieve near complete unit level test coverage with PHPUnit.
Database Import/Export From/To XLSX File
We had a template Excel file that users could download, populate with their needed data, and upload through the service to the database for later reporting. We also used this template Excel file as a baseline to populate for users to export from the database to an Excel file.
The Java tech stack included Jetty, Jersey, Jackson, Hibernate, and Apache POI.
I created abstractions for each sheet to provide mappings between the rows/columns and the Java objects to be inserted/read from the database. I created a facade over the Apache POI to provide a consistent interface with minimal code duplication.
Offline-first Web App for Memorizing
The app functions in the browser via the URL whether or not a network connection is present. The user can save (backup) and load (restore) data from the server when a connection is available.
I was specifically targeting Chrome running on an Android tablet while still allowing use with a desktop browser. I built the front-end with AngularJS and used HTML 5 application cache (AppCache) to cache the static files in the browser. I stored all the user data as JSON in the browser's local storage.
The Node.js/Express back-end provides authentication, TLS, and serving of static files. It also features a simple reviewable resource with PUT for backing up to a date-stamped JSON file on the server file system and GET for retrieving the latest saved data.
Adventures in Character Team Assigner
I integrated with the organization's existing macro-enabled Excel file to parse out the relevant details using PHP and related libraries. It then outputs the team number assignments for each student along with related statistics.
Classroom Presenter for Hour of Code
https://embed.plnkr.co/uIQyjwyDCXOoJzaKIQW1/Education
Bachelor of Business Administration Degree in Management Information Systems
Wichita State University - Wichita, Kansas, USA
Skills
Libraries/APIs
Nightwatch.js, Apache POI, Selenium WebDriver, Node.js, Jackson, Socket.IO, JAX-RS, JavaMail, jQuery
Tools
Eclipse IDE, Inkscape, Jetty, WebdriverIO, Microsoft Access, Gradle, InstallShield, Apache Ant, Jenkins, IntelliJ IDEA, Git
Languages
JavaScript, Java, TypeScript, SQL, XML, PHP, Python, HTML5, Visual Basic, CSS, Perl
Frameworks
JUnit, AngularJS, Mockito, PHPUnit, TestNG, Jersey, Selenium, Hibernate, Swing, Jasmine, Express.js
Paradigms
Test-driven Development (TDD), Agile, Refactoring, REST, Clean Code, Behavior-driven Development (BDD)
Platforms
Linux, Windows, Eclipse, Web, NetBeans, Android, MacOS, Visual Studio Code (VS Code)
Storage
Microsoft SQL Server, HTML5 Web Storage, JSON, MySQL, PostgreSQL, MongoDB
Other
QA Automation, Quality Assurance (QA), Front-end Development, Data Migration, Single-page Applications (SPAs), Command-line Interface (CLI), DSLR Photography, Audio Production, Video Editing, Transport Layer Security (TLS), LDAP, RSync
How to Work with Toptal
Toptal matches you directly with global industry experts from our network in hours—not weeks or months.
Share your needs
Choose your talent
Start your risk-free talent trial
Top talent is in high demand.
Start hiring