Joining the flock


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.


A candid look at biglaw and big law firms from a biglaw dropout

Leaving biglaw behind

To any readers out there, whether you’re a biglaw attorney, law student, engineer, working professional considering law school or spambot, here’s an update on my life just over a year after my exodus from biglaw. It’s been just over a year since I left:

Giving notice

I still remember the day I gave my notice to my boss, a young and rising partner in my law firm, that I was leaving for a startup. My former partner, a highly intelligent and skilled attorney, of course sensed my reasons for leaving. But instead of speaking candidly about my experience, we spoke through with the layers of etiquette built up over time by biglaw attorneys.

I told him how much I enjoyed working with my fellow associates and for him, how much I respected him and appreciated his mentorship, and how the opportunity was too good to pass up. He told me how he appreciated my contributions to the law firm, how I was practicing at a level beyond my seniority and about my bright future at the firm and that he would regret seeing me go. And though we spoke truthfully to one another, we managed to miss the truth entirely.

I didn’t tell him how much I disliked working at the law firm; nor did I tell him that I probably would have accepted any position that gave me the opportunity to leave. I didn’t tell him about the aggregate toll that responding to emails 18 hours a day had taken on my sense of normalcy and happiness. I didn’t tell him how I, in desperation after having worked the first 8 weekends in a row, applied to engineering jobs after just two months in biglaw. I didn’t tell him about the numerous spreadsheets I had created and obsessively updated detailing how much money I would have each month, the day my net worth would be zero, and the day when my ROI on law school would overcome the opportunity cost of giving up my past engineering career. I didn’t tell him how many late nights I had spent in the past 6 months fighting to keep my eyes open while I watched old CS lectures and studied abstract data types and binary tree implementations. I didn’t tell him how scared I was to accept the position because I seriously doubted the viability of the startup and knew that it was completely leaving behind my legal background to perhaps never be used again. I didn’t tell him that despite all my fears and doubts, how easy it was me for to make the decision.

The decision to leave

What had caused my desperation to get out after just two months? It wasn’t just the long hours. I thought that might be the case, that perhaps I was just lazy, but in the aftermath of leaving my law firm, I still continued to work 50 hour weeks with about 20 hours of work a week on my personal projects. In fact, I was still putting in more time than I had at the firm. That actually led me to discover about myself that I didn’t shy away from work.

It wasn’t just the unpredictability of work, although that was a huge contributing factor. It’s really hard to describe what it’s like being tethered to your work phone and being on hook for any quantity of incoming work at any waking hour on any day of the week. I lived in fear of my phone, having been burned many times in the past by “short fuse” deals that needed me to drop everything and work the weekend. Like a traumatized animal, I learned to fear the words “what are you working on at the moment,” knowing that my answer would inevitably lead to more work. It turns out that it only took a few months of Friday night emails asking me to drop everything and work the weekend to break me.

It wasn’t just the nature of the work either, although each deal on which I was staffed meant the drudgery of hundreds of agreements, leases, and licenses being dropped into the dataroom at any time of day, waiting to be reviewed and summarized by me. It wasn’t solely the environment either, although it was astonishing to see the facades of contentment when so many associates were unhappy. You see, biglaw attorneys are exceedingly polite to one another. So polite, in fact, that the real feelings of biglaw attorneys rarely manifest themselves, except to those closest to the associate. This can’t be unknown by biglaw partners, but because associates don’t openly vocalize their discontent, biglaw partners have no incentive to improve conditions. Instead, we pretended to have fun, making casual jokes or observations about current affairs. We had RC car races, eating contents, a goodbye party for every associate or staffer who left. These events made for great PR to those outside the firm, but it was never mentioned how the attorneys would just sit there either awkwardly making small talk or checking their mobile devices waiting for an excuse to get back to work. It was of course all of these things, and more, that brought me to my breaking point.

