We are looking for a .NET developer whose main task will be to develop and maintain Code Compare and Review Assistant (Code Review Bundle) applications.
CodeCompare is a file and folder comparison tool that consists of a standalone application and an extension for Visual Studio. It is one of the most popular products of our company and it has a long history. CodeCompare can boast tens of thousands of users and over 3,000 new downloads every month. The company decided to breathe new life into the product by completely redesigning and adapting it to new user requirements.
Review Assistant is a code review plugin for Visual Studio. This code review tool lets you create and respond to review requests without leaving Visual Studio. Review Assistant supports TFS, Subversion, Git, Mercurial, and P4 version control systems. It also incorporates a capability to generate reports and API.
The current technology stack includes .NET Core, WPF, ReactiveUI, DevExpress, WCF, SQL Server, EF, LINQ, LINQ2SQL, WinForms.
Code Compare is designed as a completely standalone code comparison tool. It is written in WinForms using DevExpress and third-party components. The VS extension communicates with the standalone version via named pipes. It is now actively being moved to WPF using ReactiveUI.
Review Assistant (RA) is a client / server application. WCF + EF + SQL Server work on the backend. Each company can deploy the RA server locally or use hosting in Azure. The client comprises an extension for Visual Studio written in WPF with integration into the following VCS: Git, Hg, SVN, P4, Tfs. DevExpress is used for reporting on code review processes. Also, the tool has its own API.
Both products have automated and manual tests. The developers work hand in hand with QA to ensure quality testing. The code produced is being reviewed, so be ready to take the quality of your code to the next level.
Jenkins, Git, and SVN are used as a build server.
- 3+ years of experience with C # .NET
- Know XAML, understand all aspects of the layout
- WPF .NET Core - understanding the principles of building interfaces, the ability to develop your own controls and customize third-party components
- ReactiveUI - experience with this MVVM framework or other will be a plus
- WinForms - understanding the principles of work with the aim to transfer the logic to a WPF application
- Basic knowledge of the theory of relational databases (tables, indexes, keys, queries)
- Microsoft SQL Server - experience in creating a table and writing SQL queries
- EntityFramework - understanding the principles of work, experience in writing LINQ2SQL queries
- Working knowledge of basic design patterns such as Singleton, Factory Method, Strategy, Observer, Builder, Adapter, State.
- Write code to implement functional requirements for the products
- Refactor the existing code if needed
- Write unit tests
- Correct the errors found during product testing and\or its operation
- Iterative development of the application database, writing migrations (database migrations), maintaining the WCF service
- Develop UI using WPF and ReactiveUI technology
- Transfer logic from WinForms applications to WPF
- Research third-party components in order to use them and possibly adapt them to the needs of the products.
Nice to have:
- Degree in computer sciences or mathematics
- Experience writing extensions for VS
- Experience in integration with different VCS.
Work mode: remotely, office is possible.
Team: Dev Lead, 1 Full-Stack .NET Developer, 1 QA.
Growth / development prospects for this position: The team consists of one developer so far. At first, you will have a mentor. You will be able to gain experience in different areas of development and get an understanding of the complete product life cycle. The use of new approaches and technologies depends on the team itself and is not dictated from outside.
- 1. CV review and screening.
- 2. Extended online interview with technical experts - 1.5 - 2 hours. We will tell you about our product, what kind of specialist we are looking for, and what tasks they will be responsible for. At this stage, we will ask you to complete a test task. We will then discuss your solution, ask technical questions, and talk about relevant experiences.
- 3. Offer.
We are looking forward to receiving your application!