For Developers

Looking for software developer jobs? Here are 15 interview questions that technical leaders and engineering managers love asking during the recruitment process.
For Developers

Technical Hiring Managers Ask These 15 Questions during Interviews

Looking for software developer jobs? Here are 15 interview questions that technical leaders and engineering managers love asking during the recruitment process.

Are you nervous about an upcoming technical interview? If so, this post can make things a little easier for you. Here are 15 interview questions that technical hiring managers from different companies love asking their candidates and their rationale behind each of their questions: 

Could you tell us about a time you failed?

Starting with this question might come as a surprise for many. But, according to Megan Gray, team operations manager at Marxrent, this helps the interviewer analyze how the person overcame their past failures. He says: “Employees who hide behind failures waste time and cause confusion.” A true professional will admit to their mistakes, and more importantly, learn from them and move ahead. 

How does the Internet work?

“While this may sound like a straightforward question, the answer can tell you a lot about the candidate,” says Robert Gibbons, the CTO of Datto. For example, some candidates may choose to explain it as: “It’s like a post office. You send a letter and get a response back. Others will start with intrinsic details, like defining IP addresses, DNS servers, and so on. And thus, the answer gives the interviewer an insight into the candidate’s areas of focus.“

What qualities do you want in your manager or leader?

According to Margaret Freel, a recruiter at Tech Smith, this unorthodox question helps interviewers understand what management or leadership style is ideal for a particular candidate. This question also helps to identify if the candidate is self-aware and engaged in the job. Moreover, the interviewer can assess whether the company’s leadership aligns with the candidate’s expectations. After all, it’s the leadership that motivates employees to do their jobs effectively.

What are the recent exciting challenges you’ve overcome?

Tim Julien, VP of Engineering at Bonobos, says that this question can help calm down an otherwise nervous candidate. As the interviewer asks about the candidate’s problem, the latter controls what they say and reveal, making them more comfortable. Julien adds that the interviewer should dig deeper and learn more about the challenge faced by the candidate and not just the gist of it. 

How would your last coworkers describe you?

A question like this one forces the candidates to analyze themselves according to how their coworkers view them. Michael Boufford, VP of Engineering at Greenhouse, says that the answers vary from dependable to opinionated. This way, the interviewer delves deeper into why the candidate’s coworkers thought so about them. In addition, knowing about the candidate from a different perspective can help the interviewer analyze the latter’s compatibility with the peers. 

Why do you get up every morning?

This question gives insight into how the candidate’s passion aligns with their career goals. According to Miguel Quiroga, Head of Digital at Verizon Fios, startups have rapidly growing teams. And thus, this question explains whether the candidate will be a good fit for the fast-paced work culture.

What, according to you, makes an ideal coworker?

This question helps Nate Smith, co-founder, and CTO of Lever, analyze what the candidate thinks about the people they want to work with and whether they can differentiate between the strengths different coworkers bring to the team. A great candidate will answer this question with many details, while a good candidate will only offer skimmed information. Therefore, the interviewer can analyze if the candidate will be an exceptional or challenging coworker.

What is the first thing you do if you are not able to solve a problem? 

Annette Stone, Senior Manager of Recruiting at Wayfair Engineering, says that this helps analyze whether the candidates can manage a problem by themselves. For example, will they try to search for the answer independently or directly bring it to their managers? This question aims to help the interviewer determine if the candidate is good at solving problems.

What is your dream job?

If a candidate is not excited to talk about their dream job, how can they be keen to work on the job they are interviewing for? This question has no correct answer; it’s more about how honest the candidate is while answering it. It tells you a lot about the candidate [than their resume], says Sara Hetyonk, Talent Acquisition Manager at Ontraport. It also reveals the candidate’s long-term plans and goals.

Have you been working on a side project?

Brain Pugh, VP of Engineering at Lucid Software, states that if a candidate is working on a side project, it is a good indicator of their passion for coding. And as the code is often public, the interviewer can check the quality of the code written by the candidate.

When you start a new project, what is your process for doing it successfully?

Matt Doucette, Director of Global Talent Acquisition at Monster, has six P’s that he looks for in a candidate through this question, Purpose, Plan, Process, Persistence, Persuasive communication, and Pride. He wants to know why the candidate chose what they do, how they plan to do it and involve others, how they will deal with success and failure, etc.

 When did you start programming, and what was the first thing you built?

This question is not to check the candidate’s skill level but to gauge how excited they are to describe a significant moment in their career. Harj Taggar, co-founder and CEO of Triplebyte, says that he checks the candidate for fundamental communication skills through this question. He also adds that this question allows the candidate to shine in the best way possible.

Have you gone through our website? What can be improved?

Kenn Peters, Director of People at Vettery, says that the above question is crucial as it shows how much the candidate is interested in the company. It also highlights whether the candidate can think about the product from a builder’s perspective and not just the user’s perspective. Frequently, candidates fail to look at the website. Failure to look at the company website should be a red flag for the interviewer.

What has motivated you to take out time to talk to me? 

Tech jobs are always in demand. Hence, the top-tier tech professionals have the option of choosing their pick of employers. Thus, it is essential to know what the candidate is looking for in the organization. Emoke Starr, Head of HR at Prezi, says that asking the candidate about their motivation helps them match the company’s offering to the candidate’s needs.

What have we missed about you that you want us to know?

Through this question, Courtney Graham, Senior Director of HR, ReadyTalk, tries to understand why candidates want the job and not just their qualifications. According to Graham, everyone—even the most technical people—should possess selling skills as they are critical in real life. So, candidates who are passionate about the job can always answer this question up to the interviewer’s expectations.

The above questions help hiring managers to analyze candidates on a level deeper than their technical skills. By preparing for them, you can help boost your confidence and get rid of some uncertainty before the interview. Remember, as these questions analyze your life skills and ability to adapt to the work environment, it’s a good idea to be honest with your answers. 

Read the complete article here.

If you’re a brilliant developer looking for remote software jobs, Turing may be able to help you very quickly. You can start applying for jobs in any of these skills. You can also head over to the FAQ page to know more!

 

Join a network of the world's best developers and get long-term remote software jobs with better compensation and career growth.

Apply for Jobs

By Sep 20, 2021
Turing.com review by Sam from United States: ‘It is a fantastic place’
For Developers

‘Turing Is a Fantastic Place to Be with a Lot of Really Cool People,’ Says Sam from the US!

Turing is a great place to be with a lot of really cool people, says Sam from the United States in his Turing.com review.

This time in our Life at Turing series, we spoke to Sam from the United States about his experience at the company and got to know how remote work has helped him to be more productive.

There’s no doubt when you work with people from different countries, you get to learn so much about their culture and way of living. You grow rapidly with newer ideas. Diversity often makes us realize that we are so different, yet so similar. 

Sam’s Turing.com Review

“It is a fantastic place to be with a lot of really cool people to meet and exciting projects to be a part of,” Sam said while talking about his first reaction about Turing. 

One of the best things about joining Turing is that the company offers high-quality opportunities to remote workers from around the world. People at Turing get to work with the best engineering minds from the comfort of their homes and grow rapidly by working on full-time, long-term projects.

On being asked why he joined Turing, Sam said, “I joined Turing because I wanted an opportunity to work with a fast-growing company that is diverse, international and gave me the flexibility to work from anywhere.”

The work at Turing is both challenging and fun. The company rewards the best people with a compensation that far exceeds the salary level of their local economies. Turing actively encourages its employees to refer their talented friends to apply for Turing jobs.

“I would definitely recommend Turing to my friends. As I said, it is a place to get involved with a lot of fast and exciting projects that are having a real time impact,” Sam said.

Turing.com is committed to enriching the lives of its people while allowing them to work on long-term projects with top US software companies. To get a clearer understanding of how people at Turing love their jobs, we reach out to Turing employees from around the globe regularly to listen to their stories and experiences.

If you’re a talented developer looking to work with the best US and Silicon Valley companies from the comfort of your home then try applying for Turing jobs now. Turing.com offers long-term, full-time remote US software jobs to skilled developers across the globe. Experience the remote #boundaryless revolution now and enjoy a better work-life balance from anywhere in the world.

Join a network of the world's best developers and get long-term remote software jobs with better compensation and career growth.

Apply for Jobs

By Sep 15, 2021
Are you a software developer looking for remote jobs in Silicon Valley tech companies? If yes, these clean code tips can help you ace your game!
For Developers

Looking for Software Developer Jobs? Learn How to Write a Clean Code First

Are you a software developer looking for remote jobs in Silicon Valley tech companies? If yes, these clean code tips can help you level up your game!

We live in a world where software runs everything—from TVs to iPads, washing machines to microwaves, smartphones to IoT devices—you get the idea. It takes several million lines of code to run software and execute specific tasks. Coding is not a one-time thing; it’s an iterative process where the programmers are required to make continuous improvements in the code, add new features, and so on. With the increase in code complexity, it becomes essential to follow clean code practices. We’ll go through just that in this blog! I’ve used Rober Cecil Martin’s aka Uncle Bob’s “Clean Code” as a reference for this post. I highly recommend this book to anyone looking for software developer jobs.

The clean code practices apply to all programming languages. For demonstration purposes, we’ve used Golang in this post. If you are more familiar with Java, please refer to the examples given in the book.

Let’s get started!

// Commentaries

The primary purpose of comments is to explain the code which can’t explain itself. Comments are pretty helpful in debugging and analyzing code, troubleshooting errors, and preparing documentation. They come in handy when a new team replaces the old one and gets to work on the existing code. 

A rule to follow: A comment only needs to exist if it’s beneficial 

Additionally, you need to be careful while writing commentaries. Some types of comments that one needs to avoid are:

Useless commentaries

Looking for Remote Software Developer Jobs in Silicon Valley Tech Companies Learn How to Write a Clean Code First

Now, this comment is harmless but clearly out of context. The version control system should handle author information, creation, and update dates, not the code itself. Failure to do so will increase useless lines of code in the program and certainly cause the following problem.

Outdated comments

Here’s the thing: your commentary will become outdated at some point in time.

So not just header comments like the above example, but even comments like this one can be problematic:

Remote software developer jobs

When the comment shown above was added, the function only received an Id, name, and phone number, but now it expects an address too! You should avoid these kinds of outdated comments, which can be misleading at all costs.

Poorly written and redundant commentaries:

When the code is self-explanatory, comments like the one below are redundant. They just add useless lines of code and force developers to read what they don’t need to:

Learn to write a clean code

Clean code

When writing comments, always ask yourself: “Are they essential?” If they are, write them as clearly as possible. Remember, the comment should help you, not cause confusion.

Commented Code

At times, we add an entire block of code as a comment thinking that we may use it in the future.

How can a software developer write a clean code

However, most of the time, these commented codes are never used. And so, it’s best to avoid writing comments like the one in this image. 

Think about it: If that piece of code were so important, it wouldn’t be a comment, right?

Names

To write clean and readable code, one should define meaningful names for variables, functions, classes, interfaces, etc. Furthermore, the name of a function, class, or variable should justify its existence and importance in the code. Simply put, good names are investments that we make to improve the code quality. 

It is difficult to search meaningful names while writing a clean code

Meaningful Names

Take a look at this example:

Remote software developers should know how to write a clean code

It might take a while to understand that this is a median function. 

Now, take a look at the same example with well-picked names:

This is a clean code

Meaningful names like the ones above make the code readable, understandable, and clean. 

Project Patterns

Following a project convention is a good practice for choosing names. For example, if you have defined a function that deals with a user object, don’t create function names like:

Project patterns

Using GetMemberName instead of GetUserName will just confuse the readers.  So, be very mindful while you decide the names of the elements in your code.

Ambiguous Names

Names should clearly describe what a variable is or what a function does. And so, avoid using ambiguous names, like this one:

Ambiguous names

Ok, but renaming what? It’s better to create big names instead of short ones, but ambiguous. So it would be better to create something like:

How can you write a better code, coding tricks and tips

Effect Names

Names should clearly define the action and the purpose of the element, for example:

How can remote software developers write a clean code for better jobs

This function is not just detaching a User from an Account but is also deleting the User. A better name for this would be DetachUserAndRemove().

Functions

Functions play an essential role in the world of programming. As a result, these functions have gained more traction with functional languages such as Elixir, Scala, Kotlin, Swift, Haskell, Golang, etc.

Almost every programmer knows the basics of functions. However, here are a few pointers that will help you write cleaner and better functions:

Short

Have you ever seen a function with hundreds and thousands of lines? 

Have you ever seen a code with thousand lines

A function should be short enough to help the reader understand its purpose at first glance.  But how short should it be? We won’t impose some magic number of lines here, but if your function consists of more than 20 lines of code, try refactoring into a smaller one.

One practical way to shrink your functions is to avoid adding logic into if, else, while indentations. Here’s an example:

Functions

The function name shows that it prints prime numbers between two arbitrary numbers. Here’s what you can do to make the function more readable and understandable:

Remote software developers should learn to write a clean code

This function is easier to understand than the earlier one. 

We removed the logic inside the “if and for loops” and defined them separately in other functions, making them more concise. Here are those functions:

Writing clean code

Note: Take a look at the order of the functions. When you are decomposing the function responsibility, the reader of your code must read it as quickly as a journal or a story. So try to maintain a top-to-bottom readability of the code.

Single responsibility

A critical concept in functions is the single-responsibility principle (SRP). This concept is the first principle of the SOLID principles in OOP. It states that each function should have one single responsibility, which must be well-defined and executed.

Take this example:

This is how a remote software developer can write a clean code

This function has more than one responsibility. Hence, it is best to refactor the code when a single function is responsible for multiple tasks.

Parameters

A function with a lot of parameters is difficult to understand. Here’s why:

Clean code writing

These kinds of functions make the code reviewing process time-consuming and messy. 

To prevent this, you need to ensure that you use a limited number of parameters that clearly define the objective of the function.

How to write a clean code as a remote software developer

Note: Use the same idea to deal with return arguments.

A clean code has various benefits. First, it helps in performing code reviews efficiently. That way, your peers can understand the code, flow of data, and underlying logic with minimal effort. In addition to this, new joiners can easily understand the old code, making their onboarding process smoother. A messy code might take a developer months to add a new feature or fix a bug. However, a clean code makes the process a lot smoother. And thus, a clean code can save a lot of time, money, and resources in your remote software developer job search!

Happy coding!

Do you want to apply to remote US software jobs from the comfort of your home? If yes, Turing may be able to help you very quickly. Visit our Jobs page to know more!

Join a network of the world's best developers and get long-term remote software jobs with better compensation and career growth.

Apply for Jobs

By Sep 14, 2021
Gultekin Turkey
For Developers

Gültekin from Istanbul Reviews Turing.com, Says Remote Work Has Helped Him Spend More Time with Family

In his Turing.com review, Gultekin said he would recommend Turing to his friends and other developers who want to start their dream job.

“I would recommend Turing to my friends for sure as well as to other developers who want to start their dream job or any company that wants to work with high-quality developers,” Gultekin said.

In this blog post, we spoke to Istanbul’s Gültekin, who has been working with Turing as a Machine Learning Engineer, to know how he thinks about Turing as an organization and what he likes/dislikes about us.

Gültekin’s Turing.com review:

Speaking about the change that he has noticed in his life after joining Turing, Gültekin said, “I have joined Turing mainly because of all the successful team members in it and achieve possible goals with them. Also, using my machine learning knowledge to vet developers and match them to their dream job, excited me.”

On being asked what motivated him to select Turing as his place of work, Gültekin mentioned that working remotely, in general, helped him spend more time with family, and also there are no time-consuming necessities, such as traveling to the office, which in result not only saves time but also increases the work efficiency.

When asked whether he would recommend Turing as a workplace to his friends, he said, “I would recommend Turing to my friends for sure as well as to other developers who want to start their dream job or any company that wants to work with high-quality developers.” 

Finally, summing up his journey so far at Turing, Gültekin gave us a 10+ out of 10. He concluded, “We have many team members from all around the world who are the best at what they do. Furthermore, our directors and managers set up really good goals for us to achieve, and while doing so we get so much to learn and improve ourselves.”

If you’re a talented developer looking to work with the best US and Silicon Valley companies from the comfort of your home then try applying for Turing jobs now. Turing offers long-term, full-time remote software jobs to skilled developers across the globe. Experience the remote #boundaryless revolution now and enjoy a better work-life balance from anywhere in the world.

Turing.com as a deep jobs platform is committed to enriching the lives of its people while allowing them to work on long-term projects with top software companies. To get a clearer understanding of how people at Turing love their jobs, we reach out to Turing employees from around the globe to listen to their stories and experiences. If you want to share your experiences with us, reach out to me at [email protected]

Technology vector created by pch.vector – www.freepik.com

Join a network of the world's best developers and get long-term remote software jobs with better compensation and career growth.

Apply for Jobs

By Sep 9, 2021
Turing.com Salary Review Turing Developer Salary
For Developers

Turing.com Salary Review: How Much Do Turing Developers Earn?

Remote software developers from across the world answer the debated question: What are Turing salaries like?

Talent is universal, but opportunity is not. For this reason, Turing aims to democratize career opportunities for exceptional software developers. The organization’s intelligent talent cloud provides long-term, remote, Silicon Valley-caliber jobs to engineers across the globe. Turing developers work with elite US companies in various industries—from medicine, insurance, finance, automotive, to consumer electronics, without requiring a visa. Though this blog does not aim to reveal actual Turing salaries, it summarizes the developers’ opinions on their overall income levels after joining the organization.

Turing is devoted to helping engineers find great jobs with leading firms. The organization recently earned a coveted spot on Forbes’ List of America’s Best Startup Employers for 2021. In addition, in a recent survey conducted by the company, an astounding 100 percent of the surveyed developers shared that Turing is “much better” (82%) or “better” (18%) than other remote work platforms. 

Turing.com Salary: Remote Developer Jobs Survey

Turing Developer Survey: An astounding 100 percent of the surveyed developers revealed that Turing is better than other remote work platforms.

But let’s head over to the main question.

How much do Turing jobs pay?

While money is not the only factor motivating employees to do their best, it’s certainly a primary consideration. A recent study quotes “unsatisfactory salary” as the most significant factor responsible for employees quitting. It is evident that even if employees enjoy their work, they have no qualms about moving to a different organization if a competitive salary isn’t part of the picture. To get the skinny, we reached out to some of Turing’s developers to learn ‘How much do Turing developers earn?’

A Turing salary is higher than the market average in most countries

In a recent study, 87 percent of employers said their company is experiencing skill gaps. Ninety-five percent said it’s difficult to recruit skilled professionals. The message is clear: There is only so much top-tier talent out there. If organizations want to attract the best people, they need to compensate them well. Employers that do not offer competitive pay put themselves out of the race when hiring great talent.

Turing recruits the best minds in the field. Hence, it offers competitive salaries that surpass the market average in most countries. After all, the best talent deserves the best pay.

Here’s what Dhey, a software engineer from India, had to say on Turing’s pay policy: “I was working at Amazon for two years. But with Turing, I feel like I have the best of both worlds—I work in Silicon Valley from my home, with amazing pay and incredible growth opportunities.”

Alexey, a web developer from Moscow, Russia, revealed: “I have over 13 years of experience in web development. However, the remote projects in Moscow were not up to my liking. That’s when I found out about Turing. I fell in love with the vibe of this organization. My earnings have doubled since I joined Turing, and my career is growing very fast.”

Yet another developer from Nigeria, Aliyu, shared: “[Because of Turing] I have a much higher income and a stable job with a US-based company. Here, there’s more respect, more freedom, more salary—basically more of everything! It’s hard to think about how many talented developers spend hours applying for mediocre jobs when they can apply to such amazing jobs at Turing.” 

Turing developers have high productivity and retention rates 

Low salaries lead to high turnover, costing companies vast amounts of money. But that’s not all. Low wages often result in low productivity. Poorly remunerated employees are less invested in their jobs. While employees receiving higher salaries, know that the organization values them. Better pay also incentivizes a culture of high output. 

High productivity and retention rates are a reflection of a solid team. Therefore, Turing offers competitive salaries to ensure that its employees are well-compensated, motivating them to go above and beyond. 

A Brazil-based developer, Robson, shared: “I am never going back to freelancing again! [Turing] pays developers what they’re worth. When I was freelancing, I got low hourly rates, and I ended up working with very demanding customers. I often did the work of both—the designer and the developer, for the price of one! I was working hard but was unable to make good money. I’ve been a part of Turing for over a year now. They promised me a steady income, timely payments, and opportunities to work on interesting projects when I joined. I’m happy to say the company has delivered on all its promises! It sounds too good to be true, but it’s not!”

