<img src="https://secure.perk0mean.com/177403.png" alt="" style="display:none;">

TrueINSIGHT

Strategy & Transformation

The Non-Technical Lessons That Every Future Programmer Needs to Learn

Many of us are now pulling double duty, working remotely at our full-time jobs, and playing teacher for our kids at home. I am happy to report that I am an ace at all things in sixth grade. I guess this means that I am indeed smarter than a fifth-grader. Things break down when I try to help my seventeen-year-old, Chance, with his full schedule of advanced placement classes.

 

Chance spends a good portion of his day working on his year-end computer science project and working on programming certifications. I am not sure how this is going to play out on his report card for his other six classes, but Chance is an avid programmer, and this is his passion.

Folks assume that because I work in technology, I taught my son to be a programmer. That is 100% false. He was abducted by aliens one night, and the aliens returned him three inches taller knowing how to code in Java, JavaScript, HTML, and python. Okay, only a small part of that is true, Chance did seem to grow three inches in a single day, but the “getting into programming” was a gradual process, and I am 99% sure that there was no alien abduction.

 

In truth, the dedicated, passionate teachers at Tomball Memorial High School taught my son to be a programmer. What I did was lay the foundation. The best way to lay a foundation for a future computer whiz is to heavily limit the usage of electronic devices during grade school. Allow a child just enough time on a computer to become comfortable with technology and develop typing skills. How counter-intuitive is that?

 

Laying the foundation: Requirements and planning 

With the power of technology, it is far too easy to lose track of the problem that one is trying to solve. Lines of code do not amount to much if they fail to address the requirements and solve the underlying problem. Solid code development whether it be for a transactional system, data solution, website, or robotics process automation (RPA) begins with an in-depth analysis of the requirements, in other words, the problem that one is trying to solve. The second step is careful planning and solid solution design and architecture to solve the problem at hand.

 

Building the foundation through non-technical lessons 

I believe that the foundations of the non-technical aspects of programming are better taught with a deck of cards, a box of dominoes and strategy board games. The rules of the game are the underlying requirements and the child’s strategy for winning the game mirror planning and design. Staying focused on the rules of the game, aka “the requirements”, and the steps required to win the game, aka “solve the problem” is quite natural in a setting without technology.

 

Many card games, strategy games, and domino games require a person to think of their moves ahead to win the game. The games naturally facilitate a step-by-step problem-solving process, “if I do this on this turn, then on my next turn, I can do this, and I can win on my third turn.” Unless of course, another player takes a measure to block the planned steps, which in turn leads to additional step-by-step analysis. As a child evolves and becomes more competitive at a game, the thought processes begin to naturally shape into the mapping out of options and the pros and cons of each option, adjusting their strategy, “solution architecture” as the game progresses.

 

A key is to allow plenty of time for a child to take each turn and think through their strategy and options, just as one does in the design phase of an effective technology solution.

 

Seizing the opportunity that our present situation presents

I hope that we will all be back in our offices, and school will be back in the classroom soon. In the meantime, while we have this extra time at home with the kids, and for family time when this is all over, here are some games that I recommend for teaching the non-technical foundations of programming – Sapiens (strategy board game), Texas 42 (dominoes), Phase 10 (cards) and Master Mind (one of the oldest problem-solving games out there).  

 

In Conclusion

Understanding requirements and problem-solving are important abilities of a skilled programmer and a foundational understanding of these is easily acquired by young minds through non-technical experiences. I believe these skills put a person on the path of success. I look at my coworkers at Veritas Total Solutions, and yes, I am impressed with their in-depth technical knowledge, blown away at times. However, their real value is the deep industry knowledge and experience that enables them to develop solutions that truly solve client problems – and that’s a skill that can be developed early on through non-technical lessons.

 

At Veritas, being passionate about solving our clients' most difficult problems is one of our core Culture Code values. Our experts have deep technical knowledge, but it's our ability to problem-solve that make us uniquely qualified to successfully deliver Strategy & Transformation projects. If you have any questions, please connect with us or subscribe to our blog to get monthly updates.

Written by Amber Storey

Amber Storey, Director, has over 15 years of industry and advisory experience in commodities trading, financial services and oil and gas industries. She has a detailed technical understanding of trading systems and underlying data. She is focused on integrating new digital solutions with Commodity Trading Risk Management (CTRM) systems to optimize the capabilities of traditional CTRM systems with the added value of digital capabilities.