LCT retrospective

Prague Castle

Last month I attended the annual meeting of my study program. This year, the meeting was held at Charles University in the beautiful capitol city of the Czech Republic, Prague. Since I have already graduated, this was probably the last LCT meeting that I will attend (although who knows!). As usual, it was an absolute blast.

As the graduating class, we participated in a small, but very formal, graduation ceremony. I already have the two diplomas from the two universities, so this ceremony was just something extra. We did receive a supplementary LCT document with a pretty nice description of the program and its requirements. I imagine this is something I could submit to anyone asking for more details about LCT, but I doubt that I will need to submit it anywhere ever, since it’s not an official diploma or transcript of records. Nevertheless, I enjoyed the ceremony, because the format was close to that of American graduation ceremonies– that is, it was very formal. There were speeches by professors and a student, there was organ music and singing, and it was held in a beautiful old hall in the Charles University in Prague. 

Insignia of the Charles University in Prague.

It was liberating being one of the graduating class. For one, I didn’t have to worry too much about making it to any particular talk or event, so I was able to sleep in! But also, I found that I did get a new perspective on the LCT program by coming for the third year.  Having graduated a while ago means that my life has moved away from all of the discussions on lectures, studying, advisers, etc. Hearing all of that talk again, reminded me how urgent it all felt at the time. Looking back made me realize how much and how quickly my life had changed– for better or worse. Either way, despite being a graduate, I still felt welcome. I met other graduates there, who were moving through similar experiences as I was now. So even though I am not in the university mindset anymore, I can still feel like I am part of this larger community.

The LCT students are incredible– not just the ones from my year or my universities–but from all the years and universities. Just about each person in the program is driven, open, and interesting in their own way. As ever, there are people who like to work, there are people who prefer to party, there are some who work hard/play hard, and there are some who chill. Nearly no one comes from the same country or the same background, which is probably the best part. As an alum at the meeting, I felt like I got to look back at the program and see it with many eyes and many points of view.

Now that I am in the workforce, I can see that having had the time to explore and meet new people was the biggest advantage I gained from LCT. I feel I learned how to be part of a community and how to go out there and find answers and guidance for myself when I needed it. Now, I have a stable career that I feel will propel me forward, but I don’t have as much time to explore new things. Still, I have to keep learning, which means I have to do the learning on my own time.

I have to keep learning… a LOT. Because what I learned in the LCT program wasn’t enough preparation for the professional world. I now have to introduce myself to a whole host of frameworks, design paradigms, algorithms, technologies, work methodologies, and attitudes that I have never had to face before. During my coursework, I spent little time on hands-on practice with modern tools. Not only that, but since I am further missing the computer science background and the web development experience that many programmers have these days, I have to learn all of those things afresh as well, in order to compete with/work alongside these people in the workforce.

To give some concrete examples, in just the last couple weeks I was struggling with CUDA drivers installation (for the billionth time), Docker, REST APIs, python’s Flask web framework, the OpenNMT-tf framework for machine translation (I already struggled with Marian, Sockeye, and OpenNMT-lua a while back), making a presentation on some recent research (i.e. reading papers and dissecting math) on a specific topic in machine translation, and a bunch of code refactoring. That’s just in the last couple weeks.

Prague Astronomical Clock

It sounds exciting, but actually, it’s very stressful to have to learn everything at once. I wish we had had some more practical courses in my master’s that would have taught us some of these theoretical ideas by using real tools (e.g. scipy, tensorflow, matplotlib), provided assignments in standardized formats (e.g. APIs to query or Docker containers to run) just so that we could get a little bit more used to those tools, if not completely comfortable with them.

I suppose one could ask how is it that professors could possibly keep up with all of the tools coming out all the time, to be able to teach us that? I would respond: how are we managing it then with much less experience? Because we, the students, do eventually manage it all on our own somehow– you just do what you gotta do– but it’s lack of guidance from our mentors in this area that easily leads to unnecessary stress and a steep learning curve. Another response might be “you have to learn how teach yourself.” Of course that is true, but learning how to teach yourself and having guidance in your studies are not mutually exclusive. At my unis, it wasn’t just like this with practical topics. It was like this with many things, much of the time. I won’t say “all the time” because there were a few gem classes/professors, but much of the time, the students got together and taught each other things they had learned 5 minutes ago. This is why the LCT program was so invaluable– it was full of students ready, willing, and able to do this, and to make a party out of it.

