Tuesday, February 21, 2017

How Google Thinks About Hiring, Management and Culture

Feb. 21, 2017

Introduction

Thanks for a comment from linkedin on Feb. 21, 2017:
Ben Lai
Read about how Google started out in Laszlo Bock's wonderful book on their unique culture, "Work Rules". In particular, if you are super patient in hiring only the best, then you will keep the bar very high and not settle. Take away as much bias as possible. Get many points of view. Use the same interview questions for all candidates. Be as transparent as you dare. Don't let individual managers make hiring decisions. Those are lessons from that book.

Book: work rules - insights from inside Google that will transform how you live and lead, 2015

Study of video:
21 minutes video, take down some notes:
First round, 21 minutes:
1. How manager plays role? What kind of trials failed, 500 engineer reports to 1 manager.
2. Hiring committee, maintain the bar vs hiring manager decision.
3. Deliberate concentrated practice, work on very small thing a time.
4. Book - fairness about compensation, 10 thousand to 2 million in stock option, wide distribution
Distributed - pay transparent, no one is happy.
Procedural adjustment - validate, test and make sure outcome is fair
Market value - adjust to keep them

Second round, 21 minutes:
1. Evaluate the hiring manager's power, take it away.
Bias -> 10 second rules -> trained psychologist vs college sophomore - > 20 minutes -> 10 minutes -> 10 second rules, confidence, agreeable, conscientious

2. Separate committee - hiring committee makes decision -> evidence, hiring objectively
Structure questions - screen problem solving ...

3. Don't make decision on one person's opinion

4. Get work done.
Manager may control everything vs peer review, take away as much power from the manager.
One time 500 engineers reports to one person.

5. Training people - tiger practices golf in the rain, came back in 3:00 am morning. Good chance to practice, deliberate concentrated training.

Learn best to work on a small thing.

6. GE -> Google, 6000 employee -> 55,000 employees.
Interview process takes a long time. Focus on people and culture.

Small signal you send out is very important. Healthy paranoid to lose the culture.

7. HR - Do not worry about hiring HR until you have 50 people or more.
How to manage and lead so many people?

8. Pay unfairly - power of laws distribution - business, law, and sports
Performance - athletes
Average people know the performance is observable, measurable.
Best people are way way better than average people.

10 times more for average person - 10 thousand vs 1 million
Be able to justify in your team. Transparent - no one is happy.
Procedural adjustment - validate, measure and test.

Based on job, not prior pay. No gender difference.

People will get it in the market.

3rd round:
Talk about deliberate concentrated practice:
Give two things, first one (?), one is feedback
Small things adds up to large thing <- argument? 

Every single year, compensation, 20% 30% more or 10 times more, exponential. 

How Laszlo Bock answered question very well? 

Avoid halo effect, hire same type people - 


Follow up 


Sept. 14, 2019
I did not feel so good since I had two onsites in 2019. I had one from Amazon Vancouver on August 15, 2019, Facebook on August 20, 2019. One onsite from Fortinet in June, 2019, one phone screen from Docusign on Sept. 12, 2019.

I like to learn how to understand myself as a candidate.

pluralsight.com - master Visual Studio 2012

Feb. 21, 2017

Plan to take the course: Master Visual Studio 2012.


Pluralsight.com - Provable Code

Feb. 21, 2017

Provable Code - Michael Perry, 5 hour 51m, plan to take the course.

Pluralsight: Code Contracts

Feb. 21, 2017

Plan to take the course - code contracts, John Sonmez, 1 hour 51 minutes.

Julia, please write something about the course. You should learn most from the teaching.

Monday, February 20, 2017

Pluralsight: Defensive coding in C#

Feb. 20, 2107

Introduction

It is a new year and Julia likes to build a good habit to follow pluralsight.com, learn one course a time. She noticed that she spent a lot of hours to solve a problem in the contest, but she does not have time to watch pluralsight.com courses. She needs to work on defensive coding in C# first, write down some notes.


Course Study


Hackerrank university code sprint #2 - Bronze medal

Feb. 20, 2017

Julia was so happy to know that she got a bronze medal for her most favorite codesprint - university codesprint. She scored 50, spent more than 15 hours, compared to highest rank scoring 100%, score 430, in less than 3 hours, she has a long way to go. But she knew that how hard she has to work on, to make that extra 30 points, her last university codesprint was 20 points, because she spent over 10 hours to work on hard algorithm array construction, ended up scoring 0 on the algorithm.

The university codesprint is by far most challenge codesprint one.

