美国第一次买车经历

在Austin工作没有车是万万不行的。所以,不得已,买了辆2020年Corolla。以下是我买车的经历和一些心得体会。希望对下次买车有所帮助。

经历概述

我买车主要分两个阶段:看车和买车。看车阶段主要试驾了Nissan的Altima,Versa hatchback,Sentra SV;看了Honda的Civic(小插曲:去了First Texas Honda,他们告诉我没有保险不让试驾,所以直接就没有怎么考虑Honda了);以及试驾了丰田的Camry和Corolla。之前租车对chevrolet的Malibu印象不错:开起来稳重,70迈以上不发飘,但是加速较慢,从ramp上高速的时候尤其明显(需要猛踩油门),再加上Chevrolet的dealership离我住的地方比较远,想想就作罢了。最后我把考虑范围基本缩小到了尼桑和丰田这两个品牌上。试驾的时候Sentra内饰简陋,方向盘很重,所以作罢。后来又考虑到保值及品牌稳定性的关系,最终选择了丰田。再加上预算在2W之内,最后选择了北美四大神车之一的Corolla。

买车阶段我主要参考的就是

其实主要就是邮件询价,然后拿一个dealer的邮件去compete另一个dealer。我当时直接是去每个dealer的官网打开网页chat,然后管他们要Corolla 2020的OTD。主要参考的就是上面Reddit链接中的Chapter VI。其实在邮件砍价的过程中有的dealer会要别的dealer的邮件证明,证明确实有dealer给我开到过那个价格。有的dealer会吹毛求疵说必须要看到sales consultant开的purchasing order而不是sales manager的。我觉得这些都是套路,坚持的底线就是不看到满意的OTD是不下场过去进入买车环节的。但是我也被Charles Maund Toyota这个车行套路了。跟我聊的是19K OTD并且可以付现金。但是到了之后,却又跟我说是做Finance。最后我选择的是Round Rock Toyota。主要理由其实就是那边的人挺痛快:说好OTD,然后第二天开出了签名的purchasing order。

经验

  • 丰田的dealer的惯用套路就是看你试驾后,不由分说就开始让你录入个人信息,急着让你购买。但是请注意个人信息保密条款只有在买车之后才会签署。也就是说,如果你不买车但又把自己个人信息交代了的话,dealer很有可能直接转手就把你的信息卖掉了。我这次买车就有这部分的担心。所以在试完驾后一定要斩钉截铁的高速dealer我就是来试车不买车,然后直接走。
  • 询价阶段一定要但注册一个邮箱,用自己的英文名去讲价,尽量避免自己个人信息暴露。我是每个model对应一个邮箱,用不同的名字去讲价。
  • 我买车的时候我没有用到graduate rebate。其实rebate感觉车行不会都用,因为他们会在MSRP上面给你减一定钱数,然后谎称这里已经包含了rebate。我当时买完车,然后找他们说要能不能再给我一个graduate rebate。之前讲价虽然从未提及我毕业生的身份,但他们还是说已经给我算了,并管我要我的毕业证,想自己吃掉这部分rebate。我就已毕业证还未寄到搪塞过去了。
  • 交车的时候不要着急,多想想要问的问题。我走的时候就没有问清保养的问题。
  • 买车的时候要auto insurance。我就直接去网上把主要insurance company按照固定的plan去quote了一下价格,做了下apple-to-apple comparison。还是会有惊喜的。之前做好功课,在dealer那里他会提供联系方式来卖保险,拒绝掉即可。

以上只是我的一些小总结,肯定会有很多不足之处,下次再来补充。