In the end, doing the LCT program was the right decision for me, because even though I feel the education was probably of lower quality than what you’d get at a top (in my field) US public university, I gained many soft skills and many many worthwhile experiences. If I could go back, I would definitely do it again, but only after studying a bit more on my own in the prerequisites/background topics first. In short, I would teach myself 75% of what I need to know on my own in terms of skills and theory, and then come to LCT for the last little bit on research. Things would be calmer then, and I think I could get even more out of the LCT program this way. I wonder, is it like this with all the Erasmus Mundus programs or all unis in Europe? Professors themselves seem to bounce around a lot, so is it just luck based on what professors are there the year you happen to go?

The LCT meeting was a great opportunity to look back and process everything that has happened in the last 2+ years. But now that I’ve spent some time looking back, it’s time to start looking forward. As usual, I don’t know what comes next. I have a lot of vague ideas and few concrete plans. Visiting Prague was really nice, because it reminded me that even though I don’t like big cities that much, there might be bigger cities out there that could still fit me– unlike Berlin, which is really a mismatch for my preferences, I think. In the long term, I know Berlin is not the right place for me. In some ways, it might make sense to move back home to the US. I think the salaries are still quite a bit higher there for programmers, and it would be nice to be closer to family. Eventually, I definitely want to do that… but I’m not quite ready to stop traipsing across the world just yet!

View from Prague Castle
Advertisements

Working Hard

Yew in the courtyard of Muckross Abbey, Killarney, Ireland.

Berlin has inexplicably continued to be cool. It feels like I just keep waiting and waiting for summer to come, but it never does. Just as Berlin has failed to warm up for me, I have also failed to warm up to Berlin. I’ve been riding my bike all around this city, seeing more of its little crevices, but my opinion of it has stayed mostly the same. I don’t really like it here… but at least I’ve been busy.

We had a major deadline at work, that we got started on way too late. This resulted in me having to multi-task quite heavily to get things done in time. The end result wasn’t as nice as I would have liked, but that’s how it goes when you have to work fast.

Late superbloom near Gorman, California.

Apart from work, these two months have been full of travels. In April, I headed back to LA to visit my family and for the wedding of a friend. I worked remotely, which put a bit of a damper on my time at home, but I was still able to enjoy the weekends. My family managed to take some time off over Easter weekend, for which Germany gets two national holidays (so I didn’t have to work), and we headed up North.

Southern California is very dry, but every few years, there’s a huge rain. Whenever it comes, the flowers go crazy, all blooming at once, painting the hills in pastel oranges, yellows, and blues. This year, there was a particularly lovely superbloom, so that’s where we were headed. We found the flowers growing in Gorman and Antelope Valley. Since we came a bit late in the season, it was mostly orange California poppies, blue lupines, and yellow mountain daisies, but there were some other kinds as well.

After Antelope Valley, we kept heading North to Big Sur. There we hiked to some waterfalls, saw more wildflowers, observed a huge group of seals on the beach, and played around in some tide pools. It was a bit chillier than I would have liked, so we didn’t go swimming, but we still had a lovely time.

These are the kinds of road trips that I have really missed since I moved away. We used to do this almost every weekend when I was a child, and although we did argue sometimes, mostly, I have fond memories of that time.

The next weekend was my friend’s wedding, which I can honestly say was one of the best weddings I have ever been to (besides my own, of course!). My friends make a perfect couple, so their wedding was also perfect, incredibly honest and just plain fun. The wedding tied together traditional Jewish elements, more modern traditions, and still kept a bit of their own quirkiness in the mix. For example, they did this awesome thing the day before, where their friends all got together for a massive cookie bake. I think there were 30 different kinds of cookies in the end, and these formed the dessert at the wedding, in lieu of a cake. The wedding itself was held at Union Station in LA, in the sunny courtyard, and the reception was inside the old ticket hall, with beautiful mosaic patterns on the walls, high ceilings, and big chandeliers.

Cliffs of Moher, Ireland

Almost immediately after the wedding, my husband and I flew back to Europe, but not straight to Berlin. Instead, we headed to Ireland We met his family there, and spent another week mostly out in nature. Since it was spring, the sheep were having babies out in the green fields, so I got the feeling that Ireland is basically made of green hills, sheep and rocks. Of course, it was much cooler in Ireland than in LA, and it even rained on us a few times, but we still enjoyed our time there.

After a lovely three weeks mostly spent out in nature, it was time to fly back to dirty, grey, Berlin. My husband’s family followed us there, and visited us for a couple more weeks. I was at work most of the time, of course, but we still managed to get together for some lunches and dinners. It was really nice having family nearby… it felt kind of like the continuation of our vacation.

Costs (2 months):

  • €2288 – rent
  • €300 – utilities/internet/phone
  • €132 – clothes
  • €182 – train tickets/travel
  • €555 – dining out
  • Total: €3457
Hiking trail in Big Sur, California.

Staying In

