eSUB in looking to fill several iOS Engineer positions (all levels, including a Jr. level).
An iOS Engineer at eSUB Construction Software works with a diverse team to create and extend a cloud-based solution for subcontractors. Our solution aims to empower subcontractors to get information to the right people at the right time, to bring the field and the back office closer together, and to enable greater efficiency and productivity. Successful engineers at eSUB work collaboratively, are self-motivated, and are always learning.
In this role, you will work on the team responsible for eSub’s iOS mobile applications, designing and developing new features with usability, reliability, and performance in mind as well as writing unit tests and bug fixing.
Responsibilities & Duties
- Build high quality user interfaces in accordance with UX designs
- Participate in cross platform application development
- Work independently on complex tasks
- Help direct and review the work of more junior team members
- Write reusable, modular, and scalable code
- Write code that consumes REST services
- Write unit tests and work with QA engineers to automate the testing process
- Write high-quality code following OOP principles and best practices within the relevant frameworks
- Participate in pair programming with other developers
- Lead code reviews, design reviews, effort estimates, task breakdowns, and other team discussions
- Fix software defects
- Break down features into testable sub-tasks
- Estimate and commit to tasks and manage your time to deliver as committed
- Meaningfully test all of your work including writing automated tests whenever possible
- Follow coding and other standards per team practices
- Work with the existing engineering team on continuously improving the performance, scalability, and reliability of eSUB products
- Collaborate with the product and engineering teams to design and deploy new features
- Learn about on the latest tools and patterns consistent with your role
- Participate in our Agile processes—from updating Jira to reflecting meaningfully in retrospectives and everything in between
- Other duties as assigned
- 5 to 8 years of experience in a software engineering/development role
- 5 years of more of experience in at least one of the following:
- Demonstrated mastery of OOP and commonly used design patterns
- 5 or more years of experience in the full software development lifecycle
- 3 or more years of experience working with cloud technologies (plus for Microsoft Azure)
- Experience with:
- Package management
- Architecture design patterns (MVVM, MVC)
- Caching data
- Concurrency/background processing
- Media (images, audio, video)
- Application lifecycle
- Experience in at least one Agile software development methodology (e.g. Scrum, Kanban)
- Strong collaboration and communication skills
- Ability to engage throughout the department and the company to achieve goals
- Bachelor’s Degree in a relevant major or equivalent years of experience
- Any of the following would be a plus:
- Construction industry knowledge
- Exposure to the full software development lifecycle
- Experience working with datasets / databases particularly SQL Server
- Experience working in the cloud especially Microsoft Azure
- Experience in B2B product development
- Experience in a CI/CD environment
- You respect and share our values
- You love working with teams of smart and driven people who are excited to solve challenging problems
- You can talk about complex software systems and have ideas on how to most effectively build quality, performant, and easily supportable software
- You believe that code-reviews, giving them and asking for them, are important to delivering quality a product
- You love to cover your code with adequate unit, integration, and performance tests
- You are adamant about instrumenting and measuring the performance of code to find bottlenecks and improve performance
- You exhibit dogged determination to get to the root of problems
- You care about best-practices and evangelizing them with the team
- You like to research and propose new techniques and methodologies to improve quality and efficiency of our software
- You can clearly convey your thoughts, enjoy presenting what you’ve done, and can cater your message to audiences both technical and non-technical
Behavior and Scope
- You understand the priorities and goals for the team.
- You’re thoughtful about process; proposes changes as needed for the whole team to execute more efficiently.
- You hold your team accountable for their best possible efforts.
- When finding an issue in another team, you raise the matter tactfully with that team.
- When discussing work, you engage in discussion around business impact.
- You can develop large parts of systems on your own to support products.
- You routinely work without needing major direction or attention to achieve success in your role.
- You typically work on systems in multiple domains; you may require some guidance to complete complex work to achieve success.
- You own major functionality in a product and can diagnose issues, determine root cause, and recommend a resolution.
- You mentor others when opportunities are presented.
This position works in an office environment and work is mostly performed at the eSUB office when not travelling for business. This role routinely uses standard office equipment. A sit/stand desk can be provided.