Sunday, March 30, 2014

April Goals And The Past Few Months

Let's get started with all that has happened since the end of the bootcamp. 
  • Coding Dojo
  • Facebook
  • Self-learning (April Goals)
Coding Dojo

After the bootcamp I got a part-time offer from the school to be a Student Advisor. Created some recruiting courses/videos and also meeting with individual students on how to write resumes, interpret interview processes, and how to handle salary negotiations.

Facebook 

Remeber this post? http://withdavidli.blogspot.com/2013/08/august-goals-completed-and-other-big.html

At the end, about wooing Google and Facebook. Funny thing, got in process for both of these companies for Sourcer roles. Facebook was super fast in getting the interview set up and got the offer same day =). As a Sourcer/Recruiter seeing how fast a company moves in the candidate stage is really important because it will be something I will be a part of. Didn't get to the on-site interviews with Google before accepting the offer from FB, maybe in the future. 

I'm currently on a 1 year contract with Facebook, started this January. It has been an amazing here. Everyone is super communicative and helpful. The level of access to hiring teams is incredibile, I can literally walk to up to their desks. I've already had meetings with managers, directors, and heads of departments. Just a great experience. 

April Goals: Self-learning 

Haven't done goals in quite a while. Self-learning has definitely been slacking. So for April goals I'm looking to complete Mitx Intro to Computer Science and Programming to build more of a foundation in creating algorithms. It's an 8 week course, but I think I should be able to do it in half the time if I really dedicate myself. 

Thursday, December 19, 2013

Should I Learn Google Dart As A First Language?: Swallowing The JavaScript Pill

Let’s get this out of the way. I’m an indecisive person. I’m the guy that’ll be in store looking at 2-10 different bottles of sunblock for an hour while one of my best friends is standing there with his hand freezing because he got a gallon of milk (thanks Kyle for always putting up with me!!!). All the while thinking this would have been much easier if I had only done the 2-4 weeks of research I usually do before buying a product (not joking).


Knowing the above, the world of programming is my own little level of Dante’s Inferno. So many choices from languages to frameworks. I went to a coding bootcamp and I took a very shallow dive into several languages, now it’s time to take a deep dive into a stack (frontend and backend). This came down to JavaScript, JavaScript/Python, or Google’s new language Dart.


It has been utter turmoil for me the past few weeks as I took a shallow look at these languages. The real decision was between JavaScript and its new competitor Dart. I’m a calculated risk type of guy and Dart is definitely a high risk / high reward scenario for Google, but what about the common man? This is where practicality wins out. I’m going to be learning JavaScript, for how long? Until I make something presentable for a project!! So months at least.


There are a lot of reasons to pick JavaScript over Dart, but the main reason for me, legacy code (ewww). Like it or not most of the web has some sort of JavaScript in it and it’s still worth learning now even as Ecmascript 6 is soon to be released, and all the frameworks that came out in the past few years are gaining traction. While learning Dart is something I still plan to do it isn’t worth being the first language I take a deep dive into because when I look for a position as a programmer I will most likely still need to deal with JavaScript code and it will be expected that I know it.

So for all the new programmers out there trying to make this decision I hope you found this helpful. I only stated one reason to learn JavaScript, but I think it’s the most important one when picking a first language. A language you will have to deal with anyways. Right now choosing to not learn JavaScript is like choosing to not learn HTML/CSS.

What Is Eloquent Code?

This post explains what is eloquent code to me and why. Note that I am still within my first year of learning to code when writing this so take it with a mountain of salt.

Before learning how to program I kept hearing about the concept of eloquent code.The word eloquent by itself vague so understandably it will mean different things to different people. Most commonly, it can mean readability, maintainability, pretty (aka syntactic sugar), well commented, efficiency (code that executes a function the fastest),  or having the least lines possible to run a program.

During my bootcamp the class had algorithms to solve and we would present our answers. This gave us a chance to see how each person thinks, represented by their code. When comparing my answers to others I noticed mine was simple and straightforward, maybe that’s because I’m simple minded. I have a tendency to minimize the amount of methods already available within the language, didn’t include regex (regular expressions), and didn’t get fancy with manipulating attributes, though I understand these are needed to complete certain tasks more efficiently (time to code and runtime).