The last month didn’t get any easier. The weather was still cold, gray, and often rainy. Sometimes, the sun poked through the clouds, but it didn’t life my spirits. I spent most of the month working and playing video games. We did spend a couple of days visiting Szczecin (where the pictures in this post are from), a small Polish town close to the border. We also happened upon a cool exhibit of super old Mercedes-Benz while we were there. Finally, I bought a bike, and this got me out a little bit, which was very good!

I bought the bike from a great little second-hand bike shop in Berlin called Bikeopia. They were very attentive, honest, helpful, and they gave me a big discount, even on top of the sale they were having. The sale was set up for Women’s Day in the first week of March. Their motivation for the sale was that women still make less than men on average in Germany, so this was their way of bringing awareness to the issue and recognizing women. In fact, Women’s Day was also big topic around the office this year. Tensions had been running high for a while, and this seemed to be a catalyst for a culture clash. The same arguments we’ve probably all heard were thrown around time and time again. Mostly, there were some arguments between the men about how best to recognize the women in their lives, and of course, some men, that felt excluded by not having a “men’s day” for themselves.

I wasn’t shy about my feelings on the topic:

I feel the point of Women’s Day is to raise awareness of the inequality women still face around the world, e.g. lower wages, lack of career choices or even being barred from some professions, experiencing gatekeeping in activities outside of work, lack of control over their own bodies, shame in and/or objectification of their bodies, lack of female role models in high ranking positions, etc., and especially, being silenced when speaking out on such issues. Of course, everyone likes tokens of appreciation in general, but I think on this day, women typically don’t really want to be given those things, so much as they simply want these issues to be acknowledged. In the long (or preferably short) term, they want to be treated as equals by default– neither as less-than, nor as somehow on a pedestal– so that we no longer have to bring these issues up. At least as a woman, that’s what I want.

For me, it feels strange to still be having these conversations. Of course, I’ve faced plenty of sexism in the past, but because I’ve lived in pretty liberal places in the past, it was always easy to find a bastion of normal people to hang out with. When I interact with colleagues, I feel that their gender rarely comes into consideration for me in regards to how I behave with them. But since starting to work here in Germany, I have had to adjust my tone a lot, depending on who I’m talking to. Actually, I’m not sure if it has to do with gender, the STEM field, or my particular situation. All I know for sure, is that it is exhausting.

Costs:

This month looks more normal (my husband covered the groceries this month, which is why they aren’t included below). April is gonna be bad though, since we’re headed back to the US to visit family.

  • 1166 – rent
  • 150 – utilities (including final costs from Italy, wtf!)
  • 220 – bike
  • 150 – dining out
  • 25 – internet
  • 25 – phone
  • 40 – misc
  • 32 – electricity
  • 60 – entertainment
  • Total: 1868

Hunkering Down

Street art in berlin
Street art in RAW-Gelände.

I guess you could say I’m still settling in. Or maybe I’m hunkering down. In any case, this month has been far from exciting. I haven’t been getting out as much as I should, and I can feel myself slipping back into those old bad habits. I’m busy with work, and indecisive about my future plans.

These last few weeks, I have spent long days at work, mostly just programming some infrastructure (as opposed to researching as I would like to). I’ve been staying much later than I intend to, because it’s hard to get anything done when things are going on in the office. It’s a little easier to focus once people are gone. Furthermore, last time I went to aerial, I guess I injured my thumb somehow (twisted it or something), so I’ve just been waiting around for it to get better. Of course, I should exercise at home while I wait, but I don’t, so I’m just getting lazier by the day. I did make it to some doctors this month to address some issues, but they weren’t particularly helpful, so I have to make an effort to find someone better.

Making an effort in anything sounds like the hardest thing in the world right now. This fact in and of itself frustrates me. Therefore, I have made plans to go bike shopping this coming week. I think that if I finally get that bike I’ve been dreaming of for two months, I’ll feel better. I’ll be riding every day to work (except maybe the rainiest days), which will give my body the boost of exercise it needs, and hopefully bring me out of this funk I’m in right now.

Mauerpark

In terms of the future, I haven’t decided yet if I want to settle in Berlin, but if I stay here 21 months (less now) and pass the B1 exam, I can get permanent residency in Europe. This is very appealing, because then I’ll be free to travel around between Europe and the US. I’m just not sure yet that I want to tough it out here for 21 months. Berlin is not particularly nice, in my opinion. If you’re into clubs, street art, and punk atmosphere, then you’d probably be happy in Berlin, but I’m not really into any of those things. I’m starting to miss Rovereto, because although living there was hard in some ways as well, at least I was greeted every morning by beautiful mountains, fresh air, and vibrant colours. In Berlin, everything is flat, grey, and smells like smoke. In any case, I have to consider my longer term life goals, but it just feels very overwhelming to think about, let alone make plans.

