Post Job Free

Resume

Sign in

C# Sql Server

Location:
Basildon, Essex, United Kingdom
Posted:
August 28, 2023

Contact this candidate

Resume:

Mark Mayes

Profile

I have ** years’ experience as a software developer, predominately using the Microsoft stack as a contractor within the financial sector.

I am open to contract and permanent positions.

It’s worth mentioning that although most of my last few years of work experience were based around Robotic Process Automation (RPA), I was careful during this period to maintain my core skills of C# and SQL Server. Every RPA role, which I performed had some element of C# and/or SQL Server involved.

Education & Achievements

I am an Automation Anywhere Certified Advanced RPA Professional

I am an Automation Anywhere Certified RPA Trainer

I have delivered Automation Anywhere training sessions in the UK & South Africa

I co-authored the Microsoft Press book, “Advanced Visual Basic 5”

I am a Microsoft Certified Professional

I was a member of the Friends of Redgate program for 2015

I have given presentations at VBITS London, the Irish Computer Society in Dublin and the UK Visual Basic Users Group (VBUG) in London

I completed secondary school education with ‘O’ Level Grade ‘A’ passes in English Language, Mathematics, Physics, French, Music, and Sociology

Key Skills

C# & .NET Framework

22 years

SQL Server all versions (SSIS ETL, SSRS & Architect)

25 Years

Visual Basic (versions 1-6, VB.NET & VBA)

28 Years

MySQL & Oracle

10 Years (on and off)

Active Server Pages (ASP), ASP.NET & IIS

9 Years

Model View Controller (MVC)

2 Years

Access (as a DB engine), & ADO, DAO, etc

12 Years

XML & the Document Object Model

10 Years (on and off)

Excel & Excel VBA

9 Years (on and off)

Automation Anywhere (RPA development software)

4 years

Automation Anywhere C#.Net DLL MetaBots

4 years

Web Data Scraping

3 years

Architects Registration Board CONTRACT – November 2022 to May 2023

Short Term Tactical Developer

I was hired for this contract specifically to implement a set number of very specific changes to two existing, legacy systems.

The first system was originally developed using VB6 and SQL Server 2010 with some additional components created using C#.Net. As the original developers were no longer around, my task was to implement some very specific changes to this system, whilst maintaining the existing architecture and development approaches. In other words, my changes were to have a minimum impact on the existing code base and should be implemented seamlessly.

This was easier said than done as the code base was huge and presented a significant challenge to become familiar with the inner workings of the code as well as ensuring that my changes referenced every area of the code required.

The second system was an online web portal, originally developed using the first version of ASP and SQL Server. Again, this was a very large code base and most of my time was spent familiarising myself with the structure of the website and its code. In the end, the changes I implemented were relatively minor, but it was important that these changes impacted every conceivable area of the code.

This has been a very enjoyable and rewarding contract as the requirements were made very clear from the start and I have been able implement the requirements working alone and independently, whilst presenting regular updates on my progress, for which the client has offered their appreciation on multiple occasions.

Web Data Scrapers PERMANENT – October 2021 to October 2022

Online Start-up

I worked on my own start-up, which was to provide a generic web data scraping service to individual and corporate clients. The project ran out of funding after a year so had to be abandoned.

I developed a complex series of applications, services and databases using C#, .Net, MVC, Azure SQL Server, Azure Functions, HTML, CSS, JavaScript, WinForms, Bootstrap, and REST API’s.

The website allowed clients to define and manage their own web data scraping jobs, which were then dynamically modelled and implemented via an online scheduling service.

The website provided clients with their own management dashboard, which produced dynamically created job performance reports on the fly.

Health Gig Jobs PERMANENT – October 2020 to September 2021

Remote Consultant and Interim CTO

Health Gig Jobs was a start-up based in Florida, USA. They hired me as a remote consultant and interim CTO. The funding for the project dried up before it had an opportunity to go live.