In the month leading up to my departure, after I had my offer in hand from the startup, I constantly wondered to myself if I was insane for wanting to leave my biglaw career behind. I was at one of the most prestigious law firms in the country, had spent the last 4 years of my life devoted to learning the law and had a clear ticket to society’s elite and comfortable wealth if I could just put in the time. I sought counsel from others who had made the leap. Perhaps not coincidentally, almost all of them are startup founders. They, for the same reasons as me (and probably all associates), hated the biglaw machine and wanted out. Unlike me however, they had already mustered the courage and taken the leap. I was still waffling back and forth with whether it would be worth trying to make it to another year or at least six months until I received my year-end bonus. Ultimately, it wasn’t anything any one of those other biglaw deserters told me. In fact, I heard nothing new from them. If you’re a biglaw reader, you’re also likely not reading anything new. No, I knew all the facts, had considered the cost numerous times, and was just trying to convince myself to do something about it. It turn out that I already had made my decision.

Once I decided I was leaving, I knew that nothing my partner or anything other associates could say would convince me to stay. I knew that it was the right decision to leave, not in a year, not in six months, but at the very moment I was planning. It wasn’t about the startup or all the work I had put in to get back to the level of engineering competence to get hired. It turns out that it was just about the opportunity to leave. It turns out that any opportunity to leave was good enough. I’ll never forget the feeling when I gave my notice to that young partner. I didn’t begrudge him at all, not for the weekends he made me work, the workload, or anything else at the firm. I knew it was just part of his job. Instead, my sense of unadulterated joy came instead from the hope of a better future and of a happier life that leaving instilled. As I told that partner that I was leaving, I felt an enormous weight lifted off my shoulders like nothing in the world was or could go wrong. I felt emboldened, powerful and most importantly, free. I joke to my friends that I’ll never have as good a feeling in my life ever again, not unless I become a slave and receive my freedom.

The aftermath

So then, what’s the postscript after leaving -has my attitude changed in the last year?
No. The short answer is that I have not regretted once leaving biglaw for engineering. I regret some of the things biglaw afforded, like the salary or prestige of being able to call myself a lawyer. But when evaluating things as a whole, I would change nothing about my departure.

In the past year, I’ve set to work on several projects, one of which I’ve described on this blog called Dockumo. I have other projects in the queue, like building a solution to bluebooking, an insane kind of drudgery that law students subject themselves to involving following imprecise rules on how to cite certain legal works. As I stated before, I still work long hours, but the biggest difference is the fact that I’m now working for myself. The work that I do feels like it has purpose, that it is bettering me and my skills as an engineer, and can build upon itself to enable me to create bigger and more expansive projects -projects that can help others. Software, to me, is still the most efficient solution to many of the world’s biggest problems. Being able to program software is a powerful concept and skill, and it leads to ability to create anything I can dream of if I just put in the time and effort. That feeling of hope and potential to me is the greatest motivator of all; it is what gives my work purpose and it was exactly what I was missing when I was a biglaw attorney.

Dockumo – the crowd in the cloud

Screen Shot 2014-07-22 at 1.23.04 PM

In the past few months, I’ve been working on a project in my spare time called Dockumo. Dockumo is a web-based tool that lets users create “Articles” or basically blurbs of text, edit them and create new versions of them easily. When a user edits an article, the user is given the option to “Save” it or “Save as New Version.” Saving as a new version will generate a “Series” for the article, which will then start keeping track of all versions of the article. Pretty basic stuff. It’s my first foray into making consumer-facing software, including making better software tools for lawyers (my ultimate goal).

Dockumo main page (for text comparison)
Dockumo main page (for text comparison)

The utility here is that the user can see the article and versions through a timeline view and can easily compare any two versions (or any two articles for that matter) with a couple of clicks. I built this because comparison before required making two word documents, saving them, then comparing them and saving the result. Dockumo does this, but makes it much faster to do. Also, there’s no need to store lots of messy versions on your computer since it’s stored in the cloud. Furthermore, I built in some functionality to export the result to a text file, html doc or word doc (word was by far the most challenging). Exporting actually keeps track of the changes in “Track changes” format in word, which I implemented through a modification to the node.js officegen module.

