Principal Software Engineer
Description
Position Summary:
Responsible for delivering senior level innovative, compelling, coherent software solutions for our consumer, internal operations and value chain constituents across a wide variety of enterprise applications through the creation of discrete business services and their supporting components. This position has an emphasis either on the front-end or backend development focus depending on the placement of the role and team. The job duties and requirements are defined for backend and front-end separately This position ensures the performance of all duties in accordance with the company’s policies and procedures, all U.S. state and federal laws and regulations, wherein the company operates.
Responsibilities:
- Develops software: Designs and implements new technologies, frameworks and platform improvements. Subject-matter expert for platforms.
- Testing: Expert, builds happy-path and sad-path unit tests. Builds tests which validate key capabilities or fragile code. Builds automated functional and integration tests. Experienced with Test Driven Development (TDD), Behavior Driven Development (BDD) and other testing methodologies. Creates testing strategy.
- Translates mock up Photoshop/Fireworks images to HTML/CSS/JavaScript.
- Constructs web page HTML & CSS layout templates for use by UX/UI engineers.
- Works with the team’s graphic designers to obtain usable assets.
- Implements and/or stylizes controls both from scratch and from reference material.
- Maintains CSS application-wide.
- Participates in UI/UX testing.
- Designs, develops and delivers solutions that meet business line and enterprise requirements.
- Creates enterprise-grade application services.
- Participates in rapid prototyping and POC development efforts.
- Advances overall enterprise technical architecture and implementation best practices.
- Assists in efforts to develop and refine functional and non-functional requirements.
- Participates in iteration and release planning.
- Performs functional and non-functional testing.
- Contributes to overall enterprise technical architecture and implementation best practices.
- Informs efforts to develop and refine functional and non-functional requirements.
Requirements:
- Development practices and methodologies: Deep experience with common development methodologies, including the pros and cons of each. Deep understanding of development methodologies including Agile, Spiral and Waterfall. Experience in one or more specific implementations such as Kanban, Scrum or Behavior Driven Development (BDD). Familiar with Agile scaling methodologies such as Scrum at Scale, Scaled Agile Framework (SAFe) and Large-Scale Scrum (LeSS). Has participated in Development Practice and Methodology development and implementation (an Agile transformation, for example).
- Leadership and Coaching: Creates a network of influence by building solid relationships with others. Proven success driving initiatives across multiple teams. Works with their mentor regularly. Actively mentors one or more colleagues. Helps to drive organizational change and improvement by actively looking for ways to be more efficient and work better together. Regular mentorship of one or more colleagues. Open to coaching, takes direction well.
- Relevant Languages: Expert competence with multiple relevant languages. 7+ years of experience.
- Analysis: Deep experience with advanced methods for analyzing information of almost any kind.
- Tool Knowledge: IDEs, editors, debuggers, open source and commercial alternatives, ORMs, code analysis, containers, VMs, cloud (AWS, Azure) etc. Has authored tools.
- Data Structures: Deep understanding of many data structures, including arrays, records, linked lists, dictionaries, heaps, graphs, hashtables, queues, etc. Understands how data structures impact performance, concurrency and other considerations. Knowledge of emerging structures and alternative ways to manage data (filestreams, key/value pairs, blockchain, etc.)
- Algorithms: Deep understanding of many algorithms such as Bubble Sort, Binary Sort, Backtracking, Quicksort, Mergesort, Breadth/Depth First Searches, Divide and conquer, Tree Traversals, etc. Understands how algorithms impact performance, caching, memory utilization and other considerations. Knowledge of advanced algorithms such as Kruskal's Minimum Spanning Tree, Dijkstra's shortest path, Single-Source Shortest Paths, etc.
- Systems: Deep experience of how programming languages work including compilers, linkers, interpreters, threading, sockets, network protocols, caching, garbage collection, memory addressing, scaling, etc. Understands the impact of these on performance, resource utilization, etc. Deep understanding of architectural concepts such as Service Oriented Architecture, microservices, etc. and the performance, maintenance, scaling and other considerations of these approaches. Ability to learn new technologies and languages.
- Design Patterns: Deep understanding of many design patterns the pros and cons of different approaches. Knows when to apply different patterns and understands performance and maintenance impacts of various patterns.
- Source/Version control: Deep understanding of one or more source/version control systems. Develops branching and merging strategies. Experience with Distributed Source Control.
- Webservices and APIs: Expert, deep and broad knowledge of the entire API suite, knows many from memory. Designs and implements new APIs, directs colleagues in doing the same. Experience building APIs and services using SOAP and REST. Familiar with the pros and cons of each.
- Code Quality and Readability: Creates code which is readable, clear and concise. Develops and adheres to coding standards based on best practices. Develops guidelines for coding best practices. Builds frameworks for validations and testability. Builds and/or implements tools to analyze and improve code quality. Sets design and coding standards.
- Database: Advanced queries and table design. Understanding of indexing and normalization. Capable of performance tuning queries. Understanding of both DDL and DML. Basic administration. Understanding of all database capabilities (triggers, views, stored procs, etc.). Familiarity with ORM tools. Understanding of datamart and data warehousing concepts including variant schemas (Star, Snowflake). Familiar with big data patterns.
- Expert in HTML/HTML5.
- Expert in CSS.
- Expert in CSS pre-processors such as LESS and SASS.
- Expert in cross-browser/cross-platform development techniques.
- Solid working knowledge of modern object-oriented JavaScript and JavaScript frameworks, especially JQuery, Bootstrap and Angular.
- Solid working knowledge of image editing tools (Photoshop/Fireworks).
- Solid understanding of responsive design and other modern web techniques.
- Expert in designing best practices for page layout, typography and usability.
- Strong experience working with Microsoft (Visual Studio 15, TFS, IIS8) and related tools strongly desired.
- Strong working knowledge of ASP.NET MVC and/or C# is a plus.
- Experience with KendoUI.
- Expert in developing enterprise level systems on the .NET framework using C#.
- Expert in developing web services.
- Proficient in Visual Studio 2013/2015 to develop enterprise grade software.
- Expert in service oriented architecture design principles, patterns and best practices.
- Expert in modern object-oriented development techniques.
- Expert in enterprise architecture principals, patterns and practices.
- Expert in SQL and relational database design.
- Expert in Web API, REST, JSON.
- Solid understanding of unit testing creation.
- Solid understanding of MS SQL Server preferred.
- Solid understanding of MS IIS preferred.
- Web UI development experience using Javascript and Javascript UI frameworks is a plus.
- Experience with continuous integration tools and processes is a plus.
Preferred Requirements:
- B.S. in Computer Science or B.S. Software Engineering or B.A. in Computer Information Systems or equivalent education or experience.
- Minimum ten (10) + plus years of relevant technology job experience.
- Experience in the Mortgage industry preferred.
Why work for #teamloanDepot:
- Work with other passionate, purposeful, and customer-centric team members.
- Inclusive, diverse, and collaborative culture where people from all backgrounds can thrive.
- Extensive internal growth and professional development opportunities including tuition reimbursement.
- Comprehensive benefits package including Medical/Dental/Vision.
- Wellness program to support both mental and physical health.
- Generous paid time off options to support work-life balance.
About loanDepot:
loanDepot (NYSE: LDI) is a digital commerce company committed to serving its customers throughout the home ownership journey. Since its launch in 2010, loanDepot has revolutionized the mortgage industry with a digital-first approach that makes it easier, faster, and less stressful to purchase or refinance a home. Today, as the nation's second largest non-bank retail mortgage lender, loanDepot enables customers to achieve the American dream of homeownership through a broad suite of lending and real estate services that simplify one of life's most complex transactions. With headquarters in Southern California and offices nationwide, loanDepot is committed to serving the communities in which its team lives and works through a variety of local, regional, and national philanthropic efforts.
Base pay is one part of our total compensation package and is determined within a range. This provides the opportunity to progress as you grow and develop within a role. The base pay for this role is between $170,000 and $233,000. Your base pay will depend on multiple individualized factors, including your job-related knowledge/skills, qualifications, experience, and market location.
We are an equal opportunity employer and value diversity in our company. We do not discriminate based on race, religion, color, national origin, gender, sexual orientation, age, marital status, veteran status, or disability status.