This company was set-up to connect temporary health care workers with health care firms across the USA. It was predominantly a phone-based app with an accompanying intranet site.

The CEO and founder of the company had no experience in IT whatsoever. He had commissioned a USA based company to develop his vision but was having difficulty communicating with them regarding technical matters, which is why he approached me as a go-between.

I liaised with the development company to ensure that the project timeline was kept on track, and the software was delivering all the requirements.

In addition, I prepared an extensive testing plan for the entire project, which was subsequently signed off by the CEO and the development company. I then oversaw the implementation of this testing plan and ensured that all failed tests were followed-up and fixed by the dev company.

Illness (COVID) February 2020 to September 2020

Unfortunately, I was hit with COVID immediately after finishing my last contract and this developed into a long(er) term illness. I was unable to work (or do much else) during this time.

Travelers Insurance UK CONTRACT - May 2019 to January 2020

Automation Anywhere Lead Developer, Business Analyst, Architect & Trainer

I was hired to set-up and manage their entire RPA development process in the UK. I was given carte blanche to implement my own ideas and strategies.

I was given four subject matter experts (SME’s) to work with, who had zero experience in either RPA or any kind of software development. I created an in-depth, structured, and well documented training programme for these SME’s and implemented this over a series of very successful training sessions lasting almost a month. My primary goal for these training sessions was to:

Equip the SME’s with the necessary skills to develop RPA solutions unsupervised

Provide the trainees with a well-documented and useable development architecture

Instil within the trainees, an appreciation of a consistent development methodology

Create a platform for trainees to communicate effectively across their own departments

Just two weeks after completing these training sessions, two of the SME’s had already successfully completed their first bots, which gave me (and my superiors) a great deal of confidence in the effectiveness of the training programme.

In addition to training the SME’s, I was also tasked with identifying, analysing, and documenting all manual processes within the firm, which were deemed as potential processes for automation. This involved sitting with the same SME’s previously mentioned, along with various other subject matter experts, across four departments and looking at over 75 manual processes. After discounting 25 of these candidate processes, I documented my analysis of over 50 processes and presented my findings to the RPA sponsors who subsequently prioritised and agreed or disagreed on each of these candidates for inclusion in the RPA development programme.

I also created the entire RPA development architecture, which included the analysis and development processes as well as the testing and implementation protocols. I developed this architecture by implementing a back end created with C#, SQL Server & SSIS.

Experian UK CONTRACT - March 2018 to April 2019

Automation Anywhere Lead Developer & Architect

This was a rewarding contract, in which, I was the “go-to” guy for all things technical and development-related. I led a team of 6 RPA developers who were all SME’s recruited from within the company. I oversaw the development of 9 fully functional bots released into production, which were developed using 2-week sprints (Agile).

I also delivered numerous training courses on a variety of subjects, such as:

Error Handling Best Practises

Defensive Programming

SQL Basics

Promoting openness and the sharing of our failures

Coding Standards

Thinking like a Programmer, finding the correct logic for a problem

Unit Testing strategies for RPA Development

Introduction to C# with a view to creating MetaBots

I developed a complete RPA Developer Framework, which included an array of tools, such as AA code templates, coding standards, development methodologies, and most importantly, a SQL Server database to support and enhance AA development by providing the following features:

A completely generic process workflow for each bot, which maps how a bot runs, from start to finish

Generic capture and storage of the actions performed by a bot, against each “entity” (i.e., list of processed work items, or a list of clients to be processed, etc)

Advanced logging features (logging verbose information as well as developer debug statements to the database, file, or event viewer)

Tools to support the management and retrieval of configuration values from within the bot. All config values are stored on either XML files or the SQL Server database and categorised by their owning Bot as well as their runtime environment (DEV, UAT, PROD, etc)

Database schema, stored procedures and user defined functions providing the ability to record, store and present MI data, which can be unique and ad-hoc to each bot