Juan, a full-stack developer from Argentina, added: “I remember googling ‘Turing software engineer salary’ on multiple occasions before joining this organization. I was not sure what to expect. But now, I’m pretty sure that I’ll be staying with this organization for a long time. I earn twice as much compared to my last job and work on projects that challenge me and broaden my skill set. So far, it’s been a great ride!”

Turing jobs aim to promote employee well-being

A low salary often leads to stress impacting both health and work. And thus, Turing is dedicated to helping employees accomplish their professional and personal aspirations through a healthy compensation and work schedule. 

Manaf, a front-end developer from Jordan, said: “Apart from work, I spend most of the time with my family. I am happier to say that I now live a happier and healthier life. I am also doing well financially because my job provides me with higher compensation. I save a lot of money as I work from home!”

James, from Kenya, shared: “My experience with Turing remote jobs has been phenomenal for me. I start my day by hitting the gym. Then, I manage my chores and watch my favorite movies. I feel more productive and creative with the kind of flexibility Turing has.”

Turing.com Salary Review: How Much Do Turing Jobs Pay?

Turing Salary Review: Peter on ‘How Much Do Turing Jobs Pay?’

Peter, a full-stack developer from Nigeria, added: “I used to be a teacher five years ago. But now I’m doing what I love—building software! I have also started feeling more confident [about my career] and seeing rapid growth in it. My income is exceptional compared to local salaries. I bought my own dream house within eight months of joining. I have accomplished all things that I couldn’t three years ago.”

A full-stack engineer from Columbia, Sergio, noted: “This remote software developer job has changed my life completely. I am [way more] productive now. Earning in dollars has strengthened my financial health. Moreover, Turing has fulfilled my dream of being a digital nomad. Next week, I’ll be working from a different country.”

Frequently, the best talent gets poached by hiring managers and head-hunters. However, a well-compensated culture encourages employees to commit to their jobs for the long haul. Turing believes that the true strength of an organization lies with its people—and great talent should always be well-rewarded. 

The organization sees its developers and employees as valuable, appreciating assets. So rather than limiting the profits to executives and investors, Turing shares the company’s success with people who add value to the organization—the employees. In addition, it aims to push a culture of equality, one employee at a time. 

If you’re a brilliant developer looking for remote software jobs in any of these skills, Turing may be able to help you very quickly. Head over to our Jobs page to know more!

Join a network of the world's best developers and get long-term remote software jobs with better compensation and career growth.

Apply for Jobs

By Sep 8, 2021
Emiliano from Mexico loves working at Turing
For Developers

Mexico’s Emiliano Loves Working at Turing: ‘I Consider Myself to Be a Remote Work Advocate’

Emiliano from Mexico reviews Turing.com, says remote work empowers him to make the most out of his time and live his best life.

This time in our Life at Turing series, Mexico’s Emiliano reviews Turing.com and tells us how remote work is giving him the opportunity to enjoy life more.

Turing.com is committed to enriching the lives of its people while allowing them to work on long-term projects with top US software companies. To get a clearer understanding of how people at Turing love their jobs, we reach out to Turing employees from around the globe regularly to listen to their stories and experiences.

Emiliano’s Turing.com review:

People dream to work according to their convenience but sadly, they find themselves in this vicious cycle of a 9-5 job. When people work as per their preference, they are more productive and Turing understands this very well.

Talking about the best part about remote work, Emiliano said: “It feels really empowering to make the most of my time when I am not commuting.”

When asked why he joined Turing, Emiliano said, “I joined Turing because I am excited about the future of work. I consider myself to be a remote work advocate.”

Emiliano also shared his views on how remote work was helping talent all over the world to have the best jobs. He said it was now possible to offer people exciting job opportunities regardless of where they were born.

Opening about the team that he works with, Emiliano said: “My team has very clear goals that make me manage my time and distribute them throughout the day so that is pretty helpful to maintain the work-life balance.” 

Join the #boundaryless revolution with Turing

If you’re a talented developer looking to work with the best US and Silicon Valley companies from the comfort of your home then try applying for Turing jobs now. Turing.com offers long-term, full-time remote US software jobs to skilled developers across the globe. Experience the remote #boundaryless revolution now and enjoy a better work-life balance from anywhere in the world.

Illustrations vector created by stories – www.freepik.com

Join a network of the world's best developers and get long-term remote software jobs with better compensation and career growth.

Apply for Jobs

By Aug 31, 2021
Ivan from Moscow reviews Turing.com
For Developers

‘The Compensation I Get At Turing Is Better than What I Could Get in Moscow,’ Says Ivan in His Turing.com Review

Russian Data Science expert shares his Turing.com review on remote software jobs, working culture, salary, work-life balance, and Silicon Valley opportunities.

In this edition of our Life at Turing series, we spoke to Ivan from Russia to know about his review of Turing.com. 

We regularly reach out to people working with Turing.com to listen to their success stories and understand how the company has helped them achieve a better work-life balance. Let’s find out how Ivan has benefitted by working remotely with the organization. 

Ivan’s Turing.com review

Since its inception, Turing has been advocating for remote work and the enormous benefits it brings for both companies and software developers. Connecting the best developers around the world with top US companies has been Turing’s number one goal. Professionals working with the company have managed to quickly scale up their skills and value. 

So, when we asked Ivan what motivated him to work remotely, he responded by saying that he was looking for options that would allow him to work from anywhere in the world and he found Turing to be a good fit. 

“I’m from Moscow but currently in Georgia, which is one of the benefits of remote work,” Ivan said.

When asked about his overall experience since joining Turing, Ivan said that he found the work culture to be innovative and forward-thinking. He added that the team culture at the workplace was great and up to his expectations.

Coming to his salary part, Ivan said: “The compensation [at Turing] is better than what I could get in Moscow. I’m already suggesting this [remote] format of working to all my friends.”

Turing as a company is not just about delivering high-quality technological solutions but committed to a lot more. It has managed to establish an approach that breaks conventional work culture. The organization aims to offer a platform that is free from any kinds of boundaries and discrimination. It offers equal opportunities to every individual regardless of who they are and where they come from.

Join the #boundaryless revolution with Turing

If you’re a talented software developer looking to work with the best US companies from the comfort of your home, then try Turing jobs now. Turing is always looking to hire the brightest minds for the best organizations. If building a career as a remote developer excites you, then start applying today. Secure the best full-time, long-term software jobs and join the #boundaryless revolution. 

 

Join a network of the world's best developers and get long-term remote software jobs with better compensation and career growth.

Apply for Jobs

By Aug 25, 2021
Turing Reviews Remote Software Jobs
For Developers

Turing Reviews: ‘I Can Travel, Visit My Family and Friends While Still Working,’ Says Shadrack from Kenya

Developer from Kenya reviews Turing.com, remote software jobs, working culture, salary, and work-life balance

This time, in our Life at Turing series, we spoke to Shadrack to know his Turing.com review. Let’s find out what he had to say.

There’s no doubt today’s professionals seek a perfect balance between work satisfaction and personal time. Numerous studies have found that a better work-life balance helps people stay innovative and motivated in the workplace. It also helos them accomplish their professional as well as personal goals.

To help talented professionals get a sneak peek into Turing’s work culture, we reached out to people working for the company from around the globe to learn about their experiences.

We spoke to Shadrack from Kenya in this blog, where he opened up about his likes and dislikes about the organization.

Shadrack’s Turing.com review: What does he think about us?

Talking about the noticeable changes in his life since starting with us, Shadrack said, “Turing allows me to work from anywhere in the world. I can travel, visit my family [and] friends while still working”.

When asked about why he joined the organization, Shadrack mentioned that he chose us to get access to world-class opportunities and increase his professional skill set. According to him, the quality of work that one gets here is both challenging and exciting. 

Turing selects the top 1% of developers in the world through a rigorous process that involves 5+ hours of tests and interviews.

Explaining his monthly compensation, Shadrack said: “The compensation here [Turing] is high; it’s higher than whatever you get locally.”

Turing has always tried to build a workplace that is for all without any barriers and discrimination. On being asked about his experience here, Shadrack said, “You get to work with friendly individuals who are willing to step up and help you in case any challenge arises.”

The Kenya-based developer also shared his thoughts about the equal opportunities that both men and women get in the organization. “You might be from anywhere in the world, but if you have the talent, then you’ll excel here,” he noted.

When asked whether he would be willing to recommend Turing as a workplace to friends or family, Shadrack said he definitely would. 

Finally, quantifying his Turing.com review, the  rated us an astounding 10 out of 10.

Join the #boundaryless revolution with Turing

Turing.com is constantly looking for talented developers from across the globe to work for top Silicon Valley companies. If building a career as a remote developer sounds appealing to you, then start applying for Turing jobs today. Grab the best full-time and long-term remote software development job opportunities and join the #boundaryless revolution right away. Take your career ahead from the comfort of your home and enjoy a better work-life balance.

Business vector created by pikisuperstar – www.freepik.com

Business vector created by pikisuperstar – www.freepik.com

Join a network of the world's best developers and get long-term remote software jobs with better compensation and career growth.

Apply for Jobs

By Aug 20, 2021
Remote software developer enjoying remote work
Developers Corner

Tips for Succeeding as a Remote Software Developer

Being successful in freelance software developer jobs means setting clear responsibilities, managing finances, and maintaining a healthy work-life balance

Many people dream of working as a remote employee. Aside from working from wherever they want, remote workers can better establish their workload and terms. However, not everyone dares to leave their corporate, in-office jobs—because remote work doesn’t always offer job security.

One profession that is flourishing in the boundaryless world is software development. Even if you’re not from the US, working with US-based firms like Turing can help you take advantage of labor arbitrage and potentially earn more than local, full-time roles.

If you’re looking to say goodbye to your 9-to-5 and join the remote workforce, we’ve listed some of our top tips to help you succeed as a remote software developer.

Set Your Responsibilities Clearly 

To manage your workload better, you should first understand the scope of your skills and responsibilities. Doing this allows you to avoid any miscommunications with your client. Because you’ll have to manage your projects, this means you’re also responsible for organizing and directing your activities—as well as ensuring your work is on time, on budget, and within scope. The best way to set your tasks and manage the expectations of your clients is by formalizing your arrangement or partnering up with solutions like Turing. Turing offers developers and clients a contract that covers both their interests⁠—effectively eliminating any chances of miscommunication and allowing both parties to set the record straight. Thus, you can avoid doing tasks outside of your role and protect yourself if your client decides to challenge you legally.