She did look up ranking in Canada, and tried to learn through leaderboard, she ranks at 38, and also she found a good article to read from Bai Li, ranking , score 179.80, 245/6591.

Read his blog about competition programming to talk about rankings.

Study other players, and try to figure out how they got so advanced skills in competitive programming. 


Bai Li - HackerRank
How to succeed in your intern?
Erick Lin - How does an undergraduate do?

Hieu Le

Corey Chen

Marek Cygan
Abu Naser Bikas

competitive programming blog

Sunday, February 19, 2017

Lakshmi Mittal's Top 10 Rules For success

Feb. 19, 2017

Read chinese article about Lakshmi Mittal first. And watch the video of Top 10 rules for success.

1. Knowledge is the key

2. Take bold decisions

3. Be responsible

4. Don't set high goals

5. Seize the opportunities

6. Prove your critics wrong

7. Don't lose focus

8. Get experience

9. Lead by example

10. Do things differently


Azim Premji's Top 10 ruls for success

Feb. 19, 2017

Read the chinese article about Azim Premji. Watch the video and take down notes about top 10 ruls for success.

1. Find your purpose

2. Fail as fast as you can

3. Cherish your strengths

4. Be persisten

5. Get ideas from customers

6. Earn your rewards

7. Deal with disagreements

8. Disrupt your industry

9. Practice
Integrity is practice. Innovation is practice. Keep them simple as possible.

10. Start small

Michelle Obama's Top 10 Rules For Success

Feb. 19, 2017

Introduction
Julia spent hours to listen the talk 21 minutes a time, again and again. She likes the first rule, keep moving forward.


Here is the video link.

10 rules

1. Keep moving forward
Some of them are homeless. Live month by month, day and day, meal by meal. You should not be ashamed your struggle.

When I worked as dean of college, kids with rich family some of them got their first poor grade. Falling short, life will put a lot of obstacles in your life. You experience loss and many more, you already develop resilience, keep moving forward.

2. Be authentic

3. Work hard

4. Don't be afraid to fail
We all here, some of people helped us.

5. Choose your own path

6. Earn success
How hard you work is more than what you make.

7. Take your role seriously

8. Enjoy the balance

9. Do what is hard

10. Have fun


Hackerrank Game of Two Stacks - in the contest

Feb. 19, 2017

Introduction



This is by far most challenge problem Julia has in last week, and she likes the difficult level of university codesprint. She understood that she should have more reasoning what she can do, after she made an effort to gain 10 points of maximum 30 points. 30% success rate tells that most of people did not push their analytical ability to the most, Julia could not believe that she can find optimal solution, but playing game is like a real life experience, define the rules, how to play against the rules to your best benefit. Play safe to get some points first, since Julia spent hours to debug the code for extreme test cases, then Julia ran short of time to think about the optimal solution.

In terms of growth mindset, how to grow from a 30% performance on first medium level today, in 3 months or 6 months, become a 60% or 100% performance on a first medium level? Recently, Julia did some study on this through sport performance coaching.

In the contest


Her C# submission only made 30% of maximum score, but she spent hours to make it best, learned the importance to avoid complicate code.

Feb. 20, 2017
->
Search Canada ranking board on university codesprint #2, go over one by one in Canada, Julia ranks at 38.
->
Find Bai Li, ranking , score 179.80, 245/6591
->
Read his blog about competition programming to talk about rankings. The link is here for the talk about competitive programming.

Hackerrank the story of tree - in contest

Feb. 19, 2017

Introduction 
Julia spent over a few hours to work on the algorithm - the story of tree, she really learned an important lesson about understanding a graph. She had fun to play with code, after a few hours, she scored points of 6, and then she continued to work on, scored up to 12 of maximum 50.

It is a struggle to push herself to think about the timeout issue, where to find the breakthrough to solve the timeout? Julia knew that the algorithm with a medium level should not be complicate, she enjoyed her struggle through early in the morning.

The algorithm is the second medium level one in university codesprint #2 on hackerrank. The contest is Julia's most favorite one, she still remembered the lesson she learned last year. It is hard and she remembered the pain as a programmer but she did better this time.

In the contest

Here is the C# code she submitted, the last submission over 10 of them in the contest. She continued to work on issues, through a few hours work after she scored points 6, she learned the important lesson how to make code simple, more simple, therefore, she can try some new idea.

What she missed is the time complexity of algorithm.

Julia got familiar with graph implementation, she knew that graph can be in any form, maybe, she does not have time to define node, edges, all she has time to make a list of hashtables. But it is a graph she likes to write for herself.