08/04/19 Update: 我在买车的时候一部分走的是和丰田做finance。一个原因没有选Charles Maund Toyota是他们要求全部OTD走finance,但是他们说我可以在走Finance后立刻付清全款。当时我对立刻付清全款有些疑虑:不知道是不是存在closing cost即如果没有把贷款维持一定天数就连本带息全部付清的话,会有额外成本。我6月20几号买的车然后7月2号付清的贷款,最后其实是没有我之前担心的额外cost的。也就是说只要Toyota Financial那边把账户创建,就可以立刻付清全部贷款,没有任何额外cost。但是值得注意的是创建账户需要几个工作日(5天左右),如果想要网上付清贷款的话,需要account number才能在丰田网上创建账户。通常account number是写在monthly bill上的,但是等账单寄到就又会花上好几天。因此,想要快速拿到account number的话可以直接给丰田打电话,然后报上VIN,然后他们会通过电话直接告诉你的account number。

另外我是08/03/19去上车牌的,那个周二接到的电话说车牌到了,直接去车行他们直接把车牌给我,然后免费帮我装上。

Advertisements

My critical mistakes in Academia and reflections

This post is a summary and reflection of the critical mistakes I have made throughout my post-secondary academia career. This is a gift for my child (if there is one) and it might be helpful for others.

Diverse interests without focus

I have three majors from economics, computer science, and mathematics after I finish my undergraduate degree. I often get wowed from other people. However, the more I focus on one field, the more I feel three majors are diversified enough to have no focus. Even I have a major in computer science, I didn’t take courses in computer architecture, operating systems, networks, compilers, which are essential courses for a computer science major. I have to take hard way to catch up with those missing material: reading classics. This process takes a long time and I’m still on my way finish studying them. If I have an end goal of becoming a computer scientist, there certainly no need to obtain a major in economics and I should become more focus on the mathematical branch related to topology, combinatorics, and logic. Taking extra unnecessary courses may not be the only waste. Lacking of background incurs extra cost during the PhD and job applications. Even though I manage to secure a position in industry, I still need lots of work to catch up.

Doesn’t know the end goal

Even though I have foreshadowed this point in the previous paragraph, I want to emphasize how important it is to know the end goal. Ideally, people should discover their interests from high school. However, start the exploration in college is not too late. But, the exploration should end after freshman so that there is enough time to become specialized and concentrate on something. Knowing the end goal cannot happen immediately but at least, it should happen by Junior. During the college, I hopped around three majors with no common theme at all: what I want to do for my future? I avoid to answer this question by taking the majors that may seem to offer the greatest flexibility in the future. However, the cost of doing so is the lack of depth. In addition, I didn’t know what I want to do for the computer science career: research or software engineer? That leads to one huge mistake detailed in “Failure in seizing ‘the’ opportunity” section. Knowing the end goal is very very important and the book “The 7 habits of Highly Effective People” should help.

Doesn’t engage in research with long term vision early

People often emphasize how important to get involved with research in college mainly because research is a critical component of higher education. I certainly did but my mistake is that I’m involving in research in ad-hoc way: I did research in math, in psychology, and in statistics without a common theme that connects them all together. In math, I did research in probability; in psychology, I did research in early childhood education; in statistics, I did research in fMRI. Those research experience is helpful only in the sense that they help me to discover what I don’t like. I always admire the people who can discover their interests early: there are lots of options; how can one settle on one without trying out others first? That’s my unresolved question. Technically speaking, I don’t think this section should be considered as a mistake but certainly, it is something that incurs lots of detours in my short-lived academia career.

Failure in seizing “the” opportunity

I started to compose this post when I was on the spring break trip in Alaska. I ran into a group of people who were from my undergraduate institution – University of Wisconsin-Madison. I had a brief chat with them. One question I asked one of them who happened to be a CS major was: does Wisconsin start to set bar for people who want to declare CS major? “No! Everyone can do it! That’s the amazing part of Wisconsin: the university gives everyone opportunities to try!” She answered. “I know a friend who transferred to Wisconsin from University of Washington to study CS because he cannot study CS at UW. Students in UW can study CS only when they are admitted to CS directly from high school.” Her replies don’t surprise: that’s the same impression I have about Wisconsin. However, her answer stirs a huge pain in my heart. I suddenly have guts to admit a huge mistake I have made during my first year study at UT-Austin.

