
A results-driven Technical Lead with over 8 years of experience in building high-performance enterprise applications. Proficient in leveraging a broad range of technologies including .NET, .NET Core, Azure, AWS, SQL, Angular, Docker, Jenkins. Skilled in full stack development, technical leadership, and troubleshooting complex issues, with a strong commitment to quality and innovation.
Senior Software Engineer
Rishabh Software Pvt. Ltd.Software Engineer
L&T Technology ServicesSoftware Engineer
Rishabh Software Pvt. Ltd
Azure Monitor

Azure Key Vault

Azure VM
.png)
Docker

Terraform

Azure DevOps

Kubernetes

AWS S3

AWS SQS

AWS RDS

Azure App Service

Apache Solr

DevExpress
Hi, team. My name is Kujik Shah. I have 8 years of experience in dot net technologies, where I work with dot net core, dot net MVC, and different technologies. Along with that, I have worked with database technologies like MSSQL, MySQL. And in front end technologies also, like Angular, jQuery. And for the last 3 years, I've been working in cloud technologies, mainly in AWS and Azure, where I'm managing application infrastructure, CICD pipeline, and the operation of all these things. I've worked with service-based companies only, where I work with different domains and clients, such as healthcare, finance, ecommerce, etc. I've worked with multiple clients mainly from the Europe and UK regions, and also the US regions. My current role is that of a technical lead, where I'm contributing to managing the team's application. I'm also creating critical features for the application, mentoring the team, and having day-to-day communication with the client, as well as project planning and other tasks. Additionally, I'm working as a technical architect and managing time for all these tasks in my current project.
So, currently, I'm working as a technical lead. Where I have to take care of all this, like, project planning and all this. Since, like, a couple of months ago, we've deployed our new features to our production environment where due to some, like, missing test cases by the QA, we got the issue at the time of the production release. But, I took care of that issue. Like, we proactively resolved that issue on a priority basis, and we deployed a hard fix version. At that time, I tried to find out the root cause of that issue and provide it to the client and our stakeholders in our organization. So, like, this is the latest example. Earlier also, there were a couple of failures, but we actively resolved those issues.
What is it? So, like, all these are views, functions, and tools that are used for declaring data where a view can be used for a reusable purpose where our predefined size of the query is already written, and that's two positions. Two positions are also where we can write the server. It is also a reusable component, and it is also a query that is already written. But, like, servers are used for insert, update, delete, all the operations. And we can store results that can return multiple values also, then in functions. Like, in functions, there is a predefined express statement, and which can be used in select or other square queries. And, like, in the select query, we can use functions, but still we cannot use the stored procedure in the select query. And that's one, functions can only return a single value, but views can be used for multiple values. And views are used for only read-only purposes, where stored procedures are used for delete-only purposes, and functions are used for data read and write operations. And, usually, we write complex logic in stored procedures.
Yeah. So, we have used VAPIs in multiple projects over the last five years, I work with VVPA. And, also, I used our razor templates. So for the VVPA, it is used for usability. It is a raised call where it can be used in any application in the future if you want to create another application. That can be easily configured with the VPN, and our VPNs can return a JSON or XML format. And where we can do multiple authentication and authorization methods for our security purpose. And, for the razor templates, they are mainly used for HTML purposes. They have HTML templates, and.NET has some HTML helpers for that. So we can combine our C# and HTML logic within the razor template. And, we can integrate the API with the razor template with the help of jQuery. So we can do IDEX calling with the help of JavaScript. Yeah.
Yeah, so, like, as a lead engineering manager, multiple projects. Since that's why I'm working in that role, where there are incidents, there are a couple of incidents that happen, sometimes there are problems or bugs that also happen. As a senior team member, I took responsibility for resolving those issues, and I tried to find out the root cause and resolve that issue. So, later on, once I resolved that issue, I conducted a root cause analysis and provided guidelines on how to resolve that issue in the future if it arises. My goal was to convert problems into solutions, and I've been able to do that consistently.
So I need to validate that data first. I will check where the data is coming from. Like, from the source where we have put the data, get this data and see how it's going to the application. And second, I'll analyze it by checking with the team or someone else to see how this data is valid. We can also do a peer review of that data. Then another thing is if there are any data in Marin, so we have to clean those data before presenting to and going with the findings. Then we can also do the performance or sensitivity analysis, where we can check if the situation arises, then what the application will perform on. How much data will come to our application? And at that time, what will be the fine, what will the application work on that data.
Delegates, first, I will explain all the delegates and events. So, a delegate is just a pointer to a method, and events are a mechanism or notification of notification to an action, which we have to subscribe to. And the delegates are pointed to the functions, and I have used them for the encapsulation of the methods. And events, I also used for some notifications of notifications, where we have to subscribe to any changes that will happen. Delegates are used directly where events require the plus or equal to sign for event notifications. Now, the second question is in our interface or app interface and abstract class: if we want to add multiple inheritance, at that time, we can use the interface in our application. And in an abstract class, we can define only abstract and non-abstract methods, whereas in an interface, it will be only pure abstract methods. And suppose we have to make our code loosely coupled and modular, at that time, we use the interface in the application. And in our abstract class, abstract class has some access modifiers also. But in an interface, we cannot modify the members. Like, we cannot specify the excess modifier. Now, the third question is, so it's like, in C#, it is managed by the.NET, like.NET CLI, where it will automatically dispose of unwanted data operations, file operations. And another way is, we can in C# also via the IDisposable interface. So we can, at the end of the interface, dispose or manually all the unwanted objects. And the other one is, like, the finalized keyword also. We can do that in the finalizer, we can also dispose all the unwanted operations. And the last one is, we can also
Abstract, like, abstract concierges are used for making our code or loosely coupling more modular. And, I am like, if you want to extend that code in the future. So, with the help of dependency injection, we can make our portal loosely coupled. Suppose we have some integration with other applications, at that time, we require to make our code more loosely coupled and more abstract. Then, for better understanding, if we define our code in one single interface, where we can find all the list of methods in the class, and that can be used. And abstraction helps us to hide the real logic, instead of showing the entire logic, we just need to hide our whole logic. We are just displaying our method names.
So there are a couple of best practices in developing a dot net application. So first, we have to follow the design principles and SOLID principles in applications. We also need to take care about the naming convention if we want to go with camel casing or Pascal casing. And we also need to design our application's architecture. We are deciding whether we are going with a monolithic microservice or some other patterns like MVC or some web API. Then we also need to take care about database calls. We have to avoid unnecessary database calls, and we also need to avoid loops and if conditions in our applications. For database operations, we can use lazy loading in the application. Another way is we can also improve the caching mechanism, including output caching or in-memory caching in the application. So that can help us to reduce database calls. Then another thing, we have to make our code more modular, and it should allow any modifications or extensions in our methods. We also need to take care of error handling. We should follow proper error handling. So in the future, if there is an issue, we can track it soon. Then another thing, we also need to take care of all authentication and authorization mechanisms, like how the application will authorize and authenticate. We also need to offer secure networking. We have to follow the HTTP principles or HTTP post methods for database or API colleagues. And last, we have to integrate our testing, where we have to write unit test cases for each and every logic. So that will help us to check if any modification will happen. It will help us to check that the code is working or not.