Saturday, February 18, 2017

Hackerrank university code sprint - in the contest

Feb. 18, 2017

Julia spent the whole day starting from 10:00 am to work on Hackerrank university code sprint, here is the summary so far 8:34pm, compared to best performer in the world.

She likes to look at the chart, and tell herself that every algorithm someone works hard and can perform in less than 30 minutes. In other words, do not write too much code, avoid complicated code.

3:58am, Feb. 19, 2016

Falling sleep, last minute to try to get more points on the algorithm - The story of a tree.

Let us review the progress so far.


Comparison shows that the google employee completed the algorithm "The Story of a Tree" 20 minutes, starting from 655:29 to 675:22. And it took him 9 minutes to work on "Game of Two Stacks".

Try to avoid complicated code. Last 10 minutes to go over the algorithm again.





Thursday, February 16, 2017

Leetcode 317: Shortest distance from all buildings (Part 4)

Feb. 16, 2017

Introduction

Julia was trying to find a good one to ask code review on stackexchange.com, and the she noticed that her blog is coming to a landmark 100,000 views. So, she likes to celebrate her hard work, she saw one of visitor was from search result using keyword: Leetcode 317 in last 7 days. So, the user of the blog solved her problem - find a nice algorithm to review. She worked on the algorithm before, she did twice. 

Her first practice is more than 12 months, she reviewed the blog in January 2016. In May 11, 2016, she practised again the algorithm. Her practice code is here. Through her practice, she likes to track her progress. She likes to say just so so, coding is like tennis sport, she has to learn from best - Roger Federer.

Workout

Julia likes to rewrite the C# code based on last practice in January, 2016. And here are the highlights of change.

To challenge herself, she designed several classes to track intermediate result, for example, empty land and building distance, building key and empty land position should also be recorded, so she can test the API first.

Because there is no concern about timeout or space limitation, Julia likes to design a few APIs, and also learn how to write code to follow S.O.L.I.D. principles.

In C# code, function WalkFromBuildingBFS is set as public API, and also a test case is added. Make sure that BFS search algorithm is working fine.

Here is the C# practice ready for review. Here is the code review link. 

Read some posts about SOLID principles on stackoverflow.com first.

Feb. 17, 2017 10:15pm 
Read the post about SOLID principles, the link is here.

Feb. 18, 2017 11:05am 
1. Update the question of Leetcode 317 to make it more instructional - the breadth first search, including some research I did on community challenge. 

2. Study the community challenge question code review, Rainfall challenge.
     Study Java code implementation first, and then write a C# one to ask for review.


Feb. 20, 2017
Read leetcode solution discussion, one of discussion is to expedite the search, great idea I read first time:
I also tested the other three C++ solutions posted so far, they took 340-1812 ms. I think mine is faster because I don't use a fresh "visited" for each BFS. Instead, I walk only onto the cells that were reachable from all previous buildings. From the first building I only walk onto cells where grid is 0, and make them -1. From the second building I only walk onto cells where grid is -1, and I make them -2. And so on.



Winning ugly - Brad Gilbert

Feb. 16, 2017

Watch the video twice, one hour video.

Winning ugly, talks at Google.

Another 30 minutes chat, nice interview to watch.

Coaching videos:
Tennis baseline strategy with coach Brad Gilbert.

Wednesday, February 15, 2017

Pluralsight: object-oriented programming

Feb. 15, 2017

Introduction
Julia subscribed pluralsight courses over 24 months. She did spend a lot of time to learn a few courses the first few months. And then, she stopped to watch any course, focused on the other priorities.

Now, she likes to spend 30 minutes a time in the evening on pluralsight.com.

Compared to read on wechat every day, she should work on more pluralsight.com every day instead.

Study

Write down some notes, and build a good habit to study some course. It is different learning style to watch pluralsight.com courses. 

Learning path:  pluralsight courses 
______________________________________________________________
Defensive coding in C#
____________________
Clean code: writing code for humans
_______________________________
C# interface
___________________________________
Dependency Injection On-Ramp
_______________________________________
SOLID principles of object-oriented design
Design patterns On-Ramp
_______________________________________________
Design Patterns
________________________________________________________

Actionable Items:

Conduct some analysis last 24 months study on pluralsight.com, and write down something to improve.




Monday, February 13, 2017

Leetcode blog study

Feb. 13, 2017

Plan to spend time to read Leetcode problems sloving blog, https://anothercasualcoder.blogspot.ca/

One algorithm a time.

Sunday, February 12, 2017

How to spot A-player?

Feb. 12, 2017