I’m unsure about what to do with summer: whether I want to go to a research lab to prepare my PhD application or finding an internship in industry. As you can see, here I have the mistake of not knowing my end goal: I’m not sure whether I want to pursue a career in research or in software engineering. I contacted one of my former professors in Wisconsin and he was kind enough to offer me a position in his lab over the summer. He is a famous researcher and people are dying to work with him. But, guess you already know, I blow up the chance and work on a software engineering internship over the summer. Of course, the professor is unhappy but he is kind enough to not saying that explicitly. In the following Fall, I applied for PhD programs and I asked him for a letter. Without big surprise, I got rejected by all the programs including the school the professor is in. After learning the admission results, I keep lying to myself about all the drawbacks of attending a PhD program and I constantly have debate in my heart about whether I have made a good decision for the summer. After talking with the girl from my school during the trip, I suddenly realized that how upset I am in my heart and how I keep avoiding facing the fact that I have made a huge mistake and blow up “the” opportunity. I couldn’t help to imagine that if everything works out over the summer, I may already have the admission from his lab to have the privilege to study for PhD program. Of course, in real life, there is no “if”. Failure in seizing “the” opportunity can be treated as a pivot point in my life. A person’s life might be settled after a few pivotal decisions. I think I just made a mistake in one of them.

The only takeaway: Never ever give up your interest

I write the following in Chinese to my parents:

如果有孩子 我一定教育他不要因为钱和客观因素就轻易放弃梦想 因为放弃梦想的感觉真的很难受 即使最后你没有钱 但是你至少知道你为了梦想努力过 那种踏实的感觉是用钱买不回来的

Basically, it says that there is no such thing has higher worth than one’s dream. After getting rejected by all PhD programs, I know that getting an internship in industry over the summer signifies my give-up my interests in becoming a researcher for the money. I didn’t upset at the very beginning but the more I think about, the more I think I should stick with my interests no matter how poor or how old I am. Now, I’m in a situation about I should hog onto something that is not my interest: money in this case. I’m not sure eventually, I can have a way to switch back to my dream but I know it’s going to be a long and hard way

2018 End-year Recap

前言

过去的Recap:

2018回顾

转眼已经走过了2018。首先还是来回顾一下2018年写下的目标:

向下扎根,向上结果

找到实习或者署研

有学校可上

减重到70kg,体脂比在15% (监督链接: Daily Weight Statistics)

每周坚持锻炼至少3次,每次时长30分钟 (监督链接: Insanity Max 30 (2018))

一年读10本书 (监督链接: Goodreads 2018 Challenge)

每天刷2道leetcode  (监督链接: 刷题进度表)

在美国找到工作

完成的有 “找到实习或者署研”, “每周坚持锻炼至少3次, 每次时长30分钟”,“在美国找到工作”。 “向下扎根,向上结果” 并没有完成的很好。现在看看当时写下的文字 “18年希望内心得刚强” 现在看来是缺乏具体的行动计划的。最近在看的一本书“The 7 Habits of Highly Effective People” 给完成这个目标给出了一些具体的行动方案。“刚强”其实就是要有principles,不受外部条件变化和影响的principle。而principle,用书中的比喻来说就是要建立自己的personal constitution。要建立自己的personal constitution最简单的做法就是想象在葬礼上你想让别人怎样去评价你。这个会做为2019年的一个工作重点。减重还是没有很好的完成。今天量过的体重还是73公斤。最近从母亲那里学到了一些她的技巧,正在实践,不知道2019年的时候能否把这个工作项目从清单上消去。关于读书,说来真是惭愧的一年。在岁末的时候我才突然意识到我还没有完整的读完一本书。这真是让我震惊而又羞愧。“有学校可上”和“在美国找到工作”是冲突的,两者不可得兼。真正的是要去发现自己想要做什么。到现在其实还是很迷茫。虽然我对金钱没有那么渴望,但是人在外边,有一些金钱储备还是要踏实很多。我想我最后还是不会去继续读PhD了,但是剩下的面试还是准备全力以赴。最后就是关于刷题了。现在看看这个是一个长期的工作:每年都要做。去年目标不好的一点就是非常激进的规定了每天要做两道题。其实这个非常不好,并没有考虑到实际的条件(读书节奏快,事情多),高估了自己的精力。

