"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."
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âsa 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.
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 trylooking 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
deepen your understanding: donât just learn frameworks without digging underneath to understand how they work under the hood. classic example is people learning jQuery without learning how vanilla JavaScript works. these days, itâs React without knowing what React is actually doing underneath the hood. you should have a broad understanding of different web technologies but at least try to be strong in at least one area, whether itâs UI design, JavaScript, or computer science. algorithm knowledge is less important but you should still have a basic understanding.
self-learner: more than knowing any specific framework, language, or platform is your ability to take on areas that you might not know much about. the jobs you take probably will have different tech stacks each time, different company directions and challenges not to mention varying team dynamics that have you play a myriad of roles. try to be adaptable, be willing to learn, acknowledge that you donât know everything and thatâs ok. thereâs a sliiiim chance that your university actually taught what you needed to know â youâll probably need to learn on the job/learn by doing. showing that you want to learn and to grow is not a ding on your character â itâs a strength!
be opinionated: this goes with deepening understanding. youâll probably develop opinions as you dig into your tools and you realize the extent to which they do or do not drive you crazy. đÂ
bring a notebook: ask questions and take notes. you will look more composed and professional than 90% of other candidates.
principles: show me you give two shits about the world around you. myâbroâ radar is strong, show some heart. rockstars/ninjas/ballers need not apply.
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.
tl;dr
further reading