Changes

The more people I work with I develop more empathy. I wish I had learned this earlier: people are people. They all have the same issues, the same stories. Everyone struggles at different levels. Every is scared. Everyone is insecure, vulnerable – on a gradient of intensity. The more people I work with the more empathy I develop for nationalities, genders, opinions, etc.

As I pass thru the corridors of my workplace I look at people wondering if they care? If they wonder why I am looking at them? If they wonder the same about me? If they are better than me? If they are smarter than me? If they are happier than me? And the more people I meet, work, sit and talk with I realize we are more similar than different.

Then there is the imposter syndrome but I will leave that topic for a later exploration.

I think I have been conditioned in a certain way in last 30 years. Some of these conditionings are:

  • 10 girls to 25 boys in a class.
  • All boys school from 7th grade onwards.
  • Girls score grades and boys become street smart.
  • Girls get married and their husbands outshine in careers.
  • Physical beauty is real beauty
  • Girls maintain kitchen and boys geek out.
  • I am smart, others are not.
  • Love equals marriage.
  • Marriage equals children.
  • I am not smart as the white folks, non Pakistani folks, rich folks, other folks.
  • Boys only court girls.
  • Other people are always right.
  • There is a single right way of doing things and only other people know what that right way is.
  • Worry about how you chew, how you fold your shirts, how you speak, how you dress, how you comb your hair
  • Worry about making Queen Victoria happy in her grave.
  • Worry about what other people will say.
  • Worry about if everyone is happy.
  • Indians are evil
  • Westerners are immoral
  • Judgement passing is ok
  • Perfect is better than done
  • Elders are always right
  • People are born to fulfill their god-anointed role and for some people it is being dark skinned christians in Pakistan cleaning sewerage only

Just to mention a few. (It is a very complicated society with a lot of good and bad and everything in between).

This turns into conditioning because everyone around me is following the same curriculum. There is no diversity. Its only when you work, live, talk, sit with other humans that you realize there is no single truth, no single way. Queen Victoria’s etiquettes are not the end of the world and her passive aggressive clones are not the only people who deserve to be made happy all the time. That the world is much larger than my need to look like the cool boys in the next street or to become as cool as the rich uncle.

At this point in my life I think diversity and inclusion is very, very important – probably more than schooling and academics. This is, among other major changes, that I have been feeling lately.

Be a 10X programmer with Myles Bryne

Today I attended a talk at Dev Bootcamp by their ex-CTO Myles Bryne who is now teaching at Bradfield (preparing students and professionals for tech job interviews). A disclaimer: There is no such thing as a 10X programmer, neither does programming look like the animation on the right.

Personal plug: If you would like to get more reviews on tech talks in the Bay Area that I attend, subscribe to my blog. I usually do 1-2 posts a week.

 

Although the talk was geared more towards in-the-making and junior engineers, there was a lot of takeaway for experienced people as well. I’ll summarize a few takeaways and then discuss my biggest takeaway in detail.

  • Invest your time in “Mind vim”. Vim is a simple text editor that has made so many people so productive. Easier != Better. Invest your time in techniques to stretch the brain muscle.
  • Learn about evils of software state and side effects and avoid them whenever possible. Prefer function of methods. A simple google search on Function vs Method would result in a more nitty gritty answer and some go on a pedantic journey for explanation. Myle’s point was to learn the original soul of functions: i.e. to produce the same output for the given inputs predictably without side effects in any other part of the system. This makes it more manageable, readable and testable.
  • Learn about ‘reduce’ (also called inject in ruby) and treat them as primitive building blocks of programming thinking.
  • My first biggest take away was the introduction to Epigrams of Programming. What a gem of a reading. Thanks Myles!
  • Learn beyond just libraries and frameworks and dig deeper into the basics. Learn data structure primitives like trees and graphs. Learn their application and use that instead of regexing your way thru all the things (and treating everything as a string). Do leetcode and hackerRank problems.
  • The command line has been around and Lindy’s principle suggests that it will be around for as much again. Its a pretty good bet to learn it early on.
  • Learn the event loop. Its the staple of all programming models and will make life easier in any development environment or framework.

In the Q&A that followed after the talk, I asked Myles whether his talk goes against the very basis of Dev Bootcamp: To teach programming in a very small time skipping over a lot of really fundamental things which are only taught in an undergrad course in computer science? Here is what he said which I think is my biggest takeaway tonight:

Courses like Dev Bootcamp show you in 9-12 weeks whether you are made for this stuff or not. Undergrad CS would be much easier and relatable after some work in the software world, in fact – it should be mandatory for undergrads to do 2-3 years of real world industry programming before starting the degree.

Oh boy, what is he talking about?

As unintuitive as it sounds, Myles makes perfect sense to me. In my experience, the most ‘talented’ programmers were all those who had prior real world programming experience before joining the undergrad course. We knew what a process is and what happens when it gets killed so operating systems was more interesting to us. Other students always painfully asked me (or those who have had prior programming experience) how on earth was I able to enjoy those courses.

So its not the students fault that they find themselves in such a miserable situation. There really is a great deal of homework required by most people to understand really hard and deep concepts that are taught in theoretical computer sciences courses. A lot of people I know in the industry want to go back to college and learn more! A little priming before the university is absolutely critical.

The idea that students should invest time in going through Dev Bootcamp or similar activity (in a paid institute or on their own) really struck me and is my biggest take away today.

Until next time, code away!