2019展望

首先还是要确立自己的personal constitution。这点比任何事情都重要。如果方向错了,任何的努力都是白费。

健康方面要更加注意。保持锻炼并且要调整作息。11点前还是要睡觉,做到早睡早起。还有一点就是要注意用眼卫生。不能过度用眼了,每隔45分钟还是要从电脑屏幕前走看,活动活动,休息休息眼睛。体重上这次目标变成了65公斤。

精神方面就是要多读书。要更加侧重读一些书,一些植根于中国传统文化当中的书。比如说孟子。今天看Youtube视频中突然提到了孟子的一句“由是則生而有不用也,由是則可以辟患而有不為也,是故所欲有甚於生者,所惡有甚於死者。” 觉得此句甚好,讲出了什么才是“大丈夫”的气节。故上网去查了一下。愕然发现这句出自上学时候背过的“鱼我所欲也”。通读了一下全篇。不由得发现自己对古文感到了如此的生疏。顿时惆怅了起来。在现在这个社会,粗俗扭曲的词汇不断出现,如何在这个环境下去刻意的维护自己的语言体系,去做一名儒士:说话写字有雅风,表达情感准确,不会觉得词穷。我觉得读古文是非常重要的一点。对于这点我是想2019年着重培养的习惯。

事业上,我想最重要的还是保持好奇心。刷题还是要继续,2019年刷200道题。另外,还是至少要做一个significant的side project。技术博客还是要继续保持更新。最低目标就是更新10篇。

为人上,2019年想要做到的是generous。时时觉得自己是一个self-centric和money-centric的人。多giving,给予需要帮助的人更多支持,尽自己的所能。不被一些细节上的亏损所左右。做好个人理财,但同时也不要被金钱所捆绑。

最后的最后,还是希望家人能够平安喜乐。希望能让他们看到我的变化。

结语

2019年是一个全新的一年。今年我打算做一个全新的尝试,我会把上面的目标贴到一个draft里,在年中的时候实时更新,然后在2019年末给贴出来。希望2019年自己能有一个全新的提升,慢慢的变成一个儒士:平和而又有雅风。

 

End Semester Recap

I just finished all the exam and papers today. It has been a long day (wake up at 6) and I feel very exhausted. However, I want to do a quick recap of this semester before my judgment affected by my final grades.

Courses

CS 380D Distributed System

My first exam is a disaster. The exam is all about system design + understanding of RAFT. I didn’t get used to the system design in general. All I do is to remember every detail of some system implementations, which usually don’t matter from a design perspective. Vijay has been emphasized this point a lot but I didn’t get it until the second half of the course. The course is good and the biggest takeaway for me is two:

  • Can comfortably read distributed system paper. I cannot claim I can read all types of system paper but for distributed system paper, I begin to get the momentum and start to know where to focus on during the reading. Takes a lot of struggling to get this point but I’m happy overall after reading more than 30 papers.
  • Got intrigued by the distributed system and storage system. In the past, I have been struggling to find my research interests.  But, thanks to this course, I become more intrigued with the combination of distributed system and storage. Right now, I like storage more. I read tons of LSM-based storage paper to find a topic for my final course project. I really enjoy the moment to read LevelDB and PebblesDB’s code and enhance them in some way. That further makes me want to know more about SSDs and HDDs.

CS 388 Natural Language Processing