Get Your Finances in Line

If you want to achieve your professional and personal goals as a remote developer, you should organize all aspects of your life, including your finances. It’ll do you well to ensure that you get paid on time as a remote employee. Thankfully, solutions like Turing have payment management facilities that guarantee on-time payments for developers.

One way to take hold of your finances is by creating a budget. Through this, you can track all of your expenses and see where you need to be careful with your spending—whether it means choosing the most budget-friendly equipment or even cutting back on your coffee expenses. In addition, having a budget allows you to fully utilize your available resources and be more disciplined when it comes to spending.

Another way to find financial success as a remote developer is by using tools that can maximize your money. One such tool is a high-yield savings calculator, which allows you to figure out which banks and savings accounts have high annual percentage yields (APY) that will allow your money to grow. Yes, you can indeed make a lot of money by being a remote software developer. But without getting your finances in order, you might not be able to maximize your profits and secure your financial success.

Maintain a Healthy Work-Life Balance

Another way to find financial success as a remote developer is by using tools that can maximize your money. One such tool is a high-yield savings calculator, which allows you to figure out which banks and savings accounts have high annual percentage yields (APY) that will allow your money to grow. Yes, you can indeed make a lot of money by being a remote software developer. But without getting your finances in order, you might not be able to maximize your profits and secure your financial success.

While freelancing allows software developers to control their schedules and lifestyles, many are still prone to overworking themselves and taking on nightmare coding projects that creep into their personal time. If you want to succeed as a freelance software developer, you should understand the importance of having a healthy work-life balance. For one, it allows you to take better care of your relationship and retain a healthy social life outside of work. In addition, achieving a healthy work-life balance can also prevent you from feeling burnt out.

To achieve a good work-life balance as a freelancer, you should set a daily schedule that allows you to put a clear boundary between your personal life and career. However, don’t be afraid to also be flexible with your schedule, since your work arrangement allows for it. Another way to create a solid work-life balance is by understanding your limitations and not putting too much pressure on yourself. While more clients mean more money and better professional stability, over-committing yourself can hamper your productivity and result in poor quality work.

If you want to say goodbye to your corporate lifestyle and thrive as a freelance software developer, be sure to heed the tips we’ve listed above. Or better yet, you can turn to solutions like Turing — which combines the flexibility and independence of freelancing with the stability and financial security of a full-time position. Turing pairs remote software developers with top US companies for long-term roles. Plus, they are continuously re-matched with clients once their engagement ends.

Join a network of the world's best developers and get long-term remote software jobs with better compensation and career growth.

Apply for Jobs

By Jul 1, 2021
Activists holding pride flag for June Pride Month 2021
For Developers

LGBTQ+ Role Models in the Tech Space | Pride Month Series

In honor of Pride Month 2021, Turing spotlights LGBTQ+ tech pioneers: Alan Turing, Tim Cook, Edith Windsor, Christopher Strachey, Angelica Ross, Lynn Conway, etc.

Alan Turing, Tim Cook, Edith Windsor, Christopher Strachey, Angelica Ross, Lynn Conway, and Jon “Maddog” Hall all have two things in common. First, they’re engineering leaders who’ve been a monumental part of the LGBTQ+ community. Secondly, they’ve inspired multitudes with their technological innovation and invention.

Here’s a breakdown of their many achievements: 

Alan Turing (1912-1954)

Alan Turing

We named Turing.com after Alan Turing in honor of his vast scientific legacy. Alan Turing helped design that machine that decoded secret German correspondence during World War II. He also developed one of the world’s first computers, the Pilot ACE (Automatic Computing Engine.) However, Turing’s work was soon cut short. When the British government learned of his sexual orientation, they arrested and prosecuted him for “gross indecency.” Turing died by suicide in 1954, aged 41. Today, he is considered one of the world’s most influential scientistsa 2019 BBC series voted him the most remarkable person of the 21st century. He was issued a posthumous Royal Pardon for his conviction in 2013. On June 23rd, Turing’s birthday, the new £50 banknote will feature Alan.

Tim Cook (1960-)

Tim Cook is arguably one of the most prominent members of the LGBTQ+ tech community. In 2014, Cook became the first CEO of a Fortune 500 organization to come out as gay. The famously private Cook decided to do so after receiving letters from children struggling with their sexual orientation. He came out in a Bloomberg essay, saying, “If hearing that the CEO of Apple is gay can help someone struggling to come to terms with who he or she is…then it’s worth the trade-off with my privacy.”

Edith Windsor (1929-2017)

Edith Windsor is well-known as the lead plaintiff in the landmark Supreme Court judgment that helped overturn DOMA (Defense of Marriage Act) and gave federal recognition to same-sex couples for the first time. Windsor filed the lawsuit after she was unable to claim a tax exemption on the estate her late spouse left her, as the term “spouse” referred only to heterosexual couples at the time. 

Lesser known are Windsor’s contributions as a computer scientist. Windsor worked at IBM for 16 years and achieved the highest technical position at the time, Senior Systems Programmer. Praised especially for her “top-notch debugging skills,” Windsor founded the consulting firm PC Classics after leaving IBM and helped several LGBTQ+ groups become tech-savvy.

Christopher Strachey (1916-1975)

Christopher Strachey’s path crossed Alan Turing’s several times. Strachey’s father worked as a cryptographer at Bletchley Park alongside Turing during World War II. Strachey learned mathematics and physics at King’s College, Turing’s alma mater. In his third year, Strachey suffered a nervous breakdown, allegedly caused by a struggle with accepting his sexuality. Strachey would program a draughts game on a reduced version of Turing’s Pilot ACE  built by the National Physical Laboratory. He later developed the first computer music program: a rendition of God Save the Queen.

Angelica Ross (1980-)

Angelica Ross is a transgender businesswoman, activist, and self-taught programmer. In 2014, Ross founded TransTech Social Enterprises, an incubator to help transgender and non-conforming people find employment in the tech industry. Ross simultaneously balances an acting career, having starred in Pose, American Horror Story, and Her Story. In 2015, Ross was a featured speaker at the White House Tech and Innovation Summit. In 2019, she became the first transgender person to host a presidential forum.

Lynn Conway (1938-)

Lynn Conway is one of the pioneering developers of computer chip design and supercomputer technologies. In 1964, IBM recruited Conway to their research team, where she made significant innovations in chip design and had a promising career. However, when Conway declared herself a transgender woman and began transitioning, IBM fired her. Post-transition, Conway assumed a new identity and restarted her career in “stealth mode.” She achieved success with her work for Memorex, Xerox PARC, and DARPA. In 2020, IBM apologized for firing her.

Jon “maddog” Hall (1950-)

Jon “Maddog” Hall has been a prominent supporter of the Unix/Linux systems and a leading proponent of open-source software. Hall worked with Linus Torvalds, the principal developer of the Linux OS, to make the Linux kernel 64-bit and portable across hardware architectures. He has served on the boards of many organizations, including the Linux Professional Institute and USENIX Association. Hall was head of the computer science department at Hartford State Technical College, where his temper earned him the nickname “Maddog.” In an article for Linux Magazine, Hall came out as gay in honor of Alan Turing’s 100th birth anniversary. He called Turing his hero, saying, “[Turing] did so much for the industry with which I have spent the last 42 years of my life.” 

Turing.com celebrates these pioneers of the LGTBQ+ community who have overcome persecution and made invaluable contributions to science and technology.

At Turing, talented software developers can find long-term, full-time US remote software jobs, across Full StackFront-EndBack-EndDevOpsMobile, and AI/ML roles. Companies can hire top developers across 100+ skills, including but not limited to, ReactNodePython, AWS, and JavaScript.

Join a network of the world's best developers and get long-term remote software jobs with better compensation and career growth.

Apply for Jobs

By Jun 23, 2021
Alan Turing banknote pride month
For Developers

£50 Banknote Pays Tribute to Alan Turing’s Achievements | Pride Month Series

Alan Turing, computer scientist, mathematician, cryptanalyst, and theoretical biologist, has been chosen to feature on the new £50 banknote.

Alan Turing, computer scientist, mathematician, cryptanalyst, and theoretical biologist, is featured on the new £50 banknote to celebrate his contributions to the scientific and mathematical fraternities. The banknote’s design incorporates various elements from Turing’s life and legacy. The banknote will be issued starting today, June 23, Turing’s birthday. The British public chose Turing out of 989 eligible scientists nominated by 227,299 people. 

Banknote issued in tribute to Alan Turing’s many scientific achievements

Turing is known for designing the British Bombe, an electro-mechanical apparatus that helped crack German Enigma machine-encrypted code during World War II. Historians believe this effort altered the war’s course, shortening it by at least two years and saving millions of lives. 

Turing also laid the theoretical groundwork for the modern computer. He devised the Turing machine, i.e., a hypothetical machine intended to investigate the extent and limitations of computation. He worked on the early development of the world’s first computing devices with the National Physical Laboratory and later at the University of Manchester. Turing is also considered a founding father of artificial intelligence, known for designing the “Turing test” to help determine whether a computer can think like a human being. 

Turing’s selection to appear on the banknote celebrates his scientific legacy and recognizes the persecution he endured for his sexuality. In 1952, the British government arrested and charged Turing with “gross indecency” for homosexual acts, which remained illegal at the time. Two years later, he died tragically at the age of 41 by suicide. The Queen issued Turing a posthumous Royal Pardon in 2013. 

Banknote artwork honors Turing’s legacy

The reverse side of the note features clever visual references that celebrate Turing’s achievements.  

  • Turing’s birthday is in binary code on a ticker tape. 

          Alan Turing birthday written in binary on banknote released in June Pride Month 2021   

  • His signature appears on the note, copied from the visitor’s signature book from Bletchley Park, where he worked during WW2. 

          Alan Turing signature on banknote released in June Pride Month 2021

  • A quote Turing gave to the Times newspaper on innovation in computing devices: “This is only a foretaste of what is to come and only the shadow of what is going to be.” 

          Alan Turing quote on banknote released in June Pride Month 2021

  • The note’s conventional security foil has changed to resemble the design of a microchip.
  • Mathematical tables and formulae appear on the note. They appeared in Turing’s celebrated paper, “On Computable Numbers, with an application to the Entscheidungsproblem.” The article introduced the concept of the Turing Machine and is considered the basis of modern computer science.

             Alan Turing banknote released in June Pride Month 2021

  • The Pilot Automatic Computing Engine (ACE) Machine was developed at the NPL (National Physical Laboratory), as the first Turing’s ACE design model. This computer is considered the first complete specification of an electronic stored-program, all-purpose digital computer. 
  • Technical drawings for the British Bombe, the machine used to decipher German code messages. 

