Jesus Fernandez

Jesus Fernandez

Software Engineer
I'm a father, music enthusiast and software engineer specialized in complex and scalable applications, targeting desktop and mobile end users using high quality standards. I write about software architecture and software engineering on my blog.

About me

I started my journey as a Software Engineer in the early 2010s and have worked since then on several software projects for the oil, maritime and transportation industries, then moved on to the hospitality industry and most recently I joined the engineering team at Microsoft that focuses on the RPA industry by developing Power Automate Desktop. You can find out more about my professional experience in my online resume.
I have a strong problem-solver attitude towards scenarios to address complex business requirements through software architecture. Likewise, I have a particular interest in the end user's experience through distraction-free, user-friendly interface designs.
I am constantly exploring new ways to efficiently engineer software solutions and honing my technical skills.

Development Stack

C#/VB.NET

With the main focus on Microsoft Technologies, C# and VB.NET are my languages of choice at any time for enterprise-level projects.

That being said, I also like to experiment with industry trends and am interested in other languages outside the Microsoft Development Stack, such as Kotlin for a few commercial projects and Lua as scripting language.
Logo_Connector

WCF & OData

In order to build solutions using n-tier achitecture, one must always keep in mind security and data accessibility.

I approach n-tier solutions with best practices that allow code reusability that provides access to API's with the most secure and up-to-date communication layer. I am proficient at using WCF and OData with configurable capabilities.

WPF, Xamarin Native/Forms

Alhtough I'm proficient at WPF (Microsoft XAML), I also have extensively used Xamarin Forms (Xamarin XAML) and Xamarin Native (AXML). These are hands down my favorite frontend technologies to deliver flexible, robust and customizable software solutions.

I also closely monitor open-source cross-platform projects that use XAML-like syntax, such as Avalonia, Ooui and Blazor (using CSHTML5). Being a strong advocate of WebAssembly, I have built my personal website using Blazor as a way to demonstrate the capabilities of this new technology.

SQL Server, MySQL & SQLite

One always needs to select the right tool for the job and choosing the right Relational Database Management System (RDBMS) for an n-tier solution is not exception. After working with a wide variety of clients, it has become clear that each RDBMS fits specific business needs.

This means that MS SQL Server (and to a lesser extent LocalDB) is generally a great choice. However, sometimes users require to trade capabilities (or otherwise make financial choices) and opt for an alternative such as MySQL, Firebird or even SQLite. Therefore, systems should be built in a way so that they can switch between data storages seamlessly.

Git, TFS

Known as a big fan of Source Control Management (SCM) systems, I have developed a particular relationship with them, to the point that my upcoming book "C# and .NET Development for the Enterprise" was written entirely in Markdown and handled changes through Git.

Nevertheless, I have also used Team Foundation Server (and its bigger brother Azure DevOps) to successfully manage changes to a solution. Furthermore, using best practices and the correct structure, these tools have proven to become extremely useful and scalable for the teams I have closely worked with.

.NET

The .NET Framework and its more recent open-source alternative, .NET Core, are great choices for enterprise software. While the former is thoroughly tested and targets productivity, the latter has a strong focus on continuous improvement and performance.

You can read more about their differences here. However, the target industry and audience will always determine what is the best approach and thus it must be one of the first decisions to make during the analysis phase.

Windows, Android & iOS

Whether it's about a startup company or a well-established one, cross-platform usually comes up into the picture. However, if the project is well architectured, targeting a specific platform is a breeze.

You can find out more about how to develop cross-platform, enterprise-level software in my upcoming book. Stay tuned!

NuGet, VSIX

Complex systems often require a way to access and reference dependencies that would otherwise hinder productivity if they were located inside the same solution as the product at hand.

My personal take on this matter is to develop modular solutions that are easily accessible through a NuGet server or Visual Studio Gallery (usually hosted privately on premises). This approach guarantees that only developers meant to access the resources can do so using a system that they are already familiar with.
image

Visual Studio, VSCode, SSMS

My preferred tools for software development depend greatly on the task. However, Visual Studio and VS Code are the ones that I most commonly use. Similarly, Microsoft SQL Server Management Studio (SSMS) and Azure Data Studio are also two excellent choices to handle database-related tasks.

Their focus on performance and efficiency is key in order to deliver a great product and maintain productivity levels maxed out. Some of these tools don't provide all the functionality that I need, hence the reason to have developed extensions such as Productivity Shell.

WiX Toolset, Advanced Installer

Deployments for the Enterprise sector are not an easy task. It requires deep knowledge about Windows Installer and the different versions of the Windows operating system. This combination creates a complex target audience that requires an efficient and scalable approach, especially if the software solution should take custom behaviors into consideration (provided by the client).

My preferred approach to develop a deployment mechanism for a solution is to use Wix Toolset or Advanced Installer, depending on the task at hand.