After reading a medium post, I’ve decided to write down what I’ve learned since writing down thoughts always help me internalize them.
First off, don’t always follow what the book/community says is right. The society/human race progress forward didn’t not result from people following “industry best practices” but rather, the “ugly” move that is under deep calculation. Think about it as gradient descent problem in Machine Learning, sometime the ugly move might actually take you to a global maximum rather than the local maximum that everyone can get to.
Secondly, build a team that helps you achieve your goal and purposes. You can achieve anything, yes. But you are not so versatile that you can achieve everything. Build a team, get people that share your vision to help you move the wheel forward.
Thirdly, try to stay in the zone as much as possible. Mental strength works the same way as muscle, you will need to work it until failure and, maybe add on some drop sets in the end, to make it grow stronger. Try to get rid of distraction and just work on something for an extensive period of time, till you cannot stand it anymore.
Last but not least, NEVER THINK YOU’RE BEHIND. Just like sports games, close game that goes until last minute stimulate the players’ potential to its full. Make it a close game for you, and try to score that game winning three pointer. If you think you’re 20 points behind, you will lose your motivation to try harder. Make it a 2 point game.
Great to learn about two types of decision tree constructing process. I’ve made a summary in their respective characteristics for future reference.
- CHAID utilizes multiway spliting method which provides better segments and easier interpretations for large data set.
- CART only does binary splits so node size wouldn’t be thinned out too much.
- CHAID prevent overfits by spliting on when there’s a significance
- CART could overfit but it has pruning functions to trim some type 1 error
- CHAID: Significance when spliting
- Bonferonni Adjustment: Take alpha divided by # of test
- Draw back, if we are being to stingy tree might not grow at all
- CART cares about balance( size of left and right subnodes) and purity ( the value of nodes )
- Level of Measurement
- Nominal: sample size and significance
- Ordinal: Because of sample size, only allow in order combining
- Continuous: convert into deciles and combine similar nodes
- Nominal: all combination considered and best improvement in purety wins
- Ordinal: binary splits with order
- Continuous: try every single cut points – computational intensive
- Handling Missing Values:
- CART use surrogates to predict missing value. Take example from Titanic dataset, a woman with children will be likely over 4 year old.
Software development consists of four major parts: coding, testing, listening, and designing.
- Coding: It’s important to communicate with other programmers
- Testing: Unit test, Acceptance Test and System-wide integration testing all needed. Acceptance verifies program satisfy customer’s requirements.
- Listening: Talk to the business side and give feedback what might work and what might not.
- Designing: Good design comes a long way.
Values: communication, simplicity, feedback, and courage.
- Communication: both verbal and literal. Write good documentation to give all devs shared view of system.
- Simplicity: Write codes that is needed today. Add extra functionality later. YAGNI as in You aren’t gonna need it. Coding and designing for uncertain future requirement implies the risk of spending resources on something that might not be needed.
- Feedback: from system test, from customer and from the team.
- Courage: Courage enables developers to feel comfortable with refactoring their code when necessary.
Now that this chapter of life is over. I had my chance and I didn’t seize it tight enough. Nobody to blame but myself and in fact, I don’t even want to blame anybody( including myself). It is time to wake myself up and build something fantastic, to be good enough, to be somebody, to prove ( prove what? In this life time, you don’t have to prove to nobody but yourself)
Aight. Work time
After ceaselessly applying for jobs I finally got the chance for a phone interview with Facebook. Being very grateful of this opportunity, I also realize the limitation of my current skill level.
Glassdoor, LeetCode and Cracking the Coding Interview definitely help me a lot along the way but I am worried time is limited. I will just try my very best to cherish this opportunity with the limited amount of skills that I have right now.
Nobody started from knowing everything. It is all a learning process.
I have to say I am not there yet. After 12 hours of struggle I still couldn’t figure out a single thing. Building project is fun, if you can actually figure it out.
Still have the Facebook and Sunpower interview coming up. What should I do with all these drama.
Dude you have to try harder. Now go for a walk and come back full load going!