Computer science isn’t the only field Turing revolutionized. So the note also includes a sunflower-shaped foil patch, showing his initials, “A.T.” The patch symbolizes Turing’s pioneering work in morphogenetics, another branch of science that studies recurring patterns in nature.

Turing.com pays homage to Alan Turing’s legacy.

Turing.com was named after Alan Turing to honor his legacy of scientific innovation and invention. Alan Turing laid the groundwork for modern computer science and artificial intelligence. Today, Turing.com enables exceptionally talented software engineers to work with elite US companies and build cutting-edge software products. The company also uses AI/ML to help companies vet, hire, onboard, and manage developers. Alan Turing’s contributions made this possible.

Read more about the £50 note here. 

Join a network of the world's best developers and get long-term remote software jobs with better compensation and career growth.

Apply for Jobs

By Jun 23, 2021
Top Silicon Valley companies are finding software technologies like React, Node, Python, AWS, JavaScript, Typescript, PostgreSQL, Java, GraphQL, and React Native most useful.
For Developers

US Firms Are Hiring for These In-Demand Software Skills

US tech companies find software skills like React.js, Node, Python, etc. to be of high value.

US tech companies are finding software technologies like React, Node, Python, AWS, JavaScript, Typescript, PostgreSQL, Java, GraphQL, and React Native most useful in software development projects, according to Turing’s data insights. Based on an analysis of job requirements received between Jan 1, 2021, to May 31, 2021, Turing assessed the demand for various software skills among its customers, i.e., fast-scaling startups and leading enterprises. 

These ten technologies comprise more than half (53.5 percent) of the top 50 skills companies are hiring for at Turing. 

Here’s a breakdown of the top 5 technologies:

React.js is the most in-demand programming language, by far

top front-end skills

American firms find React.js the most helpful skill; it makes up 12 percent of Turing’s top 50 programming skills and nearly 40 percent of all front-end roles in the top 50. React has retained its position since the 2020 edition of this report, wherein it also comprised 12 percent of all roles. React allows companies to create apps with better UI, UX, and speed, which has undoubtedly contributed to its popularity with top tech companies. 

Companies often seek developers who can combine their expertise in React with knowledge of other popular skills-sets. In descending order, the languages most commonly requested with React are Node.js, Typescript, Javascript, and AWS. 

Node and React combinations are prevalent

JavaScript-oriented skill-sets are in demand at top firms. Node.js is the second-most popular programming technology overall and the most in-demand back-end development language. 7.2 percent of the top 50 technology requirements are Node.js-based, while 23.3 percent of back-end job listings include Node.js. 

Moreover, an interesting pattern has emerged: more than half of the jobs that asked for Node also requested React as a required or optional skill (this skill pairing will face some tough competition from Python-React). Apart from React, the skills most commonly demanded with Node.js included AWS, Typescript, Python, PostgreSQL, and GraphQL. 

Another in-demand pairing: Python and React 

Python closely follows Node.js to take up 6.9 percent of the top 50 in-demand skills and 19.2 percent of back-end opportunities. Its versatility and efficiency are likely reasons for its popularity.

Further, Python-React edges out React-Node.js to become the most in-demand skill pairing of all combinations. Node.js, JavaScript, and Java are other skills companies like combining with Python. 

AWS has gained popularity

AWS usage has increased since the last edition of this report; AWS now makes up 6.3 percent of all top 50 job requirements, up from 5.3 percent. It is the most sought-after of all DevOps skills by far, forming almost half (46.3 percent) of all DevOps requirements in the top 50. Given that AWS offers robust security, is cost-effective, easy to scale, and adaptable, its popularity isn’t surprising. 

It’s common for companies to look for developers with a trio of software skills such as AWS, React, and Node or AWS, React, and Python. Firms also use AWS in combination with technologies like PostgreSQL, JavaScript, and Typescript. 

JavaScript rounds off the top 5 software technologies

JavaScript is the fifth most desired programming skill, forming 5.6 percent of the top 50 software skills, up from 4.6 percent in 2020. 

These five skills prove most valuable for US companies looking to build and scale their software development teams. Other skills rapidly gaining popularity include Kubernetes, Docker, Ruby on Rails, Vue.js, Go/Golang, and PHP. 

At Turing, talented software developers can find long-term, full-time US remote software jobs, across Full Stack, Front-End, Back-End, DevOps, Mobile, and AI/ML roles. Companies can hire top developers across 100+ skills, including but not limited to, React, Node, Python, AWS, and JavaScript.

Technology vector created by stories – www.freepik.com

Join a network of the world's best developers and get long-term remote software jobs with better compensation and career growth.

Apply for Jobs

By Jun 23, 2021
An artificial nose to showcase artificial intelligence companies developing a sense of smell
For Developers

Artificial Intelligence Is Developing a Sense of Smell

A crucial question Covid patients face: How to regain their sense of smell? Artificial intelligence companies may soon help with that.

It hasn’t been long since engineers enabled machines to see and make decisions based on their observations. Now, they can smell too. A Grenoble-based startup is making use of artificial intelligence combined with digital olfaction to mimic the human sense of smell and help customers convert odor data into actionable information. 

Digital Olfaction – How it Works

The human nose uses the odor molecules released by inorganic and organic objects to enable the sense of smell. The odor evaporates when the energy in objects increases, helping inhale and absorb them through the nasal cavity. 

Digital olfaction works in a similar fashion. First, it captures odor signatures using biosensors and then uses software solutions to analyze the given odor data and display the results. Artificial intelligence helps interpret the signatures and classify them based on a database of previously collected smells. 

In a recent interview, the company CEO said that in terms of performance and its ability to recognize different smells, digital olfaction is close to the way human noses work.

Practical Uses of Digital Olfaction

Odor analytics can help companies: 

  • Engineer the ideal “new car” smell for the automotive industry
  • Catch food spoilage in consumer appliances
  • Approve or reject raw material supply
  • Lower R&D time for new beverages and foods
  • Create health sensors and personal care devices that use odors to detect possible issues and alert users

One possible use of this technology is to assist in developing devices that help COVID-19 patients recover their sense of smell.

Read more about this technology

Join a network of the world's best developers and get long-term remote software jobs with better compensation and career growth.

Apply for Jobs

By Jun 16, 2021
Hack The Rare Hackathon
For Developers

Hack The Rare Hackathon: Turing Developers Come Together to Build Software for Rare Disease Treatments

At Hack The Rare Hackathon, Turing developers teamed up with OpenTreatments Foundation to build software to support the development of rare disease treatments.

Today, software is everywhere. From addressing our daily needs to solving complex engineering problems, software is transforming almost every industry. 

Medical treatments are no exception. By enabling the treatment of unusual diseases, software has helped save lives. However, there is still tremendous opportunity for technology to help scientists discover treatments and cures for rare illnesses.

To find out if software engineers can create novel solutions to save lives, Turing organized the “Hack The Rare” hackathon. Participating engineers built open-source software tools to support the development of treatments for rare, devastating diseases affecting 400 million patients worldwide. The event, organized in collaboration with OpenTreatments Foundation, brought together talented developers from around the world.

Why a hackathon?

Most rare diseases have too few patients for biotech companies to develop treatments profitably. For many atypical ailments, patients must take the lead to develop treatments for their conditions by starting a non-profit organization, learning the science, and partnering with researchers. For this hackathon, software developers worldwide came together for four days between April 23rd and 27th. They built specialized tools to empower such patients to create treatments.

Hack The Rare Projects

The hackathon featured four projects that participants could choose from. The goal of their projects is to help patients get one step closer to life-saving treatments. 

  • Patient registry: The first goal for any rare disease is to identify other patients around the world diagnosed with the same illness. For this project, participants created a web or mobile app for newly diagnosed patients to register and associate themselves with the disease in question.
  • Activity tracker: Patients with rare diseases often struggle with basic activities such as sleeping, eating, walking, talking, etc. A patient’s activity is one of the most reliable indicators of their disease’s progression and their treatment’s effectiveness. In this project, participants created a web or mobile app to help patients track and record their activities and identify abnormal patterns.
  • Data vault: Storing data from research experiments is one of the hardest challenges for patients. Data is typically stored in hard drives or cloud drives without proper labeling and tracking. In this project, participants created a data vault to help patient-led organizations securely store files,  connect them to research projects, and share with individuals in need.
  • Materials API: Biomedical research involves physical materials such as reagents, animals, cells, chemicals, etc. When patients begin research to find a treatment, they struggle to find suitable materials to get started. In this project, participants created an API or web app to store, retrieve, and order such materials. 

Throughout, participants applied their tech skills to build innovative software solutions. OpenTreatments Foundation’s CEO Sanath Kumar Ramesh carefully evaluated the projects to identify the winners. 

Hack The Rare WinnersThe first prize went to a team led by Favour Ori. Favour and his fellow engineers Fawas Kareem and Oluwatunmise Adenuga worked on building a patient registry project. Badis Marabet won second prize for his solo registry project.

If you are a passionate software developer hoping to make an impact, you can apply to become a Turing remote developer and shape the boundaryless ecosystem. You can also make your mark on rare disease treatments by contributing to the development of the OpenTreatments software platform. Check out their source code on Github.



Join a network of the world's best developers and get long-term remote software jobs with better compensation and career growth.

Apply for Jobs

By May 12, 2021
Turing Deep Jobs Platform
For Developers

Why a ‘Deep Jobs’ Platform is a Better Choice for Companies and Remote Job Seekers

Turing offers vetting, onboarding, payments, time tracking, performance monitoring, and communication tools to ensure high productivity and transparency

Great employees are a must, not only for building big companies but also for keeping organizations competitive in the market. But as anyone who has ever had to hire for important roles would agree, hiring remote talent often feels like a gamble. 

While the use of traditional job boards in the hiring process is undeniable, recruiters and candidates increasingly feel that these platforms’ mere act of matchmaking is not yielding the desired results.

The covid-19 pandemic has further exposed the inherent flaws and the shallow nature of traditional job platforms. Millions of talented people are now finding themselves in jobs (if they are lucky enough to have one), where they are both underutilized and under-compensated. Firms are also facing difficulty hiring quality talent since hundreds of thousands of skilled workers have gone remote.

