This week I’m happy to introduce you to the most interesting developer in the world, Yitzchok Willroth aka @coderabbi. Yitzchok is the organizer of the ShorePHP User Group, an active participant in the PHPMentoring Initiative, and a conference speaker.
Can you tell us a little about yourself? How’d you go from a Rabbi to developer?
There’s a Yiddish expression “mentch tracht, un Gott lacht”, a man plans and G-d laughs…
Prior to becoming a developer, I spent over a decade in Yeshiva (traditional Talmudic academy, “rabbinical school”) pursuing Torah scholarship as a vocation. This is not uncommon in the Orthodox community; the vast majority of young men receive formal Talmudic training and a small minority of exceptional scholars receive a level of support from the community to continue their studies. This, of course, is where the “rabbi” in “coderabbi” originates (only a small minority of Orthodox rabbis are congregational rabbis).
The short answer to why I became a developer is that my wife, the primary breadwinner while I was learning in Yeshiva, was no longer able to continue in that role due to chronic illness, so our family needed to make a relatively sudden life change and software development was the nearest life preserver.
The long answer, on the other hand, begins quite some time ago…
A computer has been part of my life since my mother sent me to a local business school for a “College for Kids” summer program to learn BASIC on the TRS-80 Model One when I was eight. She followed that up with giving me an Apple //c for my 10th birthday and I’ve been avidly computing ever since. Though I dabbled in a few languages along the way out of curiosity, I never really had any formal training or extensive development experience, but having that history with computers forms part of the backdrop to my looking to software development when that life change became necessary.
Software development is actually my third career. I took a year off after my undergraduate work, thinking of later going on to graduate school in psychology, but found myself with a position which I felt that I couldn’t afford to leave working in marketing administration for a Fortune 100. After several years “swimming with the sharks” I woke up one day and decided that I wanted to direct my life toward something more meaningful, resigned in short order, moved to Israel and entered Yeshiva (I returned to America upon marriage).
It was the combination of a secular college education, background in the business world and computer aptitude that led to my being approached to mentor students participating in a fledgling Master of Science, Information Systems extension program being run for the local Orthodox community.
At the time, our run in Yeshiva had already stretched beyond all financial sanity on the premise that my education and work experience would provide for a gentle landing should we ever need to make a change, but I realized that while that may have been true in the beginning, ten years later the resume was looking a bit thin. I decided to join those I was mentoring in the program, the logic being that while I would likely never use it, the degree in a marketable field would be a good insurance policy.
The program, ostensibly for a business/technology degree, was packed with technical electives in an effort to provide the students more entry level options. Though there had been a “bridge program” to prepare the students for the rigor of Master level technical courses, Advanced Java and Enterprise Database in the first semester was like drinking out of the fire hose for most. The beauty of the extension programs which our community coordinates with various colleges and universities is that there is a considerable amount of flexibility compared to on-campus programs; once the challenges were recognized, the program was put on hold while solutions were sought. Part of the solution was that since I was the only one in the program who had both a collegiate and Yeshiva background, I would function as a teaching assistant, learning ahead of the instruction and conducting weekly summary lectures providing struggling students a second chance at absorbing the material.
The Talmud says that the greatest learning comes through teaching and it was perhaps never truer. I threw myself into preparation for the review lectures, preparing my own slides, exercises, code samples, review notes for the students, etc. I thoroughly enjoyed every minute of it and learned the material myself at a level that simply wouldn’t have been possible had I been participating in the program merely as a student. In addition to Advanced Java and Enterprise Database, I functioned in that capacity for courses in Database Programming (Oracle/PL-SQL), System Analysis & Design, Open Source Web Development, and Web Services & Middleware.
The Talmud also teaches that very often the cure is sent before the malady and that was also true in this situation. It was during this time period that my wife’s illness necessitated a change in our life’s direction. In an example of incredible providence, one of the students was interning at the time for a company which was desperately looking to add developers. He explained that I was perhaps the program’s only credible hire at that point, but that I wasn’t yet ready to work full-time as my wife was still recuperating from a recent surgery. The hiring manager responded, “would he be willing to work remotely?”. Less than a week later I had been contracted on a provisional basis and had my first work package as a remote developer. The position was a stretch, to put it mildly, but I had an understanding team lead, the company was quite forgiving, appreciative of the extra pair of hands during an “all hands on deck” period for them, and by working quite often sixty hours a week in order to credibly bill forty, I made it work.
Already working in a remote position, doors began to open to me which otherwise would have remained closed. Recognizing that opportunity, I began growing a freelance portfolio during that first contract and haven’t looked back since. Along the way, I’ve been fortunate enough to find myself in a number of other project roles which would typically have been reserved for a more senior developer. The timeliness of those opportunities and the support and guidance of some fantastic mentors has really helped me shortcut the traditional career arc for our industry.
You are big on mentoring. Can you share why you feel it’s so important?
That’s probably a cultural bias showing through to some extent. In the Orthodox community, not having a mentor is considered somewhat odd, perhaps even bordering on irresponsible, depending upon the area in question. Young men have mentors to assist them growing in their Torah studies, families have mentors that they can go to for guidance in child rearing, singles have mentors they consult while dating, young couples have mentors to consult in marriage, people entering the workforce have mentors, etc. It’s very much a part of our community’s value system.
Cultural bias notwithstanding, every journey is made easier with a guide, so why not avail yourself of a mentor when one is available? Think about it… have you ever been paid extra for exercising a certain skillset just because you learned it “all on your own”?! Even if it’s not a formal mentor/apprentice relationship, having a network of people that you can go to for advice or assistance when you run into challenges is invaluable; it’s something we should all be actively cultivating.
Having a mentor to lean on and to learn from is one way to short cut the learning process.
We work in a field where the domain knowledge required to function at a high level is simply too vast and too fast changing to be acquired via a Gladwellian “10,000 hours” approach. Having a mentor to lean on and to learn from is one way to short cut the learning process.
Young craftsmen learn from journeymen, doctors serve as interns for many years before practicing on their own, professional golfers even have swing coaches; why should our discipline be any different?
It all starts with the admission that none of us have all of the answers. That’s often the most difficult step, I think. In my experience, there are far more people in our community willing to invest time and energy into another’s success than one might think; they’re often just waiting for a prospective apprentice to take the initial step.
Can you tell us about your upcoming talk at php[world] in November?
It’s going to be… epic. Of course, I’m having a good day; ask me again tomorrow and I’ll tell you that it’s going to be a dumpster fire.
While public speaking is something that I’m quite comfortable with – presenting one’s work to their peers is a significant component of the Yeshiva methodology and I also teach on occasion – the talk is a bit more motivational than is my normal style (I tend toward instructional talks), so I’m a bit nervous that my performance won’t be “big” enough.
I think being selected for a conference talk can best be described as “awesome” in all of the word’s senses; it’s a task of some magnitude, it’s wonderful and exciting, and it should instill within one a certain trepidation – it’s a tremendous responsibility.
The talk is titled “Talmudic Maxims to Maximize Your Growth as a Software Developer”; it has an alternate title “Everything that I Really Needed to Know, I Learned in Rabbinical School”. It’s a beginning to intermediate level soft-skills talk in a keynote style; I utilize “the wisdom of the sages” in the form of aphorisms from the Talmud as a vehicle to share my own wisdom for young developers.
It’s my first conference talk (on my first submission, no less!) and I’m very much looking forward to it. I have tremendous gratitude to php[world] for my selection.
How did you first find Laravel?
I wasn’t involved with Laravel in the 3.x days; I think my first awareness of it was a Phil Sturgeon blogpost extolling its virtues in June of 2012. At that point, I was working primarily within the Symfony ecosystem, but I made a note of it for later. I followed the buzz around the 4.0 release on Twitter and decided that the time had come to take it out for a spin. There was a lot I liked about it; there were also things which I wasn’t so fond of.
I did realize immediately that it fit a niche in my arsenal, however, perfect for rapid prototyping of projects a bit too large to do in Silex easily. As I worked with it more frequently, and as each successive release seemed to leave behind more and more of the things which had bothered me initially, I found its useful range growing considerably. I still see it for me as fitting somewhere between Silex and Symfony depending upon the project, but it’s eaten into my use of both of those frameworks considerably. If it’s not the majority of my work right now, it’s certainly the plurality and it’s what I find myself working with the most for my own projects.
Can you share what your typical day is like?
My typical day now is very similar to what it was when I studied full time in Yeshiva; three prayer services, three work sessions and a nap.
The alarm goes off at six and I’m up, showered, dressed, coffee’d and settling in for an hour of Talmud study by 6:30. Fortunately the synagogue is only a few hundred feet from my front door, so almost no time is wasted by travel (I work remotely from a home office); the forty-five minute morning prayer service follows.
A small breakfast puts me in front of the keyboard for my first work session of the day by 8:30. That session lasts until 1:30 and is followed by the afternoon prayer service (it’s a short one – about fifteen minutes) and a light lunch. That much is the same six days a week and forms the backbone of my work week; as an independent developer, I work very hard to ensure that those six five-hour sessions each week are filled with billable hours. Usually at that point I’ll catch a nap. I picked up that habit during my years in Yeshiva (the traditional Yeshiva schedule has included an afternoon break to recuperate after an intensive morning session of study for at least 150 years) and I find that this biphasic sleep pattern suits me best.
Monday through Thursday, I’m typically back at it by 3:30 for a late afternoon work session which lasts two to three hours depending upon my workload. After is dinner, homework with the kids, bedtime, the evening prayer service (around twenty minutes) and another hour of Talmud study.
On Sundays this period is family time and Fridays it’s typically dedicated to helping my wife with Sabbath preparation. Sunday through Thursday, I end the day with another work session, though that one is normally reserved for my own pursuits; coding, blogging, research, communal work, whatever happens to have my interest at the time. This session usually lasts two to three hours, leaving me the six or so hours of sleep I need at night.
Saturday is the Sabbath for us (beginning Friday evening) and I totally disconnect; no computer, no social media, no phones, etc… There are additional prayer services, more time for study, festive meals, family time, leisure activity and more sleep than I get during the week; it’s a tremendous recharge for me spiritually, physically and emotionally and allows me to manage a fairly heavy schedule the rest of the week.
The last year or so I’ve been doing consulting as well as independent development, so when I’m at a client site, the whole schedule changes, of course, but those days are the exception rather than the rule.
Can you tell us about your local environment? What apps do you use every day?
My local environment is somewhat atypical, I‘d venture.
My operating system is Windows 8.1 which I have been quite happy with, though I do use Stardock Start8 to simulate the Windows 7 Start Menu (I use my mouse far too much).
I work exclusively in virtual machines managed by Vagrant and virtualized via VMWare Workstation.
As the picture shows, I’m a desktop minimalist. That’s actually something of a façade, as I keep most of my “in progress” files on the desktop, but rely on Stardock Fences to keep them organized into folders and hide them with a double click. I like the freedom of the desktop to move files around visually and regroup them easily, but really appreciate a spartan desktop as well, so Fences has been a treasured find.
My primary development environment is PHPStorm; when I’m working in Java (which I teach as part of a dev training program for the Orthodox community) I use NetBeans. I also keep NotePad++ around to quickly hack something out.
My terminal of choice is Cygwin with the zsh shell; I rely a great deal on plugins for the Oh My Zsh! framework to speed my terminal use as I didn’t “grow up” using the command line.
I’ve scripted a lot of repetitive tasks, text snippets, etc. using AutoHotKey which I think finally after years of use have begun to save me more time than they took to create.
I appreciate having a GUI for reviewing version control logs, so I use SmartGit/Hg. I’ve been using JetBrains’ 0xDBE database tool in beta, and will likely move to that permanently; I had been using EMS Manager previously, but appreciate having all of the various engines under a single install.
I’ve yet to find a task manager which perfectly complements my organizational style – I really need a light weight project manager, but haven’t found the right combination of features in that genre, either – but Todoist is hanging in there strong and is usually open on my desktop. Toggl is also usually open to log my time for clients.
I surf in Chrome (love those extensions!) and when working the frontend, develop with Firefox/FireBug.
As you can see (yes, I cleaned my desk for the picture!), I’m heavily reliant upon multiple monitors (I even travel with a USB powered LCD screen so that I can have two monitors when working from my laptop). The three 24” screens (16:10 FTW!) mounted horizontally are my primary workspace and run off of a single desktop pc. The laptop screen below them is touch enabled; I use that primarily as a “comms center” – Outlook, Twitter, HexChat for IRC, HipChat, Google Hangouts, Skype, etc. – which allows me to easily black it out when I need to focus. The large screen on top is also connected to the laptop; right now it’s primarily for media, but I’ve a thought to swap it out for a 4k so that I can use its real estate – having a dedicated monitor for browsing would be quite helpful, I think, as it would virtually eliminate the need to switch windows while working. Multiplicity allows me to navigate between all five screens across two machine using a single keyboard and mouse; I use TeamViewer to access a headless Mac Mini and Ubuntu box which complete the setup and to access everything from the road. With so many screens, I am heavily impacted by blue light; f.lux thankfully eliminates that issue.
The tablet in the picture is a Samsung Ativ Windows tablet that I use when I’m at conferences and client sites (love the pen!). Lately I’ve been using Chrome to view open tabs on the PC from the tablet and I really appreciate being able to grab it and leave my desk for a bit when I want to consume content.
Finally, I’m heavily reliant on a few apps as well. I send a tremendous amount of content (usually from Twitter) to Pocket for reading later. My backlog would probably take me several years if I were to never add another article, but I find that the personally curated store is great to search against when I’m researching a problem. After the demise of Google Reader, I migrated to Feedly and have found it to be the “Churchill’s Democracy” of feed readers, horrible, but better than all of the rest. I also use focus@will whenever I’m having difficulty with focus. It’s a curated music stream designed to occupy the distractive parts of your brain just enough to allow you to focus, but not so much that the music becomes the focus. Noise cancelling headphones, a white noise generator (to dampen sudden noises which noise cancellation technology doesn’t do well with), and a focus@will stream and I am almost instantly “in the zone”.
Do you have any hobbies outside the computer?
Very few, actually. My schedule doesn’t permit a lot of time for outside pursuits and leisure for leisure’s sake doesn’t hold the same value in the Orthodox community as it does for most Americans.
Being a developer and being a full-time Torah scholar are very similar in the sense that they are vocations which people also pursue as vacations; we unwind from our “day job” by going home and… doing more of the same. What free time that I do manage I try to devote toward continuing my Torah studies, but it’s much less than I would like. I’m active in a number of communal organizations and mentor both within the development and Orthodox communities.
I do enjoy reading – typically escapist mystery, fantasy or sci-fi genres – so I do a fair amount of that on the Sabbath when leisure time is more plentiful. I enjoy camping and fishing, though I’m not sure it can be called a hobby since I never have time to pursue it; now that my boys are old enough to enjoy it – eight and six – I hope to change that (that means I’ll likely have to work less, but I’ll take that trade!). I’ve been playing correspondence chess with the same partner for nearly a decade. I follow the Cubs through the box scores and my guilty pleasure in the winter is making time each Sunday to watch the Bears.
Conferences give me a nice break from routine, so I suppose that counts, too.
If the internet didn’t exist what do you think you would be doing as a full time job?
That’s a very difficult question as I didn’t expect to be working as a developer (or at all!) in the first place. It’s probably cheating to say that I would be still be pursuing Torah scholarship as a vocation since that would require additional altered realties beyond the nonexistence of the internet, but that would definitely be my first choice by a very wide margin (and still is, even though the internet exists).
I suppose that I might return to the business world, though that would be very much an option of last resort. I could also picture myself returning to school, pursuing the graduate work in psychology that I forwent early in my career (five degrees, what’s one more?!).
If everything else was precisely as it is now with the exception of the nonexistence of the internet, and I had to move on to something else immediately, I suppose I’d be teaching or working in a communal role; I already do both of those on a part-time basis, so going full-time would be a natural choice.