Mentoring in the high school
Few months ago, I had my first experience teaching in an high school… and I could say that the destiny is really kidding me: I’m giving a lesson where I was a student! Thanks to a Technical Institute in Cremona, Italy (IIS Torriani http://www.iistorriani.gov.it/pvw/app/CRIT0004/pvw_sito.php) , and Vittorio Cirioni (lab and computer science teacher), I started a new journey with a class and a single student teaching how to be a system administrator. Like said in previous posts, learning system administration, is often skipped in many study paths due to the cultural lack of many teacher or for the continous changes. But when the school institute agreed with this complementary instruction, like happened here, these students could gain the opportunity to rapidly come into the sysadmin world.
Today developers are more and more involved in integration projects and other nerdy stuffs, but in many conversation with my customers, is coming out the difficulty to find good system administrators. Is this a work opportunity for a newbie sysadmin? Why is difficult being a sysadmin? In my opinion, the world is covered of developers while sysadmin are being more and more “rareware”because:
- it’s difficult to follow continuous tech news: IT is an evolving matter, that is growing and changing every day. What you’ve learnt today become oldy tomorrow!
- there are different ways to think the same IT, precluding the way for newbie sysadmin. Today the easiest way to learn IT is practicing in cloud and thinking that delivering application in private or public instances doesn’t matter… unfortunately not all old sysadmin believe in the way that an application could stay in every place keeping the governance to them; they still think that all data must be under their desk! This is the key for stillness in innovation and to deny new work places for newbie… and this is embarrassing, especially because we are talking about IT!
- often there are no moneys and no opportunities to practice with enterprise systems: the numbers are what differentiates Italy SMB from US SMB: the ratio could be 1:50! And Italy is full of SMB and less Enterprise realities. The result: few opportunities to work in enterpise IT and learn with enterprise level stuffs!
These three problems could give the right opportunities to companies, mentors and IT architect to get and give a hand to the IT human resources in Italy: when you choose a person for IT staff, never take valid the classic computer lover and evaluate an IT administrators using the right measure for evaluation: bring an expert and test with practice what the candidate is really able to do!
But before put the fault into manager lacks, it’s necessary clean the world of “computer lover” and rebuild or improve the method to learn IT… and IMHO the best way to start is the teaching to high school students (as long as the brain are not overwhelmed their hormones !)
Where to start
There are a several way to start develop the culture around systems, but, depending on the right approach, you could find some student that prefer start from application perspective, going down to physical server and datacenter, and others which prefer improve the knowledge starting from physical stuffs, moving to logical systems and finally analyzing the application environment.
Personally I suggest to start with development; better if starting learn and practicing with languages oriented to system integration like perl, powershell and python and also trying to include system considerations around the application. The way where your application interact with other application, ending to the user, is what you need to improve the knowledge of systems involved in the processes. Let’s consider a simple web-application and try to make a functional diagram:
As you can see, the application diagram implies the interaction between logical structures like server, application process and databases which using operative systems kernel modules could establish the needed connection across one or more networks. This diagram could be used to represent application and systems perspective and could be a good start point for dev, ops or devops during application design.
Under the hood every server could be represented as a box that encapsulate operative system, libraries,… but is known that the major part of system that live in the datacenter are at least virtualized for many benefits like:
- abstraction from hardware systems
- manageability improvement
- backup and disaster recovery
Following this way, the new infrastructures that serve application are called software defined datacenter, composed by virtualization platform for computing and other two abstraction layer that compose storage and connection:
- software defined storage
- software defined networking
Moreover it is possible to distribute or replicate the entire workload across one or more datacenter or in a public cloud that respect that are compliant with the cloud paradigm: isolation, integration, scaling and security (governance included). Ok! it’s a huge world and a tsunami of knowledge that comes from every aspects of this simple system. For this reason I suggest the mother of every method in IT: <<Divide et impera>> (in Latin). This is a effective approach to solve application and system problems and could bring your brain to make this reasoning:
- overall the system (the big picture of the system)
- box every process or system
- highlight the connections
- unbox what you need to know or to solve
After some experience you could move to senior abilities like:
- reproduce or improve in another design
- substitute quite all human action with an automation
After the method there is a fundamental system map that every sysadmin should bring to identify how many degrees of freedom are available for every problem or solutions: The IT stack.
During design there are 6 qualifiers that are involved in decision regardless of two aspects of the service itself: applications and systems.
|Qualifiers||System perspective||Application perspective|
|Availability||Virtual machine or physical elements like server, storage and networking must be available during planned and unplanned downtime||Every process must be resilient and move across many system to guarantee its availability|
|Manageability||Every system must be managed by specific technical people, giving enough visibility to manage all entities that compose the system||Every application must be well maintained by multiple teams. In this phase tool and governance are mandatory to keep the application up to date|
|Recoverability||In every case the system must be recovered during unplanned events like physical and logical damage.||Application must be developed keeping in mind that backup of the primary data must be the least available chance. Data more and more travel across systems and datacenter, and the delocalization could be a chance to keep data in every site and use the application processes to perform data and service restore.|
|Performance||Infrastructure performance could impact application usage. In these case there are 2 main approaches: predictive and adaptive.||Other than application performances, there are a couple of ways that could be taken in order to ensure application changes during time. New applications must be developed keeping in mind that the underline infrastructure is software defined and reacts in different modes depending on the workload pressure.|
|Security||The perimeter of applications, VMs, datacenters,… must be delivered and protected against internal and external attacks. Every system must be designed keeping in mind the major best practice that could be modified during the time. For this reason is important tracking every VM baseline and make vulnerability assessment every months||Acting at “core” level of system is the definitive way to prevent attacks against the entire infrastructure. The origin of the major part of the attacks resides at application level. For this reason software patching and development keeping security constrains is the best way to keep system secure during the time.|
|Cost||In some cases is the main impact the could drive the delivery in other direction compromising the other qualifiers. For this reason is important to address every feature keeping in mind (or better showing to your stakeholders) the Return Of Investment (ROI).||Every time is calling developer team seems that timing is not problem and its cost per person is not so easy to calculate. The consultant approach could be a winner chance to reclaim the right way to conduct the development. – There are 3 choices: time, quality and cos. For every development customer and manager could decide 2 of these. The remain is a developer choice.|
Bringing the business process as the primary focus of the design, you should be take in mind another aspect that differentiate a service from a resilient service: failures and data damages could happens every day… In a slogan :- Design your service thinking that the world could end in 5 minutes! – But before falling in the pessimism, think that these precautions could be a guided way avoid problem and justify your decision during customer discussion. Another time: qualifiers will help you!
The worst part of the game is: a good sysadmin is often alone during design, delivery and address customer discussion. For this reason there are other qualities that must be achieved at every level of the knowledge:
- The world is changing and I don’t have enough time to keep me up to date… Than choose the community approach and keep time to meet expertise and experience using in person meeting or through social channels. Is known that if a know one thing and you know another thing, we all know two things… imagine the knowledge of an entire community composed by 1000 people!
- Focus on a particular technology you should update your knowledge every day and in some cases radically from the previous concept. In some cases a change of technology could happens; don’t worry about that, because nothing live in eternity!
- Programming languages are not matters exclusively for developers! For instance the best developers in the world have a great system knowledge! In the same way, a good system administrator doesn’t hesitate in front of a java stack trace error!
- The brain is one! And, sure, there isn’t a guru who knows all about IT. For this reason don’t be afraid to say :- I should check it after! – or better :- Yet I don’t know this particular technology! – Because poor people consider the word “don’t” but nice people consider the word “yet”!
The last recommendation is: go ahead! Start with a problem, analyze every pieces with your preferred approach and improve your knowledge more and more deeply inside what you’ve done! Then, after a lot of asleep nights and after hundreds and hundreds solved problem, you’re ready for a specialization, following certification paths (get the knowledge) and be involved in a community (give the knowledge).