- This is a remote position.
- Candidates must work during EST hours.
Required Skills and Experience
- 5+ years of experience with C# and .NET.
- 2+ years of experience with Xamarin Forms Platform.
- Experience working with Git.
- Ability to decompose complex UIs into XAML layouts.
Responsibilities
- Design, build and maintain efficient, reusable, and reliable code
- Ensure the best possible performance, quality, and responsiveness of the applications
- Identify bottlenecks and bugs, and devise solutions to these problems
- Help maintain code quality, organization, and automatization.
- Learn, adhere to, and enforce Client’s standards & best practices.
- Deliver the highest quality designs & code for the project.
- Participate in SAFe team ceremonies (daily stand-up, planning sessions, etc.).
- Provide estimates for tasks.
- Provide progress updates to team while working tasks.
- Research and troubleshooting issues in QA and production.
- Implement all ReSharper feedback that is “Warning” level and above. There are a few case-by-case exceptions to this; the client’s Architect will provide guidance.
- Adhere to SOLID principles.
- Adhere to Microsoft’s API Design Guidelines.
- Adhere to the Command Query Separation principle.
- Leverage the principles of Design by Contract (DbC).
- Leverage the Clean Architectural style for layering, decomposition, and dependency validation.
- Leverage Dependency Injection to decouple components.
- Leverage Domain Driven Design principles and patterns where appropriate.
- Provide complete software comments for public interfaces, classes, structs, enums, and methods including abstraction descriptions, exceptions thrown, and verbiage augmenting codified DbC specifications.
- Eliminate duplicate code.
- Code/design should be decoupled/modular/composable to facilitate extraction of any potentially reusable code as a mature common component.
- All forms of serialized data should be versioned to help ensure a smooth migration path as the software matures/evolves.
- Classes should be organized within the project as vertical slices of functionality instead of horizontal abstraction types (i.e. PrecisionOrdering and PhysicalInventory instead of Views and ViewModels).
- Good usage of reactive design.
- Adhere to the Composed Method style of functional decomposition where possible.
- Leverage reactive data streams to explicitly model changing data as first-class citizens.
- Leverage Event Sourcing model to preserve separation between remotely-source data and device-sourced data throughout data synchronization.
- Leverage State Machines to govern progression of subsystems/objects/workflows through allowed states via declared triggers.
- Embrace Continuous Integration / Continuous Delivery using robust automated build pipelines that automatically execute static code analyzers, design analyzers, unit tests, and integration tests.
Nice to have
- Good time-management skills.
- Outstanding multitasking skills.
- Solid communication and interpersonal skills.
- Being a quick learner.
How to Apply!
Please include all relevant information (CV, GitHub repo, blog, etc). To apply, please fill out the form. Incomplete submissions will be declined.