I trade this course with algorithm class. I have a mixed feeling right now. On one hand, unlike the NLP course that I take in the previous semester, which looks at NLP from models perspectives (HMM, CRF, different networks). this semester’s course is from more traditional linguistics + machine learning perspectives. I really like this part. Overall, I strongly believe linguistics domain knowledge should play the key role in NLP study not various deep learning manic.  First two homework, we look at language models and LSTM based on the intuition of prediction can be two ways. I really like Mooney’s view that you always think about intuition whether the model can work or not instead of mindlessly applying models.  Like last semester’s NLP class, my interests with class declines as the semester progresses partly due to the fact that the material is no longer relevant for homework and exam. That is my bad.

The final project is on VQA, which mostly done by my partner. I only gather the literature and survey the field plus some proofreading. I’m OK with that as I want to have more time working on my system project and my partner wants to work alone in the modeling.  This leads to my lesson learned from the class:

  • Graduate school is about research, not class. Pick the easiest courses and buy yourself time to work on the research problem that attracts you.

If I look back right now, I want to take algorithm class instead. My thoughts to NLP is that I want to start from the dumbass baseline and know the history of the field. If you think about NLP, the most basic technique is just regular expression pattern matching. But, how do we go from there to more complex statistical models is the most interesting point I want to learn.

LIN380M Semantics I

The course is taught by Hans Kamp, which I believe invents the Discourse Representation Theory (DRS). Really nice man. I learn the predicate logic, typed lambda calculus, Montague grammar and DRS. Very good course for the logic-based approach to derive the semantic meaning of a sentence. However, I do feel people in this field put a lot of efforts in handling rule-based exceptions like how do we handle type clash in Montague grammar. When I turn in the final exam, Hans is reading some research paper. He is still doing research and that inspires me a lot.

Other Lesson Learned

  • “Don’t be afraid to fail, be afraid not to try”. I learn a lot from my final system project partner. Reading complex code can be daunting but we can always start to play around even when we cannot understand the code fully. There is a great deal of psychological barrier to be overcome. My partner always starts with reading and then writing. Once bug happens, he is happy because the bug is an indicator of progress, which eventually leads to working code.
  • Work independently. When I got stuck for a while, I always want to seek help instead of counting on myself to solve the problem. It seems that I can never trust myself ability to solve the problem. By observing how my project partner solves the problem, I learn a lot. Start to trying and always seek for the root cause of the problem and situation changes as long as you start trying.
  • Some tips about system paper writing:
    • Use hatch on the bar graph. People may print out their paper in black and white. Use hatches on the bar graph help them to distinguish which bar is your system and which bar is the baseline system.
    • Add more descriptions to each figure and table below. I used to think that there should be only one line of description for each picture. But, as pointed out by my another project partner, people need instructions when read the graphs. People love the pictures and they hate to go to the paragraphs to search for the instructions to understand the graph. Thus, put instructions directly below the picture. Great insight!
  • I really want to know how to measure a system accurately.  From my system project, I realize that measuring the system performance is really hard. Numbers fluctuate crazily and you have no clue why is that because there are some many layers of abstraction  & factors in the experiment environment that can potentially impact the system measurement. I really want to know more about this area during my own study and summer internship.
  • System improvement without provable theoretical guarantees will be very unlikely successful. Overhead or the constant factor hidden in the big-O model usually dominate the actual improvement you might think you can get. For example, there are overhead in spawning threads. We need to compare how much we can get by having multiple threads running in parallel to do the subtask vs. having one single thread do the whole thing. PebblesDB’s paper on the guard and improvement to compaction ultimately prove that we really need to think more before getting our hands dirty. By reading the paper, I get the feeling that they know the system will work before even implementing one because they can clearly show that their functionality works before writing a single line of code. I need to develop more sense about this and taking more theory class.

 

Ok. Time to pack and catch the flight.

On Reading CS Papers – Thoughts & Reflections