Although I consider myself somewhat analytical, I’ve never enjoyed making any sort of plans. For example, I’d rather arrive at a destination, and start walking, than make an itinerary ahead of time. But I’m not sure how a person can achieve their life goals, if they always put off the planning phase. I’m going to have to master my repulsion towards planning if I want to get anywhere. Otherwise, spring is arriving, crocuses are blooming, and I am just sitting around doing nothing productive.

Costs:

Astronomical. First of all, plane tickets to the US for vacation in April and other travel has been super expensive. But the worst has been dining out. I went out with friends, coworkers, and my husband probably more times than we cooked. This month can be taken as a cautionary tale of what happens when you fall off the wagon.

  • 1166 – rent
  • 81 – monthly rail pass
  • 30 – phone
  • 26 – aerial
  • 144 – utilities
  • 209 – groceries
  • 527 – dining out
  • 2000 – travel (including tickets to the US for me and my husband in April)
  • Total: 4157

Settling In

Tip: When you go to an embassy, don’t wear a battery-powered heated jacket with wires all over it.

This month, I had to get my passport renewed at the US Embassy in Germany. Apart from the incident with the jacket (a holiday gift from my big brother), and the government shutdown slowing things down, it went pretty smoothly. The battery-powered heated jacket is pretty sweet, but it was awkward to explain that that was all it was. The border guard made me leave it in his office until I was done in the embassy, because no electronics at all (not even your phone) are allowed in there. Now I have to wait for my new passport to come in the mail, and then to return to the immigration office for an updated visa.

I started my job as soon as we came back from SoCal. I’m now working for a start-up moving into the machine translation (MT) industry. They used to be a traditional translation company only, but are now building up a pipeline with MT included. The idea is to use customized MT models for each client/domain, but to use human translators to proofread the results, for higher quality translations. The intention is for the work to go faster, since the human doesn’t have to translate everything from scratch, only having to fix errors made by the MT system, and that the quality will be better than human translators alone, because the MT should take care of maintaining consistency between different projects for the same customer.

There are three of us MT engineers. One has been there for a while, and has built up some of the early systems for MT in the company. The second started just a month before I did, but did his master’s thesis on MT. Both have CS backgrounds. And then there’s me. I did my master’s in speech recognition, and my background is in linguistics, so I feel a bit behind right now. I’m working a lot to try to catch up with everything going on, and to learn what I don’t know about MT. The office is definitely fast-paced (as start-ups tend to be), and I’m still trying to find my place.

I already miss my family and friends back in SoCal. It was good to get the chance to visit them over the holidays before diving into work. We’ve made it a bit of a tradition to go to the beach on Dec 25th (if the weather is good), and this year was no exception. We also went hiking on a small hilltop near our town. I used to think this hilltop was really high up, since you could see the whole valley below, but after living near Trento, Italy, I now know that there are much much taller mountains in the world. We also saw a bunch of movies at the theater, including Spiderman: Into the Spiderverse. It was really good, with an awesome art style, and totally worth seeing in IMAX 3D. We rarely go to movies because of the cost and the difficulty of getting to an original voice English language showing, so this was a nice treat. In short, we had a nice and fairly relaxing vacation.

Costs:

Costs this month were astronomical. We had to fill a completely empty apartment, get things installed, and I paid the entire share of the rent this month for us as well. Then there were final fees from Italy plus eating out a lot due to not having energy to do much else… it has all added up really quickly.

  • 1166 – rent
  • 731 – lights installation, furniture, home necessities, misc.
  • 125 – internet installation
  • 165 – last fees for apartment in Italy
  • 182 – last fees for utilities in Italy
  • 80 – transport card for the month
  • 392 – eating out
  • 70 – sport
  • 20 – video games
  • Total: 2931

The goal for next month is to split the rent between us, and eat at home. There shouldn’t be any more installation or fees from Italy, although there may still be some more settling in costs for additional furniture, and I want to get a bike soon as well.

Moving to Berlin

A few short weeks after graduation, while I was still traveling after a conference, I realized that I would be moving to Berlin to start a new job in machine translation. All of this happened so quickly– much quicker, I think, than I was mentally prepared for. But now the frenzy of bureaucracy is finally slowing down, and I’m looking forward to a trip home for the holidays. I’ll be starting work in January. In the meanwhile, I’ve been working on getting a visa and finding an apartment. I’ve also visited a few of the Weihnachtsmarkts (Christmas markets). The one in Charlottenburg was by far the best, with tons of craft vendors and all the usual delicious street food you can expect (although the one in St. Wendel is still the best one I’ve been to).