Centrally managed and easily defined email templates and email delivery management processes, which allow permitted individuals to visually design a specific email (each email design is created for a specific purpose) then save that design to the database as a template, which can be retrieved from AA code, which will simply fill in the gaps, replacing any template placeholders with data. The developer then sets the email to “to be sent” on the database and the RPA Developer Framework default code templates take care of everything else, sending the email and any other emails in the database queue.

Several DLL MetaBots developed in C#, with the intention of making life a little less frustrating for AA developers (i.e., date calculations or string manipulation!). Over time, I have built-up quite an extensive library of functions, which don’t exist in the core AA language but are easily accessible now, as DLL MetaBot functions.

In addition to developing tools and frameworks for the developers, I also developed, and co-developed numerous bots for the business. Whilst all these bots used AA as their principal development tool, I spent much of my time working on DLL-based MetaBots created using C# and database modelling & development.

GenPact (Bucharest, Romania) CONTRACT - December 2017 to February 2018

Automation Anywhere Senior Developer

GenPact is an Indian consultancy with offices all over the world. I worked in their Bucharest office on a very high-profile RPA project for a global manufacturer who must go nameless.

I was hired for this project to help get it back on track. When I arrived, the project was 2 months behind schedule. Two months later, the project was completed on time.

All in all, I developed over 8,000 lines of code, working against a very detailed requirements document and sat next to the SME.

I developed a central logging system, which ensures that all logs are sent to a central database (MySQL & XML).

I developed a centralised configuration system, which stores the configuration information for all tasks in a central location.

I developed a centralised monitoring system, which acts like a dashboard and enables support users to see briefly, which tasks are running, succeeded and failed.