In such a scenario, the whole idea of a traditional CV and job listing platform looks outdated, and the need for a ‘deep jobs’ platform is now more critical than ever. 

So what is a deep jobs platform?

Traditional job listing platforms offer a digital equivalent to a CV that gives only a few key points about the candidate. They also provide little to no help in vetting and retaining the ideal candidate. Their offering stops at the mutual discovery of companies and prospective employees. 

As the name suggests, a deep jobs platform goes deep into the hiring process and addresses the various stages associated with it. It offers a higher value proposition to interested employers and job seekers by providing customized products and services. It does so by creating highly enriched candidate profiles with the right signals/indicators for recruiters and managers. A deep jobs platform also offers support across critical stages of the employment journey like vetting, onboarding, payments, etc. Post-match, a deep jobs platform, like Turing, may even offer support services like time tracking, performance monitoring, and communication tools, among others, to ensure high productivity and transparency for customers and employees.

The remote hiring challenge in tech

For technology companies, recruiting skilled talent is difficult as thousands of firms compete to hire from the same limited local pool of skilled developers. The scarcity of top-level talent in the market makes retention a big problem, too. 

And with so many organizations chasing so few developers, hiring becomes costly. These hiring challenges hit companies from the Bay Area and New York, especially hard since it has become prohibitively expensive to hire top IT professionals. The problem of recruiting top talent has become so huge that now 65% of technology leaders believe it is hurting the industry.

So, to solve the above problems of hiring, retention, and cost, many firms are looking for remote developers. But hiring the right team of offshore developers can be tricky, particularly when most of the recruiters rely on a traditional resume to source candidates. 

According to Turing.com co-founder and CEO Jonathan Sidharth, companies usually struggle with three things while trying to hire remotely distributed teams. 

He says, “first, it’s really hard to find high-quality remote talent. Second, it’s extremely difficult to evaluate and vet remote talent to figure out who’s the right match for your company. And finally, how do you manage and operate a distributed team after you found the right team?”

Jonathan and Turing co-founder Vijay Krishnan faced all these problems while building their previous start-up, Rover, out of Stanford in 2007-08. They found they had to cast a wider net to recruit talent after realizing that start-ups like theirs couldn’t compete with giant Bay Area companies like Google and Facebook to recruit the people they needed. But, after they decided to run Rover via remotely distributed teams, they found that the CVs on job portals were of little help for remote-first companies that needed to hire quality offshore developers. 

Jonathan explains the problem of the traditional CVs by giving the following two examples. 

A Silicon Valley company might feel comfortable with a computer science graduate’s academic credentials from any of the Ivy League universities. But the same organization may be clueless while hiring a remote Nigerian developer, seeing an institute, which might very well be the Stanford of Nigeria, on his/her resume.

Similarly, a US-based company might not doubt an ex-Googler’s caliber because everybody knows Google and the vetting process it implements to hire quality developers. But, what’s the Google of Rio? Most of us don’t know.

In other words, companies will have little idea about the real skills and qualifications of remote developers through a traditional CV as it won’t tell them enough about the foreign schools and companies.

What solutions does a deep jobs platform like Turing provide?

Jonathan and Vijay understood the importance and need for a deep jobs platform to provide in-depth developer profiles, a rigorous vetting process, and management solutions for modern-day hiring problems. So, after the acquisition of Rover in 2017 by Revcontent for close to $30mn, the duo decided to build something new based on their prior experience, and Turing was born.

Turing’s approach is a vertically-integrated solution that replaces traditional IT service company offerings with an AI-based platform. It connects the top 1% of remote developers with the best US and Silicon Valley firms. 

Unlike a traditional jobs board, a deep jobs platform like Turing doesn’t stop at just matchmaking.  It goes beyond that and solves multiple problems for both companies and candidates during the hiring process.

  • Deep Sourcing and Profile Creation: A deep jobs platform such as Turing goes deep into the global talent pool to find the best candidate. It creates an impactful profile that lists out the skills and potential of a developer. These deeper profiles help match companies and candidates according to their requirements and skill-sets, respectively.

Turing Deep Developer Profiles

  • Rigorous Vetting: When a human reviews a resume, there are inherent biases that exist. But a deep jobs platform like Turing implements a color and gender-blind vetting algorithm to select the best candidates meticulously. Turing evaluates top candidates by testing their expertise, experience, performance on scientifically-designed coding challenges and interviews. 
  • Matching and Onboarding: An AI/ML-powered deep jobs platform like Turing not only matches companies with the right developers but also helps onboard them. The onboarding process addresses the vital concept of culture fit. Employees fitting into the existing culture of companies exhibit superior job performance. They are more satisfied and also less likely to leave the company.
  • Collaboration Tools: On the management side, Turing provides tools and protocols to address the challenges of managing remote teams. The Turing Workspace and Turing Virtual Machine do it all for the companies from tracking hours to enabling check-ins and standups to security.

Turing Virtual Machines

  • Payments processing: The payments are entirely handled by Turing, making it easy for both the organizations and job seekers.
  • Risk-free trial: Turing is so sure about its selection process that it lets companies pay after two weeks of the free trial if they are satisfied with the developer’s quality.
  • Community: Since remote work doesn’t give developers the atmosphere of a physical office, where they bump into their colleagues now and then, many workers might feel lonely. Turing understands this well and hence provides a sense of community to world-class developers. Having a community not only helps developers connect and grow but also creates long-term value for them.

Deep jobs platform in a remote-first world

With studies predicting more and more people shifting to remote work, companies must have the best possible offshore talent on board to stay ahead in an ever-changing tech market. In such a scenario, a deep jobs platform with its deep developer profiles emerges as a better choice for companies and remote job seekers. It enables them to go genuinely boundaryless.

“Talent in the cloud working from anywhere beats talent restricted to a single city. People have a better quality of life. Companies have a larger, more diverse talent pool. Why does your team need to live where your office is headquartered?” says Jonathan.

Turing’s expertise in the remote developer arena will iron out many of the problems that organizations could face while hiring and retaining top remote engineers in this ‘highly uncertain’ period.

If you’re a developer looking for the best remote US jobs or an organization planning to hire remote silicon valley caliber candidates, try Turing’s deep jobs platform for yourself today.

Business vector created by pikisuperstar – www.freepik.com

Join a network of the world's best developers and get long-term remote software jobs with better compensation and career growth.

Apply for Jobs

By Mar 13, 2021
For Developers

Turing Named One of America’s Best Startup Employers for 2021 by Forbes

Turing ranked 16th out of the 500 companies selected for Forbes’ list of America’s Best Startup Employers for 2021.

Turing.com has earned a coveted spot on Forbes’ List of America’s Best Startup Employers for 2021. Out of 500 companies named to the illustrious list, Turing ranked 6th in the Business Products and Software Services category and 16th overall. 

Leading media outlet Forbes teamed up with market research firm Statista to identify fast-growing startups that employees love. Forbes lauded the selected employers for “attracting and engaging employees through virtual games, classes, and support systems in a year unlike any other.” 

Forbes compiled the list using an innovative methodology based on three key factors, namely employer reputation, employee satisfaction, and growth. Ultimately, Forbes made their selections through an in-depth analysis of over 7 million data points. Out of 10,000 eligible American businesses, only 500 firms made it to Forbes’ list of the best startup employers.

To Turing, this recognition is more meaningful, especially because of its exclusively remote workforce. The company works hard to cultivate an inclusive, positive, and engaging work culture for its globally distributed team of employees. 

The accolade is a testament to how united Turing’s team members are behind the company’s mission to source, vet, hire, match, and manage remote software developers for top-tier US companies. Driven by the company’s core values of continuous improvement, speed, and focus on long-term customer-centricity, Turing’s employees are dedicated to shaping the future of work. 

What’s more, Turing has witnessed exponential growth in the past year and a half, adding several brilliant, highly-skilled employees to its global team. The company continues to grow in size and strength in tandem with its thriving and rapidly multiplying base of 300K developers looking to find jobs with top US companies. 

“We’re thrilled to be named one of America’s Best Startup Employers by Forbes,” said Turing CEO and co-founder Jonathan Siddharth. “Our employees are the backbone of our organization. I’m proud of what we’ve achieved together. This accolade will help accelerate our mission to hire the best talent in the world, irrespective of location.”

The Forbes honor comes close on the heels of other industry-wide recognitions for Turing, such as its inclusion in Fast Company’s prestigious list of the World’s Most Innovative Companies for 2021. 

You can find Forbes’ complete list of America’s Best Startup Employers here. While evaluating Turing, Forbes reviewed articles, blogs, social media posts, Turing’s online reviews, website traffic, and company headcounts. To learn more about the Forbes methodology in detail, head here.  

If you’re a company looking to build globally distributed, exceptionally talented software teams, Turing can help you hire from the top 1% of the world’s remote developers. If you’re a brilliant software engineer looking to work at Silicon Valley and US-based companies, you can apply now to remote Turing jobs.

Vector created by pch.vector – www.freepik.com

Join a network of the world's best developers and get long-term remote software jobs with better compensation and career growth.

Apply for Jobs

By Mar 12, 2021
Developer Testimonials

How to be a successful remote software engineer

This blog post covers how a developer can be recognized, find a remote job, and be successful working remotely. However, it’s important to understand what is in it for organizations hiring remote developers.

*Full Disclaimer: All the views expressed in the blog are solely my personal views and biased based on my personal experience. The best-practices, technologies, or benefits listed are no silver bullets. The article is focused on engineers in the web development space. 

Remote working is not a new concept but working remotely is gaining popularity during these times. Many organizations are forced to rethink how they work. Covid-19, has impacted every person in the world, but with the challenges the pandemic has created comes opportunity.

There has never been a better time to work remotely, especially for engineers. Many organizations have now turned remote-friendly, some have also started hiring developers from regions unheard of – the reason? Untapped potential!!

This blog post covers how a developer can be recognized, find a remote job, and be successful working remotely. However, it’s important to understand what is in it for organizations hiring remote developers.

Why organizations should hire remote developers

It would be unfair to say that organizations do NOT want to hire remote developers as they are bound by government laws which prevent them from going beyond their country to hire a person on their payroll. It’s only possible for large corporations.

Let’s first understand the benefits of hiring remote engineers. As an organization you can:

  • Hire engineers who have untapped potential – these engineers have high productivity and are eager to learn.
  • Hire engineers from countries with lower GDP – allows you to pay people less than you would if you hire local talent.
  • Add diversity to your company culture – allows sharing different ideas and perspectives that you did not have before.
  • Become a 24×7 company – by hiring engineers in varied timezones you can move faster and support customers globally.

