or, the ânon-technicalâ part.
"A web developer should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects." â Robert A. Heinlein
web programming is surprisingly involved. the word âinceptionâ comes to mind. there are so many layers that it can be overwhelming. someone once quipped that learning web development is akin to how, in the 18th century, the amount of scientific knowledge reached an inflection point such that it was more than any single person could ever hope to learn in their lifetime. uhh, so yeah, web development is like that. đ (hereâs a good supplementary read on web development is the top trade in terms of skill change.)
donât get discouraged. personally, iâve been doing this for 20+ years: i used to take printed-out W3C HMTL 4.01 specs with me for âlightâ summer readings, worked at YouTube/Google/Firefox, and i still feel like i donât know what iâm doing! due to the fast pace of innovation in this field, the feeling of imposter syndrome is strong in turn. so the advice is this: go easy on yourself and on your colleagues that you work with, both senior and junior.
you will fuck up at some point, many times in fact, and so will your coworkers. but the reassuring thing about web development is that you (probably) arenât writing mission-critical software controlling planes or something â no one will die when your website is down. just bring back up the server, apologize, write a post-mortem (even though no one died đ!) and move on. fail with grace, and fail scientifically â the scientific method has failure built-in to it after all, thatâs whatâs makes it so cool and powerful. take note of what youâve learned (i.e. write it down, fool, or youâll forget!) and try not to have it happen again.
on working with others
make peace with not knowing in general. you will be ignorant of so many things, mostly in the code that you write (i dare you to try **looking at code you wrote 5 years ago without cringing). but you will be especially ignorant in the relationships youâll have while working with others. no one teaches you this shit (well, iâd argue that nobody teaches you coding in university either and that itâs mostly a racket, and i canât believe i paid so much goddaâŠer, ahem, i digress). approach your work and your relationships with a humble mindset. check both your ego and your privilege at the door. as neil gaiman jokes, you donât even need to be that good at what you doâŠif at least a.) you deliver on time and b.) itâs a pleasure to work with you. kidding aside, thereâs a grain of truth in there. iâd argue that how you work with other people is far more important than your actual work.
this guide wonât teach you how to work with others â i donât think i can do it justice here. (the book Team Geek is a decent start). iâll leave you with one phrase though for you to mull over: âimplicit bias is the equivalent of the coding term âworks for meââ. in that vein, try to empathize with your colleagues and your interview candidates and your users, who will have vastly different life experiences than you. bring your opinions to the table but work even harder to ensure others have the space and time to voice theirs.
on ethics
(an excerpt from my interview with Indie Hackers)
see how you can take your code and give it principles. are you in it for the money? or are you in it to make the world a better place? why not try to combine the two if possible? (you won't do much good for the world if you can't put bread on your table.) working for Firefox was inherently principled mission â we wanted to spread open-source and defeat Microsoft's stranglehold on the internet. start with why you want to do something, and the âwhatâ and âhowâ will follow.
on how-to pass interviews
on opinions
this guide is opinionated in the sense that it tries to crystallize and consolidate the vast amount of knowledge required to build a web application. iâve taken the time to research and compare different technologies but that doesnât mean you shouldnât try out some things for yourself! (as opinions go though, iâm already sure iâm right and youâre wrong đ.) ok ok, look. these are opinions and not facts, so i will surely be wrong sometimes. furthermore, these opinions will change! this guide wouldn't have looked the same things 5 years ago and it won't be the same 5 years from now.
all that being said, thereâs the phrase âplus ça change, plus c'est la mĂȘme choseâ â iâd like to believe there are some timeless things in this guide that probably wonât change much over the years. be aware that this yearâs âhotnessâ will be replaced with something else next year and it will be tempting to just keep throwing out everything and switch. itâs prudent to wait just a little bit âtil the dust settles on shiny new things.