Just over a year ago Dan Abramov wrote an excellent post about all the things he didn’t know and, along with many others, I thought it was incredible. Seeing such high profile person in our industry being so open about this stuff was incredibly refreshing. Unbeknownst to him I had submitted a couple of conference proposals a few months before that, where the aim was essentially the same: “I’m a developer, here are the things I don’t know.” I like that. I always liked hearing from more senior people that they were mere mortals, they were just regular people who know some things and don’t know other things. I’ve always tried to be very open about when I don’t know things, and as I became more senior and more influential in the company I felt it was important to show others that it’s fine. I tended to be the person who would interrupt a meeting (politely) to ask for clarification.
Only yesterday one of my friends reminded me of the time when we both happened to be going to an Elm meetup in London full of very experienced and very clever Functional Programming people and every now and then put my hand up and say “Sorry, I didn’t understand what you meant when you said xyz a second ago” and they would explain it differently and others got involved and it turned into a really great discussion about Elm and FP, everyone was so helpful. When we left my friend said to me, “How do you do that? Just ask questions like that?” I think I was a little taken aback at the time, I went there to learn something and if I hadn’t I wouldn’t have learnt anything.
The project was essentially a CRUD app, something that, 3 months ago, I almost would’ve argued was the bread and butter of what professional web developers should be able to do. I sort of learnt how to do it with Ruby on Rails when I was learning web development in a bootcamp. At the time I remember thinking I was almost unstoppable after learning it for a week (so some kudos to the people behind Rails). So here I was, a web developer of ~4 years, and I was lost!
I didn’t know what to do. I kind of knew I needed a database at some point but where to start?! I don’t really know about databases, apart from a couple of weeks wrangling Postgres at work and another week back in the bootcamp, I just don’t work with them (Fun sidenote: a production database at my last job is, to my knowledge, still called ”simon-test.” In fact even naming that database was probably one of those weeks. Seriously! I don’t know about databases!) I had all these feelings of inadequacy, I should know about databases, how am I “senior” and I don’t know this? I lightheartedly tweeted about this and over the course of about 3 hours and ~70 tweets Laurie Voss gave me an impromptu database crash course. This was great, I learnt so much and he probably won’t ever know how grateful I am for his help (unless he reads this). I would also urge everyone to go and read it all.
I came out of this knowing a little bit more but I couldn’t shake this nagging feeling of all of the other things I needed to do: Authentication, Performance, Accessibility, Progressive Enhancement. I take a lot of pride in my work, I hate cutting corners and I want to do a good job, I think every site should be secure, fast, accessible, and resilient. To me that’s the bare minimum. And because of all these things, I just found myself getting lost in this world of tech that I’ve often taken for granted. I’ve always had the help and support of ~200 other engineers in my company tackling some of those things. I was trying to run before I could walk; I was learning about Docker, about session tokens and JWTs, I was going to have this amazing serverless architecture that’ll cost me pennies just in case this thing explodes overnight and I end up with thousands or millions (or thousands of millions) of users. I was spending time trying to work out what the most optimal deployment strategy should be so I could just focus on the features!
Eventually it just hit me, “I can’t do this.” I was devastated. This sudden realisation that I can’t do the thing that I would expect was the bare minimum for a lot of developers. That’s not to mention that I had promised my sister; I felt awful!
Or at least almost perfect. Who knows, if I get back to it maybe I’ll name the database “simon-test.”