Software developer

Senior Software Developer at BET Software – KwaZulu-Natal Umhlanga Ridge

We want you:

Are you a savvy senior software developer with excellent communication skills and a drive to build high-quality systems? Do you have a talent for software development? How about a passion for building solutions – one line of code at a time?

We need a problem solver, analytical thinker, doer and innovator who can operate in a rapidly changing environment, developing and managing solutions for our online betting platforms and offline. As a Senior Software Developer, you will be part of project-related activities where you will not be limited to one technology stack, but will use whatever technology or coding stack you choose.

This is an exciting opportunity to lead, learn, and perform at your best, while shaping the future of technology and expanding your software development skills. Your ability to critically analyze business needs, navigate existing software, manage complex architectural platforms, take ownership of your work base, and release new software releases consistently, will be essential to your success.

You bring:

  • At least 5-7 years of experience in a development environment;
  • 3 to 5 years of SQL experience;
  • 1-2 years of experience in document stores such as Couchbase / Mongo would be advantageous;
  • 1-2 years of experience in message brokers such as RabbitMQ / Kafka / Red Panda would be advantageous;
  • 5 to 7 years of experience in C#;
  • 5-7 years of basic .net experience;
  • 5-7 years of restful API experience;
  • Demonstrated leadership skills;
  • Detailed knowledge of SDLC and software project management;
  • Good written and oral communication skills;
  • Great attention to detail.

Good to have:

  • Experience in distributed systems;
  • Experience in functional languages;
  • Experience in Agile.

What you will do:

  • Ensure that the design patterns used increase organizational levels of high-volume transactional performance, resiliency, automation, and innovation;
  • Identify potential alternative strategies and refactor the approach for maximum benefit in the shortest possible time;
  • Provide an appropriate solution that facilitates the achievement of specified tasks and objectives in a holistic manner, while excluding unnecessary steps;
  • Provide a solution in which effective and efficient use of system resources occurs during operation;
  • Provide a solution that works efficiently, can coexist with other solutions, and does not negatively impact other solutions;
  • Provide an interoperable solution that can exchange and use information between different solutions, not necessarily in the same environment;
  • Ensure that the system user can easily recognize the flow, functions and capabilities of the system;
  • Ensure that the system logically supports user self-learning;
  • Make sure the solution is accessible and can be used by people with a wide range of characteristics, abilities, cultures and languages;
  • Ensure that the solution works properly under the agreed conditions for long periods of time without requiring intervention (despite potential attacks);
  • Ensure that all measures are taken to reduce the occurrence of defects due to misunderstood requirements, design errors and implementation errors;
  • Ensure complete recovery of data, and the desired state of the solution can be restored (despite potential attacks);
  • Ensure the solution is sustainable so that as user volumes and requirements change, the solution can scale over the long term;
  • Ensure the solution simplifies support and maintenance, with traceability and efficient error messaging;
  • Ensure that over time the solution matures;
  • Ensure that the solution has high integrity, where the solution prevents unauthorized access, modification of computer programs, data or settings;
  • Ensure that the solution has a high degree of survivability, despite third-party interventions (attacks, human errors, hardware or software failures);
  • Ensure modularity, where the solution consists of discrete components so that a change in one component has minimal impact on other components;
  • Where possible, provide a mechanism for the solution to analyze its own faults and provide reports before a critical failure occurs;
  • Develop the solution in a way that supports modification for future developers, thus reducing the number of defects or the quality of the system being negatively affected;
  • Ensure the solution is delivered completely and with the additional resources needed to make installation/deployment as seamless and easy as possible;
  • Provide Dev Support support when required during operational events, and create or assist in the creation of SOPs;
  • Effectively troubleshoot and resolve issues to increase solution stability and reduce required interventions over time;
  • Make confident, timely and fact-based decisions drawing on a wide range of resources through collaboration with others;
  • Generate new ideas, challenge the status quo, take risks, support change and encourage innovation.

Please note that only applicants who meet the stipulated minimum requirements will be considered. If you have not been contacted within 30 days, please consider your application unsuccessful.

Desired skills:

  • C#.Net development
  • VS#
  • VMC
  • Full stack development
  • .REPORT
  • Web application development
  • MVC Development
  • Unit Testing Frameworks
  • SQL
  • .NetCore
  • OOP
  • ASP NETWORK
  • Test-driven development
  • SOLID

Desired work experience:

  • 5 to 10 years Software
  • 5 to 10 years Software development

About the employer:

The company we keep:

At BET Software, we don’t just recruit talent, we nurture it. Our learning and development programs, diverse growth opportunities, and well-deserved incentives are what make our All-Star team the best among the rest.

Employer and Benefits:

  • Provident funds
  • Annual bonus

Find out more/Apply to this position