Getting a Visa

Two years ago, I moved to Saarland to start my master’s in computational linguistics. Last time I was applying for a study permit, and the process was such a headache, that I had to make a flow chart for myself in order to understand everything I had to get done. This time I’m applying for a Blue Card for me and my husband, which allows both of us to work in Germany. The process is nearly the same, that is to say, just as annoyingly complicated.

The problem with the German system, is that it seems like there’s some sort of circular loop on the documents that you need to get a stay permit. For example, to start working, you need a visa. To get a visa, you need an apartment. To get an apartment you need funds. To have funds, you need a bank account with money in it. To open a bank account, you need to be registered at an apartment (you need an address). You also need to be working to have funds. Like I said, to start working you need a visa. It’s a headache that no one fully understands. In practical terms, the flow chart I created last year is still pretty accurate (replacing the school enrollment documents with a signed work contract instead).

The boss at my new company was under the optimistic impression that I could get all of the documents and appointments completed in around 2 weeks in November, and/or that we might be able to skip a step here or there. I was also being optimistic when I estimated that, with the backing of my company, we could get it done in around 4 weeks, before I left for the holidays at the end of December. In the end, it did take right around 4 weeks, so my optimism was not misplaced.

Unlike last time, when I had to figure all this stuff out mostly on my own, this time, my company helped me with filling out and collecting many of the documents, signing me and my husband up for national health insurance (this time with TK, but it’s similar to the AOK I had before), and they even came along with me to the appointments at the Ausländerbehörde (immigration office).

Finding an Apartment

The main task that was left to us was to find an apartment. There are a number of websites available, but I found Immobilien Scout to be the most useful in this task, whereas, if I was searching for a WG (shared flat), I would have probably looked on WG-gesucht, like I did last time in Saarland. Temporary places and shared housing can also be found on Facebook groups (e.g. this one), but you just have to be extra vigilant for bullshit. To apply for apartments, we needed a number of documents proving that we would be good renters, including:

  • A positive SCHUFA (German credit check). It costs around 30 euro to get from the official website, but there are some possible hidden fees on there. If you get it from Immobilien Scout, you get a premium account for a month which helps in the apartment search (just cancel it immediately), and you get an option to download and print a PDF immediately, which you don’t get from the official website.
  • A work contract or pay slips with your net income, which must be 3x the monthly net Kaltmiete (cold rent, which excludes heating/utilities).
  • A letter from your previous landlord stating that you don’t owe them any rent. We were able to use the receipts from our AirBnB, combined with a bank account statement instead (since our last landlord didn’t speak German or that much English). 
  • A Selbstauskunft (typical application form, which the landlords will provide you). 
  • Your passport for identification.

People say that Berlin is cheap, and maybe it is cheaper than cities like NY, Paris, London, SF, etc., but I think people underestimate how much costs have risen. The market is definitely not in favour of renters at the moment either. Basically, any apartment that is reasonably priced is besieged by 30 or more people (literally– there was one we visited, where there were 30 people there on that day alone). Berlin is also separated into different districts, which makes it quite difficult to figure out where to live. I don’t know the city that well, but it seems like Prenzlauer Berg and Charlottenburg have a lot of families, Kreuzberg and Friedrichshain are nice for young professionals (and may be undergoing gentrification), and Neukölln is the more gritty immigrant/artists area. I’ve only been here a few weeks though, so I can’t talk too much about these and the other areas.

Another peculiarity of looking at apartments in Germany, is that many of them don’t come with kitchens. Essentially, renters tend to buy their own kitchen (such as at Ikea), and then move it around from apartment to apartment, so when a renter leaves, they often take their kitchen with them. Some may try to sell their kitchen (and other apartment “upgrades”) to the next owner, or at least to get the owner to accept the state of the apartment as it is (i.e. with the upgrades). They have to do this, because otherwise, they need to revert the apartment to the state it was in before they began renting it. We really didn’t want to deal with the hassle of buying and installing our own kitchen, so we only looked at apartments with an Einbauküche (built-in kitchen). 

We ended up looking at 20 apartments in the span of around five days, 15 of which we viewed in just three of the days. Our top choice of the ones we saw was apparently everyone’s top choice, because it got snatched up by someone who had probably already had the application in before we even went to the viewing. It makes sense, since this apartment was cheap, at around 800 euro Warmmiete (rent with heating costs), in a good location, and only missing a fridge.