An example of an article
An example of an article

Here’s what the timeline view looks like:

Timeline view of an article
Timeline view of an article

Finally, Dockumo lets users group articles together in “Journals.” Journals are a way to get related content together and then to share them with your friends or other users on the site. When you share a journal, it becomes a “collaboration” for all users who are invited. Those collaborators can add new versions of any articles grouped in the journal. The idea behind this is that users will be able to view and edit data together, while keeping track of new versions. There’s an option, for instance, to receive a notification whenever a collaborator edits a series. So for example, if five users are collaborators on a journal who are working on a report or a term paper, each one can make his or her modifications and save as a new version. As the document evolves through time, each user can see which other user made the change and how the article changed overtime through the comparison view.

A journal
A journal

What’s left?

When I started out making Docukmo, I only intended it to be a quick and easy way to diff two blurbs or text. I didn’t want feature creep to set in, but it inevitably did. Journals were not planned from the beginning, but I figured users would want a way to see relevant content. I ended up having to add lots of other elements as well, such as “friending” other users, user search, a notifications system, exporting to other formats, and emailing users who want updates, user permissions. All of these things added complexity and time. A good lesson for me though: When I thought I was able to launch the website, I was actually still about a month out. It wasn’t until I tried to launch did I realize that there were so many niggling things left undone. For instance, not allowing users to register under the same username or email address, or giving a password reset mechanism. Fortunately, I can carry over a lot of this code to any future projects down the line.

And feature-creep. I am probably the worst-offender of this concept ever. I always think to myself, “well if the software doesn’t do [X], then users won’t want to use it!” For me, this is an ever present temptation to continue adding feature upon feature to the source while never actually launching. Since launching, there have been other features that I really want to add (and probably will). For instance, I want to give users the option to make articles “public” and tag them with keywords so that the community (all users within the cloud) can search for a particular type of document (e.g. a cover letter or a thank you note), see an example of a it, and suggest modifications and rate existing articles. In other words, have a community of contributors who persistently improve cloud-based, crowd-sourced documents. That’s why I called the product “Dockumo”, or “doc” + “kumo” (“cloud” in Japanese).

Let me know what you guys think. I’m always happy to discuss improvements I can make or my technical/architectural decisions.

About page
About page

One month+ in … no regrets so far!