Be forewarned:

  • This is not an advice post. There are tons of people out there who desperately want to give people advice on reading papers. Read theirs, please.
  • This post is a continuous reflection on the topic “how to read a CS paper” from my personal practice. I will list out my academic status before each point so that it may be interesting to myself on how my view on the matter has changed as time goes forward.

2018

The first year of my CS master program. Just get started on CS research.

  • It’s OK to not like a paper

In my first semester, I majorly read papers on Human Computation and Crowdsourcing.  Very occasionally, I read papers on NLP. Some papers on NLP are from extra readings in Greg’s course. Some are related to Greg’s final project, which deals with both code and language.  I don’t really like and want to read papers back then. In NLP class, I prefer to read textbooks (Jufrasky’s one) and tutorial posts that I can find online. One roadblock for me to read papers is that there is certain background knowledge gap I need to fill and I just simply don’t know how to read a paper. So, for Greg’s NLP course, I only read some papers related to my final project. This paper is the base paper for my final project. I got this paper from professors in linguistics and software engineering and they want me to try out the same idea but using neural network model instead. I read this paper several times and the more I read, the more I want to throw up.  I just think this paper hides many critical implementation details and the score 95% is just too high for me to believe. The authors open source their code but their code has some nasty maven dependencies, which won’t compile under my environment. Their evaluation metric is non-standard in NLP and many “junk words” wrap around their results. Of course, the result of my experiment is quite negative.  I often think it is just a waste of life to spend your precious time on some paper you dislike.  Here, I’m more of talking about paper writing style and the reproducibility of papers’ results. I probably want to count shunning from some background gap as a legitime reason not like a paper.

  • Try to get most of the paper and go from there

I got this message from Matt’s Crowdsourcing class. In the class, I have read a very mathematical heavy paper, which invokes some combinations of PGM and variational inference on the credibility of fake news. I’m worried back then about how should I approach a paper like this one, which I’m extremely lack of background and mathematics formula looks daunting.  I pose my doubts on Canvas and Matt responds in class and gives the message.  I think the message really gives me some courage on continuing read papers.

  • It’s OK to skip (most) parts of a paper.  Remember: paper is not a textbook!

This semester I’m taking a distributed system class. To be honest, distributed system paper can be extremely boring if they are from industry. Even worse, system paper can be quite long: usually around 15 pages, double column. So, if I read every word from beginning to end, I’ll be super tired and the goal is not feasible for a four-paper-per-week class. So, I have to skip. Some papers are quite useful maybe just for one or two paragraphs. Some papers are useful maybe just because of one figure. As long as your expectation about a paper gets met, you can stop wherever you want.

  • Multiple views of reading a paper

I didn’t get the point until very recently. I did quite terrible on the first midterm of my distributed system class. The exam is about how to design a system to meet a certain requirement. In the first half of the course, I focus on the knowledge part presented by the paper but that doesn’t work out well. Until then, I realize that I need to read those systems paper from a system design point of view: what problems they need to solve, what challenges they have, how they solve the challenges.  OF course, those papers are valuable from knowledge perspective: how consistent hashing works, for example. But, depends on the goal of reading paper, I can prioritize different angles of reading a paper. If I need to implement the system mentioned in the paper, I probably need to switch to a different paper reading style.

  • Get every bit of details of paper if you need to

It’s time again for the final course projects. Again, I need to generate some ideas and find some baseline papers. In this case, “skip parts” and “get most out of the paper and move on” strategy probably won’t work well. All in all, I need to understand the paper and those are rely on the details from the paper. In this case, I need to sit through the whole journey and remove any blockers that I may encounter.

Job hunting lesson learned