Finally, I developed an AA MetaBot (written in C#), which provides a full library of functions, which hook into the SAP GUI API. This enabled AA developers to make a call to a single function whenever any interaction was required against SAP GUI screens, etc.

UBS CONTRACT - June 2017 to October 2017

Robotics Senior Developer

I worked for the Finance Robotics Centre of Excellence team, which is a central function, designed to provide development support, mentoring, and guidance, and to ensure that all RPA projects and robots developed within the Finance department are fit for purpose.

I spent a lot of my time at UBS extending the functionality of the Outlook MetaBot. This is a C#.Net MetaBot, which I developed for UBS 12 months earlier, whilst working on-site at UBS through Deloitte. As all MetaBots within UBS are developed and maintained by the main, UBS Centre of Excellence in Zurich/New York, and, as I was the original developer of this very high-visibility MetaBot (used throughout the whole of UBS), I was given special dispensation to work for the main UBS Centre of Excellence team, whilst working on the Outlook MetaBot.

I was single-handedly developing the GGAT Upload robot, which is an Automation Anywhere task, designed to handle the upload, analysis and reporting of GGAT data. This robot was developed to act as the Gold Standard example of AA coding within the Finance department. The main purpose of this project was to act as an example of best-practise AA development standards, which all developers within Finance could use as a starting point for their own projects. In addition to using AA code, this robot also relied heavily on a new SQL Server database, which I created (including SSIS) to enhance the monitoring & support of all robots across the department.

Robiquity Limited CONTRACT - April 2017 to June 2017

Senior Automation Consultant

I worked on-site at Ceva Logistics, which is a client of the RPA consultancy, Robiquity. I delivered various RPA solutions using AA. I designed and developed a brand-new RPA development architecture, which ensures that all projects follow a consistent model and adhere to a strict set of guidelines and quality checks.

I also provided training and mentoring to junior staff, ensuring that they developed a deeper understanding, not just of AA, but of solid development principles in general.

I developed various generic tools for use by Automation Anywhere, including some very useful MetaBots and a feature-rich generic error handling task. I developed a solution, which allows AA to call C# functions without the use of a MetaBot.

Deloitte UK Managed Solutions CONTRACT - February 2016 to January 2017

Robotics Process Automation Developer

I was taken on at Deloitte to build tactical and proof-of-concept solutions for a new team called Managed Solutions. This team was created to provide Robotic Process Automation solutions for internal and external clients. I used a combination of Automation Anywhere, C# and SQL Server to develop internal and external RPA solutions over the course of 12 months.

I developed an extremely interesting proof-of-concept for an external client, which parses data from PDF documents (of differing types) in a structured manner and then extracts, organises and outputs this data as fungible datasets, which can be used for a myriad of products and services. To support this solution, I designed a complete database model in SQL Server, which enables a generic approach to parsing different documents with differing types. I also created numerous C# functions, which became AA MetaBots, used to extend the core functionality of Automation Anywhere, making it possible to parse text from PDF documents.

I spent a few weeks in Wakefield developing a proof-of-concept solution for a food producer using Automation Anywhere. This POC involved scraping data from an Excel spreadsheet and automating the entry of that data into various SAP forms. All of this processing was completely automated using Automation Anywhere and screen based MetaBots.

I worked on site at UBS, where I was one of two developers building numerous automated solutions as part of the UBS IB Simplification programme.

I developed an internal solution for Deloitte, which automated the creation of US Tax returns for retired Deloitte Employees. This software read the core data for 650 employees from an Excel spreadsheet and then automated the entry of that data into a software application called CHX, which eventually output a PDF tax return. I developed the entire solution from scratch using Automation Anywhere coupled with numerous screen and logic based MetaBots.

Barclays (Investment Bank) CONTRACT - February 2016 to February 2016 (Yes, Really!)

Senior Data Architect & SQL Developer

This was a very short contract in which, I was asked to perform 4 months’ work in 17 days. My predecessor had been tasked with designing a database and web-based front-end for managing internal staff interviews.

Unfortunately, after 4 months of development, that solution was not delivered to specification. As the deadline for the deployment of this solution was immovable, Barclays needed somebody to come in immediately, hit the ground running and deliver the required solution within 17 days.

I was given an Interview Data file, which was an XML file containing 114 fields and asked to use this file as the basis for modelling a relational SQL Server database. The database, which I designed contained 51 tables, 10 views, 12 stored procedures and 5 user defined functions. There were quite a few lookup tables as well as a good deal of junction tables to support many-to-many relationships.

I developed a very simple ETL process (SSIS) to migrate the existing XML file into the new database model. Although it was a simple process, I had to incorporate functionality to parse single fields with comma-delimited values into many-to-many relationships.

I also created re-runnable scripts, which allowed the entire database to be rebuilt from scratch, including static data and lookup values, etc.

Once the database was designed and all database objects were complete, I created a Visual Studio SQL Server Database Project and added the new database to this project. This gave me the ability to deploy the entire database to any server on demand. There was no DBA and very few IT restrictions on this project and as such, actions such as deployment and re-building databases was very ad-hoc, hence this Visual Studio approach.

Various reports were provided, which were all based on a single “base” view. I adopted this approach so that reports could be extended and added to after I left.

Having completed the data side of the project, I developed a Web Forms intranet front-end solution. This gave the users the ability to list, select, view, edit, delete, create and search on the numerous interviews. Because the database was now completely normalised, the search facility was particularly powerful and allowed users to perform fairly intricate searches and filters.

With the exception of the search and filter functionality, the web front-end itself was fairly basic and amounted to little more than a few master/detail pages. In addition to the main user functionality, I also created administration pages, which allowed the admin users to perform CRUD operations on the static data and lookup values.

All of the above was completed in 17 days of paid contractual work, although I did work over 2 weekends, unpaid, to be certain that the project would be delivered on time.

The client was extremely impressed and happy with the work I delivered and commented on numerous occasions regarding my professionalism and approach to delivering a completed solution on time.

Barclays (Investment Bank) CONTRACT - July 2015 to November 2015

SQL Developer – Risk & Analytics - Credit Risk - Back-Testing

My first task on the team was to re-design the existing release procedures by streamlining the data folder architecture and writing intricate PowerShell scripts to automatically generate SQL release scripts from the existing codebase.

I was reminded constantly that I added weight and brought some much-needed experience to the team, which grew quite rapidly. I added numerous additional feeds to the multitude of internal databases. I developed SSIS scripts (ETL) to import new feeds into the back-testing database (Oracle) in addition to designing associated database objects to store those feeds.

I was also tasked with identifying, and where necessary, redesigning various aspects of the databases to reduce the amount of storage space required. I achieved this by implementing various “smart” design changes using “From/To” dates to store only the differences in data over time rather than storing every single piece of data, even if it is the same data every day.

Legal & General CONTRACT - March 2015 to July 2015

Senior ETL Developer and Data Analyst – PCR ETL Project for Solvency II

I was employed for this short contract to design, architect, develop, test and implement a new ETL solution for the PCR project. This solution worked by polling for input files from upstream systems (SQL Server Agent triggering SSIS ETL job) then extracting those files into a staging area before performing extensive validation and enrichment and finally passing the data through to a downstream system.

The SSIS component was quite simple because it utilised extensive scripting in C#. In addition, 2 DLLs were created, which performed the majority of the work with the SSIS scripts calling into these DLLs. The C# DLLs also performed various enrichment tasks by calling into another DLL created by an external team.

Interestingly, the team tasked with developing this system were all Unix/Oracle developers and I was the only Windows developer on the team. Because of this, I was called on almost daily to offer advice and consultancy for Windows and SQL Server.

There were no analysts on this team, so I was dealing directly with the end-user.

There was a very good testing team, but I still developed extensive unit tests for the whole project.

The project utilised a Hudson server to perform continuous integration. I also developed the deployment application, which zips up the Hudson deployment and extracts it to the required server as well as creating all of the required directories, configuration files and executables onto the required server.

Finally, I developed three utility applications for our own development team, the testing team and also the end users. These three utility applications were all GUI apps developed using WinForms.

Canopius Insurance CONTRACT - November 2014 to March 2015

Senior SQL Developer and Data Analyst – Finance Transformation Project

I was working on the Finance Cube development within the Finance Transformation Project. To begin with, I developed a utility tool in C#, which parses and documents SSIS packages. I also developed another utility tool in C#, which traverses all source code inside a Source Gear Vault and produces various reports, showing what kind of code exists and where.

Finally, I worked on extending the existing database design (tables & stored procedures) in order to support new requirements for this existing Data Warehouse Finance Cube.

Lloyds Banking Group CONTRACT - May 2013 to September 2014

Lead Developer/Data Architect - Group Reconciliations - PPI Payments & Reconciliations

I was hired to design and build a brand-new reconciliation and workflow system for the Lloyds PPI programme called CPRS (the front-end of this system is known as RapidRec), which was successfully delivered against a fairly aggressive timeframe.

By spending a lot of time talking to the business regarding their functional requirements and talking to various other departments regarding the banks’ existing data-flow infrastructure, after formalising a requirements document, and writing detailed functional specifications, I designed an end-to-end system complete with functional design documentation, logical data model, entity relationship model and mock-ups of the front-end. Having achieved sign-off for this design, I completed the physical design and build of the SQL Server database, together with the SSIS packages and related jobs to import the external data into a fully normalised model.

I then developed various stored procedures, which perform reconciliations against all of the imported data and create workflow items for each PPI case. These stored procedures were very complex with regards to the business rules, case priority algorithms and workflow rules, etc. I also built a large amount of test data for these recs, which covered all of the reconciliation scenarios and workflow cases and loaded 100,000 records into the database, covering a 10-day period to facilitate tests run over this period. I created automated test scripts for the database using Visual Studio and C#. Having completed the unit testing against the imported data, reconciliations and workflows, I developed a front-end using Excel and VBA.

Excel was used as an interim front-end because an existing, semi-related solution already existed in Excel, and it was felt that the users would adapt to the new solution easier if the front-end appeared similar to their existing worksheets. In addition, because of project time constraints, it was deemed easier and more productive to use the existing infrastructure when rolling out the new worksheets, etc.

I then built an ASP.NET (MVC4) front-end, which replaced these worksheets. In addition, a myriad of management reports were developed against the database, which I developed using SSRS.

The bank also asked me to develop a completely new, unrelated reconciliation and workflow system in just 3 days. I worked until midnight for 3 days, using a subset of the CPRS system (detailed above) and delivered a complete working solution for IAS (Industry Account Switching). This system was implemented successfully and continues to be used daily, successfully processing thousands of account-switching requests per day.

The final project I worked on was a data warehouse, which was created for management reporting purposes.

In addition to de-normalising the current CPRS database, I also had to pull in various disparate data feeds from all around the bank. This involved working with stakeholders, project managers and gatekeepers in order to source and gain access to the feeds, and where required, request and manage downstream feeds on an automated schedule. All of this data had to be transformed and loaded into the newly designed data warehouse and some fairly sophisticated reports were developed on top of this.

Barclays Capital CONTRACT - June 2012 to February 2013

Developer – Structured Capital Markets

Skills Employed

C#, VB.Net, VB6, ASP.NET, SQL Server 2008, SSIS, SSRS, ETL, Visual Studio 2010, WPF, WCF, WinForms, WebSphere MQ, JavaScript, Ajax, Perforce, DevExpress, NHibernate, Subversion (SVN)

I made extensive changes to the SPE (Special Purpose Entities) application, which is a multi-threaded WinForms application using NHibernate, DevExpress and SQL Server. These changes involved creating new user controls based on the available DevExpress controls, editing existing forms, adding new forms & tabs, making extensive changes to the SQL Server database structure & stored procedures, creating new reports in SSRS and retrieving new data-feeds from other areas of the bank, including the full ETL (using SSIS) process for each feed.

This development also involved porting some of the application to a WPF solution. In addition, this application had many stakeholders across numerous departments (Middle Office, Tax, Finance, etc.), which gave me an opportunity to collaborate with users across many areas of the business. I was the sole developer responsible for this application, from the requirements gathering stage all the way through to the final deployment. I was tasked with creating the functional specifications and design documents for the ETL of each of the downstream data feeds. In addition, I used SSRS to create various reports against the system database.

I created a generic, multi-threaded web service (MQ File Bridge Service), which reads messages from a configurable WebSphere MQ and writes them to an XML file in a configurable location. I used the new .Net Task Parallel library (TPL) to achieve the threading. The service also reads XML files from a configurable location and writes them as messages to a configurable WebSphere MQ queue. The technical aspect of this project was made slightly more difficult as Barclays had their own wrapper around MQ, which I was forced to use.

I worked on the FORT (Financial Online Reporting Tool) application, which is an ASP.NET application that also has WinForms contained within user controls. I combined two forms to make the user input easier and more intuitive. This involved making changes to the user controls, web forms, stored procedures, table structure and static data.

Towards the end of the contract, I performed various BAU support tasks on a rota basis.

Finally, I performed extensive analysis on the performance and design of the existing database and implemented many small, but very productive changes.

Bupa CONTRACT - February 2012 to May 2012

Developer – Solvency II

Skills Employed

C#, ASP.NET, MVC 3, Excel/VBA, SQL Server 2008, SSIS, SSRS, Visual Studio 2010, JavaScript, Ajax, TFS, Agile/Scrum, TDD

I was working on the Solvency II project (which is the Insurance equivalent of BASEL II). This was an Agile/Scrum project, with fortnightly scrums.

I was adding new screens (MVC & Entity Framework) to the data-capture intranet along with the database design to support those screens.

I developed several SSIS packages to perform some basic ETL from external data sources. I also created all of the



Contact this candidate