Kirill while freelancing

Kirill Novik: Your Career Is Not Always Linear — It Is a Journey and a Lab Experiment

I’ve interviewed Kirill Novik, a versatile full-stack developer currently employed by Soshace. Kirill is proficient in Python, JavaScript, Java, and C#. He holds a Bachelor’s Degree in Molecular Biology and Computer Science from the University of Colorado Boulder.

Kirill moved out of Russia to the U.S. with his family when he was still in high school. Kirill attended a community college and transferred some of those credits to the University, where he later studied molecular biology. What truly interested him, however, were mathematical and computational aspects behind the modern biological tools, and he decided to pursue computer science to broaden and deepen his understanding of biology research.

Kirill briefly worked for Medtronic, a "Microsoft" in biotech, but soon realized the office setting was not something he truly desired. He chose freelancing that gave him the freedom to express himself and innovate, as well as save up to continue his academic career. In this interview, he shares his story of transitioning from Russia to the States, speaks on open source and his favorite technologies, opinions of the future of front- and back-end solutions, as well as raises an important issue of mental health awareness in the developer community.

Hello Kirill! Thanks for accepting my invitation for an interview. Let’s start with your story.

Hi! Thanks so much for the invite and your interest. I don’t want to go too much into detail about my early life other than saying that I was born in Moscow. At age five, I moved to Zelenograd, where I spent my young years. Regarding my interests — biology and chemistry have always been my favorite subjects in school.

Please, describe, how you moved out of Russia and entered the University in the States.

An opportunity to live in the United States came from my dad. At the time, he was working for a software company called “Parascript” with headquarters located in Boulder, Colorado. They offered an opportunity to relocate us as a family for a year with the possibility of extending the stay. The initial idea was to stay there for a year and then move back to continue studying biology with my brother.

The funny thing was that once the first year had passed, we learned that we became residents of Colorado, which essentially meant that we could go to school at four times less the tuition cost than a non-resident. That was a game changer, so we were faced with a choice of either trying and getting an education in the U.S. or just come back and continue what we have started back in Russia.

The opportunity was too cool to miss out on. There was a significant hurdle, however, that of the tuition cost. The university tuition, even if you are a resident and pay four times less the amount, is still costly. We are speaking around, if you are lucky, $50k for a degree per person. This is a very optimistic forecast. Often times, tuition can get beyond $100k per person. This is insane! This would have been impossible to accomplish, yet luckily, there is more than one way to skin a cat, and it is even more so with how things are done in the United States.

It turned out that you could start your degree at a two-year community college and then transfer all your credits over to the University. Community colleges are educational institutions that provide higher education but with certain limitations, for example, not offering bachelor’s degrees that are often required by employers, yet they are much much cheaper. So we decided to try to get some classes from a college like that. There was one close to where we lived — “Front Range Community College.” The general rule is that you take the transferable prerequisites out of the way, they are generally the easiest classes, but you have to make sure that you can transfer them to the University and not waste your time.

The whole education at the two-year college was a breeze. It was so easy that I almost felt like a genius, yet the illusions were destroyed as soon as we transferred over to a real university. The structure, the pace, the requirements, the rules, everything was different, and the transition from a super easy two-year thing was very humbling and stressful, but luckily it turned out to be a very successful enterprise.

What difficulties have you faced while transitioning?

Transitioning was certainly very difficult. On Wikipedia on the “culture shock” page, you can find four phases of acculturation. It’s funny how true this model rings with respect to my experience. The honeymoon period is incredible. You love everything you see, people seem nice, anything seems possible, and it feels like you won a lottery. You may even feel that you are progressing quickly in the language. However, the pink glasses soon come off. People often don’t understand you, it can be pretty challenging to socialize, and generally, there isn’t much to do if you don’t know anybody. Luckily I had my brother to accompany me in this transition.

What were your first impressions from the States, from the American people? How was it different from Russia and Russians?

My very first impressions from the States and the Americans were fantastic. I have to accentuate one thing, however. I was fortunate to live in Colorado, the Rocky Mountain state. I lived super close to an extremely beautiful looking mountain range and the town of Boulder, which is an extraordinary place. It is quite different from many places in the States. People are very chill, they are generally very well off, there is a university super close, and thousands of students and tourists pass through every year. Everything is super clean. So right off the bat, this feels like you have arrived at another planet.

Don’t mess with Mr. President ;)

It was a striking difference from Moscow — a super big overpopulated metropolis. A person coming from Moscow to Boulder wouldn’t believe how laid back the living and how chill people can be. Moscow would compare very well to New York or L.A.

How do Americans perceive Russians? Do you think you were ever treated differently because of who you are and where you’re coming from?