This post contains a collection of lessons I learned during the job hunting. I’m still looking for internship & job. That’s good because that means this post will be at least frequently updated in the foreseeable future.

  1. Always attending career fairs. In UT, if you are a CS student with a good standing, you can get an invitation to an event called FOCS Career Night. There will be a lot of recruiters. But, be careful, most of the recruiters are actually engineers or UT students (that’s right, some companies make Campus Ambassador attend the event as if they are the recruiters). There is a huge difference between recruiters and engineers: recruiters get the call on who gets the interview, not engineers! I made a mistake by attending the FOCS Career Night only and skip the Career Fairs. In fact, recruiters are actually coming to Career Fairs and some of them doing on-campus interview signup immediately. The on-campus interview is much better than OA. Even you got an invitation for scheduling an interview after FOCS Career Night, you still want to talk to the company at Career Fairs because recruiters can barely check their emails when they are on travel and interview slots are always based on first come first serve policy. So, you always make sure to come to the Career Fairs and schedule an interview immediately instead of replying the invitation email and wait for the response and then got one said interview slots are all filled. This happens to me on Indeed.
  2. Always doing OA immediately. When you receive an OA, the company usually will tell you that you can finish the test within certain days. However, things can change rather quickly. Even they give you buffer like finishing this test within 4 days, ignore the message and do OA immediately. Slots can fill rather quickly and some company has this under-table rule on even they say 4 days, they really mean immediately. This happens to me on Dropbox.
  3. Always finishing OA within min(60 minutes, restricted time). Some company allows you to finish OA within days. In other words, even you start the test, you have a couple of days to finish it. Ignore this, please! Even though the test lasts for days, finish it as quick as you can. The finishing time is a strong indicator of your coding ability. This happens to me on Twitter.
  4. Always follow-up with the recruiter. Sometimes, there might be system error: they send reject email to the wrong person. Make sure you confirm this with the recruiter and finish your OA no matter what happens. Even you got rejected, OA is still an invaluable practice opportunity. This happens to me on Dropbox.
  5. Always make sure you apply in the University Recruiting section. Companies make specific web pages for fresh graduate and recent graduate. Make sure you submit your resume there. If you submit the resume to the wrong place, you may in a pool that is filled with professional with 5+ years of experience. That always leads to either no hear back at all or an immediately reject letter. This happens to me on Dropbox.
  6. Use the LinkedIn and be aggressive. I’m a shy person but job hunting like the name suggested, it’s a hunting. You have to be aggressive. Connect with as many people as you can whether it is from Career Fair, social events, LinkedIn in-mail. Be polite and be bold. Ask them for the opportunity. One special note is that you may want to “harass” recruiters and senior developers in LinkedIn. Their words have much more power and you may get an interview very quickly. If they being rude when you ask for the favor politely, you already know that this company is definitely not the one you want to work with. This happens to me on Teradata (BTW, they are on the polite side).
  7. Prepare for the technical interview questions:
    1. The interviewer may make some slight modification to the questions even they are from leetcode. For example, instead of asking what exactly the shortest path are in the original leetcode question, the interviewer may ask how many steps in the shortest path. The difference is the former one may expect a list of coordinates (i.e., steps) and the latter one may expect a simply a number. This happens to me on Pocket Gem. The takeaway is that when you solve leetcode questions, think about what possible variations might be. However, it may seem infeasible that you do it for every problem. You don’t have to unless you don’t have anything else to do. The next point will help to address this concern.
    2. Browse some recent interview questions from the company you are about to interview with from forum. This helps to address the previous concern. If you see the company interview some leetcode questions, you may want to look at that leetcode questions and think about the possible variations. Also, usually company has a pool of questions and get some prior exposure from a forum, you may have a good preparation already. Also, this point helps if you are very short of preparation time. In this case, you just prepare for the questions from the forum and you’re good to go. Sometimes, this works much better than a long-term preparation strategy, which you may feel over-prepared and feel a good chunk of time get wasted on leetcode when you can simply prepare the questions from the forum.
    3. Get practice on the leetcode. Usually, people emphasize the importance of getting practice on leetcode. That’s true. However, this depends on when you about to apply for the position. For recruiting new grads, some companies prefer to start early (e.g., in Fall) and others don’t (e.g. in Januarg till March). People always think they should start early as soon as possible to get a spot in the limited headcount. That’s true but this strategy usually comes with a risk: you’ll see new interview questions that no other has seen before. Each year, companies may update their pool of questions. If you think you can solve leetcode problem like “1+1” and have a solid preparation in system design, then start early A the AP is best strategy.  However, if you are in an OKish position in algorithm preparation and design preparation, then you may delay applying one or two weeks. The beauty of delay comes directly from previous point: you may get exposure to the pool of questions before the actual interview. How long to delay is a case-by-case situation. Some companies (e.g., Dropbox, Pocket Gem) will be quite active and send your OA almost immediately after your application and you may want on your side. However, some companies may have a long process to take before setting up any interviews, then you may want to apply ASAP and let the internal processing time takes its time.