Now that you understand why a company wants to hire you, let’s discuss why a developer would want to work remotely.

Why engineers should consider remote jobs

There are many benefits (and few drawbacks) of working as a remote engineer. 

  • Choose your hours – Since you work in a different timezone, you can choose the hours you want to work, though it’s important to have some overlap. (more on that later)
  • Work with people with diverse backgrounds – there is a different thing about people who are well-traveled, right? Why is that?
  • Get paid more than your peers – you can only earn what your industry pays you, what if you changed the local industry? 😉
  • Choose where you work– Home, Coworking office, Coffee Shop? It’s recommended though you have a consistent setup (again, later!)
  • Better work-life balance – Save time traveling, get more time off (remote organizations are usually flexible), be with your loved ones often.
  • Choose your own technologies – though it helps get better jobs depending on the tech you work with, organizations are looking for the skills you’ve developed to help them identify what you’d work on.
  • Immense growth – working with people globally brings a lot of different perspectives allowing you to 10x your growth.

Why would organizations consider you

We have established that organizations want remote engineers, now let’s look at why an organization would consider you? What do you need that makes an organization believe you are remote-friendly?

Open Source Contributions
Organizations want to look at the work you have done. 

  • It increases the credibility of your work
  • It shows that you love writing code
  • It gives them a glimpse into the code you write

Remote-friendly technologies
If you are looking to join a startup, most likely they use technologies that are popular right now. Having experience in current tech is a great way to get noticed. Some of these technologies are (but not limited to):

  • Javascript (Node and React)
  • GraphQL
  • Python (Django)
  • Kubernetes and other cloud devops experience is a huge plus

It usually helps to be able to work on both backend and frontend (Full-Stack), since it’s crucial to be self-driven in a remote environment.

Solid previous experience and profile
Organizations love when they find a person who is a great problem solver. Working on multiple projects and industries, at different roles, are usually indications that you will do well in their company. Companies will also check your Linkedin profile to understand you better. Having an updated profile and strong recommendations from previous employment can go a long way towards helping you find the right remote job.

Attitude
I saved the most important one for the last. Companies hire for attitude rather than skill. Skill can be learned, but attitude takes a long time to correct. Having the right attitude is the only way to get good remote jobs. 

So what do I mean by having the right attitude? 

Display a willingness to learn more about their company, show a genuine interest in the company’s industry and what it cares about. Read the company’s vision, its core values, culture, and apply only if these attributes excite you. It’s essential that you’re a quick learner so that you can developed the required skills to perform at the company.

How to find remote jobs

So, if you have what it takes to be a good remote engineer, the question is, how do you find a remote job that you love?

Apply to a company’s remote jobs (via portals or company website)

If you do a quick search on Google, you will see many platforms like WeWorkRemotely, remote.co, and others.

You can start by looking at the skill you want to target and applying on the posts (make sure you research the company before applying). You need to have a great cover letter. Cover letters are a great way to express why you are the best person for the job they posted. A strong cover letter makes you stand out as companies receive 100s of applications.

Which application do you think they are most likely to open first? The one with the cover letter! You can also search for companies which are remote-friendly and apply directly via their websites.

Freelance

Freelancing is also another way to get jobs. Freelance positions offer more flexibility and let you have a better work-life balance. Freelance work also gives you the chance to choose your hourly rate, but you may sacrifice job security, and you might also waste time hunting for your next gig.

Platforms like Turing, guru, Upwork, and freelancers are good places to find remote gigs.

Personal Connections

Twitter is a great place to build relationships with other fellow developers. These connections will help you find your next job. 60% of organizations hire people that are referred by the people already working in their companies. This means the more people you know in the industry, the better chance you will have to get a good job.

Turing.com 

Turing is a unique platform that bridges the gap between a freelance platform and a job portal. It is truly focused on the developer’s well-being, growth, and tools to be successful in working remotely.

Turing is different because:

  1. You do not have to hunt for jobs – Turing will understand your goals and find you a job that you want. 
  2. You get long term work – You will work with a real company as their team member. You get the benefits of the company you are working for under turing. 
  3. You still get the flexibility as you choose your own hours and your rate.
  4. Turing pays you on time – you do not have to follow up with your clients to get paid or depend on a rating system to get jobs. 
  5. Turing handles issues that may arise between you and the client. 

Turing gives developers peace of mind by allowing them to focus on their skills and their job instead of spending time doing administrative work that reduces their productivity.

Working Remotely

Getting a job is only the first step. There is a lot more that you need to do to be successful at your job. 

Communication
Being an effective communicator is the key to being successful at a remote job. Working remotely means you need to make extra efforts to communicate with your manager.

  • Have regular check-ins with your manager (weekly as well as monthly)
  • Have at least 3 hours of time overlap between yours and your team’s work hours. 
  • Make sure you and your manager(and your team) are always on the same page, and that expectations are clearly understood. 

Turing.com actually does a great job improving your communication with your manager. 

Self-driven
You need to be self-driven. The more you have to depend upon another person on the team, the more difficult it will get to be productive in your job. It certainly helps if you are a full-stack engineer, as this allows you to do both the frontend and the backend by yourself – if it is not possible then you must try to separate (but not isolate) your responsibilities.
The more time overlap you have with your team, the more flexible you can be with respect to separating your work responsibilities.

Setup
Having a decent office and workstation setup is very important. You cannot be productive at your work if you have “pebbles” on the race track you are trying to win.

  • Make sure you have a good (and consistent) place to work
  • Your environment should be distraction-free
  • Good camera and microphones to have calls with your team. 
  • A fast computer that can handle your daily workload

Trust
Remote teams are happy and do more if they trust each other.

Here is a great article.

With this, I wish you luck finding a great remote company to work at. It can be hard, but rewarding. I trust that turing.com can help you find the next job that you love. 🙂

Join a network of the world's best developers and get long-term remote software jobs with better compensation and career growth.

Apply for Jobs

By Oct 27, 2020
Developers Corner

PART 2: UNDERSTANDING MySQL CLIENT / SERVER PROTOCOL USING PYTHON AND WIRESHARK

In this article we’ll learn how to write our own native MySQL client from scratch using no connector or external libraries.

In the previous article we researched MySQL Client / Server Protocol using WireShark. Now lets start to write our code in python to simulate MySQL native client. Final codes are here: Github repo

First of all we have to create MYSQL_PACKAGE class. MYSQL_PACKAGE class is the parent of all other package classes (HANDSHAKE_PACKAGE, LOGIN_PACKAGE, OK_PACKAGE and etc.)

It accepts resp parameter on initialization. Resp is the binary response received from the server in bytesarray type. One of the important and interesting method of this class is next method.

Method next reads a portion of the bytes from the binary response. When we call this method, it reads some portion of bytes and puts a pointer to the last position where reading ended (changes a value of self.start and self.end properties). When we call this method again, it starts to read bytes at the point it last stopped.
 
Method next accepts five parameters: length, type, byteorder, signed, and freeze. If freeze is True it reads some portion of bytes from the binary response but does not change pointer position. Otherwise it reads a portion of bytes with given length and changes the position of pointer. If length is None then method reads bytes until the end of response bytesarray. Parameter type can be int, str, and hex data types. Method next converts a portion of bytes into the appropriate datatype according to the value of type parameter.
 
Parameter byteorder determines the conversion of bytes to integer type. It is up to the architecture of your computer. If your machine is big-endian, then it stores bytes in memory from the big address to the little. If your machine is little-endian, then it stores bytes in memory from the little address to the big. Thats why we have to know the exact type of our architecture to be able to convert bytes to integer correctly. In my case, it is little-endian, that’s why i’ve set the default value of byteorder parameter to “little”.
 
Parameter signed is also used in conversion of bytes to integer. We tell the function to consider each integer as unsigned or signed.
 
A second interesting method of this class is encrypt_password. This method encrypts a password with the given algorithm.

This method accepts two parameters: salt and password. Parameter salt is the concatenation of two salt1 and salt2 strings from the Greeting Packet received from the server. And parameter password is the password string of mysql user.
 
In the official documentation password encryption algorithm is:
 
password_encrypt_algorithm
Here “20-bytes random data from server” is concatenation of salt1 and salt2 from the Greeting Packet received from server. To remember what the greeting packet is look at the previous article
 
Now I want to explain the encrypt_password method line by line.
 
bytes1 = sha1(password.encode(“utf-8”)).digest()
 
We are converting password string to bytes, then encrypting it with sha1 function and assigning to bytes1 variable. It is equal to this part of algorithm:
 
password_encrypt_algorithm1
 
Then we are converting salt string into bytes and assigning to the concat1 variable.
 
concat1 = salt.encode(‘utf-8’)
 
password_encrypt_algorithm5
 
Third line of the method is:
 
concat2 = sha1(sha1(password.encode(“utf-8”)).digest()).digest()
 
password_encrypt_algorithm2
 
Here we are double-encrypting password string with sha1 function and assign it to the concat2 string.
 
Now we have two concat1 and concat2 variables. We have to concatenate them into one byte array:
 
bytes2 = bytearray()
bytes2.extend(concat1)
bytes2.extend(concat2)
 
password_encrypt_algorithm6
 
Then we have to encrypt concatenated bytes with sha1 function and assign to the bytes2 variable.
 
bytes2 = sha1(bytes2).digest()
 
password_encrypt_algorithm3
 
So we have two variables with encrypted bytes: bytes1 and bytes2. Now we have to do bitwise XOR operation between these variables and return the obtained hash.
 
hash=bytearray(x ^ y for x, y in zip(bytes1, bytes2))
return hash
 
password_encrypt_algorithm4

CLASSES FOR DATATYPES

In the previous article we’ve learned about Int and String data types of MySQL Client / Server protocol. Now we need some classes to be able to read fields from received packets.

INT CLASS

