As part of the recent conversations on recovering from COVID-19, there is a lot of emphases given on how we can unlearn/relearn and adjust to the changing dynamics. Most of the times, we may be under the impression that completing a course, certification or an online course may be sufficient but in today’s converging world with all the technologies, business-processes so closely knitted, it is important to understand any technology/domain in its entirety, and exposing ourselves to all the possible real-world scenarios is going to be the key.
I would like to share a couple of incidents which inspired me in picking this topic.
Incident 1: I was attending one Engineering Student event and there was a question on whether pursuing a course or completing an online certification will help in embracing a better career/job.
Incident 2: I recently had an interesting chat with my little one, and we are on a conversation on one of the subject and when I asked a little tough question, the immediate response was that it was not part of their learning/syllabus.
In both the cases, I did try my best to motivate the concerned and encouraged them to go beyond the boundary in grasping whatever possible to gain better insights on the concerned topic/subject. Learning is the common touch-point here, and it should not be encircled with a fixed format or formula but has to be adjusted based on the situation and demand.
So how exactly we should approach learning, and that too in times like now with Covid-19 limiting us to stay home is a million dollar question, and there are lot of debates on how to leverage technology and enable online / e-learning opportunities to create the much needed platform for all the possible value proposition. One core thing to remember is the fact that our learning will make sense only if we keep it as a continuous activity without satisfying with a milestone, and continue to thrive in finding ways and means of enhancing it further through research for deeper insights, or through resolving some of the societal issues/challenges.
Research, Learn and Resolve go hand in hand. The output from each can be an input for the others. For example – if we are working on resolving a problem, we can always discover some unknowns or improvement areas in the process which can be further researched and learned for possible products/solutions.
As we all agree, human potential is never 100% tested, and we always have a scope to do more, and I believe the same is applicable for engineering teams too. In the past few years, we have seen some decent transformations from a process standpoint taking us from a typical waterfall model to agile and further to continuous integration advocated by the DevOps. What exactly is the transformation required from an engineer’s standpoint and how to maintain relevance in these unprecedented times is something we can deep dive in the next few paragraphs. Though some of the examples mentioned relates to IT/Software, the core concept is explained is equally applicable for all the engineering streams.
Necessity is the mother of invention and this aptly sets the context for everybody, and we as engineers are no exception and may be wondering on how to maintain status-quo and survive these extraordinary times. Learning can be handy here but the challenging part will be in terms of picking the right areas/topics mapping to our core expertise, and sustaining the same till we see a tangible output will be vital.
Let’s see if we can put some formula/structure to make it easy for everyone.
3 C’s Learning Framework
Be it technology, or domain or any other area, we need to understand some of the core concepts associated with learning which can be quickly summarized in the form of 3 C’s – Curiosity, Common Sense, and Communication.
- Curiosity – This is the first and important aspect of our learning which can be a combination of attentive listening, asking right questions, and going that extra mile of getting into the deeper insights on the concerned topic/subject browsing through books, research papers, etc.
Keeping our eyes and ears open, and gaining insights on whatever is happening around the world through technical blogs, magazines, community events, conferences, etc. is important.
Understanding reusable components/tools which can help in the betterment of the products/solutions, and contributions to Open Source projects are some of the other areas which can make us stronger from an industry standpoint.
- Common Sense – Once we get a handle on these external elements, we are equipped with more data points but there may be many, so the next thing to pick is to assess, dissect and understand the fitment for the product/solution we are associated with.
This may result in either incremental improvements like cleaning up the code for more readability, helping on any non-functional improvements (like performance, usability, security, etc.) or it may help in arriving at innovative ideas/solutions which can enhance the product/solution to the next level.
Thus, our curiosity, experience and common sense should help in converging to something useful and meaningful considering the budgetary, time and other constraints prevailing at that moment.
- Communication – The final step is to convey and convince on the proposed product/solution betterments with the stakeholders (both internal, external) and getting their buy-in. This is an important step to pursue from an implementation standpoint.
Let’s take one or two technical scenarios to explain the above framework.
Scenario 1: Java Engineers who might be using Spring Framework can think about extending their knowledge on what is happening surrounding this technology. As we all agree, SpringBoot is the latest trend in this area and it definitely helps in simplifying the coding aspect making it light-weight and can be easily aligned with some of the modern technologies like MicroServices.
- Curiosity – First, we need to explore what is happening surrounding Spring Framework. The sources can be books, technical blogs, and magazines (like Open Source For You – OSFY) which can help in getting some detailed insights on what’s happening in this area. The next level here can be the active participation in forums and user groups for more engagement and enlightenment. Identification of SpringBoot along with enough knowledge should be the exit criteria from this phase.
- Common Sense – Once we gain enough confidence on the SpringBoot, we can start thinking about the fitment to our on-going product/application. One way to see success in this area is to have a broader understanding on the product/application technical landscape covering Architecture, Design and Implementation. From here, we should be able to figure out all the improvement/ pain areas which can be anything like – the overhead we face today in terms of setting up the project and configuring all the components, etc. The best way to conclude this is to perform a small Proof of Concept (PoC) picking one functional area and validate if the proposed technology is really helping.
- Communication – This is the tough part as we need to promote our ideas/thoughts to the broader audience, this needs good amount of home work on the overall impact analysis which should cover the implementation efforts, impacted areas, and the overall benefit to the end customer. This also should ensure internal organizational benefits in the form of better maintainability and sustenance considering the future roadmap/direction. There should be a good presentation which can depict the flow to the team, leadership and the business stakeholders.
Scenario 2: One of the important challenges we face today in the IT/Software world is the Build and Deployment. Though we made some incremental progress on this area moving from Ant to Maven to the current Jenkins, we still have a long way to go. The savior came in the form of recent developments in the DevOps area where we started seeing better collaboration between Development and Operations. It introduced some decent tools and technologies like Docker, Kubernetes, Scripting options (Ansible/Puppet) which enabled more automation, and matured the overall process getting onto a continuous integration and continuous delivery/deployment (CI/CD) model.
- Curiosity – This should start with an effort to understand the current Build and Deployment process, and once we get a handle on this, we should think about evaluating various options available going through the industry trends and shortlist a combination of tool / scripting language which can help in enhancing the existing process. Assume we shortlisted say Docker, Ansible, our next step should be to invest time and effort in building the expertise through trainings, and other available means possible.
- Common Sense – Evaluate the fitment of selected technology with the current build/deployment process by going through a small proof of concept. Our goal should be to achieve end to end automation such that once we checked in the code, it should pick from there and should build, deploy, run automation test suite, and alert the concerned for any failures during the entire process flow.
- Communication – The challenging part is to get everybody on board with the new process as this involves buy-in from all the stakeholders. We should be able to handle this with right training sessions explaining them on the benefits possible in terms of simplicity, ease of use, and time to market.
Thus, 3C’s Learning Framework can be the key in making us analytically strong, and this in turn can help in solving problems seamlessly irrespective of any engineering stream we belong to.
Let’s dig little deeper on the third C (Communication) which is more than conveying our ideas in known circles, and this skill has to be consciously groomed and can be a life time learning. Some of the organizations expects their engineers to represent them in conferences, technical demos, etc. As it cannot be trained just in a classroom for a week or two, there may a question on how this can be mastered.
Some of the general tips which can be tried upon includes
- Vigorous reading, topics can be anything of our respective interests but it has to be practiced continuously
- Putting our thoughts and opinions in the form of blogs, written articles, and it need not be at the level of getting published in a journal but can be in small groups within friends/family circles.
- Volunteering will enable us in expressing ourselves shedding out all the inhibitions, there may be some teething problems but will eventually mature ourselves as we get into future. This can be anything from teaching to underprivileged kids, serving in a community, or helping during natural calamities/crisis, etc.
Thus, Reading, Writing, and Volunteering are three important practices which will make us a complete individual developing our all-round communication abilities. We will become more confident and can express our opinions/ideas comfortably, and who knows – some of these ideas may become big if we pursue them sincerely.
As we all agree life is revolving around growth, and growth can be achieved only if we adjust and adapt to the changing surroundings, this in turn can be accomplished through constant and effective learning.
Overall, Learning can be meaningful only if we
- take a deep-dive on the topic/subject,
- extend it with the possible innovations and implementations, and
- getting engaged with other players who are part of the same domain/eco-system
Learning and Innovation are interwoven and go hand in hand, with communication serving as the focal point, they will ensure all the possible betterment to the society.
Views expressed by the author are his own and done in his personal capacity. These are no way representative and/or reflective of the organization he is associated with.