Intermezzo–program based on experience–part 9

This post will be somewhat related to https://www.smart-jokes.org/programmer-evolution.html – but it makes total sense for me.

Let’s take what we achieved until now: We have 2 national banks –  and we gather exchange rates from there. What if we want to add more banks  -or let other programmers to add their dll’s to our software to just display the exchange rates from other banks ?

Let’s say now that the requirements are to to display the exchange rates for 2 national banks into a console program .  The manager says that later we may add other banks to load exchange rates . I will try to explain some differences how the code is created, depending on the experience.

Junior programmer: – all the code inside


int Main(){

// code for load and display the first bank exchange rates

// code for load and display the second bank exchange rates

}

Internship programmer: – create classes


//create  2 classes ( first bank, second bank ) and a Load method

int Main(){

var firstBank = new FirstBank();

var data = firstBank.Load();

DisplayData(data);

//same for second bank

}

Seasoned Programmer: – creates interfaces


//add to the 2 classes an interface , loading into a list, loading data for all the list, display

int Main(){

var l = new List<IExchangeRates[]>;
{
new GetFirstBank()),
new GetSecondBank()),

};

foreach(var rates in l){

var data= rates.Load();

DisplayData(data);

}

 

Until now, it is business as usual. But, from now on, there are many things that can be done , depending on programmer experience and will to do things ( until some error arrives and there is an official task for it) :

  1. How to handle errors ( Polly ? )
  2. How to load different libraries that contains our interface ( writing code that loads directly a list with all classes / DI / reflection / config files / plugin loader )
  3. Think about performance ( loading data in parallel / caching )
  4. Add Tests + code coverage
  5. CI / CD

( if I do miss something, please put on comments)

 

What is my point here ? Is that I expect any programmer to go very fast to the level of Seasoned Programmer. But , after that, the knowledge of each programmer is relevant about how he does the points above ( or, if he does not …)

Infovalutar

And one hour passes...
(This is the result of 1 hour per day auto-challenge as a full cycle developer for an exchange rates application)
( You can see the sources at https://github.com/ignatandrei/InfoValutar/ )
NrPost 
1Start
2Reading NBR from internet
3Source control and build
4Badge and test
5CI and action
6Artifacts and dotnet try
7Docker with .NET Try
8ECB
9Intermezzo - Various implementations for programmers
10Intermezzo - similar code - options
11Plugin implementation
12GUI for console
13WebAPI
14Plugin in .NET Core 3
15Build and Versioning
16Add swagger
17Docker - first part
18Docker - second part
19Docker - build Azure
20Pipeline send to Docker Hub
21Play with Docker - online
22Run VSCode and Docker
23Deploy Azure
24VSCode see tests and powershell
25Code Coverage
26Database in Azure
27Sql In Memory or Azure
28Azure ConString, RSS
29Middleware for backward compatibility
30Identical Tables in EFCore
31Multiple Data in EFCore
32Dot net try again
33Start Azure Function
34Azure function - deploy
35Solving my problems
36IAsyncEnumerable transformed to IEnumerable and making Azure Functions works
37Azure functions - final
38Review of 37 hours
39Last Commit in AzureDevOps
40Create Angular WebSite
41Add static Angular to WebAPI .NET Core
42Docker for Angular
43Angular and CORS
44SSL , VSCode, Docker
45Routing in Angular
46RxJS for Routing
47RxJs Unsubscribe