Americans don’t know much about Russia in general. The older generation remembers the cold war. What everybody seems to know about Russia is that Vladimir Putin is the president, and they seem to kind of respect his perceived toughness. Overall, Americans seem to be quite interested in having a conversation with a foreigner, and you generally would expect a warm reception, which is a fantastic attitude.

Yet, of course, there are outliers. Some people may have some personal distaste toward Russia and Russians and because of that may mistreat you. Unfortunately it happens, but fortunately, it is nothing uncommon — it happens everywhere.

Why did you decide to switch from biology to programming? Was it hard ditching natural science for computer science? Do you think you ever miss biology and medicine these days?

It wasn’t a flip of a switch; it was a transition. The decision to start exploring the computer science direction came after I took a bioinformatics class at the University. It was an unusual class in the sense that we wouldn’t just learn the material from a textbook, but read and discuss research articles and talk about algorithms and approaches we learned from the home readings. The class combined grad students and undergrads from computer science and biology. It was super enjoyable, yet there was so much information from the papers to digest and also understand the general ideas behind algorithms. It was overwhelming, and I soon realized that I wanted to broaden my understanding so that I could navigate in this type of information more freely.

I felt that having a solid understanding of the mathematical and computational aspects behind modern biological tools can be very helpful in my future career. I started taking more courses in programming. At first, I thought maybe having a minor in computer science would be an excellent addition to the degree, so I started taking all the required classes for that. There were quite a few introductory classes that felt like a waste of time, they were effortless, and I didn’t learn much, but they were necessary as they raised my GPA quite a bit and with the increased GPA came more scholarships.

In retrospect, I still can’t wrap my head around the fact that I ended up not only not paying for the second major, which at first was my minor, in computer science, but was also given extra money from the University to finish it for having a good GPA and working in laboratories.

The classes that broadened my perspective on biology were just a few, namely “algorithms” and “data mining,” the rest of the classes helped me understand computers well. My favorite classes were “computer systems + operating systems” and “principles of the programming languages.”

As I was taking the computer science courses, I also worked in a laboratory researching the peculiar nature of Mycobacterium vaccae. My supervisor was studying the interaction of this bacterium and the human immune system, the interaction that resulted in some fantastic health benefits, including the treatment of PTSD and other psychological pathologies, as well as a plethora of benefits for the G.I. tract. The work in the laboratory mainly consisted of querying bioinformatics tools web APIs. One tool we used was BLAST (Basic Local Alignment Search Tool used to find similarities between two or more DNA or protein sequences). Another tool was RAST (a tool for gene annotations). We were trying to find the subset of genes disjointed from the rest of mycobacteria — potential candidates for the unique benefits of the species. I wrote everything in Python and learned a great deal about how useful Python and its libraries are when it comes to data processing and analysis.

However, looking back, I think that if we had all the syntactic sugar from the es6 back in 2013, I would have better-used JavaScript to query web APIs, but Python rocks when it comes to data manipulations.

This lab experience was the first time in my life, where I used my programming skills to solve a real-world problem. It was also my first real exposure to the web, but it wasn’t yet web development.