Freedom of speech

Piazza is an online forum tool that is heavily used in the academia. It is used to help students ask questions and get feedback from both peers and instructors. It has a goal that is similar to Slack in the sense that they both try to cut the duplicate emails sent by several people for the same or similar type of request. It is a good tool but every tool that comes with power has its own consequence.

Instructors can perform the following configuration when they setup the forum for the course.

Screen Shot 2018-02-09 at 11.58.12 PM

Basically, this option means that when you make a post, whether you can choose to be “Anonymous” to both your peers and instructors or to your peers only (instructors can still see who makes the post).  The following picture shows what this option looks like from student’s perspective:

Screen Shot 2018-02-09 at 11.58.33 PM

The intention for this option I guess is that some students may feel embarrassed to ask questions. They might think their questions are dumb and will make them look bad in front of peers or instructors. I think this option is used as a way to encourage students to ask questions bravely.

However, this option may get abused. From my observation, Piazza is used as a way for instructors to show off their teaching quality. This is important for Assistant Professors because teaching still means something (if teaching quality doesn’t matter, why institution asks for the teaching statement at the very first place?). In addition, the teaching quality in some sense is an important indicator for students to evaluate you as a person. This is important for professors who are looking for graduate students because research publication is only part of the story and how those professors interact with students may be a crucial indicator to how good a professor as a human being is (evaluation may be a better indicator but it is confidential). Thus, if some potential students look at the piazza that his interested professor teaches gets a lot of complaints. The students may have a second thought on whether he should work with him for research (maybe he is a very bad person even he is doing a good research).

Thus, the instructors have a strong motivation to censor the posts on the piazza. This scares the students because they don’t have a secure way to provide feedback to the instructor. Let’s assume that the majority of students has a good heart: they won’t say bad stuff to the instructor who actually really cares about students. Thus, the time that something slightly negative appears on the Piazza may be a very important signal to the instructor that something wrong with his teaching. However, due to the strong motivation for instructors to show off their teaching quality through Piazza, the instructors may start to censor the speech on the Piazza by turning the option off.

I didn’t realize this thing last semester. Last semester, the instructor from one course sets this option off and I was thinking maybe he wants to know the students who are shy to ask questions and provide some individual attention. However, this semester, the instructor from one of my course initially turn the option on so that everyone can truly ask questions as “Anonymous”. Then, until one day, someone makes the below post and the option is turned off. Now, no students dare to make slightly negative posts.

Screen Shot 2018-02-10 at 12.28.57 AM

 

I fully understand the interests conflict between students and instructors on the use of Piazza: students may think Piazza is a secure way to provide anonymous feedback while instructor may think bad posts on the forum make them look bad. However, I still think there should be a better way to address this conflict to protect both students and instructors especially with the technology we have nowadays. But, (unintentional) censorship is not something we want to culture especially in the Academia. By the way, for this course, I still think the instructor is good but the material is quite challenging without laying down a solid theoretical foundation beforehand. He went through the material again after this post but too bad the truely “Anonymous” is gone.