So it’s been about 5 weeks since I left my job at the firm and started as a senior software engineer at my tiny four-person startup. So far, I have to say that things are going well. There are lots of pros and cons to my having changed careers, so I’ll just list them in bullet format.


  • I like coding
  • So first, coding is actually enjoyable for me. There are times when I feel kinda like I’m hacking aimlessly, but there are times when things come together. In either case, it’s still better than circle ups, form-checks or due diligence. One difference between coding and law is that software engineering always consists of coding. Yes, there are variations in the complexity of the code that one writes, but by and large, I’m of the opinion that any coding will help you become a better coder. The same may be true about due diligence, but I’m not sure sure about circle-ups or form-checks. Another difference is that coding is in some ways more permanent. I can point to a project and say “hey, I did that!” whereas many aspects of law is aimed toward the prevention of risk, which of course, is much harder to prove.

  • Software engineering makes me optimistic
  • Another important element of my job and software engineering in general is that I’m honing my skills in preparation to build something on my own someday. There are so many tools, applications, games and projects in general out there that can all be built with software. Law, on the other hand, is aimed towards a particular client for solving a particular need. No one learns beach volleyball law because no such thing exists. In software, if something doesn’t exist the potential exists to create it. Although it may never be used by anyone, that prospect of creating something at all is empowering. I suppose you could say the same thing about law. For instance, I could write the code for beach volleyball, and perhaps no one would use it, but it would always be my creation. It’s probably hard to argue with that, but (excuse the pun) not all “coding” is coding.

  • Software engineering is more marketable
  • At least in today’s market, there’s much bigger demand for software engineers, even junior ones, than the demand for junior lawyers in the legal market. Being more employable (at least in the short term) makes me feel more mobile, which makes me feel less trapped, which ultimately makes me feel happier that I’m doing what I’m doing because I want to do it at this point in time. Several of my friends have already offered to submit my resume to their employers. I haven’t taken them up on the offer yet, but it doesn’t seem like the pace of hiring for great engineers will slow.

  • Software is probably smarter
  • I feel that the pace of innovation in software is really commendable and daunting at the same time. It seems like every month there is some new and all-powerful tool that is the flavor of the month to help you solve [x] problem. The corollary to that is that one could spend his entire day learning what the new tools do and never actually spend the time learning how to use them! I’ve felt daunted by the fact that there are 50 frameworks for every aspect of the traditional MVC architecture software stack. It feels like an impossible task to learn everything, which forces me to take bets on what technologies will have lasting power. The law, on the other hand, seems steeped in tradition. You hear of stories about using parentheses around numbers to help prevent fraud in written contracts, which allegedly was relevant before print. There are stories about partners formatting their documents in one way, thus creating and perpetuating a manner of doing things whose meaning becomes lost over time. There are certainly similar aspects about software, but by virtue of the fact that software is not an oligarchy (of partners, for instance), it becomes much harder to entrench one’s idiosyncrasies.

Of course, software isn’t all sunshine and rainbows. I’ve considered carefully what my career my entail when I am over the hump at 35 or 40. I’m realistic that I won’t always be able to spend my weekends reading about node.js and angular.js or whatever hot new technology there is. There are also other aspects of software engineering aside from employability or job satisfaction that vary wildly from being a lawyer. What are they? I’ve considered many, but you’ll have to stay tuned until next time to find out …

Two weeks in

Today marks the completion of the second week since I’ve gone back to software engineering.  In all honesty, it’s been a tough transition.  There are so many technologies to catch up on since I was last a programmer.  I find myself googling pretty much every new concept I see, not understanding the answer, then googling further until I can recurse back to the top.  Java code looks unfamiliar to me.  Or perhaps the code I was writing in the past was just unsophisticated and didn’t follow good design patterns.  But it was easier to understand, or so it seems.

I know starting this blog I stated all my grand ambitions to change law with software.  So far, nothing has materialized.  I think I’m just lazy and need to get started building something.  However, it has been a pretty good few weeks so far.  Simply absorbing new concepts has been invaluable.  The good and bad of my startup is that we are so short-staffed that I have to have my hands in a little bit of everything.  At least I’m hoping that doing so will give me some quick on-the-job training that will help make me more employable in the future.  Here’s to hitting the ground running …

Coming back to coding

So it’s been a tough hill to climb to get back into coding.  Four years out from software engineering is a long time in itself; it probably didn’t help that what I was working on at my previous software engineering job wasn’t state of the art.  It does, however, feel good to be in front of a computer and have the world at my fingertips (so to speak).  If something doesn’t work, I can create it.  Or something like that.  At my old law firm, computers were treated as an afterthought, a technical convenience to a historically paper-driven practice.  That was one particularly irksome attribute of law firms.  Ours in particular bogged our computers down with cumbersome antivirus software, microsoft word plug-ins, security monitoring programs, and the like.  Our internet was blocked.  We couldn’t install new programs onto our laptops.  We used an antiquated and buggy version of internet explorer.  Even java was blocked, despite it being a necessity in certain scenarios to do our job.  This was all to protect us, protect the law firm, and protect clients’ information and work product.  Perhaps these safety measures are a necessary evil to doing the job, but that doesn’t mean they weren’t annoying as f***.

