Buy me a hot chocolate! | About Me
Ahh, Dekard Cain you old, tortured soul.
I was talking to a friend the other day who is in his senior year of his undergraduate degree studying business and technology. He’s passionate about tech and due to my influence wants to work as a data engineer.
He and I have been meeting most every sunday for about an hour to 90-minutes (if I drone on too long) talking about his portfolio projects, teaching him git, python, SQL, flask, etc., so that he can take his passion, Basketball and stats around it, and hopefully create something worthy of helping him standout from the crowd and get hired eveventually.
We also talk about how to network, how to setup your resume for success, etc. Basically I am trying to give him the leg up I wish I had. I am trying to give him all the chances I wish I had. He still, of course, has to do the work but I think – I hope – with my help he can get on his feet and go on to do amazing things.
Check out a recent project of his here HooperDNA – which is a a way to compare NCAA basketball stars to possible NBA counterparts. And his linkedin here.
Anyways, this post is not about James, though I should do one, he’s made a ton of progress and I’ve learned a lot (probably more than I have taught him along the way).
I trade my time for money. Simple as that.
Of course I (most of the time) love what I do. But I do it to afford myself and my family the ability to then trade this earned income for things like experiences, time (buying the time of others so that I might take the time bought to spend it with my family i.e going out to eat or ordering in vs spending that time cooking), things, etc.
So if the goal is to maximize what I can earn in the 8-hours a day that I work, looking back on the decisions I have made, I think I made a mistake.
Everything I was learning in CS101 was making sense. We were in a class about C++ … but it might as well have been C or VB at that time because nothing we did involved anything really advanced. We’d not yet gotten to pointers or classes or any advanced OOP things like multiple inheritance or the like. And to that point I was doing great.
And then everything changed with the final. The final was to code up a Sodoku solver. Basically every solution more or less involved pointers to some extent. I think we even had a reference solution that was more or less a brute force one (I think our professor took pity on us) but to use it properly and not blow up the memory of the assignment-checking-service we had to use pointers and reference variables and dereference them and that’s when things broke down…
So I never really cracked it. I think I failed or barely passed the whole thing and my A went to a C. I got spooked. I switched to another major and then ultimatley to Economics/Finance and used my talent for scripting/programming (it was mostly scripting if I am honest) to find success there.
How can a person who has seen you grow up your whole life not know you and your talents and your hobbies and what you’re good at or passionate about? I don’t think it’s possible unless they try not to. My mother spent the time. She knew me. So when she heard I had switched my major out of Computer Science she was sad. Of course she supported my decision but she said it made no sense.
Here was the kid who took apart his fathers computer 486 and put it back together as a boy before he got home; who spent many a summer inside tinkering with Linux, hardware, breaking things and fixing them, compiling stuff and tweaking it (hi Gentoo Linux) while other kids went out to play; that taught himself some HTML and Javascript (enough to be dangerous) and was now going to major in Economics with hopes of some fancy gig in finance or banking. This was not the boy she knew.
I think deep down I knew it, too. I mean, don’t get me wrong, I was fascinated by my economics studies. It’s such a vast field with many influences and things that it influences. It’s as much a science as it is an art given that it deals so deeply with people. Ultimatley I think it is flawed in a very fundamental way: the basis of (again I only went as far as undergraduate economics) of economics is that people are rational and they’re not. Not 100% so. I never got to the point where I could model the irrationality of people but … anyway it’s there.
But the happy ending is that I graduated with my degree in economics and got a job as a junior database administrator for an insurance servicing company in my home town. The rest is history.
When I first really grokked SQL it immediately clicked and I was hooked. Declarative. Almost English like in it’s statements. It just made sense.
Find the total orders by region…
SELECT r.region, sum(o.order_amount) as order_total_by_region
FROM fct.orders o
LEFT JOIN dim.regions r
ON o.region_id = r.id
GROUP BY 1
Simple right?
And then there was database schema design and I found that 3rd-normal form just fit with everything I learned about the perfect paragraph in English when writing a paper for example. There exists a topic sentence. Each sentence that follows it somehow ties back to that topic sentence. Any deviations would form a new paragraph with it’s own aim and topic sentence.
At least to me this describes the 3rd normal form – which is a way to organize database schemas for things like ordering and ticketing and inventory systems in a way that is efficient and easy to maintain and query.
Anyways, it clicked. And so I was off to the races.
Cliche as it is I think most everyone can say the same. Maybe your first role you loved it and you quickly rose to the top of your field. Maybe you hated it and learned that you’d like to pivot to something else. It was in my first role that I learned all the ancillary things about how to be a good employee, the value of being dependable, taking pride in doing a good job, learning, being able to fail and make mistakes and learn from them, and many more lessons.
BUT. I wonder had I stuck it out in my CS courses and taken that C into CS102 and put in the work where would I be?
Don’t get me wrong. I really do enjoy the world of data. I find a lot of joy in organizing and analyzing and finding insights in the data. I can move from that of an Analyst, to a DBA/Data Architect, to a pipeline building Data Engineer and from task-to-task or day-to-day or as the job needs. I enjoy the whole stack.
BUT. And while I do use some of my self-taught skills in Python to write services to consume data from something or to place it somewhere I wonder if, with a CS background, if I could be making far more, doing maybe more interesting things, more general things, at any of the big name tech firms today. Of course the whole trajectory of my lifew would likely be different but I am curious. I am curious if I could talk to the parallel universe me who stuck with the class even when he got the C. That sort of A/B experiment would be interesting for me to see the results thereof.
My point was to James (and in sharing this with him I realized it myself) that I think he should – if he wanted to, and only he could make this choice for himself – he should try to make it as a junior software engineer first to give himself the best chance at the highest income, the most exposure to all things in the space, and the best flexibility for what to do next. Starting out general and then focusing / specializing is not something I did.
I mean it’s what they do at Google. One applies as a generic software engineer (I know there are specialized roles and jobs of course) and then depending on the team one joins the gaps are filled in and one might end up an expert in distributed systems, databases, ads and marketplaces, etc.
With enough time, effort, hard-work, and a bit of smarts and The Cracking The Coding Interview book (no affiliate link btw) one can get into a Google or a Microsoft or an Amazon. The book, of course, does not prepare you for day two but it gets you through the door and hopefully during the time of preparing the aspiring programmer has gained some skills to be productive enough to stay.
So this is what I would say to seniors at university thinking they want to break into data engineering who also want to maximize their earnings: don’t. Try your hand at becoming the best software engineer you can be, gain the biggest survey of the space, find out what you love or are good at, and then if it is data be it as an analyst, engineer, data scientist, whatever, then focus on that.
Copyright Alex Narayan - 2024