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 …)
Leave a Reply