I am currently volunteering as an instructor in a course on Data & SQL by Code First Girls. Read more about it here. Yesterday has been my first round as a teacher for a whole module. Here are some reflections on it and what I learned from it.
TLDR: Don’t put too much content into one session…time catches up sooner as you think. Also allow some extra time for tech problems and Q&A. Be sure to have a dry run before to avoid surprises.
Disclaimer: I tend to be my hardest critic. Maybe one motive to do that is that if you already are humble and admit your faults or areas you don’t excel in yet then nobody else external will come along and will reveal something even more challenging. Another reason is that I often tend do be a perfectionist…I would like to do things not just OK but would like to excel and deliver an outstanding presentation.
However I did learn from a Personal Development Programme that often the way you see yourself is not reflected by the way you are seen by others. If you face some tech problems for example you might be screaming inside of you and think that it’s totally bad. However other people might not see that as grave as you do and will probably even like you more for dealing with in a human way.
For you to have a context what I am writing about I’ll share briefly what the session should cover. It was a 2 hour training session with the goal to deliver knowledge about table modelling (normalization and so on) as well as vital commands in SQL associated with that like:
- Creating primary keys
- Creating foreign keys
- Simple WHERE conditions
The audience are women who mostly didn’t have any exposure to SQL or data analysis before. The session before we just learned how to write SELECT … FROM Table and set the context what a database is all about.
Less is more
I observed that I really got excited about the topic. I had dreams and tinkering about how to put the importance of data modeling across allowing students to understand why data in a relational database typically is scattered all over the place and what the benefits are. As a BI Engineer I wanted to bring in the difference between OLTP and OLAP as well. I even thought about touching on XML and JSON and why these are great but typically not well suited to store in a database (violates first normal form anway as far as I recall from studying). You get the feeling: I soon realized that I am probably overdoing things but don’t managed to restrain myself ;-). Adding tech problems to the mix (next paragraph) I think I actually didn’t deliver a great performance on the part of modeling. I’ll rethink which way would be best to deliver the message I planned to deliver.
Leave some buffer time for issues with tech and family matters
At the session I was struck with tech problems. I had three screens open: One from work being able to access the chat and admit people to the session (thankfully a colleague assisted me with that), another one on a big 4K screen plugged into my personal laptop and the screen of the personal laptop itself. As I am not used to roll like this of course I got trapped in technical issues like the powerpoint presentation opened on the wrong screen, my computer suddenly froze and needed some thinking time probably due to MS Teams whatever and so on.
On one hand this makes you appear human that presentations not always go well and alas every speaker can tell stories about it. On the other hand this of course rises your stress level and leaves you dealing with tech rather than focusing on people and being able to look into the camera the whole time.
The bonus on that were family issues: This night my daughter was already too tired and it was difficult to get her to bed and she started crying because of tiny challenges. For me it was crucial to hold her in my arms in that situation and give her reassurance that everything is OK and daddy loves her. However being already short on time for preparation of the session this led to me getting to the session right at the start not like 10 minutes early as I originally planned.
The session runs from 7.30 pm to 9.30 pm. I am actually used to start the day early and go to bed early as well (most days before 9 pm). So that put some extra pressure on it. My wife gave me the following feedback repeatedly “Oh my gosh…why are you speaking so loud? Could you please be more silent that I can go to sleep.” Well I am one of these people who speak louder and louder as they get excited and being in a choir for a long time that’s totally no effort on my voice. Actually we are living in a house where in theory there should be enough space to separate from each other if needed…in practice I will still need to experiment and find the optimal solution :-).
Take time for tech setup
Well this is pretty much like the paragraph before. I just realized I started presenting from a 4K monitor with 12point font the moment my colleague told me “Martin could you please adjust the font setting…this is way too small”. Be sure to prepare this before hand…it’s actually quite annoying I had this issue as I should have known and already did quite a fair amount on customizing for my first community presentation in 2019. However getting somewhere in a rush you get sloppy and forget these things and valuable training minutes are lost for tech setup.
Don’t take things for granted
This is my last lessons learned for today. As a data professional and BI Engineer I work with SQL pretty much every day. So I don’t really think much about the commands issued. However my work is with SQL Server and TSQL respectively…the course is with MySQL and MySQL Workbench. So I stumbled across some issues in the course which made me look human but not professional :-).
- I could not run an update statement because MySQLWorkbench has something called safe update mode. Basically that’s a good thing preventing you from potentially dangerous updates like updating without a where filter. In my case however I had a where condition based on a column….but interestingly you should also filter on a primary key column to avoid that error without turning the feature off.
- I tried to name my Constraints with the syntax
ADD CONSTRAINT geronimo PRIMARY KEY ....but somehow the name was not set (at least it was not shown in error messages). This is still a bit confusing to me and I have to do some research regarding it.
- I tried to run an UPDATE Statement with a from clause like
SET id= 1
FROM employees e
WHERE e.name = 'Martin';
which I do all the time in SQL Server. It typically is convenient to convert a SELECT statement into an update like that and of course you could do more complex updates based on joins. But most interestingly Mysql handles that completely differently not using a
FROMkeyword but rather have the join right after the keyword
UPDATE. See this page for more info.
- I discovered that my MySQL database somehow is set to case-sensitive regarding table and column names which proved to be a real pain in the neck. Probably it’s not that easy like just pulling a docker image avoiding local installation and I have to fiddle a bit with the mysql settings :-).
- At the end I obviously got to tired throwing in the
TRUNCATEcommand rather than
DELETEbut used it on a table which is referenced by a foreign key. So boom error message…not really looking professional there but that’s life. I should have known better obviously.
Last words (for now)
For me it helped to write down these things to think about them. Optimally you, dear reader can take some learnings from it as well and avoid stumbling in the same traps I did yesterday.