Senior Software Engineer
Section 1: Position Summary
As a Senior Software Engineer at Ascensus, you will be working in a high-energy team, writing beautiful code by using the best engineering practices in the industry today (e.g. unit testing, source control, continuous integration, automation, design patterns). Passion for all aspects of software development is critical. We are building teams that are empowered to solve the business needs by having a rapid development and deployment pipeline with a focus on automation and releasing software.
As a Scrum team contributor, you will be responsible for delivering solutions that adhere to the software architecture strategy, coding standards, and established organizational policies and procedures.
Section 2: Job Functions, Essential Duties and Responsibilities
- Responsible for protecting, securing, and proper handling of all confidential data held by Ascensus to ensure against unauthorized access, improper transmission, and/or unapproved disclosure of information that could result in harm to Ascensus or our clients.
- Our I-Client service philosophy and our Core Values of People Matter, Quality First and Integrity Always® should be visible in your actions on a day to day basis showing your support of our organizational culture.
- Design, build, and maintain scalable and robust applications
- Independently analyze, implement, test, document and maintain new and current software applications in support of achieving the business goals.
- Create estimates and assist with planning throughout the software development life cycle.
- Lead or assist in technical initiatives working with multiple groups
- Establish and enforce development best practices
- Coach and mentor other developers, provide continuous feedback
- Expect and require innovation of her/his team
- Demonstrate passion and convictions and the innate ability to inspire passion in others
- Assist with other tasks and projects as assigned
Section 3: Experience, Skills, Knowledge Requirements
- 5-10+ years of experience developing software & systems for medium to large business environments
- At least 5+ year’s hands-on experience with one of the programming languages (e.g. C# or Java)
- Excellent problem solving and communication skills
- Familiarity with multi-threading
- Strong experience with good design principles (patterns, cohesion/coupling, S.O.L.I.D.)
- Experience with Services Oriented Architecture and RESTful services development
- Working knowledge of microservices
- Experience with writing clean and maintainable code using engineering best practices (unit testing, TDD, continuous integration and deployment, automation, design patterns, refactoring etc.)
- Strong experience working with other developers, quality engineers (QE), ops engineers and support engineers to ensure smooth deployment, continual operation and passion for developing good software.
- Experience participating in design discussions with both technical and non-technical audiences.
- Experience mentoring and coaching more-junior developers
- Experience documenting business solution in technical documents and diagrams
- Familiarity or experience with Agile engineering practices
- Working experience with Python, C/C++, MySQL, Apache, Ngnix, Redis, jQuery, knockout.js
- Experience in open source development
- Good understanding of web technologies (HTTP, Apache, HTTP Proxies)
- Experience with continuous integration and deployment (CI/CD)
- Experience with multi-threaded applications and memory management
- Familiarity with continuously deploying software in the Cloud