Friday, August 05, 2022

Continuous Education - or where does learning stop.

Analysis paralysis is that state where you keep working on something, never finish it, because you're constantly thinking that you can make it better. You just keep doing the studying, the analysis, and never really engage on the project.

Learning and education can be like that as well. I remember, as a student, when I had a project to do, I'd start off in the library. It would take a really long time to get the work started, because I needed to make sure that I'd read absolutely everything I could about the subject before I started working on it.

But, of course, you can never really know everything. You can only know, what you know at that moment. And there's this fear that either, you don't know enough to do the work, or that if you knew more, you'd do a better job.

And it does not matter what career you're in, as The Desiderata says, "...for always there will be greater and lesser persons than yourself."

I like working with software and doing software development. I enjoy automating processes using computer programming. And in my life, I've worked with so many different languages, getting really good at some, and superficially competent in others. For a big part of my career, I wrote desktop applications and now, it's all either web-based, or mobile. And ultimately, I think that responsive mobile technology that also fits the web will win.

And this means learning new ways of writing software. Unlike the world of the 80's and 90's and even the 2000's, the choice of what tools to write software with is astounding. You cannot master everything, but can try to be really good at one or two.

And I have finally fixed my attention on the Python programming language. It's not the best, but it certainly is quite popular. It's easy to use and learn, and if you are a software algorithm fanatic, you can do some really cool things with it - both on the web side of things and also on the mobile and desktop app side of things.

My love for complex programming languages like C++ is still there - and I may keep flexing those muscles on non-work related things, just to keep interested and busy.