My concept of eloquent code derives from understandability. It is as follows understandable->readable->well structured->maintainable.

  • Understandable code is:
    • Readable: A person should be able to look at the code and understand what is trying to be accomplished. Preferably, this is by reading the actual code instead of just the comments.
      • Well Structured: To obtain readability overtime the code base must be well organized. This means a person can find what they are looking for within a code base.
        • Maintainable: Because the code base is readable and well structured it is going to be more maintainable (updating/editing current code base).

Well, that wasn’t vague at all (/sarcasm). This is my general concept of eloquent code. What it means to be understandable and its derivatives will be up to each person and company to define. Just make sure to document so people don’t forget.

There are definite limitations to this concept. For instance, maintaining legacy code millions of lines long. This concept will only work when starting out or if the person/company have the ability to re-write the entire code base.

A friend once told me great code will look like only one person has written it, no matter how many people collaborated. There’s a lot of information in that one statement, and hopefully I unpacked it well in this post.

Sunday, October 13, 2013

Coding Dojo Review: Days 28 & 29 Matz and More

Got into the Matz meetup at Mozilla. Defintely a great experience for my first time. Here are some pics of the event.
How we know we're at Mozilla

Buffet table! 

Open Bar!

And of course me and Matz

There's going to be the Uncubed job fair next week and the Railsbridge workshop at Tapjoy on Saturday. 

Overall: Great end of the week and it's going to be the same this week as well =). Starting on Ruby tomorrow. 


Wednesday, October 9, 2013

Coding Dojo Review: Day 27 Version Control System / Git

Moving onto Git and using the terminal. Learning about Version Control Systems (VCS) is something that is becoming much more common. I remember sourcing for a position that required SVN (another VCS) and very few people listed it on their skill set, at least for Tool Developers. These systems saves all the changes made by people working on a project. Anywhere along the process the person in control of the project can revert back to a previous version.

I used to work out of Google Docs and shared network files and sometimes it just became a mess. A person would overwrite a file and we would lose everything, weeks, sometimes months worth of data. Dropbox also saves different versions of your files which is quite handy.

Overall: Feels like I'm making progress. Continuing to learn about Git after class. Few more days and I expect to start Ruby next Monday.

Tuesday, October 8, 2013

Rage Post: Wasted Time Debugging Nothing

OMG!!!! 4 hours of my life gone! Tried to figure out what was wrong with my database connection since nothing new showed up when inserting a new user. Hours later I see that deleting my current rows of data that I inserted manually revealed all the previous information.

Restarted MySQL Workbench, now everything works.

Nothing like spending 4 hours debugging something that wasn't broken. *sad panda* *angry panda* *sad panda* *sleepy panda*

- night folks

/rant

Coding Dojo Review: Day 25 and 26 Resumes and Landing Interviews

The past few days I have been helping some classmates with their resumes and LinkedIn profiles. If you want a breakdown of what should and should not be on your LinkedIn profile please go here: http://withdavidli.blogspot.com/2013/09/why-youre-not-showing-up-on-linkedin.html .

As a former Recruiter and Sourcer I viewed hundreds of resumes per day. And to be frank, most of them sucked. Listing a few of the reasons why they sucked:

  • Sections of experience, eduction, projects, and others were not placed in the conventional manner
  • Using words like "help" or "assisted" when they played a critical role on a project
  • Design / color
  • Lack of contact information
  • Photos and other personal information that were not related to the job
In addition to fixing some of these mistakes we also went over how to deal with agency recruiters, setting timelines for hiring process, and salary negotiations if you think you quoted too low of a salary in the initial phone screen. 


I'm happy to say that in less than 24 hours my classmate that posted his resume was contacted by 5 different recruiters and is already setting up interviews ranging from San Francisco to San Diego.

Overall: I'm always glad to be able to help and to see results this quickly really made my day.

Also, in the past 2 days I finished my Google Directions API assignment and started my advanced OOP. The OOP is giving me a bit of trouble, but onwards I go and hopefully starting on Version Control tomorrow.