Week 2 of biglawrefuge, what have we learned?

Week 2 Stats

Two weeks have now passed since the launch of biglawrefuge.  It’s been really hectic, with trying to market the website through various channels.  Here are a few of the methods I’ve tried, along with how effective they’ve been:

1.  Emailing law journals/tabloids (e.g. Abovethelaw)/legal blogs

Effectiveness: Low

Description: I’ve tried emailing various online content providers like Abovethelaw, the National Law Journal, the WSJ Law Blog, and other legal bloggers.  So far, I’ve heard a “we’ll get back to you if we’re interested” from ATL, nothing from the NLJ or WSJ, and only one response from a legal blogger.  Not sure how to really grab their attention.  Maybe biglawrefuge needs to have more traffic before it’s worth of national attention.

2.  Direct referrals (e.g. posting in http://www.top-law-schools.com or http://www.jdunderground.com)

Effectiveness: High

Description: I started off by announcing biglawrefuge to TLS.  So far the community has been awesome.  Super supportive (mostly) and I’ve gotten both great feedback and really positive responses.  In many ways, that community represents the community that I’m directly marketing to.  The nature of biglaw hiring is that biglaw firms take disproportionately from the top law schools and the biggest confluence of students from that background gather on TLS.  Jdunderground is a MUCH smaller community.  Using google analytics as a guide, TLS drives 100x more traffic.

3. Social Networking (e.g. reddit posts, facebook announcements, tweets)

Effectiveness: Medium

Description: Every time I have something worth sharing, I’ve posted it to http://www.reddit.com/r/lawschool.  So far, I’ve made three self-referencing posts, which some users have not been too happy about.  Not sure why it’s that big of a deal, they’re not duplicative in any sense (except maybe by having the articles hosted on the same webpage).  In any case, the reddit community is large and the fact that everyone sees what’s on the frontpage makes it in many ways more effective than TLS.  The last two times I’ve posted an article, my average views has tripled or quadrupled.  Facebook on the other hand has been disappointing.  Most likely my friends are tired of hearing about biglawrefuge, so there aren’t many clicks driven by that.  Twitter has been useless, but that’s mainly because I have so few followers.

4.  Direct emailing (e.g. weekly emailing of users)

Effectiveness: Medium

Description: Each week so far, I’ve sent an email to all the users who are signed up for biglawrefuge. And as I send the email, I watch google analytics to see how many users get on the site.  It definitely brings people back.  I’ve heard from others that email campaigns are the way to go, but it seems like a fundamental problem with emailing users is getting the users first.  I understand that it’s a way to keep the momentum going, but obviously it doesn’t help to get the ball rolling.

Surprises, so far …. 

1. Content rules

Last week (or was it the first week? I don’t remember), I added the ability to add articles to biglawrefuge.  So far, I’ve kept this functionality locked down, but just added the ability for select users to contribute articles, subject to admin approval.  What’s been extremely surprising is that the few articles I’ve written have been incredibly popular:

http://www.biglawrefuge.com/articles/2-a-day-in-the-life-of-a-biglaw-attorney

http://www.biglawrefuge.com/articles/3-how-i-left-biglaw-part-i

When I post them to reddit or TLS, it ends up generating an enormous (for me) amount of traffic.  I know the articles are popular.  There’s the occasional bad comment here and there, but by and large people have all stated that they really like the content.  I think part of the reason for this reaction is my approach to writing the articles.  I’ve been 100% transparent when writing them, not hiding the ball, even at risk of my own reputation being tarnished.  That doesn’t matter.  I want to bring greater transparency to the legal profession, so what better way to do so than to lead by example?

2. Law students are shy

Despite having close to 600 users now, probably 3-400 of whom are going through OCI, there have only been 159 job postings.  I don’t know why law students are so secretive about this information.  I guarantee that extremely few people care one way or another.  So despite the thousands of views to the job postings and law firm reviews, law students are reluctant to contribute themselves.  I may eventually introduce some gating in the future to encourage more contribution, but won’t do that at first.  Cmon people, contribute!  I built this website for you.

3. Marketing is hard, as usual

It’s a constant battle to market the website.  I feel like my welcome is already wearing thin at TLS and reddit/r/lawschool.  Not sure what other channels there are besides direct contacting of various law schools career services offices.  And that’s an uncertainty, because I don’t know what the reception will be like.  The days I publish articles, traffic jumps sharply, but of course, it’s just a temporary spike.  Quickly after, the traffic mostly goes back to normal.  Hopefully, by the time I run out of content, the community will mostly be self-supported.

4.  Be honest with your community, and they’ll treat you well

I’ve been completely honest to the communities I’ve posted to.  I don’t plan on hiding the ball from them or suddenly changing what I’m doing.  I’ve been honest about the struggles of running biglawrefuge myself, with dealing with unfriendly folks, and with getting users to contribute.  Thank you ALL for those who have reached out to me to encourage me in the process.  It means a ton and it motivates me to continue writing and bettering biglawrefuge for you guys.

Advertisement

How I left biglaw (Part III)

… Dejected, I made the long trek back to my office, where I closed my door and contemplated my future as a lawyer.  I looked at the spreadsheet that I had made, counting down the months until I my net worth was $0.  Still over two years away.  I knew I wouldn’t make it.  I abandoned my plan to stay in law, and began to draft a new resume…

This is the final part of my story, and follows the trek from abandoning my plan to go in house to the decision to leave the law entirely.  On above the law, you often come across stories of biglaw associates who burn out and leave the law to do something else entirely.  For example, there’s the lego guy and the cupcake girl.  If you’ve been reading along, you’ll know my story isn’t as glamorous as the stories of those attorneys.  It’s just an ordinary tale of one biglaw associate who in desperation, decided to leave.

Part II of this post: How I left biglaw (Part II)

Part I of this post: How I left biglaw (Part I)

———

It turns out that no one outside the legal community cares that you work for a V5 law firm.  Lawyers, however, and law students in particular (myself included), are obsessed with prestige: “Where do you work?”, “How much were your bonuses?”, “Where’d you go to law school?”, “Where’d you clerk?”, “What’s your class rank?”  While in law school, I adopted this attitude, and it heavily influenced my decisions when applying to outside jobs.  After abandoning my plan to go in house, I was left with the alternative to reapply for engineering positions.  I had never stopped considering going back to engineering (from my first application submitted during Thanksgiving of the previous year), though I thought it would be more rational to try to get another job in a legal capacity first.  But after a string of failures, I reconsidered my reasons for wanting to stay in the law.  When viewed in retrospect, my reasons for wanting to stay in the law were very similar to the reasons I went to law school in the first place.  I wanted to continue telling others that I was a lawyer, I wanted to make my parents proud, and I wanted the financial security and social stature that came with being an attorney.  Compounding that was the harrowing sunk cost effect -hundreds of thousands of dollars and years of my life spent devoted to law, the mental effect of giving up, of facing my friends and family after the fact.  However, conspicuously absent from my set of reasons to stay was the desire to actually practice the law.  Law school was an isolated experience free from the restrictions of looming bills, demanding partners and a professional career.

By March, I had fully turned my attention from going in-house to going back to engineering.   When I began applying for software engineering jobs, my resume was still structured as a legal resume.  At the top, I listed my accolades: law school, legal journals, published papers, leadership experience, law firm.  Towards the bottom, I broke out my work experience into two sections, “Legal Experience” and “Software Engineering Experience.”  With each application submitted, I attached my cover letter, which I refined multiple times over the next several months of applications:

Dear [Company X],

I am a software engineer and attorney who has been working on coding projects for the [Y] since 2011 and was previously employed with [Z] in 2009 as a developer for our web portal on the __ team. I spent the last three years furthering my studies through attending law school and received my Juris Doctor degree from Stanford Law School in 2012. Since graduating and becoming an attorney, I have come to realize that my passion remains in software engineering. Though studying law is intellectually demanding and stimulating, I find software engineering to be a better outlet for my career goals. In short, I want to create products that help others and software engineering gives me that opportunity.

To that end, while I was in law school, I kept up with my software fundamentals through coding projects on the side. I am eager to more deeply engage in my software engineering career again, and I hope to be able to continue learning and doing so with [Company X]. Thank you for considering my application.

Sincerely,

Codeandcodes

I spent the next two months applying without any success.  At first, I targeted only well known companies, thinking that a bigger company would have the resources and financial security to take a chance on an ex-software engineer to do their coding.  But application after application was rejected or ignored.  By this point, I made my desire to leave biglaw public among many of my non-lawyer friends, many of whom were working in the software engineering field.  Some of them, to whom I’m still grateful, put their faith in me and referred me to positions with their companies.  I found, however, that even with their endorsement, I wasn’t able to even get past the resume screen. During this time, I kept an ace up my sleeve. I had spent several years in the software industry prior to going to law school, and one of my former companies had an office in my town. My old boss still worked there, and I had departed on good terms (for law school). I was fairly confident that if I reached out to him, he would be able to get me through the initial screen. However, I waffled back and forth on whether to reach out to him again. Part of me knew that by doing so, I had to commit to actually leaving the law or else burn bridges and perhaps my best hope of getting out. It felt final, and I kept asking myself if I was really prepared to leave everything I had spent the last four years working for. But after all my mental debate, I eventually decided to make the call. I was going to do this.

After contacting my old boss, the mental burden of leaving was lifted. I decided to widen my net.  I redoubled my efforts and by this point, 100% of my free time was devoted to applying to jobs or preparing for interviews.  I would come home weary from work each day, spend an hour or two looking at relevant job postings on any site I could find, and then spent a few hours brushing up on algorithms, data structures and catching up with the last several years of advancements made in software.  It was grueling.  Balancing individual study with a biglaw job is obviously not easy, but the allure of freedom kept up my morale.  At first, the challenge seemed insurmountable. However, with time, my efforts began paying off.  A few weeks after I started applying to startups, I actually began hearing back from recruiters.  Some were willing to talk with me, many others were simply curious about my background.  I still had many rejections.  However, even getting the opportunity to speak with a recruiter was a step in the right direction.  I even had a few phone screens in the beginning (all of which I failed miserably).  The software world had changed dramatically in the past four years that I had been out of the game.  Though I had kept up with programming on the side, I was woefully unprepared for jumping straight back in.

Then one day, which I consider the turning point of my application process, a contract recruiter contacted me regarding one of the many applications I had submitted.  She saw my background, was intrigued, and decided to submit my application to her client because she thought I was a good fit (that client eventually rejecged me without interview).  However, the most valuable thing she did for me was suggest that I remove references to my legal accolades from my resume, something I never considered.  The idea of removing my legal accolades was foreign to me. After all, they are the factors by which lawyers as distinguished.  I was skeptical about this advice, but since I wasn’t having much luck, I prepared a second resume (I still have it, and called it [codeandcodes SE.pdf).  I widened my net yet still, and began to apply to every job I could find, some with my SE.pdf resume, and others with my hybrid law/engineering resume. By the peak of my application cycle, I was applying to thirty jobs a day.  And I started getting hits back.  Previously, with only my hybrid resume, I had a response rate from recruiters of about 5% -for every 20 resumes and cover letters I wrote, I would receive about one response.  Out of all of those responses, I received only one phone screen.  With my new resume, which left off every tie to law (except my law school), my response rate from recruiters jumped to 20%.  And because my resume had no reference to the law firm at which I was currently employed, these recruiters viewed me without bias (except maybe as an unemployed software engineer with a very large gap on my resume).

Meanwhile, my late night study sessions were also paying dividends.  The concepts that I used everyday in the past as a software engineer started coming back to me, and I grew sharper and more familiar with the current technical buzzwords.  I also purchased several software engineering interview books, and attempted each problem, no matter how long it took me.  Slowly, I started getting more phone screens, and they started to go better.  I was still far from a callback, but my efforts showed promise.  This process continued for months.  By July, I had applied to hundreds of jobs and was speaking with recruiters on a regular basis.  Finally, the day came when one of my phone screens went well enough where the interviewer wanted to bring me in onsite interview.  The CEO of this startup told me that he would have his Director of Engineering contact me first to verify the interviewer’s feedback.  Long story short, after a conversation with the Director of Engineering, which fortunately was less technical in nature, the CEO and the director agreed to bring me in. The director gave me a homework assignment before my onsite interview, which I still have to this day.  He was experimenting with Scala (a functional programming language that runs on the JVM) and wanted me to research the pros and cons of Scala versus Java.  I had never heard of Scala or functional programming before, but I attacked this assignment with incredible vigor.  Before my onsite interview, I researched dozens of articles on Scala, Java and functional programming languages.  I put all my notes into a digestible chart in Microsoft OneNote, ironically my favorite application for note-taking in law school.  When the day of the onsite arrived, I was well-prepared.

The rest is mostly history.  Once I finished the onsite interview, I had a strong suspicion that an offer was coming.  But when it finally came, I didn’t celebrate or rejoice.  It wasn’t the compensation or the company.  Again, it came down to the decision to leave. Leaving the law was no longer just a fantasy.  It came down to the simple choice that I had debated all this time. All my work in the past half decade, from studying for the LSAT, to applying to law school, to my 1L year, my hours at the law firm, passing the bar, was about to become my past.  All of my fears were coming to a head.  I wasn’t sure if I was making the biggest mistake of my life by leaving the law behind and again, and the fears and doubts that I was just being immature about my job situation resurfaced.  I began reaching out to everyone I knew (including several people I didn’t know) who had left biglaw to do something else.  Over the next two weeks, before accepting, I sought the advice and counsel of many of these people.  All of them told me to take the leap of faith and leave.  In the end, their reassurances were all unnecessary, because I already knew what I wanted.  I finally realized that my life was being spent doing something I didn’t want to do.  I called up the recruiter and accepted.

Aftermath:

After accepting the position at the startup, I told my partner I was leaving.  He was respectful and supportive and wished me well.  It was done.  That moment, the moment where I gave notice that I was leaving, remains one of the happiest moments of my life.  It’s hard to describe the relief or joy, or whatever feelings that accompanied that decision.  It’s been two years since I departed, and I haven’t regretted my decision for a day.

How I left biglaw (Part II)

… Of course, nothing happened at first, but even the act of sending out my resume made me feel triumphant.  Though my grand plan to work for several years and go in-house flew out the window, I felt all right.  I felt hopeful for the first time since starting work that there was an exit, and that the wheels were in motion.  It turns out however, that it would be a long and arduous eight months before I finally had my opportunity…

The following is a continuation of my story of the next eight months, and how I eventually escaped from biglaw.

Part I of this post: How I left biglaw (Part I)

———–

Silence.  It turns out that getting a job requires a lot more than sending out a resume.  I was also unsure of my decision.  I had just spend the last 3 years in law school, just passed the bar exam, and had secured a position at one of the nation’s top law firms.  On paper, I looked great and outsiders looking in were impressed.  On the inside however, I felt a mounting desperation that working in biglaw was unsustainable.

After my Thanksgiving plans were interrupted by the ‘short-fuse’ deal, I sent out my resume to several engineering job ads which I had been browsing in the preceding weeks.  To me, it represented a mental hurdle that I had overcome.  I was no longer the golden example, the one people envied, but I was a quitter.  That was hard to come to terms with.  Law students in particular are a stubborn breed; the vast majority make the calculated decision to go to law school, and when there, attack their courses with tenacity.  I had done the same, passed all the hurdles to landing the biglaw job, and now after three months, was ready to quit.

To describe my thought process as clear and rational at the time would be giving myself too much credit.  I didn’t know what I wanted.  Part of me thought that I was complaining about nothing, that all biglaw associates went through the same thing, and that though attrition rates were high, the vast majority still took their licks and made it out.  No one had ever heard of someone lasting only three months in biglaw.  Another part of me however, possibly the more emotional part, thought that I was uniquely unsuited to being in biglaw.  I’m fortunate.  I have a background in computer science, which happened to be in high demand.  I had a backup plan.  However, my rational side constantly warred with my desire to leave: “why would you spend three years and $200k to get a J.D., go through all the suffering of law school tests, applying, the summer associate position, and the bar exam just to quit in three months?”  This was my constant debate over the next several months, up to the point where I left.

Thanksgiving came and went, and work actually slowed down.  My partner, to be fair, recognized that I had been burning the candle at both ends and thought I needed a break.  He avoided staffing me on a deal for the remainder of the year and my holidays were actually pleasant and restful.  And I forgot about sending out my resume.  Of course, this didn’t last very long and come the new year, I found myself in the same position as before, my personal life and time living and dying by the lifecycle of the deal.  It turns out that I had done a commendable job on my past deals, and I was ready to start operating without the guiding hand of a senior associate, at least with respect to the due diligence.  My workload increased again, but without my senior associate interceding and turning down the demands of other associates and partners, I found myself buried again.  Yet this time around, I held onto my quiet defiance with knowledge of the fact that my resume was out there, circulating.

Work continued to mount and I continued my late nights, while fighting against senior associates hounding me for work product and my partner staffing me on new assignments.  I closed my door purposely, in order to deter passerby’s from dropping in and in the natural flow of any conversation, deciding I needed more work.  I kept busy, and learned to work faster and more efficiently.  By the end, diligence became old hat, and I no longer feared the large document drops as I had in the first few months of my job.  However, new challenges always presented themselves.  I got staffed on a few licensing deals, which I knew nothing about.  Often times, as a specialist, I would jump onto a deal mid-cycle, feeling lost and inundated with deal documents.  I still rarely took a Saturday or Sunday off.  On one occasion, on the eve of deal signing after spending the last several nights working, I fell asleep instead of hopping on an 11PM conference call for the corporate attorneys.  I had already submitted my portion of the diligence memo, fully negotiated the IP reps and warranties, and thought I was in the clear.  Early the next day, I remember turning to my nightstand, saw that I had missed over 100 emails and felt a sinking feeling in my stomach.  I saw that the senior associate on the deal (my friend and also a mentor) had been up all night and took my place on the call while sending out emails at 4AM.  The deal had signed overnight.  I truly felt bad that I had dropped the ball by going to sleep instead of staying up for the call.

After that experience, I renewed my desire to get out.  By this time, it was around March, so I had around six months of experience under my belt.  As I said before, the rational side of me thought that by going back to software engineering, I would be throwing away years of my life and hundreds of thousands of dollars.  Yet I was still desperate to get out.  So I thought I would try my hand at applying for in-house positions.  There’s a website, called http://www.goinhouse.com, that lists in-house job postings.  I would check this site and linkedin daily for job postings for junior in house counsel positions.  Nothing took.  I prepared a detailed cover letter and resume, and submitted it to every junior in-house position I could find, but never received any response (some to this day).  I tried my network as well.  One friend, a director at his startup, told me of an opening on their legal team.  I applied there and most likely due to the strength of my friend’s recommendation, had a phone screen with the startup’s attorney.  I remember clearing my schedule that day and hopped in my car, trying to drive to a secluded parking lot where I could do the phone screen in peace.  I didn’t get far enough in time by the time the phone screen started, and ended up taking the call from my car.  The end result: while the interviewer was “impressed with my knowledge”, I was too junior.  Another time, my friend referred me to Google and I was flat out rejected for not having enough experience. After several failures, I finally found a position for a junior transactional attorney on goinhouse, with a new legal startup.  It was a contract position, which I had avoided until now.  For those readers who are not attorneys, contracting positions are generally looked upon with disfavor by law firms.  It’s a black mark on one’s resume.  Yet I was desperate enough to not care.  I reasoned to myself that even if I was leaving my law firm job after only half a year, I would still be leaving it for a legal job.  I could then evaluate whether I really wanted to leave law, so I wouldn’t be completely throwing away my education and time spent in the law.  I submitted my resume and to my surprise, heard back from the lead recruiter within a few days.  We had an initial phone screen, and she wanted to continue the conversation.

This legal startup is geared towards working mothers.  They call it “high end contracting” and claim to hire high-caliber attorneys to do biglaw type jobs at a cheaper rate.  The hours were flexible, and work could be picked up at the pace of the contract attorney.  It sounded perfect to me.  I scheduled the on-site interview for early in the morning, so I could wake up early and drive into the city and back to my law firm before the day started.  Anyone would just expect that I had gotten a late start.  On the day of the interview, I ended up underestimating traffic, and was five minutes late to the meeting.  It turns out that it didn’t matter.  I walked into the startup’s well-appointed office, took a seat and waited for my on-site interview to begin.  After a few minutes wait, the leader recruiter with whom I had spoken on the phone brought me into her office.  We started talking about my background, why I wanted to leave my law firm, and what this startup was trying to accomplish.  After half an hour of talking, the lead recruiter rejected me on the spot.  She told me that I was too junior for them to hire me, even for a contractual position.  She told me to reapply when I had more experience, and sent me on my way with some mints and lip balm.

Dejected, I made the long trek back to my office, where I closed my door and contemplated my future as a lawyer.  I looked at the spreadsheet that I had made, which counted down the months until I my net worth was $0.  Still over two years away.  I knew I wouldn’t make it.  I abandoned my plan to stay in law, and began to draft a new resume.

How I left biglaw (Part I)

Another popular question I received when I made the decision to leave biglaw was how I got out.  This is my story, and it won’t apply to everyone.  However, I hope that other associates can relate to the fears and feelings I had when I was planning my exit.  And I hope that it gives some hope to those friends and colleagues who feel stuck.  The story is long, so I’ll have to give you some background first.

———

My desire to leave biglaw really started during my summer associateship.  Bear in mind that this was back in 2011.  The legal economy was still reeling from the economic recession, law firms were facing bleak times, and though things were improving, law firms had still not recovered.  Salaries were still frozen, offer rates were way down, and law firm layoffs made the news daily.  I think Cravath’s class size had dropped from 120 to about 30.  Everyone I knew was worried about getting a job, even at the top law schools around the country.  I monitored ATL on a daily basis, had a massive spreadsheet of every law firm that had conducted layoffs (I purposefully bid them all lower during OCI) and concerned myself with finding the best law firm (read: most profitable and highest offer rate) I could get into.

The circumstances at the time colored my decision and my actions during my summer associateship. Essentially, I arrived for the summer with my other classmates fearful for my job and potential offer, so I was ready to hit the ground running.  I wanted to make sure that I stood out even among my other peers (no small task), so I would produce the best work quality I could while putting in the necessary time.  It turns out that that is a lot easier said than done.  On the third day of my summer associateship, I agreed to help one of the other junior associates with some bookkeeping tasks before a public filing goes out, a process called “circle ups.”  A circle up, for non-corporate attorneys, is essentially the process of going through a public filing (in this case, about a 100 page 10-K), identifying all the “material” numbers, then cross-referencing them with previous filings to see if they were missing any relevant information.  Then, the associate takes to the task of verifying these material numbers with accountants or other experts based on their level of significance.  It’s a ridiculously tedious task (you can imagine how many numbers there are in a public filing about 100 pages long).

That day I ended up staying in the office until around 1:30AM to finish circling and sticking post it notes next to all the numbers in the 10-K.  Tired from the long task, I turned in my work to the junior corporate associate thinking that I would finally go home.  However, much to my surprise/dismay, she said that we would be hopping on a call shortly to go over the results with a senior associate (also my associate mentor for the summer).  I was completely shocked.  It was already 1:30 in the morning, I had just spend the last 15 hours in the office circling hundreds of numbers and now it was time to verify them?  This was my first taste of the “real work” that corporate attorneys do.  I wondered what I had gotten myself into.  Things progressed much the same for the rest of the summer, but still at the end, and despite the long hours, I stilled needed a job offer (which I ultimately received).  I already knew I wouldn’t like the job, but I needed one because my student loans were mounting.  I remember on the last day of my summer associateship when my offer arrived, I felt a wave of relief but also the first feeling of desperation that this would be my life.  While waiting to go home on that day, I started browsing our school’s career website for other firms to interview at 3L year in case I wanted to go somewhere less intense.  I never tried.

Fast forward a year to my orientation week at this same law firm.  The law firm flew the incoming first-year associate class out first-class (my first time), put us up in luxurious accommodations and eased us into the law firm experience with relaxed sessions where other more senior lawyers told us battle stories and how to succeed at the firm.  In short, orientation week was good.  We celebrated the end of the week with a night out where we heard whispers of new associates already being contacted by partners looking for people to work the weekend (the partner eventually changed his mind when he learned that the new associate hadn’t been issued a laptop yet).  Though I laughed it off nervously, it turns out that this practice was not out of the ordinary at all, and the same fate was about to befall me.

Orientation week was the last time while at the firm that I called it a night at 5:00PM.  Pretty much from the next Monday on, I started getting slammed with work.  The trial run was over; this was real life.  I had chosen this career, my fate, my means of survival, and it would be a long stretch before getting out.  For the first three months, I never took a day off. I was on back to back deals, learning the ropes, drinking from the firehose, and working all the time.  I hated it.  My original plan of just biding my time for 4 years until I had saved enough to pay off my loans and gotten enough experience to jump in house eventually decreased in duration to three years, then to two, then finally to one.  Each day was tortuous, and while I liked my coworkers and the pay, I lived in constant fear that my schedule and life would get interrupted by a “hot” deal.  By November, I felt like I was burning out, and I looked forward to some respite over Thanksgiving.  I made plans with my family to go away for the long weekend, to relax somewhere and not think about work.  The plans were made, we were set to go.  Then it hit.  The Tuesday before Thanksgiving at 5:30PM, I received an email from our of counsel: “We just found out about a ‘short-fuse’ deal and need someone to staff it.  Looks like it will run over Thanksgiving.  Sorry.’  My heart sank.  I felt empty, broken, powerless.

I had thought about leaving before then.  It only takes so many late Friday night emails to break one’s spirit.  Maybe my peers or others have more guts or a stronger will than me, but every time I got a message like that, my desperation grew.  Somewhere during the two month marathon of work, I had actually prepared a resume, highlighting my software engineering background, which I planned to send out if things ever got really bad.  It was a symbol of defeat, my ace up my sleeve, but something to keep in the back pocket just in case.  I sent it out the same day the email came.

Of course, nothing happened at first, but even the act of sending out my resume made me feel triumphant.  Though my grand plan to work for several years and go in-house flew out the window, I felt all right.  I felt hopeful for the first time since starting work that there was an exit, and that the wheels were in motion.  It turns out however, that it would be a long and arduous eight months before I finally had my opportunity.

A day in the life of a biglaw attorney

This has been a popular request, so I’m going to describe what a normal day was like for me.  My experience will obviously vary greatly from others’ experiences, and for practical purposes, only represents a homogenized look at what a day is like.  With that said, here it is:

7:45AM – Wake up, go back to sleep.

7:50AM – 8:15AM – Wake up, check my blackberry which I stow in my nightstand each night so I won’t have to look at the red blinking light.  See that I have 15 messages, most are just law firm announcements, a few I see are related to the deal I’m on.  Read them, decide whether or not they’re emergencies but fortunately they’re not.  Crap -one more email I missed from intralinks.  25 new documents in the dataroom.  Get out of bed, throw something on, grab my briefcase and jump in my car.

8:35AM – Arrive at work after a short drive, where I try not to think about work and stare blankly out of the windshield.  (Seriously, this was my quiet time).  I’m one of the first ones in the office, so I can usually make my way to the kitchen without bumping into anyone (I never liked making awkward small talk with partners).  Wednesdays are bagel days, so I grab one, toast it and get a coffee that someone has brewed (if it’s out, I make a new pot; I’m a good citizen.)

8:45AM – Bring everything back to my desk and check my email again.  See that there are some questions from the senior corporate associate regarding the deal I’m working on that I don’t know how to answer.  I load up the diligence memo which I’ve been working on, and pull out the relevant diligence agreements.  Reread the provisions, read what I wrote in the memo, add some notes and context.  Draft email to senior associate with response.

9:40AM – Open up intralinks to the current project, see that there are now 30 agreements waiting for me.  Have a client call at 11, which our senior is leading so I can just half pay attention.  Start printing the documents (yes I kill trees).  Our services department handles the printing for me, which I always felt was a nice convenience.  They arrive with a big stack of papers.  I thank them and get started.  My strategy is to tackle the small contracts first -they’re more easily digestible.  I also like to ignore contracts with lots of addendums.  The self-contained ones are the best.  Get through one or two, highlighting relevant reps and warranties, and note them in a big document that contains all of my notes on every document for this deal.

11AM – Client call begins.  Senior associate gives client a status update and describes outstanding issues.  There’s give and take and client asks some follow up questions that we don’t know the answer to.  I hope that the question is just for corporate (I’m an IP specialist), but the question is related to a license to a trademark, what rights were assigned and what rights were retained by the target. I don’t know who has the current assignment, so will have to work with our legal assistants who run the background checks.

12:15 – Lunch time.  I head to the kitchen, heat up my lunch and grab a soda.  Lunch back at my desk today (like most days), so I can pound through more documents.

1:45PM – Partner walks in.  Crap.  My partner asks if I’m busy.  I’ve gotten through a few more diligence agreements, have to research the client question, but I say “no.”  I jump on a call with the partner about another smaller deal I’m staffed on.  I’m handling the drafting the IP reps and warranties for the deal, which “shouldn’t be too complex” since it’s for a non-tech client.  Client describes the deal situation, and we hang up.  Partner goes over the scope of the assignment, asks if I’ve got it or not.  I nod, “yes.”  It’s a “short-fuse” deal and he wants a draft by tomorrow.  We’re buyer-side again.

3:00PM – Back to my desk, am swamped and try to get through some more documents.  Have about 10 more emails in my inbox now, senior associate has new comments related to the diligence memo and asks how long to turn the memo with her comments and additional summaries.  She needs the diligence memo by tomorrow morning. (Why does she need it by tomorrow? It’s not going to the client until next week).  Silently utter profanities, feel indignant and get that hot pins and needles feeling when stressed.  I’ve barely started going through the documents in the data room.  Decide that it’s going to be a late night for the third night in a row and email services to order dinner.  I should order the salad, but feel too stressed and overworked.  Go with spaghetti & meatballs instead … throw in some dessert too.  Still under budget .. who cares?

3:15PM – Second deal’s merger agreement comes in via email.  Ignore it.

6:15PM – Been working steadily, have gotten through most of the smaller agreements and have addressed the comments in the memo.  Senior associate calls me (9:15PM) her time.  I update her that i’m about half way through.  Decide that I need to go for a run and change into my running gear, which I keep stashed under my desk.

6:45PM – Back from my run, my head feels clear, I’m tired and grab some water.  Services sends out the dinner bell email.  Grab the food from the kitchen and head back to my desk.

9:00PM – Continue pounding through documents.  Have about 5 more big agreements left.  Thankfully, many of the documents contained similar language and weren’t too complex.  Updating the diligence memo should be easy.  Senior associate’s nightly sync email comes back.  I’ll have to draft her a status update.

10:45PM – Finished updating diligence memo, and send it out to the senior associate.  Update the three diligence trackers with outstanding issues, agreements that we still need, and agreements reviewed.

11:15PM – Decide I hate being in the office, and will just work on the reps and warranties for the new deal from home.

11:45PM – Log into our VPN, open up the second deal’s merger agreement.  Feeling sleepy already, I do a bad job reading.  Looks like there are some standard IP reps & warranties which I feel good about.  At least this deal isn’t too complicated.  Go through several precedents and find some missing provisions. especially those related to IP assignments.  Don’t know if it matters because the seller doesn’t really have much IP.  Decide to just throw it in anyway, fixing up language per the merger agreement, probably unnecessary but too tired to care.  Meanwhile, phone is blinking because counterparty is adding more documents to the dataroom.

1:45AM – Have a crappy draft of the reps and warranties.  Create a redline and save it so that if partner comes asking for it, at least I have something to show.  Decide unwisely to look at dataroom one more time.  Thankfully, they look like mostly corporate documents so I can sleep easy.  Phone has also thankfully remained quiet for the last couple hours.  Brush my teeth and try to get some sleep.  Do it all again tomorrow.

Nearing the 1 week mark with biglawrefuge – Marketing + Feature development

Biglawrefuge … now with comments!

I recently (like last night at midnight) added the ability to post comments to users’ job postings or reviews on biglawrefuge.  I think this is a crucial part to growing any online community, and I hope that it helps spur on usage and keeps the biglawrefugees coming back.  Now our users can post anonymous comments or comments with their normal username.

Communities that are user-supported have always fascinated me.  They’re like living organisms that grow and become more healthy as more users contribute.  I’m sure there will be problems in the future with moderation, flagging comments for removal, etc., but I suppose I’ll have to deal with those issues as they arise.  It’s hard doing everything on my own and with a normal day job.  Yet, this is what I’m passionate about, so I hope that this is a useful feature for the users.

Marketing is another story.  In the past week, several of my old law school classmates have reached out to me to find out more about the website, congratulate me on the launch or to see how they can help.  Right now, I’m relying on word of mouth.  I’ve spent some time posting up messages on message boards, but that is only so effective.  And it’s not a tenable solution over the long run.  In every message I post, I offer to answer questions about myself or my background.  I realize that my background is unique in many respects, but I’m sure those will catch up to me at some point.  Oh well, those are good problems to have.

For those of you who are technically inclined, I’ll go into a post later on about my technology choices.  Unfortunately they’re not that interesting, but biglawrefuge does pose some interesting tidbits about anonymity, how to preserve users’ identities and how to make them feel comfortable with contributing their data.  It’s definitely a learning experience for myself as well, and I imagine that as the BLR community grows, I’ll grow with them.

48 hours … checking in.

So it’s been roughly 48 hours since the launch of biglawrefuge.  Here are some stats:  Ready to be blown away?

Stats

  • 130 total sign ups
  • 3 reviews! (one is mine)
  • 15 job listings (13 are mine)
Screen Shot 2015-07-28 at 10.31.27 PM
This is me.

So … not very impressive at all so far.  That’s ok.  It’s still early in the launch, so there’s definitely room to grow.  Also, OCI season has not kicked into full swing yet for law students, which is when I expect they’d find the site more useful.  However, it does raise the question, “how does one market a new webapp?”  This is something admittedly, that I don’t know the answer to.

What me, market?

My plan was to target legal forums (the top being http://www.top-law-schools.com), and actually it’s the only place I’ve announced biglawrefuge.  I considered also reaching out to various career services departments at law schools around the country, but don’t know whether that’s a good idea or a bad idea.  On the one hand, they might be friendly and circulate the website to their students, seeing how it’s a valuable resource for them.  On the other (more likely) hand, I think they would outright reject the idea for being in “competition with them” or bringing their clandestine statistics to light, or (most likely) they would just ignore me completely.

I’ve also thought about reaching out to some old law professors at SLS to see what they thought.  Actually, while their thoughts would be useful, it would be more useful for them to just tell their students about the site.  I also don’t want it to feel like I’m attacking the law school or any law school in particular.  That’s definitely not my intention.  My intention is to let the stats speak for themselves, and to let law students and lawyers make the judgments.  After all, biglawrefuge is only the platform.

So in the end, I’m pretty much reliant on word of mouth, for now, at least.  Hopefully it starts picking up some steam and law students start seeing the value.  In the meantime, I’ll stay positive and continue to add features.  I recently just added the ability to post up a company review anonymously.  Cool stuff!

Biglawrefuge Launch

transparent

Big Law Refuge Launches

In the past few months, I’ve been working on a side project for law students called Biglawrefuge. Biglawrefuge is a website that makes it easy to share employment data.  My motivation in creating the website is the same motivation that has made news throughout the legal community in the past few years: a need for increased transparency.

Law schools and law firms are extremely secretive about these statistics.  Law schools, for instance, at the lower tiers have been accused of gaming statistics by counting students employed in fields other than law in their job statistics or employing their own grads to inflate their stats.  Law firms on the other hand, often have hard GPA cut offs which make it not worth the while of the law school applicant who comes in under the bar.  My hope is that biglawrefuge will serve as a platform for law school students and graduates alike to share information (anonymously) with each other so that we, as participants in the legal community, can help one another to make better and more informed decisions.  After all, choosing a law firm is a big undertaking.  It’s often made at the beginning of a law student’s 2L year, when that law student only has a vague inkling of the differences that matter among law firms.

In the coming months, I’ll continue rolling out biglawrefuge to more communities and I’ll try to market it more.  Hopefully, with time, it becomes a tool the empowers its users and becomes an indispensable tool for lawyers, future past and present.

Joining the flock

new_twitter_logo

I’ve decided to the join the flock. That probably doesn’t mean anything to a whole lot of people except perhaps those in the engineering community, but “joining the flock” is Twitter parlance for joining their company. A little bit of background about me for new readers: Back in 2013, I took a leap of faith and left my life as a lawyer and a highly profitable law firm to go back into software engineering at a small silicon valley startup *(See here). At the time I left, my life at the law firm had ironically increased my tolerance for risk because of how unenjoyable the work was. I honestly felt that any non-law opportunity, even if it had a dubious potential upside, would be better than grueling it out for several more years only to enter into an in-house counsel gig. In retrospect, I didn’t even want the position of in-house counsel; I think I was just looking for meaningful work and better work-life balance without having to be electronically tethered to my phone.

In the following months after leaving big law, I drank from the proverbial firehose. It’s hard to overstate the degree to which the software engineering community and tools had changed within the past few years. I had missed much. While it felt good to be programming again, I constantly battled feeling overwhelmed with relearning old coding techniques, digesting new paradigms and finding my place in the software community again. I remember picking up javascript for the first time in years and thinking to myself how foreign everything looked. Playing around in jquery, seeing all the dollar signs, variable names without associated types, and nested callbacks and closures made my head spin. However, after overcoming that initial shock, things started quickly becoming familiar again. Coding eight to ten hours a day definitely fast-tracked my improvement as a software engineer in ways that coding on my own after normal working hours while I was with the law firm couldn’t.

Not too soon after I joined the startup did I begin searching out different opportunities. There was no real impetus towards my search; rather it was exploratory in nature. There was nothing that I particularly disliked about the startup, however I knew it wasn’t a place where I could really thrive. It was a small shop laden with past encumbrances that it couldn’t shake and simply wasn’t in a position for growth. Subsequently, I landed at a large hardware/software company in the networking market segment where I set to work on more interesting and difficult engineering problems. Essentially, the type of work I was doing at this company is what I’ve been blogging about for the past several months. The software issues I dealt with were engaging. I built an analytics stack from the ground up, and spent a good bit of time figuring out how to scaling the analytics processing and increasing node.js and mongoDB performance, and had fun developing the logical software frameworks and architecture to improve my software’s maintainability and scalability. In short, it was a great experience, and I was thriving at the company.

So then why did I leave? There are a few reasons: First, Sallie Mae. As all you lawyers can relate, law school is insanely expensive. Second, my company only deals in the enterprise space, which isn’t very exciting. I used to joke with my coworker that on the day we had one user using the software suite, we would have cause for celebration. Third, this past year and a half has been … awkward for me. I’ve gone from being deeply invested in the law to deeply invested in software engineering. I’ve grown much faster in this past year in my software engineering ability and competence than I have at any other part in my career (and maybe life), in part because of my dedication to software engineering and becoming a better engineer, but also vastly due to me simply remembering old techniques, design patterns, abstract data types, and software methodology that I had forgotten. Spending the majority of my free time coding has also certainly propelled me much further than just my day job alone. The crux is that it’s been a struggle to find where I belong back in the community of software engineers. My resume still remains a source of question and curiosity to both recruiters and interviewers alike. It probably will continue for the long run. Thus, at least in this hot economy for software engineers, it’s been difficult to estimate my market value when dealing with so many variables. I don’t blame prospective employers for having questions when reviewing a candidate like me. As I’ve come back up to speed though, my market value has risen and I’ve been hungry for new challenges.

I know that I’ll get left behind again if I don’t continue pushing myself in my free time. While it’s my belief that there will always be a great market for great software engineers, I recognize that dropping from great to good to mediocre can happen quickly through complacency. And apparently, the reverse is true through hard work and natural ability. In essence, software engineering is the path I’ve chosen and I’m pot-committed. I threw away a promising career in law that I didn’t love to do what I do love now, and I intend to see it through to my maximum ability. And that means I want to be at a company where I can push and be pushed in engineering quality and knowledge, where my weekend work and exploration helps me develop my edge and promotes my future, and where excellence is recognized by the company. I think I’ve found it with Twitter. Twitter’s engineering team is outstanding; their employees are young, hungry and eager to learn and do great things. Twitter as a platform has also not peaked (in my opinion), so there are great opportunities for growth within the company. Although Twitter is much bigger than some of the other startups that I’ve considered, there is still the opportunity to dive in and do impactful things at the company. I’m definitely looking forward to the first hack week.

Lastly, now that I’m fully integrated back into the software community, there’s perhaps a greater penchant for financial conservatism. I’m getting older, but my debt acts as an albatross around my neck, so it’ll be nice to have some financial security for a change. I should also say that many startups in the valley also have excellent engineering teams and hiring standards and are solving interesting issues. Yet many of those startups do not enjoy public recognition of that fact, so recruiters can’t easily get a good gauge of the caliber of engineer. At a large company like Twitter, Google or Facebook, the software engineers enjoy the reputation of having survived the interview gauntlet. In other words, such engineers are generally of high quality and will be known as such. While I still have the desire to do things on my own such as exploring the intersections of law and software engineering, I see no reason that such a goal is mutually exclusive with working at a large software company. I’ll continue doing what I’ve always done, spending my time improving my skills, building tools that may or may not have merit, but always and ceaselessly bettering myself.

Clustering in Node.js (Part 3) – Basic flag parsing/loading for node.js processes

Using PM2’s API to start/stop/restart processes within our collector framework means we need way of passing in configuration data into each process so that each collector knows what to run and with what parameters. There are a few ways of doing this, but in my mind, the clearest and easiest way to do this was to just use command line parameters. It’s familiar to users, allows us to modify parameters on the fly when developing locally (i.e. without looking up and editing config files), and also gives us insight into the process when using os-level command line binaries like ps. Additionally, I knew going forward that our configs would change, though many of our collectors would reuse the same base configuration parameters, so I didn’t want to write a big switch statement with different logic for each inherited collector class. I also had no interest in going back into each class and modifying the same source code multiple times whenever a change was made. Thus, it made sense to me to create a separate config file for each type of collector we had which would extend the base configuration and would be able to launch and error check based on its own specific configuration.

In a nutshell, here’s the behavior I wanted:

  1. Ability to specify a default base configuration for launching a process
  2. Ability to modify the default base configuration easily (e.g. adding or removing config flags)
  3. Abstract out parsing details and logic so a process would always have everything it needs to run, even if a user failed to pass in all necessary config info
  4. Ability to extend the base configuration with different configs based on the type of collector process

To do this, I created a default configuration object with a map of keys corresponding to the flags, where the map contained the name of the key, the default value, and whether the flag was required or not. Using this object, I could iterate through the process.argv values passed into the node.js process to determine which parameters were passed in, if they matched the corresponding configuration file, and throw an error and not launch if there was some error in the config. I only added enough code to meet our needs, so there are some limitations to the configuration, such as reading multiple parameters passed in after a flag (currently, only allows 0 or 1 parameters afterwards).

Take a look:

'use strict'

var InvalidConfigError = require('../../exceptions/InvalidConfigError.js');

/**
* Load Balancer Config is a class that abstracts configuration loading for load balancers
*
* @class LoadBalancerConfig
* @constructor
* @param {Object} configs An array passed in through process.argv
*/
var LoadBalancerConfig = function(configs) {

	/** 
	 * Loads configuration based on the process.argv and fills in defaults where necessary
	 * Note, this will load the config set on the prototype scope
	 */
	function loadConfig(configs) {
		var self=this;

                /* 
                 * Just iterates over the process.argv configs and peeks at the next value if there is one
                 */
		configs.forEach(function(c, index) {
			if (self.config.hasOwnProperty(c)) {
				var peek = self.config[c].peekat;
				if (configs.length > index + peek) {
					self.config[c].value = peek > 0 ? configs[index+peek] : true;
				} else {
					throw new InvalidConfigError('Invalid configuration: ' + c + ' should have a parameter trailing it.')
				}

				if (Object.keys(self.config).indexOf(self.config[c].value) > -1) {
					throw new InvalidConfigError('Invalid configuration: ' + c + ' should have a parameter trailing it.')
				}
			}
		});

                /*
                 * If certain flags are left out, fill them with the default
                 */
		for (var key in self.config) {
			if (self.config[key].value == undefined && self.config[key].default !== undefined) {
				console.log('%s is undefined, so setting default to %s', key, self.config[key].default);
				self.config[key].value = self.config[key].default;
			}
		}
	}

	if (configs) {
		loadConfig.call(this, configs);
	}

	this.getConfig = function() {
		return this.config;
	}
};

//Default configuration
//keys are the argument flags
//peekat is the index to peek at for the value; if 0, then default should be false, so if flag is present, will defualt to true
LoadBalancerConfig.prototype.config = {
	'-p': {
		name: 'port',
		peekat: 1,
		default: 5005,
		required: true
	},
	'-i': {
		name: 'instances',
		peekat: 1,
		default: 1,
		required: true
	},
	'-retry': {
		name: 'retry',
		peekat: 0,
		default: false,
		required: false
	},
	'-name': {
		name: 'name',
		peekat: 1,
		default: 'Load_Balancer',
		required: false
	},
	'-protocol': {
		name: 'protocol',
		peekat: 1,
		required: true
	},
	'-workername': {
		name: 'workername',
		peekat: 1,
		required: false,
		default: 'Worker'
	}
};

/* 
 * @return {Object} config Returns a config object with all the defaults selected
 */ 
LoadBalancerConfig.prototype.getDefault = function() {
	for (var key in this.config) {
		this.config[key].value = this.config[key].default;
	}
	return this.config;
}

module.exports = LoadBalancerConfig;

It turns out that using this pattern allows for us to extend configs very easily. See here:


'use strict';

var LoadBalancerConfig = require('./LoadBalancerConfig.js');
/**
*
* @class NewLoadBalancerConfig
* @constructor
* @param {Object} configs An array passed in through process.argv
*/
var NewLoadBalancerConfig = function(config) {
	LoadBalancerConfig.call(this, config);
}

NewLoadBalancerConfig.prototype = Object.create(LoadBalancerConfig.prototype);
NewLoadBalancerConfig.prototype.config['-p'].default = 5005;
NewLoadBalancerConfig.prototype.config['-protocol'].default = 'udp';
NewLoadBalancerConfig.prototype.config['-name'].default = 'New_Load_Balancer';
NewLoadBalancerConfig.prototype.config['-workername'].default = 'Some Worker';

NewLoadBalancerConfig.prototype.config['-logdir'] = {
	name: 'log directory',
	peekat: 1,
	default: 'logs/',
	required: true
};

module.exports = NewLoadBalancerConfig;



///// Then in the load balancer class, do this:

	var config;
	try {
		config = (new NewLoadBalancerConfig(process.argv)).getConfig();
	} catch (err) {
		if (err instanceof InvalidConfigError) {
			console.log('There was a configuration error in starting up!');
			config = (new NewLoadBalancerConfig()).getDefault();
		} else {
			throw err;
		}
	}

Here you can see how easy it is to extend the base config to do things like replace the defaults or to add new flags that are required by the configuration type. All the options, error handling and loading of configs are kept track by config corresponding to the load balancer. I’ve already had to use this several times to add flags on the fly and it has saved tons of time by letting us not have to go back to each process and modify the logic to handle individual loading of flags. I love simple and easy wins like this.

Here’s an example log output:

-p is undefined, so setting default to 5005
-i is undefined, so setting default to 1
-retry is undefined, so setting default to false
-name is undefined, so setting default to New_Load_Balancer
-protocol is undefined, so setting default to udp
-workername is undefined, so setting default to Some Worker
-logdir is undefined, so setting default to logs/
{ '-p':
   { name: 'port',
     peekat: 1,
     default: 5005,
     required: true,
     value: 5005 },
  '-i':
   { name: 'instances',
     peekat: 1,
     default: 1,
     required: true,
     value: 1 },
  '-name':
   { name: 'name',
     peekat: 1,
     default: 'New_Load_Balancer',
     required: false,
     value: 'New_Load_Balancer' },
  '-protocol':
   { name: 'protocol',
     peekat: 1,
     required: true,
     default: 'udp',
     value: 'udp' },
  '-workername':
   { name: 'workername',
     peekat: 1,
     required: false,
     default: 'Some Worker',
     value: 'Some Worker' },
  '-logdir':
   { name: 'log directory',
     peekat: 1,
     required: true,
     default: 'logs/',
     value: 'logs/' } }