Something like this blog (and it's sister blogs about software development) which were originally so focussed on being good, but are now focussed on discussing what goes on in this mind of mine.

Python is a great language for doing so many things with information - after all, we are living in the information age. And like typing and writing, computer programming should be one of the basic tools that students leave college with. Arguably, being able to write comprehensively in any language is a good skill, but it's not a necessary skill for all types of work. Being able to write competent software helps build logic skills, which, like reading, writing and arithmetic, go a long way to keeping the brain flexible.

But having learned Python the next step was to select different frameworks for doing some of the work that I need to do. For web programs, I started learning how to use the Django framework, but soon gave that up for a lighter, easier, simpler framework called Flask. Django is a pre-built house, you just go in and move a few walls, paint and furnish and you're done. Django comes with database connectivity and security built in.

Flask, on the other hand, is like cement, bricks, wall and floor components as well as some fixtures. You assemble them yourself, build the house. Unlike Django, there's no house for you to start with, you need to assemble the basic stuff but that's very quick. You can get a simple Flask application running faster than a Django one (though the Django crowd may disagree).

And for desktop apps, I had settled on the Tcl/Tk interface (tkinter) that ships with Python. However, I discovered Kivy, which while takes some time to learn, does things a little faster once you have learned how to use it. With the added bonus that Kivy allows you to build mobile apps.

I'm ignoring everything else for now.

And hey, that doesn't mean that I won't start building apps until I've learned the entire language. Nope, apps are already being baked. And I have the added audacity of planning some tutorials which I'll release on my Python blog. For me, teaching is a way of learning.

Thoughts on my career.

I don't think that there's a perfect definition of the term employer. Looking at the Oxford definition, an employer is a person or organization that employs people. This seems very broad. Employ does not necessarily mean pay, but if we narrow that definition to include responsibility for paying those you employ, then perhaps we have a definition we can discuss issues around.

My first paid employment was with an engineering company in Kenya called East African Engineering. I don't remember too much about my responsibilities, but it was not a desk job. East African Engineering was mainly involved in road construction and I recall an assignment to measure traffic along a section of the road from Kenya into Uganda at the border town of Malaba. For an entire week my team took turns to count and categorize vehicles that were using the road. The goal of this exercise was to collect enough data for the engineers to design the upgrade of that section of the road that needed urgent repairs. 

Another part of the job with East African Engineering was lab work. We received soil samples from various parts of the country and our task was to measure certain properties of the soil. Mostly mechanical properties such as plasticity.

Regardless to say, I once thought I wanted to become and engineer, but after a summer at that job, I decided that this was no way I wanted to spend my life.

I graduated as an architect in 1990 during a serious recession in Canada. Most companies were folding up in Montreal and moving to Toronto. So when I graduated I spent months looking for work, handing resumes to countless construction and design firms in the city. I was finally hired as a draftsman by the architectural/engineering duo Kotansky and Kotansky. Two brothers who had a firm in Montreal and were doing a lot of work for the Canadian Tire company. Apart from Bill Kotansky, I was the only other architect in that office, but the other draftsmen knew much more about construction drawings than I did. It was here that I first used AutoCAD and fell in love with computer-aided drawing. I was at the bottom of the food chain and in the mornings it was my job to clean the kitchen and make the coffee. I did the dishes at the end of the day. We did not have kitchen cleaning staff, although the landlord cleaned the carpets and collected the garbage. 

During my summers at school, I worked often for one of my professors, Kumar Malde, possibly the best teacher in any subject that I ran across. My love for construction returned during my summer jobs in his office where we did a lot of timber and glue-laminated construction buildings. In this office, I continued to develop my software development skills, primarily using the Pascal programming language to help in the many engineering calculations we needed to do. 

I finally decided, possibly because of the recession and the fact that I started to realize that a career in design and construction would require personal connections, that I would move into software development. I saw both Bill Kotansky and Kumar Malde doing a lot of sales work, pitching their firm and their business and leaving the actual work to employees.

I completed a diploma from a private vocational training school - CDI (Career Development Institutes) - focussed on computer programming. I also studied computer network principles and graduated with an additional diploma as a network technician. These served me well as CDI employed me to teach the Programmer Analyst curriculum at one of their colleges. 

After a few years teaching, I moved to their head office to their curriculum development team. I was finally in charge of the development and maintenance of the software development training. I was finally in management and even though I wrote one course (to teach Visual Basic) and pitched another (C++), most of my time was spent evaluating courses written by other publishing houses for purchase and education at our college system.

A few years in curriculum development and the itch for "real" work came back. Many of my students had graduated and were finding better paying, more satisfying work in the "real" world. Finally an job posting caught my eye. The Colleges of Applied Arts and Technology Pension Plan was looking for a Systems Administrator. Not specifically a programmer, but someone to take care of the technology. I applied for the position and after a few rounds of interviews, moved from CDI to CAAT.

It was at CAAT that I spent the next 22 years. From Systems Administrator to Director, Information Technology. From a staff of one (me) to a team of about twelve people including a software development team, a network and infrastructure team, a helpdesk and the start of a data management team.

I now considered myself an employer because I directed the team's work. In hindsight, I think the team was on of the best that I have ever had the opportunity to work with. As Paul Getty is quoted as saying, "An employer generally gets the employees he deserves."

But after 22 years of building the team, and working steadily and seeing the organization grow, it was time to return to my roots back in Kenya. My father was ready to retire and asked me to return and run his companies. Plural. A real estate company with one successful project and others in planning. And a farming company, originally started with coffee and tea, but now focussed mainly on avocado for export.

I am by no means a real estate professional, neither am I a farmer. Anything and everything that I have learned in my careers has been focussed on software projects. Even my early career quickly turned to software when I was exposed to AutoCAD. Even then, rather than spend time drawing using the software, I spent more time learning the underlying scripting language, AutoLisp, so that I could automate repetitive tasks. Why draw the same bathroom fixtures over and over again? Why draw the same windows, or doors, or electrical or plumbing fixtures. Draw once, then automate. Not just cut-and-paste, but actually run software to place these items given coordinates and other commands.

At CAAT, I wrote the first pension estimator, before the Internet, and it was shipped to the various colleges so that individuals could calculate pension estimates. That led to various web tools.

In my new role as employer I have to take a broader look at the company and figure out what the long term goals are. Given my technology background, the very first thing I did was move everything into the digital workspace. In a strange turn of events, COVID-19 ravaged the world and the changes I made allowed existing processes to continue suitably changed and automated.

In my new role as employer, different things keep me awake at night. Like our tax agents, making payroll each month, paying suppliers and other service providers, handling employee issues completely unrelated to work, hiring to expand and terminating employees who are no longer a fit.

In my former roles, I worked very hard to keep my job, to be successful based on the opinion of my supervisors, managers or even higher up. I worked hard to be recognized which was key to getting promotions. Long hours because I was not in control of any of the deadlines.

I'm slowly getting used to the idea that the buck (or in Kenya the shilling) stops with me. In thinking of these two lines of business, I must be bolder and channel our energies to work that is profitable. Like my father who moved away from coffee and tea as the main crop, while keeping the focus on farming and food production. Even the real estate venture was an opportunity which had huge risks and could have either succeeded well (which it did) or failed horribly.

As an employee I had no real emotional attachment to the company, other than the fact that it was providing my livelihood. As an employer I am starting to see this business as a child that needs to be nurtured and directed to grow as I see fit. To take calculated expansion risks and actively listen to advice that benefits the overall survival of the company.

Profitability is one measure of the health and well-being of the company. But so are non tangible factors such as smoothly running operations (how do you measure that), employee engagement (how do you measure that), work/life balance.

For now the focus is on articulating a strategic plan for the next five to ten years. I have enough knowledge in both real estate management and farming to properly manage the various teams. And this has only been three years.

Life is strange. Never would I have imagined or dreamed that I would be in his position. Not working specifically for a paycheque, but working to do good work for the sake of building something personal. And engaging like-minded employees who are willing (for money) to work hard to achieve my goals. Using their specific skills whether it is in farming, or tax/accounting or general sales and marketing.

One thing I know though is that business skills come from many areas. And my technical background is an asset in engaging systems for both food production, sales and marketing or just process management. I am definitely looking forward to the next 10 years of this company.