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) :
- How to handle errors ( Polly ? )
- 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 )
- Think about performance ( loading data in parallel / caching )
- Add Tests + code coverage
- 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/ )
Leave a Reply