Our second and third choices were both renovated apartments with a Kaltmiete (rent without heating/utilities) of around 1100 euro. One was in a fancy new sky-rise building, literally across the street from Ostbahnhof train station. There’s nothing in the direct neighbourhood except the stores in the station (which includes a nice Rewe grocery store), but getting to my work is incredibly fast. The other was a bit cheaper, and in a neighbourhood with schools and families, but far away from transport and grocery stores. The second choice had the closer location to my work and Rewe. Since I had to travel one hour on multiple transports each way last year,  I’ve gotten really fed up with commuting. We also liked the kitchen at the second place better, since it was much bigger and opened up to the living room, in a more typical American style (in Germany, many apartments have the kitchen in a separate small room). Although the second choice was missing a washing machine (which is also pretty typical here), we still decided to go for it based on the other factors. We signed the lease a week later, and another week after that, I am happy to say, that we have a place to rest our heads now!

Unfortunately, we failed to understand one more thing the second choice was missing– light fixtures. Yes, apparently light fixtures, like washing machines and kitchens, are considered “upgrades,” which don’t come pre-installed. Actually, we did notice that there were no lights in the apartment when we saw the place, but we figured that since it was a new building this was something that was still being worked on. We asked the person showing us the apartment about that, and she said “they will install that.” We assumed that meant that the building company would do this. It was only after we signed the lease that we realized we were wrong (and/or she said a small lie to get us to sign). We did try to install one of the easy-to-reach light fixtures ourselves at first, but we quickly realized we’d need a lot more tools and time to do the job properly. This is obviously rather infuriating. In the end, we decided to contact the Hausmeister, and ask them to come in to install lights. The cost of the light fixtures and the installation will probably total around 100 euro more. Obviously, this is infuriating. On top of that, we still need to buy the washing machine, all the furniture and all the stuff a livable place needs, that people tend to forget about (cleaning supplies, trash cans, kitchen supplies, etc.). Fortunately, I’e found that sleeping on a semi-firm mattress on the floor is actually my preferred sleeping situation in terms of comfort (we did it this way for 3.5 years in Portland too, and it was really the best sleep I’ve ever gotten), so at least my bed is cheap. But in the end, this is becoming a very expensive apartment.

To be honest, in retrospect, I think we might have done this whole move wrong. The better way might have been to rent a short term (1-3 months) place, and look for a more permanent place in the meanwhile. However, I’ve heard that Berliners themselves have been having trouble finding a good place, with some people spending even up to a year searching (at their leisure though). In addition, in order to get a work visa before the end of the year and be able to start working in January, we needed to have registered our apartment at the Bürgeramt (administrative citizen’s office). We could have done this with some temporary apartments, but felt it would be easier to be done with as much bureaucracy as possible early on. So I think we should be happy that we did find something suitable after all, and even managed to get our visas done before the holidays. (I actually have one more step left, where I have to renew my expiring passport, so I can get the final Blue Card, but I already have an appointment to do this set up.)

At the end of the day, what helped us the most in being able to make this sudden move was having liquid cash ready to be used. I’m not the biggest saver, and I tend to splurge on expensive things now and then, but I still try to keep a saving mindset when I can. I’ve also been lucky to have a lot of parental guidance and help over the years. These factors have allowed me to have a small bit of cash saved up for these situations. I know many other people would be in a much more difficult situation. I guess that’s partly why I feel a bit uncertain about our decision to go with a somewhat more expensive apartment– I don’t like cutting into that hard-earned cash that I have, for fear of not being as prepared in the future; in particular, in case things don’t work out here, and I just have to move again. Nevertheless, I hope that, in the end, it will pay off in sanity and a convenient living arrangement, leaving me to focus on improving my skills in my new job. Time will tell. 

The NLP Job Hunt

IMG_20181118_172136

Castelvecchio in Verona

Around a week after graduation, I sent off a very small handful of applications to a few different companies in computational linguistics. I didn’t spend much time thinking about the whole thing, because shortly thereafter, I left to attend EMNLP (a big comp ling conference that was held in Brussels). After that I headed to Paris to meet some friends, then returned to Trentino to hike a bit more in the Brenta Dolomites, and then went to Berlin. Below I’ll describe my experience and advice I’ve gotten for applying to both smaller companies, and big companies, interspersed with images of my recent travels for fun.

Searching for jobs

First of all, it was pretty easy to find jobs that looked appealing or related to my studies in smaller companies. One nice source was nlppeople, who had the most relevant openings. Other sources like linguistlist and corporalist also seem useful, and then there are the typical postings on LinkedIn or Indeed that seem to target typical software engineers a little more. Another couple of places I found later on, but didn’t explore were remoteok.io and remoteml, so I wonder if those are actually useful (anyone have any experience with them?).