Do some study on the topic, how to spot A-player?

Another article also is related to the topic very well, using structure interview.

This one talks more in detail, 7 questions:
  1. Have they been promoted at least once in a previous role?
  2. Have they had to lead a big project in a previous role? How did they handle it?
  3. Is this the same role as a previous job or is it somewhat/completely different?
  4. Can they speak about your company and tell you what they like and what they might change?
  5. Are they confident without being cocky?
  6. Are they committed to continual learning? Can they prove it?
  7. How would you rate the quality and quantity of questions they ask YOU during the interview?A-players care about the team they'll be on, their manager and where you want to take your company moving forward. 

Microsoft social research - FUSE lab

Feb. 12, 2017

Duncan Watts - Microsoft principal researcher. 

Lili Cheng - The sociable researcher in Microsoft. 

Keynote: Building a Social-Search Engine From Scratch, one hour video. 

Read a blog on the site: fuse.microsoft.com

Justin Cranshaw,  a Ph.D. graduate, researcher.

One hour talk - The livehoods project: Utilizing Social Media to Understand the Dynamics of a City.

How does Julia choose to study the topic?
Julia worked on stackoverflow.com code review ->
She checked her performance and found some one working in Google ->
Linkedin profile shows course social network ->
Study social network course ->
One of Microsoft principle researcher gave a talk in the lecture ->
Microsoft lili cheng - FUSE lab ->
continue

A giver or taker - a small research and study

Feb. 12, 2017

Julia likes to do some research and study, she came cross this article through linkedin connections:
Interview question, who are 4 people you are helping them to succeed?

and then, she watched the talk - Adam Grant: Are you a giver or a taker?


Adam Grant - http://www.adamgrant.net/

Hackerrank RookieRank 2 - KnightL on a chessboard

Feb. 12, 2017

Problem statement

Julia spent close to 3 hours in the contest and then scored maximum score. Here is her C# code.

She likes to post a code review on stackexchange.com, since she spent over 2 hours in writing, she still has a big room to improve her performance.




Udemy - Failure & Success Are Just An Illusion

Feb. 12, 2017

Plan to take the course on Udemy.com.

Good teaching from Agassi, failure & success are just an illusion. The only reality is to choose what you do in every day life. Focus on today, and do not look at the past too much. From No. 1 in the world, thinking about achievement, fell behind 100 in the world. Either I decide to quit or go back to work, take ownership of my life. One thing I can do is to do better, control what I can control, my relentless spirit can do better. But I finally got back to the top, I felt more engaged.

Failure and success is an illusion. Wake up every day with goals and objectives. Take care what is front of us.

Watch 20 minutes talk - hall of fame 2011

Hackerrank RookieRank 2 - prefix neigbhors (II)

Feb. 12, 2017


After the contest, Julia likes to study a few of solutions in C#, Java and other languages.

Code study of submissions


C# code

C# code.

Have some difficulty to understand the algorithm behind Index.Add method. Need to figure out later. Add some test cases to C# code, debug and understand the code one line by one line.

Study a few things about C# coding style, pascal case, set, get, and then using GroupBy, OrderBy, Aggregate, Stack, HashSet, Dictionary.

Second Study 

C# code study II
C# code is here. 

Third Study 


Java implementation

Problems

The most readable code is here with trie implementation. Julia chose one solution from near 100 solutions, this one is easy to follow. Will rewrite the C# solution based on this Java implementation.

Actionable Items



1. Instead of studying other people's code, Julia decided to look into test case 11 and figured out why her submission failed the test case. 

2. Read editorial notes from hackerrank, understand the idea, google search them:

This problem can be solved using Trie and DP. Create a trie from the given set of strings. Find the prefix neighbor of each string. Now create a graph such that each string is a node and there exist a bidirectional edge between two nodes only if they are prefix neighbors. Now find the maximum weighted independent set.

Statistics
Difficulty: Medium
Time Complexity:

O(N*max_length_of_string)
Required Knowledge: Trie
Publish Date: Mar 25 2016


Read the wiki article - Independent set ( graph theory)
GeeksforGeek problem - Largest independent set problem. 

3. Julia did not know the importance of problem solving in the contest and after the contest from Feb. 11 - 13, 2017. She tried to understand the other people's submission after the contest, and she had difficult time. She needs to understand the algorithm first, just follows the notes: find the maximum weighted independent set

4. Spent over 2 hours to rewrite the C# code, and post
 a question on stackexchange.com.  

Problem solving - community help


Feb. 25, 2017 5:27pm

