How to get help from the best engineers in the world, from *any* part of the world
This is the first guest post by Abdullah Bakhach. The one thing that stands out the most about Abdullah is the fact that he left amazon and moved to lebanon and work as a software engineer there. His presence in this country gives us engineers hope. I’m sure you’ll learn more than one trick from this very well written post!
Many software developers rely on the usual tools for help, such as stack over flow and other forums on the web. However, such sites provide very specific advice about very specific problems. No one is going to do your work for you, and rightly so. You should be doing your own work. But sometimes the level of difficulty at your work reaches a level where you are truly left flustered.
Case in point, I got a friend of mine who is working on his start-up website, which has a real-time chat tool on the browser (similar to the one in facebook).. he went on the traditional channels that engineers like him in Lebanon use for help.. so we’re talking stack over flow, some developer forums on facebook like labnehcoders and developers lobby etc.. I think it’s safe to say that he did what any developer in any other part of the world like him would do..
But there is a ceiling for talent/knowledge/expertise in local forums, and forums like stack over flow are meant to address specific questions. the question of “how do i architect a real time chat software that can scale using XMPP etc etc) is simply too generic.
This article is about how to over come such a technical plateau if you will, and i’ll be using something from my personal experience.
it started when i first came to lebnaon. at that point i was desperate to stay (i had just got fired from the canadian start-up that employed me several months prior.. they were my ticket to moving to lebnaon, but then they pulled the plug on me pretty quick.. i think they did the right thing btw) anyways.. so this software solutions company asks me to basically do a seedio like app: an iphone can sync the audio it’s playing with any number of phones in the vicinity and they all broadcast music at the same time. so we’re talking real-time, audio, networking, distributed systems etc etc. Although I’ve never done any iOS development before (i made that clear to the owners btw), the expectation was that i complete the whole project in three months on my own (later on with the help of a junior iOS dev as well).
The task looked pretty much impossible to me (we later on found out that seedio was built by a team of 6 austrian engineers over the span of 7 months). so I did what my buddy above did, went on stack over flow and asked a lot of questions.. i was stumbling around in a very hard subject (core audio in iOS is hard.. ask anyone, esp for an iOS noob) and i really didn’t know what i was doing.
Until I met justin. He basically answered several of my questions (such as this one).. at one we had a back in forth in the comments of one of our questions (stack over flow has since deleted them).. but they literally numbered in the hundreds.. it’s too bad it’s gone.. b/c it would have illustrated how our relationship evolved from a random SO questioner and answerer.. into something more like a friendship (ie you’ll see the first comment was more like: so why are GCD blocks never a good idea for real time audio and at the end of the thread you’ll see stuff like hey man i just got a baby!).. the nature of the discussion was still very technical.. but it took a different angle.. it was almost like two co-workers having a technical discussion at work, interleaved with personal stuff.
This post isn’t about how to make the next stack over flow answerer your best friend.. it’s rather about how to make stack overflow into a starting point into something that can be much much more.
The discussions on twitter where technical as well.. until I reached a point where I thought that twitter became too restrictive a medium for me to adequately explain what technical problems I had.. that’s when I asked him if we can take the discussion into IM. Now every once in a while whenever I face a deep challenge.. I simply send him a private message in twitter to get on IM, and there we are. The rest is history.
The point of this article is that there are a lot of people like Justin out there.. who are extremely talented (we’re talking about someone who has been doing only low level audio in iOS and mac for the last 10 years.. this man has more knowledge in his field than most of PHD professors in the top schools in the world I assure you of that).. and who are very willing to help. They find it rewarding. Haven’t you helped someone before? how did it feel? I think that’s the genius of stack overflow.. they took an existing human behavior (people helping each other) and structured it and made it accessible in a very scalable way. The point of this article is that stack over flow isn’t the end, it’s the beginning.
Back to my buddy with the social networking site. we had a chat and i advised him on repeating what i did. the forumla is something like this: keep on visiting stack overflow regularly, if not to ask a question then just to read topics related to the problem you are having.. you will invariable see a pattern: some people with high scores constantly answering in specific fields. For example (all my examples are related to iOS b/c the the world i understand best) Dave DeLong is the go to guy when it comes to UI Kit (UI for iOS).. bbum is especially talented with iOS memory management (i think i heard somewhere he work(ed)(s)? for apple.. i donno).. and so on and so forth. These are the people you wanna talk to.. people like them. Now does this mean you go and bug them all the time and stuff? absolutely not.. whatever you do must be done in the bounds of good taste and the understanding that these people are very busy and in demand. It takes practice to get the formula right..
But just not to end in a generic note.. Let me give you another formula (there are tonnes of formulas out there i’m sure).. in an other project.. I’m working on building an iOS email client (think something like mailbox). I was relying on an email library called mailcore.. recently I learned that they have overhauled the entire library into a new version that has little to do with the old one. The interesting part was that the old version also relied on a lower level library called libetpan. Libetpan was developed by Hoa V. Dinh who later on included it in his iOS email client called sparrow. Sparrow was later acquired by Google, and Dinh now works with the original creator of mailcore, Matt Ronge on mailcore2. If you go to the issues page of mailcore2, you’ll see a pattern as well. You’ll see Robert Wideman, aka codafi. Robert is on the twitter of Dihn (you can see their technical discussions there).. and he follows my buddy Justin on twitter as well.. Robert is working on his own iOS email client as well called dotmailapp. Are you starting to see a pattern here?
oooh wow, you just figured out a network of some geeks talking to each other.. how does that help me? you may ask.. well let us dig deeper into the rabbit hole. I was going over one of the issues on the mailcore issues page.. and i noticed a post by this guy called paul young.. (my obsession with knowing who is who may be traced back to my short lived gig as an IT recruiter.. but I think this article demonstrates how useful that can be).. one thing that caught my attention in his github profile was the fact that he is a member of the mailcore organization.. Member of the mailcore organization??!! how could he?! i was shocked.. but more importantly.. how can I?? i looked at his projects/code.. he seems like a bright kid.. but not like that smarter than me.. If he can become a member of the org.. I can! (I wanna be part of an org that has a senior google developer in it like Hoa, and a guy with 20K+ votes in SO like codafi!!.. if i wanna become good.. i must hang out with the goodfellas (even if virtually.. especially if virtually considering that I live in Tripoli.. where you know.. bombs go off)
So I asked Hoa by email, I’m like I’m sure my face looks familiar to you (he said it did).. I asked: how can i become part of your group? He’s like why should you? what have you done? i told him that i ask a lot of questions on their github page.. that i got decent writing skills, and i love helping people.. I said i could start by improving their documentation (since it’s a brand new library.. their documentation is lacking they admit). I also asked what is that Paul Young did that made Hoa accept him into the group? He said that Paul contributed a lot of code to mailcore, and that i should do something similar to be admitted into the gang.
We agreed that i should start editing the wiki and putting some documentation, and once my contributions reach a decent amount, he will gladly admit me. Now just to be clear, I haven’t done anything since (b/c i’m busy you know!) but i have a clear roadmap that i can follow to be part of a pretty elite group of engineers (and i’m talking besides Justin.. again the point of the article is that are tonnes of Justins out there.. it’s just that you have to know how to reach them).
If you like what you read here folks, why dont' you subscribe to the newsletter for more awesomeness?