How to get a job in the Silicon Valley?
Motivation
I have sometimes been asked how to get a job or internship in the Silicon Valley from my Japanese friends. I answered that question with the same answer. I summarize my thought here.
How to get an internship in Cisco?
I joined CIIP Cisco International Internship program, one-year internship in Cisco HQ in the valley. However, unfortunately, only Keio university student is eligible for this program currently(2014/08). There are marketing position and engineering position in this internship. If you are a Keio student, go for it! There is no reason why you miss the greatest opportunity. This program offers VISA, residence, salary, insurance and so on. Literally, you just worry about food and leisure expenses.
URL CIIP
How was the internship?
This definitely helps to rethink what you are. Though the valley is the best place for technology, what you should learn is philosophy behind guys in the valley not technology. Why they come to the valley?
It was an awesome experience which I never experience in Japan. I worked for development of a infrastructure for APIC-EM, SDN application.
Cisco Application Policy Infrastructure Controller Enterprise Module - Products & Services - Cisco I got a great team member in Cisco.
I researched about distributed search for network management. In addition, I took Python classes in which Python committer teaches Python. Cisco offers many great classes:) This one of the biggest advantage in the Valley. I become a distinguished Python engineer within a year.
Other interns who came from top university all over the world are skillful and humoral. It is hard to feel such a diversity in Japan. You may get some culture shock. Of course, I am the one. This is a good opportunity to rethink my principle. This internship is a first time to stay abroad for long time. As a result, my strong stereotype was broken.
Other than work, I joined many tech events to expand my network and know the latest trend of technology. I discussed many awesome engineers which arouse my tech curiosity. I start to contribute to OSS. I am mainly contributing to Apache Spark.
Apache Spark™ - Lightning-Fast Cluster Computing
Advices
I believe that practical work and theory are important. If you are learning Computer Science, you should start your own projects or do an internship to make outputs. I think they prefer practical experience to select internship candidates. Internship is definitely plus.
Contributing to the OSS attract the people. You look the OSS news to find good one and try to contribute. Communication in OSS is done in English, which is good for improvement for English.
Try to find your interest that you want to pursue for life.
Is it first time to go abroad? You are not confident with your skill? It doesn't matter. Let's take a shoot. Otherwise you will be regret in the future.
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
Samuel Beckett
How to get a job in the Valley?
(for Japanese) Please see the below links:
アメリカで働く為のパス - シリコンバレーで働く文系のBlog
海外での転職を考えているエンジニアに読んでほしい、シチューさんの話【連載:上杉周作④】 - エンジニアtype
Python intensive dictionary introduction
Constructors
d = {} # dict literal notation d = dict() d = {'one': 1, 'two': 2} # dict literal d = dict([('one', 1), ('two', 2)]) # list of tuples d = dict(one=1, two=2) # keyword arguments
Dictionary from key value pair
>>> keys = "one two three".split() >>> values = "1 2 3".split() >>> keys ['one', 'two', 'three'] >>> values ['1', '2', '3'] >>> d = dict(zip(keys, values)) >>> d {'three': '3', 'two': '2', 'one': '1'}
Set default Values
d = dict(zip(keys, [0] * len(keys)))
That's because zip generates tuple. Tuple can convert to list. * means do the same thing as the number.
This is the same to above.
keys = ['one', 'two', 'three'] value = 0 d = dict.fromkeys(keys, value) # builds a dictionary single list of keys
Python str.format
str.format
Pro:
- flexible format
Con:
- this is not common interface for programmer who is familiar with other language
Eg
>>> "{0} is good. {1} is better! {2} is awesomeXDDDD".format('foo', 'bar', 'baz') 'foo is good. bar is better! baz is awesomeXDDDD'
other way
Eg1
>>> "%s is %d times bettrt than %s" % ('Foo', 3, 'Bar') 'Foo is 3 times bettrt than Bar'
Eg2
>>> "two square is %d" % 2 * 2 'two square is 2two square is 2'
for else
for ... else statement
else is executed only for is finished all range.
Pro:
Flag can be omitted.
Eg1
for i in range(1, 10): print i if i == 11: break else: print "do else"
out put
>>> ================================ RESTART ================================ >>> 1 2 3 4 5 6 7 8 9 do else
Eg2
for i in range(1, 10): print i if i == 8: break else: print "do else"
output2
>>> 1 2 3 4 5 6 7 8 >>>
Change default open application in Mac
- open file information
- change open with
- click change All...
Remote Desk from Mac OS to Windows
Jump Desktop is better than other RDP clients.
Microsoft Remote Desktop Connection Client for Mac
Microsoft Remote Desktop Connection Client for Mac (RDC) allows to connect your Mac to your Windows machine. Later OS 10.7 does not officially work with RDC. Officially therefore, you must have Snow Leopard 10.5.8 or lower to use RDC. There have been rumors of a Mountain Lion/Lion compatible RDC for Max being released but Microsoft has not announced anything yet.
How to use RDC for Mac
To connect Remote Desktop Connection to PC, you need network access and permission to connect to the computer. The PC must also be running Terminal Service or Remote Desktop Services. Microsoft Remote Desktop Connection for Mac does not yet work with Windows 8 but works with everything else from Windows 7 to Windows 2003
CoRD
CoRD is free software for Remote Desktop which connect to Mac to Windows. It is popular and simple client for Mac. Please note however that CoRD only supports below:
- Windows XP Pro
- Windows Vista (only in Low Security mode)
- Windows 7 (only in Low Security mode)
- Windows Server 2000, 2003, and 2008 (only in Low Security mode)
- Windows XP is supported but you must configure it first to allow remote desktop
Jump Desktop
Jump Desktop is probably the slickest, and the option of some, the best RDP client for Mac out there. Unlike the other options, Jump Desktop for Max also supports iPad, iPhone, iPod and even Android.
Jump Desktop is fast, very stable, allows you to share file to the remote machine and it's superb at managing several connections at once. It's alos one of the the few clients for Mac that officially supports connection to Windows 8.
Conclusion
I decided to buy Jump Desktop because this is the only one RDP allows to connect Mountain Lion to Windows 8.