Int class implements INT data type of MySQL Client / Server protocol. It accepts package parameter on initialization. Parameter package should be the instance of any package class inherited from MYSQL_PACKAGE class. Method next detects the type of integer (int<fix> or int<lenenc> (see previous article) and calls the next method of package object to read the byte portion of received response.
 

STR CLASS

Str class implements STRING data type of MySQL Client / Server protocol. It accepts package parameter on initialization. Parameter package should be the instance of any package class inherited from MYSQL_PACKAGE class. Method next detects the type of String (String<fix>, String<Var>, String<NULL>, String<EOF> or String<lenenc>. See previous article) and calls the next method of package object to read the byte portion of received response.
 

HANDSHAKE_PACKAGE CLASS

HANDSHAKE_PACKAGE class is used for parsing the Greeting Packet received from server. It is inherited from MYSQL_PACKAGE class and accepts resp parameter on initialization. Parameter resp is the Greeting Packet response in bytes type recieved from the server.

Method parse reading fields from the response using Int and Str classes and puts them into a dictionary and returns.
 

LOGIN_PACKAGE CLASS

This class is used for create Login Request packet.

This class accepts handshake parameter on initialization. Parameter handshake should be the instance of HANDSHAKE_PACKAGE class. In the __init__ method we call the parse method of handshake object and get all fields of the Greeting Packet received from the server.
 
Method create_package prepares the login request package to be able to send to the server for authentication. Accepts user, password and packet_number parameters.
 

OK_PACKAGE & ERR_PACKAGE CLASSES

MYSQL CLASS

MYSQL class is the wrapper class which creates TCP connection with server, sends and receives packages from server using above classes.

I think everything is clear in this class. I’ve defined __enter__ and __exit__ to be able to use this class with “with” statement to automatically close TCP connection. In __enter__ method i’m creating TCP connection over socket. And in __exit__ method i’m closing created connection. This class accepts host, port, user and password parameters on initialization.
 
In the connect method we receive greeting packet from server:
 
resp = self.client.recv(65536)
return HANDSHAKE_PACKAGE(resp)
 
In the login method we create Login request package using LOGIN_PACKAGE and HANDSHAKE_PACKAGE classes and sends to the server and gets OK or ERR packages.
 
That’s all. We’ve implemented the connection phase. To avoid making this article too long I will not explain the command phase. Because the command phase is easier than the connection phase. You can research it yourself with the knowledge you’ve accumulated from this and previous articles.
 
Demo Video:

Join a network of the world's best developers and get long-term remote software jobs with better compensation and career growth.

Apply for Jobs

By Oct 9, 2020
Developers Corner

UNDERSTANDING MySQL CLIENT / SERVER PROTOCOL USING PYTHON AND WIRESHARK – PART 1

MySQL Client / Server protocol is used in many areas. For example: MySQL Connectors like ConnectorC, ConnectorJ and etc. MySQL proxy Between master and slave What is MySQL Client / Server protocol? MySQL Client / Server protocol is accepted conventions (rules). Through these rules client and server “talks” and understand each other. Client connects to… View Article

MySQL Client / Server protocol is used in many areas. For example:

  • MySQL Connectors like ConnectorC, ConnectorJ and etc.
  • MySQL proxy
  • Between master and slave

What is MySQL Client / Server protocol?

MySQL Client / Server protocol is accepted conventions (rules). Through these rules client and server “talks” and understand each other. Client connects to server through TCP connection with special socket, sends to server special packets and accepts them from server. There are two phases of this connection:

  • Connection phase
  • Command phase

Next illustration describes phases:

STRUCTURE OF PACKETS

Each packet consists of valuable data types. Maximum length of each packet can be 16MB. If the length of packet is more than 16MB, then it is separated into several chunks (16MB). First of all let’s see the protocol data types. MySQL Client / Server protocol has two data types:

  • Integer types
  • String types

(See the official documentation: https://dev.mysql.com/doc/internals/en/basic-types.html)

INTEGER TYPES

Integer types also separates into two section:

  • Fixed length integer types
  • Length-encoded integer types

Fixed length integer type consumes 1, 2, 3, 4, 6 or 8 bytes. For example if we want to describe number 2 in int<3> data type then we can write it like this in hex format: 02 00 00. Or if we want to describe number 2 in int<2> then we can write it like this in hex format: 02 00

Length-encoded integer types consumes 1, 3, 4 or 9 bytes. Before length-encoded integer types comes 1 byte. To detect the length of integer we have to check that first byte.

  • If the first byte is less than 0xfb ( < 251 ) then next one byte is valuable (it is stored as a 1-byte integer)
  • If the first byte is equal to 0xfc ( == 252 ) then it is stored as a 2-byte integer
  • If the first byte is equal to 0xfd ( == 253 ) then it is stored as a 3-byte integer
  • If the first byte is equal to 0xfe ( == 254 ) then it is stored as a 8-byte integer

But if the first byte is equal to 0xfb there is no need to read next bytes, it is equal to the NULL value of MySQL, and if equal to 0xff it means that it is undefined.

For example to convert fd 03 00 00 … into normal integer we have to read first byte and it is 0xfd. According to the above rules we have to read next 3 bytes and convert it into normal integer, and its value is 2 in decimal number system. So value of length-encoded integer data type is 2.

STRING TYPES

String types also separates into several sections.

  • String – Fixed-length string types. They have a known, hardcoded length
  • String – Null terminated string types. These strings end with 0x00 byte
  • String – Variable length string types. Before such strings comes fixed-length integer type. According to that integer we can calculate actual length of string
  • String – Length-encoded string types. Before such strings comes length-encoded integer type. According to that integer we can calculate actual length of string
  • String – If a string is the last component of a packet, its length can be calculated from the overall packet length minus the current position

SNIFF WITH WIRESHARK

Let’s start wireshark to sniff the network, filter MySQL packets by ip (in my case server ip is 54.235.111.67). Then let’s try to connect to MySQL server by MySQL native client on our local machine.

>> mysql -u[username] -p[password] -h[host ip] -P3306

As you can see after TCP connection to the server we several MySQL packets from the server. First of them is greeting packet.

picture1

Let’s dig into this packet and describe each field.

First 3 bytes are packet length:

picture2

Next 1 byte is packet number:

picture3

Rest of bytes are payload of Greeting packet of MySQL Client / Server protocol

picture4

Let’s describe each field of greeting packet.

  • Protocol number – Int<1>
  • Server version – String
  • Thread id – Int<4>
  • Salt1 – String
  • Server capabilities – Int<2>
  • Server language – Int<1>
  • Server Status – Int<2>
  • Extended Server Capabilities – Int<2>
  • Authentication plugin length – Int<1>
  • Reserved bytes – 10 bytes
  • Salt2 – String
  • Authentication plugin string – String

Server language is integer, next table will help us to pick appropriate language by integer value:

In my case server language is 0x08 (in decimal number system it is 8 also). From above table we can see that equivalent of 8 is latin1_swedish_ci. Now we know that default language of server is latin1_swedish_ci.

Server capabilities and server status are also integers. But reading each BIT of these integers we can know about server capabilities and status. Next illustration describes server capability and status bits:

Using greeting packet client prepares Login Request Packet to send to the server for authentication. Now let’s research login request packet.

picture5

  • First 3 bytes describes payload length
  • Next 1 byte is packet number
  • Client capabilities – Int<2> / Same as Server capabilities
  • Extended client capabilities – Int<2> / Same as Server extended capabilities
  • Max packet – Int<4> / describes the maximum length of packet
  • Charset – Int<1> / in my case it is 0x21 (in decimal number system is 33), from the table we can see that it is utf8_general_ci. We set server’s default charset from latin1_swedish_ci to utf8_general_ci
  • Username – String
  • Password – String
  • Client Auth Plugin string – String

As you can see password is encrypted. To encrypt a password we will use sha1, md5 algorithms, also salt1 and salt2 strings from previous Greeting Packet sent from server.

Then we get OK packet from the server if we are authenticated successfully. Otherwise we would get ERR packet.

picture6.png

  • 3 bytes are packet length
  • 1 byte is packet number
  • Affected rows – Int<1>
  • Server status – Int<2>
  • Warnings – Int<2>

That’s all. We have finished theory. Now it’s time to start practical part. On the second part of this article we will write our own MySQL native client from scratch using no external module or library

Join a network of the world's best developers and get long-term remote software jobs with better compensation and career growth.

Apply for Jobs

By Oct 2, 2020
Puzzle missing a piece
Developer Testimonials

Why I quit freelancing and joined Turing

If you’re sick of freelancing and want to take your career to the next level, check out Turing for remote software jobs. I did, and I’ll never freelance again

I had been freelancing for a few years, and let me tell you: being a freelancer is tough. It’s hard to get a gig, deadlines are tight, and getting paid is a continual challenge.

After exploring almost all the freelancing websites out there (Guru, UpWork, Freelancing.com), I found I had huge competition, was only able to secure low hourly rates, and ended up working with demanding customers that knew little or nothing about how a mobile app or a web app is done. This meant lots of headaches and compensation that didn’t account for the fact I frequently ended up being both the designer and the developer, for the price of one!

This used to drive me nuts!

When I realized that those places wouldn’t give me what I wanted – and deserved – I went ahead and started to look for some clients on my own. I built a fancy website, enhanced my LinkedIn profile, and started a blog, in the hopes that (fingers crossed!) I could find the jobs I needed.

What I didn’t know is that this was just half of it. I still needed to get paid for the jobs I delivered, and most people wouldn’t pay me until they thought their product was done, but their product was NEVER done because they wouldn’t stop adding new features, often while refusing to pay for the additional work.

In other words, I was working really hard but still struggling to make good money.

That was before I discovered Turing. I’ll be honest; it takes some time to pass their tests. And if you’re not a skilled developer, you’re going to find out that their qualification exams are no joke. But if you’re experienced and talented, you’ll find that the time you invest in getting qualified for Turing’s platform is well worth the time you spend upfront.

I’ve been working for Turing over the last year now, and I’ll never go back to the struggle of freelancing again.

At Turing, I got “matched” to an American tech company and started to work only two weeks after the interview process. I’m integrated with a team of really good (and professional) people who treat me fairly and are always happy to help and share their knowledge. The money is sent directly to my bank account and always on time! I know it almost sounds too good to be true, but it’s not. If you’re looking for a remote software job and good at front-end, back-end, full-stack, React, Node, Angular, Swift, Python, or any of the nearly 100 skills supported on Turing’s platform, you owe it to yourself to do what I did. Take their tests, get an interview, then start getting paid what you’re worth.

But don’t take my word for it. Visit https://turing.com/jobs and see it for yourself! Working at Turing is a life-changing experience, and I’m looking forward to meeting you here. 🙂

Join a network of the world's best developers and get long-term remote software jobs with better compensation and career growth.

Apply for Jobs

By Sep 28, 2020