A presentation at JSConf EU 2018 in in Berlin, Germany by Ben Greenberg
From Rabbi To Coder Preparing For The Technical Interview Ben Greenberg (@rabbigreenberg) @rabbigreenberg reactiverabbi.io
Where It All Began @rabbigreenberg reactiverabbi.io
@rabbigreenberg reactiverabbi.io
@rabbigreenberg reactiverabbi.io
@rabbigreenberg reactiverabbi.io
@rabbigreenberg reactiverabbi.io
and then… @rabbigreenberg reactiverabbi.io
@rabbigreenberg reactiverabbi.io
@rabbigreenberg reactiverabbi.io
“… my mind wandered off to Ben Greenberg. @rabbigreenberg reactiverabbi.io
Had he really gone to rabbinical school…? @rabbigreenberg reactiverabbi.io
Maybe he hadn’t. @rabbigreenberg reactiverabbi.io
! @rabbigreenberg reactiverabbi.io
What I Was Actually Doing @rabbigreenberg reactiverabbi.io
@rabbigreenberg reactiverabbi.io
@rabbigreenberg reactiverabbi.io
Fast Forward 10 Years… @rabbigreenberg reactiverabbi.io
@rabbigreenberg reactiverabbi.io
Graphic Designers @rabbigreenberg reactiverabbi.io
Musicians @rabbigreenberg reactiverabbi.io
Artists @rabbigreenberg reactiverabbi.io
Teachers @rabbigreenberg reactiverabbi.io
Lawyers @rabbigreenberg reactiverabbi.io
Salespeople @rabbigreenberg reactiverabbi.io
and yes… @rabbigreenberg reactiverabbi.io
Rabbis @rabbigreenberg reactiverabbi.io
We Transitioned To Coding Because… @rabbigreenberg reactiverabbi.io
Ability to Create @rabbigreenberg reactiverabbi.io
Jobs @rabbigreenberg reactiverabbi.io
Excitement of Learning @rabbigreenberg reactiverabbi.io
Jobs @rabbigreenberg reactiverabbi.io
Ability to Make an Impact @rabbigreenberg reactiverabbi.io
Jobs @rabbigreenberg reactiverabbi.io
Remote Work Culture @rabbigreenberg reactiverabbi.io
Jobs @rabbigreenberg reactiverabbi.io
Did I mention… @rabbigreenberg reactiverabbi.io
Jobs? @rabbigreenberg reactiverabbi.io
First Comes The Learning @rabbigreenberg reactiverabbi.io
Then Comes The Resume @rabbigreenberg reactiverabbi.io
Then Comes The… @rabbigreenberg reactiverabbi.io
@rabbigreenberg reactiverabbi.io
! @rabbigreenberg reactiverabbi.io
How Do We Turn This @rabbigreenberg reactiverabbi.io
! @rabbigreenberg reactiverabbi.io
To This @rabbigreenberg reactiverabbi.io
! @rabbigreenberg reactiverabbi.io
What We’re Going To Do:
Principle #1: Know Your Strengths @rabbigreenberg reactiverabbi.io
Which One Makes More Sense To You? @rabbigreenberg reactiverabbi.io
@rabbigreenberg reactiverabbi.io
or @rabbigreenberg reactiverabbi.io
the negation of a disjunction is the conjunction of the negations; and the negation of a conjunction is the disjunction of the negations; (source: Wikipedia on De Morgan’s Laws) @rabbigreenberg reactiverabbi.io
(It’s okay, if neither made sense) @rabbigreenberg reactiverabbi.io
Technically Minded People: Limit # of Words @rabbigreenberg reactiverabbi.io
Liberal Arts People: How can I make one word into a sentence? How can I make one sentence into a paragraph? How can I make one paragraph into an essay? How can I make one essay into a dissertation? @rabbigreenberg reactiverabbi.io
Principle #2: Every Building Starts With The First Brick ! @rabbigreenberg reactiverabbi.io
Big ideas can be broken down to a collection of smaller ideas Smaller ideas can be broken down to even smaller collection of ideas and those ideas can be broken down to an even smaller collection of ideas… @rabbigreenberg reactiverabbi.io
Principle #3: Interviewing Is Iterative ! @rabbigreenberg reactiverabbi.io
The wisest of people said, “A righteous person falls seven times, but rises again.” …the knowledgeable are aware that the essence of the righteous person’s rising again is because of their seven falls — Rabbi Yitzhak Hutner @rabbigreenberg reactiverabbi.io
@rabbigreenberg reactiverabbi.io
An Example: Binary Search @rabbigreenberg reactiverabbi.io
? @rabbigreenberg reactiverabbi.io
Applying Principle #1: Know Your Strengths @rabbigreenberg reactiverabbi.io
Binary Search “one or the other” search a method of searching in one or other place. What is this similar to? @rabbigreenberg reactiverabbi.io
@rabbigreenberg reactiverabbi.io
Applying Principle #2: One Brick At A Time @rabbigreenberg reactiverabbi.io
Simple English: “# ! An ordered list This list is split into two I have a desired value In which section is my desired value closer to? ! Look through that section @rabbigreenberg reactiverabbi.io
Is is there? @rabbigreenberg reactiverabbi.io
Yes? @rabbigreenberg reactiverabbi.io
@rabbigreenberg reactiverabbi.io
No? @rabbigreenberg reactiverabbi.io
At least we can eliminate a range of values that we know it’s not in Let’s Make Two New Sections… @rabbigreenberg reactiverabbi.io
! until… @rabbigreenberg reactiverabbi.io
We Found It! @rabbigreenberg reactiverabbi.io
@rabbigreenberg reactiverabbi.io
Applying Principle #3: Interviewing Is Iterative @rabbigreenberg reactiverabbi.io
Binary Search Take One: @rabbigreenberg reactiverabbi.io
Binary Search Take One: function binarySearch(items, value) { } @rabbigreenberg reactiverabbi.io
Binary Search Take One: function binarySearch(items, value) { let first = 0, last = items.length - 1, middle = Math.floor((last + first)/2); } @rabbigreenberg reactiverabbi.io
Binary Search Take One: function binarySearch(items, value) { let first = 0, last = items.length - 1, middle = Math.floor((last + first)/2); while(items[middle] != value && first < last) { if (value < items[middle]) { last = middle - 1; } else if (value > items[middle]) { first = middle + 1; } middle = Math.floor((last + first)/2); } return (items[middle] != value) ? -1 : middle; } @rabbigreenberg reactiverabbi.io
Can We Make That Better? @rabbigreenberg reactiverabbi.io
Yes We Can! @rabbigreenberg reactiverabbi.io
Binary Search Take Two: const binarySearch = (items, value) => { let first = 0, last = items.length - 1, middle = ((last + first)/2) | 0; if (value < items[first] || value > items[last]) return -1 } while(items[middle] != value && first < last) { value < items[middle] ? last = middle - 1 : first = middle + 1 middle = ((last + first)/2) | 0; } return (items[middle] != value) ? -1 : middle; @rabbigreenberg reactiverabbi.io
Can We Make That Better? @rabbigreenberg reactiverabbi.io
Yes We Can! but we’ll stop here for the sake of time, but we could keep on going because… @rabbigreenberg reactiverabbi.io
Interviewing @rabbigreenberg reactiverabbi.io
Coding @rabbigreenberg reactiverabbi.io
Learning @rabbigreenberg reactiverabbi.io
Growing @rabbigreenberg reactiverabbi.io
Living @rabbigreenberg reactiverabbi.io
Iterative is (Principle #3: @rabbigreenberg ) reactiverabbi.io
To Recap @rabbigreenberg reactiverabbi.io
Three Principles @rabbigreenberg reactiverabbi.io
! Know What Your @rabbigreenberg reactiverabbi.io Is
! Take The ! Apart One @rabbigreenberg At a Time reactiverabbi.io
! ♻ Rinse ➡ Wash ➡ Repeat @rabbigreenberg reactiverabbi.io
ְוֹלא,מר ֹ לְג ִ כה ָ לא ָ ּמ ְ ה ַ ָלי ֶ ע ָ ֹלא ּמָּנה ֶ מ ִ טל ֵ ּב ָ ל ִ בן חֹוִרין ֶ ּתה ָ א ַ It is not your responsibility to finish the work, but neither are you free to desist from it. — Ethics of the Sages 2:16 200 BCE - 200 CE @rabbigreenberg reactiverabbi.io
THANK YOU! Please be in touch: @rabbigreenberg || reactiverabbi.io @rabbigreenberg reactiverabbi.io
After ten years serving as a rabbi throughout the United States including as the campus rabbi of Harvard University, I transitioned to being a developer. How does a rabbi prepare for the technical interview? What are the skills needed to succeed? This presentation is for anyone who has entered software development from non-traditional backgrounds (i.e. music, literature, education, sports, journalism and more). Come to be inspired and to grow in your confidence and skillset.