On the other hand, finding jobs for the big companies like Amazon, Google, Facebook, Microsoft, Apple, etc. entails going onto those guys’ websites and doing a search. The correct job opening tends to be called something like “Applied Scientist” or “Research Scientist” and has some description of the field you’d be working in or the project you’d be working on. It’s not always clear what exactly you’d be doing, and it’s easier to get an interview there if you have an acquaintance that can push your resume through to the right recruiters.

In any case, finding interesting jobs and actually getting an interesting job are different beasts.

Small company interviews

Interviews for normal companies (and start-ups) seem to consist of the following stages:

  1. introductory phone screen conversation
  2. technical interview
  3. coding project
  4. follow-up interview and/or final interview

My (limited) experience with these has been pretty positive. The introductory phone screen has typically talked about the company’s work and business model, and has asked about your own background and cultural fit. The technical interview asks machine learning and computer science questions, with a skew towards the position you’d be working in. The coding project has typically focused on a task relevant to what the company is working on. The follow-up interview might ask a few more questions about your knowledge, to see how you are stacked up against other candidates. The final interview will already talk about logistics such as salary, start times, moving, and so on.

This interview process is not easy, but it also does seem very reasonable. The questions I saw were typically to the point, and not outside the bounds of what I should be expected to know about after completing my degree, and planning to move into industry. In terms of time frames, the small companies were pretty quick on getting back to me, usually taking only one or two weeks after receiving my resume to respond, and just a few days in between each step thereafter.

It’s possible I got lucky with the small companies I interviewed for, because I heard that other people had strange interviews, where the small companies were trying to replicate the interview process of the big companies, which I believe would be a mistake.

Big company interviews

Interviews for big companies (Amazon, Google, etc.) are very different. The best way to describe it is as a massive comp sci entrance exam. Everyone takes these entrance exams, and typically, after passing, you get further interviews with the specific group you would be working with. The process seems to consist of the following stages (though I admit that I myself did not complete the whole process, so I’m not sure about the end):

  1. phone screen with behavioural, basic comp sci, and basic machine learning questions
  2. phone technical interview
  3. on site all day technical interviews with whiteboard coding (and sometimes presentation of own work)
  4. follow-up interviews with teams of choice
  5. final interviews with logistics

I won’t sugar coat this. If you are taking the big company entrance exams, you need to have a computer science degree and remember a good chunk of what you learned, or you need to (re-)teach yourself computer science fundamentals. This is really shitty for us who are coming from a theoretical linguistics background and the LCT program, which does not cover these fundamentals (although I think they really should offer them to those who don’t have them). Below I’ve assembled all the advice I’ve received from various sources on what to study before making applications to the big companies. Some companies may ask for less of the computer science stuff, and more stuff related to your degree, but it’s better to over-prepare than under-prepare.

PANO_20181117_125824.vr_2

Hiking trail in the Brenta Dolomites

Behavioural questions

First of all, some of the companies ask you behavioural questions, like “Have you ever had a conflict with a coworker?” or “Have you ever failed to meet a deadline?” or “What are your weaknesses?” For me, I kind of handle these questions on the spot. I feel that the best way to deal with them is to say “Hmm, let me think about that…” and then start thinking about working conditions at your previous job/internship/whatever. Usually, something relevant pops to mind.

Some people might find it easier to research the most common behavioural questions, and take time to think of a scenario for the most common ones. There is also a formula that can be followed which leads to a succinct answer to these types of questions, called STAR. These methods might be the more principled way to attack behavioural questions.

In any case, I feel like these questions are sort of bullshit, and I find it easier to bullshit my way through them, because that also leads to a more natural way of talking about the problem for me. I also have a lot of prior work experience, so it’s not that hard for me to conjure up some scenarios. I don’t think I’ve ever flat out failed this section, but I’ve also never applied for leadership positions where this section is probably a lot more heavily weighted.

IMG_20181031_211452

Brussels Town Hall

Topics to cover

For the computer science entrance exams at the big companies, you can use leetcode.com, topcoder.com and projecteuler.net to practice, and read the well-known book Cracking the Coding Interview as well (behaviour quesitons are in there too). In short, you will need to know:

  • algorithm complexity (big-O notation for runtime and memory)
  • sorting: n*log(n) complexity algorithms such as quicksort and merge sort
  • hashtables: how they work and how to implement one in code using only arrays
  • trees: how to construct and manipulate binary trees, n-ary trees, tries, red/black trees (and/or splay trees, and AVL trees); how to traverse trees using breadth-first search and depth-first search; the difference between inorder, postorder, and preorder
  • graphs: objects, pointers, matrix, and adjacency list representations of graphs; how to traverse them using breadth-first search and depth-first search; their complexity, tradeoffs, and implementation in code
  • other algorithms: Dijkstra and A*
  • NP-complete: what this means, and problems such as the traveling salesman, and the knapsack problem
  • combinatorics: n-choose-k
  • probability: bayes, likelihood, prior, posterior
  • statistics: significance testing, distributions such as Gaussian and Poisson
  • concurrency: processes, scheduling, locks, mutexes, semaphores, monitors, avoiding deadlock and livelock and how to avoid them, parallelization on multi-core systems
  • object oriented system design: features sets, interfaces, class hierarchies, constraints, simplicity and robustness, tradeoffs
  • development practices: validating designs, testing whiteboard code, preventing bugs, code maintainability and readability, refactor/review sample code