I got exposed to HTML, CSS, and JavaScript during a project for the international synthetic biology conference. It was an international competition of the university teams that had to use a standardized laboratory toolkit provided by the organization to experiment with E. coli bacteria. For example, our project revolved around creating a cure to tuberculosis by using bacteriophages. My part consisted of creating a wiki page for our team (http://2014.igem.org/Team:CU-Boulder). It was a pain in the neck. We had to create a more or less unique site while editing a wiki page, and there was no real guide on how to do it. It took a lot of work to bypass all the limitations of the MediaWiki, but, in the end, I did it, and it officially became my first web development project.

Describe your previous work experience before joining Soshace.com

I don’t like words like “career ladder,” because for me the progression isn’t really linear and it is not necessarily upwards in terms of salary either. For me, a career is a journey or a lab experiment.

After I graduated, the transition from a very comfortable academic world to the unknown and quite hostile world of the industry was unpleasant, and it took me some time to get used to it.

Officially, my career path started with an internship at Medtronic, a giant in the biomedical tech industry. It is a once in a lifetime opportunity for many people. It could be safely compared to Microsoft in biotech. However, it was precisely that — Microsoft in biotech, it wasn’t Google in biotech, nor Apple in biotech, if you know what I mean. If I decided to stay there after my internship was over, I would have probably made a great career, and it would have been a real ladder, but there were a plethora of little things that didn’t work for me. Dress code, strict hours, clearance, and very little freedom to develop something new. Aside from the financial aspect, this whole enterprise didn’t work for me, and I decided to move on and keep searching.

There were many pitfalls along the way of finding my gig. I’ve been drifting out in the sea of startups. It was a real wild west. Can’t say much positive about the experience working for the startups I worked for, to be completely honest here.

But then it seemed I found what I was looking for, and it was a company called ISONAS. It was an aging startup that was primarily focused on the security systems hardware. My job was to make and maintain the dashboard to interact with their devices. I loved everything about that job. For starters, I was getting exposed to Java on the back-end, working with very low-level APIs interacting with the security systems hardware over TCP/IP. I had the freedom to design cloud infrastructure in the AWS. I learned a lot while working at the company. The reason I left was due to the company’s change in management that I really disliked. It didn’t work for me anymore.

After ISONAS, I was back to square one, working on smaller projects. I even tried to come back to Russia and try to see what it was like to work there. I worked for AlfaBank, which I really liked, but Moscow was too much to bear, a very stressful life on the constant run. I started doubting if software development was really for me.

However, there were a few still unexplored domains. One of them was working remotely. I decided to try it. Soshace was the first company that came up in the search on the “jsremotely” website.

I’ve been working remotely four months to date, and it has been one of the best experiences in my career so far.

Longterm, I see myself more in the academic setting than industry, and I am hopeful that working remotely will help me to continue my education and will support me financially through it.

What programming languages, frameworks do you know? How did you learn them? Are you a self-learner?

It is funny, but aside from Python, I have never been taught a programming language. At the University, every class project came with a different programming language. The intro classes were in Python; the systems class was in C and Assembly; the principles of programming languages in Scala; big data class was in JavaScript and Java and so on. This makes you learn very quickly. Luckily almost every technology and language has “getting started” part of the documentation. It made Google an extension of myself, and I can’t imagine working as a developer without the use of a search engine.

I am familiar with many languages, but to say that I know either of them could be a stretch. It could be compared to knowing a human language. I can say I know Russian and English, but if you were to test me on either of the languages, you would soon find out that there are many gaps in my knowledge. I would say I know enough of computer languages to solve real-world problems.

When it comes to computer languages and technologies, I am a self-learner, but of course, I like attending workshops, meetups, taking classes. It is more time consuming, however.

What are your favorite technologies? Your skill set is pretty versatile, I mean, you obviously know a lot of stuff both in front-end and back-end development. But what are you most passionate about?

I have three technologies I am in love with. From the most favorite to the least: Typescript, RxJS, and React.

Typescript makes Javascript delightful. The type system is extremely flexible, and it allows for IntelliSense — a feature that is a must for every programming language (JavaScript itself doesn’t come with IntelliSense out of the box for the majority of IDEs and it often made the development experience dull and painful).

RxJS makes asynchronous programming elegant, testable and pleasant and even more so, it makes front-end development easy. The whole idea of composable streams is not new, but extremely powerful and super useful.

React, in turn, doesn’t need much introduction as it speaks for itself. It is a framework letting you handle all of the presentation logic with JavaScript (or even better — TypeScript with super awesome IntelliSense).

I am not necessarily passionate about either front or back end development. I would say it is problem-solving that I am passionate about, especially finding elegant solutions. Lately, I’ve been more involved with front-end development. It can be more challenging than developing for back-end regardless of what the majority might think, but the challenges that come with it allow for a lot of problem-solving. As I work with Typescript, I love it more and more each day. It makes my life so much easier as a developer. The static type checking that it comes with saves me from the necessity to write additional tests and saves me from many stupid mistakes.

What’re your predictions for the future of front-end & back-end solutions, are they going to be fiercely competing with each other, collaborate, become outdated, or combine?

Web applications are a subset of distributed programs with all of the presentation logic being executed on the client side. I see at least two major tendencies around the distributed nature of web applications. First, there is a tendency to look into the direction of moving the computationally intensive logic as well as business logic to the client side (see Web Assembly, Web Workers, etc), and the other one — to move everything to the back-end and do the presentation with streaming (which is more relevant to video games).

I really love the distributed nature of web apps, and I like that you can do almost anything with just your browser installed and a good internet connection and I would love if all software were web-based. What I don’t like, however, is that the web browsers competition posed many challenges for development and that JavaScript support is still an ongoing effort.

In the ideal world, where fast internet is as ubiquitous as air, front-end development doesn’t make sense. Everything, ranging from the intensive computations to a presentation can be done on the back-end and streamed to the client, take the ultra-low latency video game streaming as an example, which is a reality today. In such a world, computers essentially become interactive video players, which are cheap and could be easily replaced, yet are limitless in functionality.

Unfortunately, we are not in an ideal world, and the internet is still somewhat a luxury. I recently undertook a road trip to Kansas only to realize how hard it is to find a stable and fast internet on the road. Because of such circumstances, web workers and web assembly are relevant, I wish they weren’t :) But because of the tendency to move as much logic to the client, front-end development will maintain its rights of being a field of app development.

