Distributed Mentoring
When most people think about mentoring, they picture someone more experienced investing time in a close relationship with someone less experienced. Maybe you thought about someone who’d done that for you - a co-worker, parent, or teacher. In my web development career, I’ve had a different kind of mentoring experience than that standard one. Instead of having an experienced developer invest lots of time in me and my career, I’ve benefited from little bits of help from lots of people over the years. I like to call this “distributed” mentorship: remote learning from people around the world.
Getting Started #
About 10 years ago, I got started in web development as a hobby. I was in grad school (studying an entirely unrelated field) and managed to have “free time” one semester. My dad had built a few sites back in the 90s and I liked computers so I thought it would be fun to learn how to build a site. My roommate was studying computer science and I asked him how to build a site. He was working on software development, so he just laughed and showed me w3schools. (Yeah, I know NOW not to go there, but hey, I learned a few things from it back then!) I got more direction from a friend David (who was a sysadmin). He wasn’t an “expert” at front-end development, but he was more familiar with it. He gave me a piece of fantastic advice: “most websites are built with tables, but CSS is the new thing that cutting-edge sites are using, so start there and forget tables.”
I remember the new things back then: learning HTML, figuring out that PHP let me have variables and logic, installing IIS & then Apache on my XP laptop, exploring CSS, being mystified that Chrome and Firefox had different default margins on text elements. Most of those ups & downs were part of the standard learning curve for front-end devs back then. Through this time, I didn’t really have a “mentor” like we usually think of them. David and I had plenty more conversations - he ended up being my hosting service for years and I learned a lot from him. I remember sitting across the table from him at a bagel place while he drew DNS / hosting diagrams on a napkin. I still really enjoy digging into server admin stuff so I’m grateful for what I learned from him.
Within a year or so of getting experienced with front-end dev, I realized people would probably pay me money for this “hobby.” So I started telling friends what I could do and built a few small paid sites on the side.
The Weird Lull #
After I graduated I got a job maintaining a website for a small non-profit (and running activities for their events every month and a host of other things: it was very much an “everyone helps with everything” kind of organization). I was given a privately developed CMS with no documentation and little to no positive help from the guy who’d built it. I learned a lot that year, but it was more visual design from the organization’s graphic design team - I was pretty isolated as the only “web person.” A year later, I moved on having learned very little: a bit of JavaScript and “never try to edit an undocumented code base.”
A Real Job, Almost #
After that, I moved back to my college town for more grad school (nope, still not studying dev/tech ¯\_(ツ)_/¯
) and got a job as a graduate assistant running a ZenCart site. I’d been getting more familiar with PHP by using WordPress so that much of the code wasn’t too difficult. What was more challenging was the dozen or so custom MySQL queries I used to handle reporting every quarter. The site was a small MP3 store, so we reported sales to the original artists and paid their licensing fees to the license holders on any tracks they covered from another artist. The worst queries took up more than a page in Word (yep, that’s where everything was stored when I arrived). Since then, I’ve forgotten most of that, but that was also a great year for me - I sold my first few Wordpress sites to some clients and settled solidly on WP as a starting point for client work. There were some fun customizations: mp3 storage & playback (before MediaElement.JS was part of WP) and PayPal integration (price & SKU custom fields, no plugins), but nothing that I’d consider “advanced” today.
During this time, I didn’t have a “mentor” per se. I learned a lot from the developer who handed off that ZenCart installation to me - he was kind enough to stay close for support questions for a few months. By now, though, I was relying on a growing network of distributed mentors: devs I followed on Twitter and trustworthy publisher. I’d become an avid follower of CSS-Tricks, A List Apart, and Smashing Mag. I didn’t personally meet people like Chris Coyier, Eric Meyer, Jeffrey Zeldman, Andrew Clarke, or Vitaly Freidman, but I read their posts & books and “got mentored” by them from a distance.
During this time I started to realize that not every mentorship is an in-person relationship over a long period of time. There are times I’ve looked back and wondered, “who was my mentor during this phase?” and come up blank - until I stop to remember how much I owe to the developers who write and publish and share their knowledge across the web.
A Real Job, For Real #
A few more years of freelance work went by while I finished up that degree. Then after graduating again, I got hired at my first real developer job. Not “a small part of my workload” development or “part-time for a college,” but real-live, full-time, development-only work.
By this time, Ethan Marcotte and his magical media queries had changed my CSS world, and shortly into this job, I swallowed my pride (“but my CSS is good enough already!”) and learned Sass. I got pretty proficient at jQuery and was picking up bits of the plain JS that lived beneath it. I was cranking out custom WordPress themes every month or so and loving it. I was the only developer there (it was a small agency), so there wasn’t much “in-person” mentoring. However that year I got to attend CSSDevConf (my first dev conference!) and came away amazed. I got to meet some of the devs who had been my “publishing mentors” to that point (hey, Chris & Estelle!) and I met several more devs whose work I started following & learning from immediately (lookin’ at you, Rachel, Micah, & Winston). I discovered CSS animation that weekend and immediately started adding pizzazz to the sites I was working on.
Conference mentors are another useful kind of distributed mentor too. I didn’t know them at all before then, but Micah Godbolt and Winston Hearn took time to answer my questions about their talks. I got to sit by Chris Coyier, Tab Atkins, and Estelle Weyl one meal, and chat with Jonathan Snook over appetizers one evening. These brief interactions may not seem like very much on their own, but for me, they were really powerful. To realize that these experts were normal people who provide helpful advice and have friendly conversations with a newbie developer was tremendously encouraging.
A Big Job #
I’ve talked to a lot of developers whose careers have started similarly: learn/freelance, take a real job, then learn so much in your first year that your next job is a massive jump up. That’s what happened. I got an offer to join a team of a dozen developers at a larger agency. This was my first experience working with a significant in-person team. It was exciting to see how our individual strengths and weaknesses quickly moved us into collaborative mentorships. I inherited several bloated CSS-framework-based sites and helped the team move forward into lighter, more customizable Sass workflows. I learned the basics of Angular and Ember from devs with more JS experience than I had.
Staying Home #
A year later, I took a job with a remote company. The challenges of learning remote work were balanced by a lot of positives: the team had an established workflow, people were already communicating well in Slack & the PM app, and the dev team was internal (so we worked with our own marketing and design departments, instead of reporting to external clients). The same collaborative pattern was at work there too: we had a dev who was our PHP expert, one who was the JS expert, one who knew the company history and business model well, and a CSS/Sass expert (me). We learned from each other well. Again, it didn’t feel like “traditional” mentorship. Depending on the topic and context, each of us played the role of mentor or mentee at one time or another. And again, since the whole team was remote, this was another form of distributed mentorship. It was a fantastic team to be part of for 2 years.
Flying Solo (for now) #
This spring, I shifted positions again: it took a few months for things to settle, but I’m a contractor/consultant right now. I’ve been working as a team lead with a company that manages a flexible crew of contractors for web/software development and that’s been exciting. Having great onboarding/training conversations, constructive code reviews, and teaching moments with junior and intermediate developers has been enjoyable and fulfilling. I’m currently working with a friend to build a company that incorporates both top-notch web app development and training / apprenticeship opportunities for new devs.
Take-Aways #
I’ve benefited a lot from “distributed mentoring.” Twitter people, online publishers, conference speakers & friends, co-workers and peers - they’ve all played important roles in my career, even though it hasn’t looked like a stereotypical mentorship.
If you’re starting your journey as a developer, start building a good network of people whose tweets/posts/blogs/work you can follow online and learn from remotely. Also, it can be a tough investment to swing, but attending conferences is a huge help, especially in your first couple years of “full-time” development work.
If you’ve gotten enough experience to start specializing in a particular language, stack, or framework, use that expertise to grow collaboratively with others. Don’t get stuck behind fear that you’re “not expert enough yet” - if you know just a couple things that a friend or peer doesn’t, you can help them along. And of course, stay friends with people who know at least a little more than you about some topics so they can help you along.