C#.Net Developer

Our client is a dominant local SaaS provider in the Customer Experience industry with a growing
international presence. The software platform consists of various modules and is highly configurable.
The various modules assist in being able to provide an end to end view of the drivers of enterprise
performance, present these to the responsible staff members, drive resolution of customer complaints
as well as driving operational improvements.

Responsibility Areas:
Responsible for building and maintaining the product and systems platform, and must be capable of
contributing at every level of the SDLC, including:

  • Critically analyse business requirements in order to produce a technical design and collaborate with business and system analysts on issues and challenges.
  • Perform system and data architecture design – designing for performance, scalability,
    maintainability and cross-browser / cross platform UI.
  • Develop and maintain systems that achieve the business goals and focus on quality and testability.
  • Drawing up test plans, understanding scenarios and furthering quality automation goals.
  • Planning of configuration management and deployment.
  • Maintaining production systems and software.
  • Performing continuous analysis and improvement on existing development processes and
  • Engage in active knowledge-share, code review and team mentoring where appropriate.
    Skill Sets:
  • At least 5 years of experience in end-to-end application development (data model, architecture,
    database, application and operational components).
  • A relevant 4-year university degree, preferably in Software Engineering or Computer Science.
  • Complete understanding of and experience in using Microsoft .NET and object-orientated C# for
    systems and web development.
  • Experience in modern client-side web frameworks, such as AngularJS or Angular.
  • Complete understanding of and experience in Microsoft SQL Server with excellent SQL query
  • Complete understanding and experience in data modelling and architecture for optimal database
    structure design.
  • Understanding UI design and how to implement a UI to optimise the end-user experience.
  • Must have excellent analytical skills and the ability to identify problems, gaps and contradictions.
  • Able to pick up new skills and knowledge through self-learning.
  • Able to understand the need for trade-off decisions and knowing how to make the correct trade-
    offs in collaboration with their team.

Technology & practices:
The ideal candidate will need solid experience in the following technologies and practices:

  • Either .NET Core 3.1 or .NET Framework 4.7.2 (we’re migrating to core)
  • C#
  • Design patterns and S.O.L.I.D. principles
  • Strong understanding of object-orientated principles and practical implementation thereof
  • Asynchronous coding practices using the async modifier and await keyword
  • Unit testing and test-driven development (https://en.wikipedia.org/wiki/Unit_testing)
  • Test frameworks like NUnit, xUnit, and MSTest
  • Dependency injection containers such as Autofac
  • REST API concepts and best practices
  • Either ASP.NET Core 3.1 or ASP.NET Web API 2 (we’re migrating to core)
  • MongoDB 4 and NoSQL principles
  • MongoDB .NET Driver 2
  • Microsoft SQL Server 2012+
  • Entity Framework 6
  • Message queuing architectures
  • Message patterns (command, event, request and response)
  • Idempotent message handling
  • AngularJS 1.6
  • Angular 9 and the Angular CLI (we’re migrating to Angular 9)
  • HTML and CSS
  • Bootstrap 3+

The following technologies are beneficial but optional:

  • ServiceBus 7
  • RabbitMQ 3.8
  • Swagger
  • Signal
  • Automapper 9
  • Crunch

Personality & Disposition:
The candidate must exhibit the following key personality traits:

  • Have high work ethic and be able to work under pressure, with emphasis on quality and attention to detail.
  • Be able to work independently with little supervision when necessary but understands the value of
    teamwork, in an environment that strongly encourages team work.
  • Have proven ability to manage concurrent and complex tasks on a regular basis.
  • Possess strong problem-solving skills and decision-making ability, stepping up and taking initiative when necessary.
  • Have excellent written and oral communication skills, follow-through and attention to detail.
  • An openness to work with others and build on team input. The individuals cannot be myopic in their outlook. Strong teamwork will be required.
  • Be willing to admit when wrong, owning mistakes and seeing them through to correction. Is not driven by ego but rather the success of their team.
  • A drive to get things done, irrespective of obstacles. The individual must be committed to meeting any deadline that they commit to, regardless of obstacles.
  • An ability to see possibilities beyond the obvious. Innovation is a key dimension.
  • The ability to deal with complexity and migrate between detail and high-level requirements.
  • They must have a pride in their work and a desire to deliver perfection at all times.
  • They must have a passion for technology and technical developments.
  • They must read broadly and keep abreast of the latest technology trends.
  • The individual must have a strong desire for self learning and be prepared to make the investment in learning and self-development.

Education Requirements:

One of the following degrees will be required:
BSc, Bsc Eng

Reporting Structure:
The individuals will report to the Development Manager of inQuba.
Other Requirements:
Must be in possession of a valid South African work permit or be a South African citizen.

SOLID principles
a. Do you have practical experience with the SOLID principles?
b. What are they? They should be able to mention some of them:

    1. Single-responsibility
    2. Open-closed principle
    3. Liskov substitution principle
    4. Interface segregation
    5. Dependency inversion
      1.  Design patterns
      2.  Factory
      3.  Builder
      4.  Dependency injection
      5.  Decorator
      6.  Strategy
      7. Repository

Unit testing
a. Do you have practical experience with unit testing?
b. What test frameworks have you used? They should mention at least one of

  1.  NUnit
  2. xUnit
  3. MSTest
  4. Jasmine/Karma
  • Senior developer
    They need experience with all 3 points
  • Intermediate developer
    They need experience with at least unit testing
Apply for this job
Share this job