With the help from Peter Taylor through his code view, Julia learned so much about the problem solving skills. She answered code reviews one by one, and then felt so comfortable with the algorithm problem solving. The code review experience is top-rated performance. 

Share some comments here:

Advice #6, KISS, why? what is wrong to insert them all into one trie? This is a good question. I tried to use the above code, but use one trie instead of going through A to Z one by one, run the code on hackerrank, error from test case 6 to 19; And then, I tried not to sort by the length of string, error from test case 6 to 19. – Jianmin Chen Feb 15 at 5:06   

Very good review, I did spend over a few hours in the contest and also a few hours after the contest. I like the last review "KISS, why?" most, remind me 5 whys for root cause analysis. Bravo! – Jianmin Chen Feb 15 at 5:11  

Hackerrank RookieRank 2 - prefix neighbors (I)

Feb. 12, 2017

Problem statement

Julia spent a day to work on the algorithm in the contest, Feb. 11, 2017. She reviewed her previous practice on trie, and then solved the algorithm to gain 14 out of maximum 50 points.

Her C# code is to create a trie to go over all strings, and then set each string to an array with size 11. Since the string's length is less and equal to 11, go over each length from 11 to 1, and then add those nodes to selected subset, set prefix neighbor node to exclude.

Actionable Items:

In the contest, Feb. 11, 2017, Julia spent over 3 hours to study the algorithm, over 2 hours to work on her trie implementation C# code in Sept. 7, 2016, make it more readable.

And then, Julia also spent over 3 hours to work on C# code to solve prefix neighbor algorithm. This is the perfect practice Julia learned to solve. It is out of her comfortable zone, and then she started to think on her feet and figured out something working.

More concerns about time spent, Julia should spend time wisely.




Saturday, February 11, 2017

Hackerrank Rookierank 2 contest

Feb. 11, 2017

Introduction

Julia got excited. She still has 20 hours to go, and she only needs to work on last algorithm with medium level. She likes to document her practice starting from 12:42pm, how does she do to study, research, and catch up, and make some points from maximum 50 points.

Let us review what she has done so far, compared to the top 1 ranking player.


Some facts to share:
1. The last algorithm can be implemented in 20 minutes by the top performer.
2. The KnightL on a Chessboard is implemented by the top performer in 34 minutes; Compared to the best one, Julia spent 160 minutes.

Practice in the contest

Julia likes to work on the algorithm Prefix Neighbors, try to make things simple as possible. She started from 12:25, and then spent 3 hours to work on the algorithm.

Progress report 

12:25 - 3:22pm - Feb. 11, 2017

Discussion about sorting strings, radix sorting is a good idea to try. More detail, I think that string sorting is using radix sorting. The test case 4 A ABC AC ACD is sorted by 26 O(N), N <= 11.

Passed first 10 test cases

Worked on the coding from 7:00pm - 12:00pm, and then fixed bugs until 2:26am. Gave up. Learn a ton of patience, develop some skills. 

Here is the comparison: 




Coding is like tennis sport

Julia likes to work hard on the algorithm problem solving. So, she plans to take a break 1 - 2 hours first and then continue to work on the algorithm. 





Have 30 minutes workout to relax first, 90 minutes shopping trip. Saturday is the fun day. 

Try to remember the whole paragraph: 
frustrating sport, 
no way around the hard work, 
embrace it, 
put int the hours to improve somethings, 
a lot of sacrifice and effort, 
sometimes little reward, 
but you have to know that, if you put in the right effort, the reward will come. 

Wednesday, February 8, 2017

Code review - Leetcode 17: Letter combinations of a phone number

Feb. 8, 2017

Julia decided to review her previous practices, and then she rewrote the C# code to prepare code review on stackexchange.com. The question was reviewed in less than 8 hours.

The review is conducted by the C# expert.

Actionable Items:

1. Julia did not know C# StringBuilder.Length property can be used to modify the length of string. Read the document about the comparison with string.Length. Through code review, Julia learned the lesson.

Please go over all the properties and function of StringBuilder.

2. The review's highlights:

  Julia put together the C# code with code review's advice.

  1. Declare a class PhoneKeyboard
  2. Declare a public static readonly variable:
 private static readonly string[] keyboard = new string[] { "", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" };
3. Function name FindAllWordsForNumber
public static IEnumerable<string> FindAllWordsForNumber(string digits)

Coding is like a sport, you have to give yourself
chance to play against top players. Thanks for
the code review to show me the great strength
from one of top players.

- jianmin chen Feb. 11, 2017




Tuesday, February 7, 2017