In addition to computer science, you will need to know machine learning. If you only took one course on it during your LCT program, you will probably need to study some things that you missed, including:

  • supervised/unsupervised/semi-supervised learning
  • generative vs. discriminative models
  • clustering
  • classification
  • regression
  • overfitting/underfitting
  • cross-validation
  • regularization
  • bias-variance tradeoff
  • ROC curves
  • train vs. dev vs. test data
  • ML algorithms: naive bayes, linear regression, logistic regression, decision trees, random forests, KNN, K-means, SVM, HMMs, Viterbi, GMMs
  • neural networks and their specific issues: feedforward DNNs, RNNs, LSTMs, vanishing/exploding gradient problem, attention, stochastic gradient descent, learning rate, mini-batches, etc.

You will want to be familiar with the issues in computational linguistics and your specific field, which will depend on what the company is doing and the job you are applying to. This part you might not have to study as much for, since it will depend on your interests and will probably be related to your studies. In any case, it could include topics such as:

  • language modeling, including smoothing
  • FSTs and regular expressions
  • word embeddings (and sentence embeddings)
  • common traditional and state-of-the-art algorithms in your chosen sub-field (e.g. for machine translation you should know SMT models and also Transformer NNs, for speech recognition you should know about HMM-GMMs and also TDNNs)
  • handling big data and data cleanup (e.g. text normalization for language data, detecting misaligned data for MT, disambiguating speech from noise in speech data)
  • other issues specific to language processing (e.g. different scripts, word orders, phonologies, etc.)

Finally, you will want to know some modern technologies for working with machine learning, neural networks, computational linguistics, and software engineering in general, such as, for example:

  • common sources of language data
  • common data formats (e.g. XML, SQL databases, etc.)
  • Python and packages like numpy, scipy, matplotlib, spacy, nltk
  • MATLAB
  • c and/or java could also be helpful if you know them
  • TensorFlow, Torch, Keras, deeplearning4j or similar for NNs
  • Kaldi for speech recognition
  • Git for version control
  • cloud computing
  • Docker
  • Linux and bash

There might be more topics that I missed, but that’s the gist of it I think. It seems like a lot, because… well, it is. It basically covers an undergraduate degree in computer science, a graduate degree in machine learning, and one or two courses in computational linguistics. You likely won’t need to know all of it for whatever job you’re applying to, but it’s not unrealistic to have questions asked from any of these topics. You may not know an answer to every question, and that might also be ok, but it’s good if you know the larger majority.

My feeling is that if you come from that comp sci background and studied comp ling, you will just have a little bit to brush up on, while if you came from theoretical linguistics and studied comp ling (at least in LCT), you will need to spend an extra semester (or more depending on how quickly you learn) to properly learn what you need to know.

At the big companies, I was told that I should apply in the topic I had the most experience in (speech recognition for me) rather than applying to other topics I might be interested in, because this is where I had the best chance of getting actually hired.

IMG_20181108_163852_2

The Eiffel Tower in autumn

Final thoughts

For me, I admit that I certainly don’t know all of the things I’ve listed above. First of all, since I don’t have a comp sci background, I never studied any of the comp sci topics in a structured way. Second, I feel that the LCT program did not have a curriculum that progressed in a logical order over the course of the entire two years, which would have supported me in learning what I needed to know. In essence, I had to restart my progress at my second uni, because my second uni didn’t really have a curriculum that allowed me to keep learning on the same track I was already on. In addition, many of the topics that I did cover during my studies were taught in a disorganized way, and/or a superficial manner, and/or in-depth but very quickly. Therefore, those items that I did cover of the topics above, I covered in a way that didn’t really solidify my understanding of them.

Having graduated, I no longer see an easy path and time-investment opportunities towards learning them. Yes, there are MOOCs, but my personal learning style really benefits from in-class instruction. I will probably have to keep studying in evening courses if I want to properly learn some of those computer science topics I’m missing. Otherwise, I have to hope that the next job I have provides me opportunities to fill in at least some of the gaps.

In any case, I am going to be very busy soon– I have accepted an offer at a start-up in Berlin.

IMG_20181123_164906

Hallo Berlin!