In my trek to return to the software engineering life, I’m starting out by doing things a little differently.  Before going to law school, I skated by in computer science.  I learned best practices as I encountered them in real-life and didn’t make much of an effort to expand my learning beyond what I was directly exposed to.  I’m trying to start out on a new leaf.  I’ve picked up a copy of Effective Java and am trying to understand some best practices before I encounter the problem.  Lots of concepts are confusing, especially in light of my spotty knowledge.  Despite these difficulties, I’m hoping that this will train me to be a better programmer than I was before law school and will hone my skills so that I can do better and more expressive things than before.  I intend to drop in and discuss a few of my coding projects and learnings along the way.  They will probably be too basic for most software engineers, but they’re really more of a chronicle for myself.  I’m selfish like that.  😛

Oh and one more thing:  Apparently, all the cool kids are using github these days.  I didn’t even know what git was 3 months ago when I was first interviewing to come back.  Now I’ve gotten with the times, and you can see some of my amateurish code at my Github page.

Day One

Actually it’s more like day two.  Considering the circumstances, probably more like day 60.  Welcome to my blog.  I am the rocketegg.  Rocketegg is pretty much a meaningless name I came up with years ago when I had to choose a handle to dial into errols internet.  That was a time in my life when the internet was just budding and my interests were focused intently on Diablo and finding a girlfriend.  To give you an idea of my particular brand of uncool, those two things ended up being one solution for me.

Fast forward 12 years or so.  I majored in computer science in undergrad, worked in the software industry for a few years, decided I could “do more” and decided to go to law school.  My reasons for wanting to do so were inarticulate, or maybe just too varied to provide any coherent guidance.  When people asked, I explained that I wanted to broaden my studies, dabble in multiple fields, challenge myself intellectually, and so on.  In truth, the reasons I went to law school were probably more selfish and less honorable than that.  It seemed that all the smart people from my undergrad who had majored in some form of engineering went to a good law school, whereupon graduation they would be handed a fat salary and gobs of prestige, while the remainder of us lived unsatisfying, droll little lives fixing software bugs.  Meanwhile, my dad had raised us with tales of how his father was an important man, a senator in China, who drove a car when probably had never even seen one.  My grandfather, according to my dad, was an honest man, a rarity among politicians whose duty was to call out unethical behavior within his political party.  Naturally, this created enemies along the way who eventually besmirched my grandfather’s reputation and removed him from his position of power.  I loved this tale, romanticized our family being restored to its proper place (albeit in a different country), and law school seemed like the right avenue for the pursuit.  In any case, these two factors worked in conjunction to lead me to law school.

Fast forward another 4 years.  I lived and breathed law school, honestly putting my all into my studies.  It paid off, and I was able to land a job as an associate at one of our country’s top law firms.  It sucked.  There are many things wrong about the law firm model, which I won’t go into.  Suffice it to say that it’s not the right path for me.  Out of my reasons for going to law school, however varied and regardless of the drive it gave me, never included actually wanting to be a lawyer.  It’s perhaps a bit funny to have missed that big point, but at the time my sights were tinted by the allure of the salary and position that our society affords lawyers.  Today is day two of the next step in my career.  I left my law firm last Friday to start (for the second time) my career as a software engineer.  Honestly, I don’t know if I made a mistake.  Perhaps I’m putting too much value on the short term benefits of being a software engineer and too little value on the long term benefits of being a lawyer.  I can’t say.  What I can say is that I’ve been at peace with my decision, and once again I’m genuinely excited about what the future has in store.

That’s the reason for writing this blog.  I don’t know if my story will resonate with anyone.  However, I do know of many unhappy lawyers who would do something else if they could.  My encouragement is to step out, take a leap of faith, and see what destiny has in store.  My parents did that years ago, made mistakes along the way, but by the grace of God landed on their feet.  It’s my hope, and more than I can ask really, to simply do the same.