How did you decide to become a freelancer? What advice can you give to other aspiring freelancers who want to break free from the office shackles?

Freelancing can certainly be fun

As I said earlier, it was one of the unexplored domains in the search for a job that is right for me. I find the luxury of working from home very enjoyable and would highly encourage anybody to try. The primary advice is not to be afraid to try something new, not being afraid of taking risks when it comes to finding a dream job.

What are the challenges you are facing while working freelance? What are the core differences between freelance and office work?

As for me, being a freelancer only makes sense if my work is mediated by a third-party like Soshace who helps me find clients and mediates many aspects of the freelance realities. Being a freelancer on your own is very difficult and risky. I’ve heard stories of people not getting paid, banned from platforms like Upwork for no reason and even owing money to their clients.

With all of the sketchy stuff taken care of, freelance work is very enjoyable. Very few things can compare to the comfort of working from home. For me, it is vital to take two to four naps a day to stay productive, but in an office, I can’t do that. I often had to nap in my car, which was very awkward. I also like to take many small breaks when working. In an office, this is very inconvenient to do.

However, there are positive aspects to working in the office. The team you are working with is physically present, and you can communicate face-to-face. Sometimes it makes solving problems easier. When working in an office, you are generally provided with good equipment. Also worth mentioning, the salary is usually much higher when you work in the office fulltime.

What are your career aspirations and career goals?

My main goal is to go back to University and continue my education. Ideally, get a Ph.D. I am currently considering pursuing a degree in artificial intelligence, which I think is a must in this day and age. From there, I am sure there will be many opportunities to combine A.I. knowledge with biology research.

Have you ever contributed to an open source project?

I have, but my contributions were minimal. I contributed just a few fixes to the Alfabank’s U.I. framework “ARUI Feather,” which is open source. I wish I were more active in the open source community, but I tend to instead work on personal projects, which take all of my time, than collaborating on something that already exists. I really respect people who contribute to open source projects, and I am sure I will join them at some point in my life. I think open source is the driving force behind all the major technologies we enjoy today.

What was the most challenging project you ever worked at?

There were many projects that were challenging in various aspects. Sometimes it was negotiating with the management, other times it was the technical aspects, and other times it was the time constraints, and yet there were the ones that were the combination of the three. The most challenging project was refactoring legacy code into microservices in a very constrained time frame.

How did you become involved with Soshace? What interviews did you have to pass in order to get accepted? What advice can you give other programmers who’d like to apply for a job at Soshace?

I found Soshace on the website “jsremotely.” I was looking for remote work at the time. The first interview was a “phone screen” type interview, where I was asked very general questions about my background. The rest of the interviews were technical. There was an online skill test testing the proficiency in React, React Native, Vue, Angular, and so on. All the interviews were reasonable. I wouldn’t say they were difficult, but solving algorithm problems on Skype was a bit challenging. Advice to the applicants — this job isn’t for beginners, so it’s better to get some experience under your belt before considering working through Soshace.

Please describe, how did you get a job through Soshace.

I currently work with a startup located out of San Francisco — Automation Hero. A developer from Soshace was working for them, and they were looking to bring another developer to the team. They were looking for a person with a quite versatile skill set — Typescript and .NET. Luckily I had quite a bit of experience with both of the technologies.

It worked out pretty smoothly. The interviews went well.

What are your hobbies, what do you do in your free time?

I like playing and composing music. I love karaoke. Road trips. Working out. Programming. Reading philosophy books. Plato is my personal favorite.

How do you deal with burn out? Do you think it’s important to spread mental health awareness in the developer community?

It is imperative to spread mental health awareness among developers. Software development is a fast-paced, goal, and productivity oriented, extremely stressful activity. Working as a developer means you sign up for high levels of constant anxiety and self-doubt.

I found myself many times being too overwhelmed by the work and deadlines that I literally was in a stupor. I felt stuck and had terrible panic attacks that crushed me. Luckily I have a lot of experience dealing with it, but when I didn’t, it felt like the world was crumbling around me, not fun at all.

Burnouts are often accompanied with bad depression. One of the worst decisions I made, as I was trying to deal with depression, was to start taking medications. Terrible mistake. The side effects of the medications for me were far worse than the condition I was treating. With trial and error, I stopped taking medications and started seeing a therapist every week. It takes some time to find a good therapist, but once you find the right one, you will see the benefits very soon. I highly recommend every developer seeing a therapist once a week.

Walking as another type of therapy

I am a copywriter at Soshace.com, a hiring platform for web developers: hire a developer or apply for a remote job. If you have an interesting story to tell, please ping me on Twitter @ MaryVorontsov I would love to hear from you and share your story.