Principal Software Engineer Resume
Dallas, TexaS
SUMMARY:
- Coach. Mentor. Leader. Dedicated, passionate, and experienced leader with almost 20 years of experience across many diverse technologies.
- Experience with all levels of technology infrastructure who finds joy in coaching peers to find their best and maintain it.
- Well - practiced in implementing many modern design patterns and principles into product code as well as automated test frameworks with an eagerness to teach team members how to do the same.
- Experienced mentor with strong desire to see fellow team members perform well.
- Excellent communication skills with a proven ability to communicate effectively across business verticals and with people at all levels of an organization.
- Proven technical leader with experience in coordinating multiple groups to deliver first-class software and platforms.
TECHNICAL SKILLS:
Programming/Markup Languages: perl, python, php, node.js, C/C++, SQL, PL/SQL, Java, C#, HTML, XML, JavaScript, UNIX shell(s) scripting, JSON
Operating Systems/Cloud: Linux, SUN Solaris 8/10, HP-UX, Windows, AWS
Platforms: LAMP, mod perl, Plack, J2EE, REST, WSGI, .NET, iOS, Android
Databases: MySQL, Oracle, Sybase, SQL Server, NoSQL (Mongo, Cassandra, Couchbase)
Version Control: CVS, Subversion, ClearCase, git
Web Development Frameworks/Libraries: CGI Application, Mojolicious, Moose, Flask, Django, jQuery, Spring, Zend
Protocols: HTTP, SOAP, TCP/IP, UUDP
Practices: Waterfall, XP, SCRUM, Kanban, TDD/BDD-ATDD, Lean Principles, Emergent Design, SAFe, LeSS, DAD
PROFESSIONAL EXPERIENCE:
Confidential,Dallas, Texas
Principal Software Engineer
Responsibilities:- Increased overall delivery team throughput by over 30%
- Mentor QA Engineers in OOP good practices as well as general test framework structure. Act as coach to help understand BDD and how to write effective Given/When/Then tests in order to reach across departments with non-technical staff.
- Focus conversations around writing the right tests to test the right things in the right places. Help team better focus on what each piece of test pyramid is for and how to efficiently use unit/integration/acceptance tests as a part of our Continuous Delivery strategy
- Play role of Product Owner in the interim to provide guidance for both business and engineering in better organizing around the most valuable work to be done and how to effectively measure that
- Offer assistance to UX department to help bring “voice of the customer” back into the conversations with business when determining value of potential work
- Provide guidance and oversight to UX group while also empowering them in establishing better communication with customers
- Provide guidance and advice for senior developer as she led an integration project with a 3 rd party vendor and offer suggestions on when to choose building a POC vs building a more complete implementation as well as what a component-based implementation of this integration may look like.
Confidential, Dallas, Texas
Lead Engineer
Responsibilities:- Drive technical conversations with offshore delivery team and help guide technical architecture of platform.
- Help delivery teams gain efficiency and quality improvements by demonstrating the value in and encouraging the use of different git workflow models to delivering software
- Established Scrum-based working model for software delivery and mentor both engineering and product groups on how to use Scrum as a tool to help deliver software on a more reliable cadence.
- Work closely with Product team to ensure well written stories that meet criteria for Definition of Ready so that delivery team is able to provide accurate estimates for level of effort needed to complete story
- Hands on work pairing with offshore delivery team to provide a more reliable deployment mechanism that takes advantage of AWS Elastic Beanstalk feature set
- Deliver prototypes to delivery team to help define technical solution for upcoming work
- Define RESTful APIs using swagger so API functionality can be delivered by development team
- Review and guide relational database design and implementation with delivery team
- Perform code reviews for: php Lumen server-side webservices layer, node.js event notification layer, iOS application written in Swift and Objective-C, and Android app written in Java
- Act as Scrum Master to coordinate Scrum ceremonies and help delivery team by removing whatever impediments may exist that delay delivery of functionality for stories they’re working
- Assist with Android and iOS delivery whenever a developer may need some help by picking up a story to work, fixing a bug that’s proving difficult to solve, or by helping with including 3 rd party SDKs into the app.
- Design, document, and guide delivery team in delivering solution to integrate with Salto lock manufacturer. With this, Confidential became the only open lock integration platform to successfully integrate with three different lock manufacturers.
Confidential, Dallas, Texas
Principal Software Engineer/Technical Product Owner
Responsibilities:- Mentor less experienced developers in all areas of software delivery, including delivering quality code as well as providing accurate estimates during SCRUM Planning sessions
- Work hand-in-hand with Product Owner to encourage well written stories with a well-defined problem to solve as well as clear Acceptance Criteria in order to provide SCRUM delivery team a clear target to aim at during their Sprint
- Technical Lead on team that delivered new service platform to allow top partner to integrate with our Inv+ product, allowing partner to deliver their top business initiative for 2015. This work is also a significant step to sunsetting a legacy product within Confidential, one that cannot be sunset without that partner being moved off it.
- Conducted "Tech Talk" training seminar for Dallas office engineers discussing the topic of RESTful platforms.
- Change Agent for moving focus of how we deliver software from a “project” perspective to a “product” perspective. Specifically, worked to change culture and delivery methods for entire department from one of pushing hard to deliver code to a specific date and then testing that code (manually) for any faults to one that adopted modern git workflows (story-branching) and continuous integration techniques to ensure quality from the start for every story by delivering automated tests (unit, integration, functional) along with the code
Confidential, Allen,Texas
Senior Software Design Engineer
Responsibilities:- Lead other team members in creating a Scrum-based Agile delivery methodology for newly formed Dallas team
- Encourage the focus of feature discussions to be customer-centric rather than geared towards a specific implementation.
- Refactored .NET utility that processed unused airline tickets per business customer in order to leverage modern object-oriented techniques (such as dependency injection) as well clean-code standards. Changed unit tests to offer more clarity as to what is tested as well as what the expected functionality of the utility.
- Corrected bug in layer written in classic ASP that was forcing itinerary emails to be delivered to the wrong individuals due to incorrect association of traveler record locator
Confidential, Irving,Texas
Sr. Web Ops Engineer
Responsibilities:- Provide mentoring to junior members of team by performing code reviews and design sessions covering the team's Change Management web application, written with Django, as well as offering input on modern development techniques and tools (such as jQuery DataTables) to provide best user experience
- Automated the once manual task of uploading source code to HP Fortify on Demand using ant build scripts; improving efficiency taking a process that once took days for 2 different teams to complete but now completes in minutes.
- Modified ant build procedure for homedepot.com GRID applications to allow for blue/green deployment of features
- Created RESTful API in Python using Flask that provided functionality to deploy GRID applications systematically, automating a once manual process
- Set up Jenkins projects for team's DevOps Portal Application providing Continuous Integration as well as Continuous Delivery by chaining the projects together into a delivery pipeline utilizing maven and Artifactory in the build process
- Mentor team members through pair programming and code reviews to help simplify Java Spring and python code for better extension and maintainability
- Conducted Python Workshop attended by members of Operations teams, Development teams, and Architecture teams covering such topics as Test Driven Development (TDD), Python coding standards (PEP-8), and Clean Code
Confidential, Southlake, Texas
Sr. Software Developer
Responsibilities:- Act as Technical Architect for refactoring hotel platform in defining the architecture and design of platform, build code skeleton to be used by the delivery team members, guide delivery team members and review their work, implement complex business logic, and discover solutions to complex product issues.
- Facilitate discussions around coding standards and maintain Jenkins project that checks each file within code repository against Perl::Critic rules
- Designed and developed a new services based Air ticket reservation platform using modern OO techniques and design patterns as well as modern perl development tools such as Moose to allow airline booking requests to come across this new API and be serviced. Platform is currently one of top revenue generating platforms across the company
- Worked on implementing new version of interface to Hotelbeds inventory source. Implemented Façade design pattern as a part of project to allow iterative move of partners from one version to next. Project reduced errors from 60% to single digits for this inventory source.
- Implemented jQuery DataTable as part of hotel markup page as a way of demonstrating modern UI toolkit and how to integrate into legacy UI of an interoffice business application
- Implement and extend in-house ORM named Gideon, based on best parts of SQL::Abstract and DBIx::Class but is extended to work with NoSQL such as Mongo
- Identified coding errors and inefficiencies of java servlet, written using Spring framework, responsible for session management into an inventory source provider while performing code review which led to a reduction of invalid token errors from 40,000 per day to less than 400. This provided estimated monthly savings of $15,000 to the company.
- Led effort to reduce bug count in production support by 20% by finding in the source code the cause of reported bugs and documenting the bug as well as offering example solutions that resolved bug through modern clean coding techniques
Confidential, Irving,Texas
Sr. Software Developer
Responsibilities:- Compile open source rsyslog application on Solaris 10 platform and create/modify necessary makefiles to ensure a successful build, saving company cost of 3 rd party system logging applications
- Apply secure programming techniques to correct buffer overflow bug that rendered custom su command vulnerable to malicious activity
- Corrected coding bug that caused JNI to allocate gigs of memory for custom su command by forking authentication piece while maintaining security to prevent malicious activity. Reduced memory usage from gigs (actual amount system dependent) to 64Mb
Confidential, Southlake,Texas
Sr. Software Developer
Responsibilities:- Chosen because of proven knowledge of perl and web design and coding to drive improvement in area of production support for white label application based on LAMMP and J2EE platforms
- Identified error in Java socket code that was causing I/O issues (‘too many open files’) and forcing Ops team to restart Tomcat on a daily basis therefore resolving a connectivity issue that was impacting uptime availability for delivering published rates to partners
- Contributed software development knowledge by providing best practice techniques in perl to allow for more seamless error handling and improved application performance
- Worked over 350 bugs to full resolution or reassigned to proper development queue while offering code suggestions allowing for more timely bug fixes and improved efficiency in release schedules