Guest Author

Author
Guest Author

Blogs
With years spent in HR trenches, Guest is passionate about what makes organizations tick—people. Their writing dives deep into behavioral interviews, talent strategy, and employee experience.
author’s Articles

Insights & Stories by Guest Author

Whether you're building your first team or scaling culture across regions, Guest Author's articles offer human-first insights rooted in real practice.
Clear all
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Filter
Filter

Hiring Remote Developers Versus Relocation - What To Choose in 2024?

The pandemic has reshaped the global workforce area dramatically, causing tech companies to hire more remote developers. According to a recent Eurofound report, 34% of employees residing in the EU worked exclusively from home as of July 2021. Compared to pre-COVID statistics from 2018, that’s a whopping six-fold increase.

The numbers are similar in other regions around the world. In the IT sector, telework had been the norm before the coronavirus crisis broke out, let alone the current circumstances. At some point, many software engineering companies run into difficulties filling job positions in their area and turn to the workforce overseas. In August 2021, 77% of job offers posted on a popular social news website for computer science professionals mentioned remote work.

That being said, HR departments often face a nontrivial dilemma when trying to bridge the talent gap with local coders: to hire remote developers from offshore locations or relocate employees so that they work in your office. For a start, let’s dwell on the differences between these two options.

In the relocation scenario, a programmer moves to another place (city or country) to work onsite. The employer typically assists with work permits, visas, transportation, and accommodations. The whole process extends over several months.

Contrary to this approach, remote developers enhance your office team from another location. This tactic is much more cost-efficient than relocation as long as the software engineering or web design workflow is backed by proper administrative support, digital infrastructure, and the security of collaboration at a distance.

India is one of the world’s fastest-growing remote developer hubs

Companies based in Europe and North America are increasingly hiring remote developers from South Asia. India is dominating this ecosystem due to the high level of education and long-running track record of its IT professionals. Furthermore, the country is exhibiting a booming growth of developer population.

Some may argue that being in different time zones will put a spanner in the works, but well-thought-out management and coordination of efforts between onsite and remote teams can smooth the edges in this context. Another important thing to consider is that most Indian developers speak fluent English, which facilitates the interaction considerably.

Things on the plus side of programmer relocation

The ability to communicate in person and collaborate side-by-side is the fundamental advantage of relocating personnel to your locale. It underlies effective teamwork, quick decision-making, and instant feedback. The following aspects make a difference in this case:

  • Keeping corporate culture high. Having all employees under the same umbrella is the pillar of some companies’ culture. These enterprises spare no expense to turn their offices into oases for synergy between team members.
  • Face-to-face communication. Beyond all doubt, being able to discuss work issues in the same office is important. It is a prerequisite for problem-solving in real time without the need to give someone a phone call or type a message and wait for a reply.

81% of professional developers are employed full-time, a decrease from 83% in 2020. The percentage of professional developers saying they were independent contractors, freelancers, or self-employed increased from 9.5% in 2020 to 11.2% in 2021 - indicating potential job insecurity or a shift to more flexible work arrangements.

- StackOverflow

Challenges of relocation

The bitter truth is that developer relocation is a bumpy road. You will have to tackle a handful of bureaucratic obstacles, incur significant costs, and spend a lot of time addressing all the accommodation nuances. Ultimately, these hurdles may eclipse the advantages and discourage company executives from carrying through with their original intentions.

Let’s get the lowdown on these gotchas:

  • A cumbersome hiring process. It’s hard to find a competent developer and get them on board these days, and even more so if the candidate resides in another country. This is doable, though. If you are successful in your scouting endeavors and recruit the right professional, that’s half the battle. Keep in mind that you will additionally need to prep and file paperwork for visas and work permits. Sorting out all these technicalities gobbles up your time, which means you may have to postpone your next major project.
  • Costs. Moving has never been cheap. If you are planning to cover your new employee’s relocation expenses, be ready to pay a few eyebrow-raising bills for the travel, temporary or corporate housing, and other services. You may additionally need to pay for language lessons. If the employee is moving with their family, assistance with schooling and childcare may be necessary, too. All this expenditure is particularly frustrating if it eventually turns out that the person is not the right fit.
  • Low flexibility. With relocation, it is problematic to align the size of your dev team with your current programming needs down the line. After investing funds and a ton of effort, such a decision can be tough.
    Also, there are several caveats on the employee’s end. Culture shock, social integration difficulties, and a strain on family relationships due to the dramatic change are common problems encountered in light of relocation.

The benefits of recruiting remote developers

IT firms can get a lot of mileage out of working with remote coders. This method of cooperation is more cost-efficient and more flexible than the relocation approach, with today’s top-notch technologies helping you ruin communication barriers that used to be a serious concern. Here is a summary of arguments in favor of this move:

  • Less time, less spending. If you choose to cooperate with a remote development team, relocation costs won’t be draining your budget. Also, neither your company nor the employee has to go through the fuss of moving and finding an apartment near your office. At the end of the day, you save a great deal of time by extracting this tedious part out of the equation.
  • A competent crew. According to a SkillValue report, developers from India have a decent score index (78.13 out of 100), which means they are competent enough to meet your company’s programming needs. Their qualification stems, in part, from an increasing level of education in the country. Many of these coders have a wide spectrum of skills in both mainstream and rare programming languages. Most of them can easily communicate with foreigners owing to their excellent English, both written and spoken. Plus, diligence is part of their mentality.
  • Flexibility. Sometimes, software engineering businesses need to upsize or downsize their teams based on current projects and the state of the market niche they are in. A recruitment model involving remote devs allows you to adjust the size of your team to different circumstances quickly. As a rule, this can be done with a month’s notice.
  • Corporate culture. There is no denying that an in-house team is the best environment for nurturing your company’s values. With remote workers, you can fill the void by having a dedicated HR manager who is responsible for continuous communication with an overseas team. This is also a great way to gather feedback from remote colleagues and address their concerns in real time.
  • Plenty of secure communication channels. There is no need to reinvent the wheel here. Specialized platforms such as Slack and Zoom will help you maintain permanent communication with your staff working from another place. These services provide end-to-end encryption of your video conferences and chats to keep sensitive information intact. Although Zoom dealt with a series of security and privacy scandals last year, it has since addressed those vulnerabilities and is now a reliable tool to stay in touch with your teleworkers.

Are you up to hiring remote developers? HackerEarth is here to help

HackerEarth is a company headquartered in San Francisco, US, that specializes in assessing and screening software developers to help organizations make informed, data-driven hiring decisions. Boasting a decade of experience in this area, it provides enterprise software that accurately evaluates candidates for more than 12 roles and 80 skills across all levels. The company has conducted over 1,000 virtual hackathons over the years.

With HackerEarth’s automated tools, you can easily set up a real-time remote programming or video interviewing session with your candidates. Frictionless integration with the world’s top applicant tracking systems (ATS), such as Zoho, Workable, and Greenhouse, further facilitates the hiring workflow. This platform is used by hundreds of high-profile customers around the world, including Amazon, Barclays, Intel, VMWare, and Zalora.

You can hire remote developers, grow, and build strong teams with the company’s flexible assessment as well as learning and development plans. If you want to enhance your business with remote development talent, outsourcing the hardest part to HackerEarth is a sure-shot way to give your recruitment effort a boost.


David Balaban This article is contributed by David Balaban. David is a computer security researcher with over 17 years of experience in malware analysis. He is also a regular contributor to 500+ high-profile tech and security websites. David regularly covers topics related to the cyber threat landscape and has a strong track record as an investigative journalist.

You can find some of his guest articles here OR connect with him at David Balaban Security.

Diversity and Inclusion: 5 Essential Rules to Follow

Enough data is in to inform us that diversity and inclusion are not only worthwhile societal imperatives but also make for good practical business sense. D&I still matter in the workplace in 2023.

While knowing what to strive for is great, it’s only half the battle. We have to create and implement strategies that ensure we can effectively reach our objectives.

In this short article, we’ll take a look at what exactly diversity and inclusion in the workplace means, why it’s important, and how we can make the goal a reality.

What is D&I and why is it important?

When we talk about D&I, we’re talking about much more than gender, ethnicity, or sexual orientation. A D&I approach seeks to have the makeup of the company - the employees, spokespersons, and representatives - more accurately reflect the makeup of the customer base and society at large that the company works within. This includes the diversity of thought, worldview, and priorities as well as other characteristics people identify with such as race, gender, age, etc.

Following - or leading - the trend to increase diversity and inclusion in the workplace should not be considered as an act of charity or compliance with yet another regulation on business. Rather, companies should seek to increase the level of diversity and inclusion in the workplace because it increases their market share and improves their bottom line. When D&I in the workplace lead to demonstrable positive results, that’s when we know it has been done right and that it’s sustainable.
Recommended ebook: 10-Step Diversity Hiring Handbook
Diversity and inclusion: 5 rules to follow

1 - Expand the talent pool

It stands to reason that when a company limits the talent pool from which they hire, they stand a much lower chance of getting the best people to fill the positions needed.

If a recruiter notices a lack of diversity in the applications they receive, this should prompt them to reexamine the job description and/or the platforms used to advertise the position.

Diversity and inclusion don’t start at the hiring process. It should be in place well before that: at the conception of the position and the communication of the job being offered.

2 - Expand the perspectives

It makes little sense to strive for diversity and inclusion and not take advantage of the benefits that come with it. A diverse workforce - one where different thought processes and different ways to look at problems or challenges are celebrated and encouraged - can help a company stay innovative and current in a fast-changing economic landscape.

This is one of the main reasons why diversity is not enough. It must come with inclusion. This means that the diversity in a company’s workforce must be empowered to express its diversity.

Companies that are successful in increasing D&I in the workplace are always flexible companies. They do not strive to impose their way of doing things on their employees, but rather they strive to make those processes better and more effective by remaining open to the new perspectives and thought processes that come with having a diverse workforce.

3 - Be a company we can identify with

Today’s consumer is looking for far more than simply purchasing a product or service. Today’s consumer demands an experience. It is no longer enough to simply provide the right product at the right price. Today’s consumer wants to buy from a company they are happy to identify with. Their purchases and the companies they are associated with form an integral part of their identity. Today’s consumer expresses him or herself through their purchases and through brand loyalty.

It is important that your company reflects the values of your customer and that your company can be one that your customer can identify with.

4 - Inclusion happens at the decision-making level

D&I is diversity and inclusion. Inclusion means giving people a voice, giving them a say in defining company strategy, and empowering them to take the right actions to steer the company where it wants to go.

While having a diverse workforce on the ground level is commendable, it does not mean that the company is diverse and that it benefits from inclusion. For D&I to be in effect and in order for the company to reap the rewards of D&I, there must be diversity and inclusion at the upper managerial and decision-making levels.

Recommended read: Embracing DE&I At The Workplace – #1 Back To The Basics


5 - If you’re doing it right, you should see quantifiable results

D&I is good for society, and it’s good for business. Successful implementation of D&I will yield an expanded customer base and an increase in customer loyalty. You will know your company has implemented a successful D&I strategy when you see the positive results.

In a nutshell

Diversity and inclusion are not only important for the betterment of society as a whole, but it’s simply a fact of good business sense. By successfully diversifying your workforce at all levels of the organization, you will be taking an important step towards improving the quality of your workforce, building lasting relationships with your customers, and preparing for changes and fluctuations in the market and in the economic landscape.
This post has been contributed by the team at Lensa.

Hackathon Survival Guide: What You Need To Know Going Into A Hackathon

There’s nothing quite like walking into a campus cafeteria, a large conference room, or endless halls stacked together for a weekend-long hackathon. Developers of all skill levels, with various backgrounds in countless programming languages and areas of expertise, all coming together for one purpose: to build something new. This is exactly what we talked about in Episode 3 of the Tech Stack Playbook, Are Hackathons Just for the Pros?

In a world of constant innovation, hackathons are a breath of fresh air for those who dare to create what hasn’t been created, to try something new and different, and to break out of one’s shell and push the envelope of one’s skills. Events like these are so important for developers, whether you are a beginner or an advanced software engineer, hackathons are the great equalizer and skill democratizer.

You can form a team with developers who have different skills than you, who have worked or are working at companies you might want to work at one day, or who may have expertise in the areas you hope to have. You might end up learning more from the competition in the span of 48 hours than a boot camp, course, or year of schooling. The lessons you gain, both in software development, entrepreneurship, and in working as a team will pay dividends down the road.

When you’re able to learn cyclically — try, learn, fail, learn, succeed, learn, repeat — over and over again, you expose yourself to the gamut of what technology enables: a willingness to try first and learn each step of the way.

Things to know going into a hackathon

There can be quite a lot to think about going to a hackathon…some of the questions that can be racing through your head could be…

  • Who are the judges?
  • Who are the partners?
  • What are the time limits?
  • What are the restraints/limitations/constraints/requirements?
  • Where is the hackathon?
  • What type of hackathon will I be participating in?
  • How do I form a team?

And on and on…

There is an endless amount of questions that can be swirling through our heads, but the main questions to ask ourselves is, will I be attending a Development-Focused Hackathon or a Proof-of-Concept Hackathon. Each comes with its specific requirements, needs, and processes, which are vital to know how to crush each type of hackathon.

What we at HackerEarth learnt by conducting 200 remote hackathons in 2020! Read here…

While this is not an inclusive list of everything you will need to know for a hackathon, it is hopefully a helpful guide on what to know going into both types of hackathons so you can crush it and make an impact!

Top 3 languages to know for a development-focused hackathon

I define product-focused hackathons as ones where you will have to build something technically unique with code that will be evaluated by various merits, from how accurate the data model is, how advanced the computation is, or how novel the use-case is. This is when you will be building a full-stack application that must accomplish a specific goal or set of goals and be presentable for the judges to review and possibly use. You will want to put on your creative developer hats and consider what could X industry benefit from ABC partners’ technology or what use-case could I implement ABC partners’ technology for? Take time in the beginning to build up an exciting, important, and relevant technology system that you can show off.

Languages for development-focused hackathons

So what would be helpful to know for a hackathon like this?

#1. Git & GitHub — these skills, whether you are working with a team in real-time or working virtually, will help you and your team stay in sync across all changes to the repository and help you collaborate more efficiently, quickly, and accurately.

If you’re working with a global team at a virtual hackathon, how will you be able to keep up with code changes throughout the event, especially if you and your team are in different parts of the world and in different time zones? GitHub will be your best friend, linking your teammates together as if you were in the same room. You don’t need to be a git expert, but knowing how to do pull requests, branch your code, and code reviews, will be crucial.

#2. A front-end framework like React, Angular, Vue — knowing how to build a fully-packaged application where everything is packaged and compiled for you is key. React, for example, is amazing for this because you’re able to run code from a startup script, build a package and deploy that on the cloud, like AWS, and there are so many benefits from knowing React.

Knowing this front-end framework because now you can operationalize your code, you don’t have to have different repositories and codebases connected together in pieces. React will let you put all of your code together and bundle it up seamlessly, which is pretty incredible as an advancement of progressive web applications and making software for the web.

There is also an immense amount of documentation around front-end frameworks like React, as well as YouTube videos, Medium blog posts, and StackOverflow forum posts about React as well. You will never run out of resources to pull from, and having a very well-documented front-end framework like React that most developers will be knowledgeable about will help to make the hackathon experience as seamless across your team as possible. There are also so many great resources, like TeamTreehouse, that provide quick and efficient trainings to help you jump start your React/front-end development skills in no time.

#3. A back-end language like AWS (cloud services), Node.JS or TypeScript (local server), Python (algorithmic code) — will allow you to work with data, endpoints, and build the logic backbone of your software application.

Perhaps you want to be able to predict data in the future or visualize some sort of information as it comes in. Your back-end language or back-end services will be vital for helping support the front-end build of the site.

SUBSCRIBE to the HackerEarth blog and enrich your monthly reading with our free e-newsletter – Fresh, insightful and awesome articles straight into your inbox from around the tech recruiting world!

Top 3 tools to know for a proof-of-concept hackathon

This type of hackathon is a bit different than a development-focused one because here, the goal is to mission and vision your way to success.

#1. A design tool like Figma, Sketch, or Adobe XD — knowing how to wireframe and build out the UI/UX (user interface/experience) of the user journey throughout the software is a powerful skill. Even more powerful is being able to build out app wireframe examples in a hackathon with a limited amount of time and resources to build.

By creating mockups, this is critical for sharing this with the judges who want to see what you have visioned and where you want to go. Mockups help to make the software real and sell your vision to an external audience. Design skill sets are so helpful in places like this.

Tools needed for a proof-of-concept hackathon

#2. Knowing a presentation software like Google Slides, PowerPoint, or Keynote — having pretty savvy presentation skills will help to sell your mission and vision even more. Google Slides is often the default for sharing presentations, especially with judges.

#3. A front-end framework like React, Angular, Vue — at least being able to build out a front-end mockup will help to impress them with your vision of what you have built so far and where you can scale this idea. Judges are also making judgments about your ability to carry this forward, so you’ll want to make sure you can show some development skills, even if it isn’t required, because it will add credibility to your vision, beyond stand-out designs and visuals.

All it takes is one, or two, solid steps forward…

Everything is achievable with the right plan. It just takes the right steps and some courage to push past the imposter syndrome, the self-doubt you might be feeling, or the uneasiness of “not being good enough just yet.”

Sometimes being thrown into the thick of it is how we end up learning the most, and this is what makes technology and programming so special — everyone is still trying to figure out the answer too. If everyone had all of the answers, software engineering wouldn’t be a career because everything would be built already.

What if you could be the key to unlocking the solution to a big industry-wide problem? What if you could be the needed ingredients to a team that wants to help the world with a specific use case?

The only way to find out what’s out there is to sign up for a hackathon and get started testing the limits of your personal innovation engine. The future is there for those who dare to believe, dream, and build. I hope you take those first steps and go on to build transformative tech for your communities and the world!

Let’s digitize the future!

Check out the full list of upcoming hackathons at HackerEarth here!

Brian Hough, Airblock

This post has been contributed by Brian Hough, Chief Technology Officer and Co-Founder of Airblock Technologies, AWSCommunity Builder, Host of Tech Stack Playbook, and five-time Global Hackathon Winner.

As someone who’s very active on the hackathon scene, Brian knows a thing or two about the arsenal of tools and tricks developers need in order to win one. Hope you find his tips handy!

Pros And Cons Of Hiring Full-Stack Developers Over Front Or Back-End Developers

Experienced front-end, back-end, or a full-stack software engineer are in high demand. According to stats from the US Bureau of Labor Statistics, by 2029, software engineers’ employment will surge by 22%.

Today, 54% of the companies claim that they are short of relevant talent, as reported by ManPower in ‘What Workers Want.’ This gap may take a while to narrow down. In the meanwhile, the demand and prices for developers have gone up.

But before hiring a software engineer to build your product, you should clearly understand which tech specialists you need for your project. Let’s start with the basics.

The Three Main Layers of Software Development

Before looking for an engineer for your project, you should understand a common structure of the software development process. There are three layers of software development overlap. And here is a brief explanation of each:

Front-end

The front-end is where the users interact with the site or app. A good front-end means that a website or an app is easy to navigate and has a user-friendly and appealing design. That is why companies pay special attention to this lawyer, as it directly influences customer experience and product success.

The colors, graphics, and optimizations are vital for user experience. The front-end, in a way, represents your brand and communicates to the audience. Successful communication would build trust among users and boost the retention rate.

Back-end

The back-end is the server-side of a website, mobile app, or web app. Back-end developers are responsible for developing web services and APIs.

You can compare the back-end to the ‘behind-the-scenes’ crew of a movie, as back-end developers do the work that no one can see on the website or an app, but they write a code that makes your project alive.

Suggested Reading: The Difference Between Back-End, Front-End, and Full-Stack Developers

Database layer

The third layer is the database layer. The developers for this make sure that the DBMS can manage a vast amount of data. The database programmers look over the modification and editing of databases, design and develop new databases, and troubleshoot the existing database issues.

As you can see, to build a digital product, you need an entire software development team. However, some companies prefer having a full-stack developer who can build both front-end and back-end layers. But is having one specialist for all technical tasks the best option?

Here are some pros and cons of hiring full-stackdevelopers we explain to our clients.

Pros and cons of hiring full-stack developers

It is an obvious decision for many organizations to save costs and hire one experienced developer for front-end and back-end tasks. But others prefer having separate specialists responsible for different layers. Before choosing the right model for your business, learn more about the advantages and disadvantages of hiring a full-stack developer instead of two engineers.

Pros

Why do companies hire full-stack developers?

Talented developers can easily manage the entire stack and create your product from scratch. They can handle it from a 360-degree perspective if they take a holistic approach.

  • Cost-effectiveness

Full-stack developers are easy on your budget. Instead of looking for many developers, you can hire one good full-stack developer to shape your project. That is especially beneficial if you’re starting your project and are tight on the budget. Moreover, if you hire a software engineer from a country with a lower living costs than yours, you can save even more money.

  • Flexibility

Full-stack developers are more flexible. They can deal with the whole design structure, work at any level of the project, and deliver quality results. Full-stack developers also optimize and maintain existing systems. They see the bigger picture and are well-versed with what users want.

Most of the full-stack engineers are acquainted with the latest advancements and technologies. They can craft the best responsive website and input smart features and enhanced user experience.

  • Wide range of technology skills

Full-stack developers are more likely to deliver long-term solutions that ensure the optimal functioning of your project. They are familiar with all software development layers and can identify and troubleshoot all the problems efficiently.

While front-end developers create the final picture that users can interact with, and back-end developers code the website and link it to the content management systems, full-stack engineers can handle both processes.

Full-stack engineers can also work with the existing project, add new features and improve your code. This flexibility of different tech skills is highly beneficial for any tech project.

  • Management skills

An experienced full-stack developer can effectively lead a team of developers (not always, but as usual). If you already have some junior software engineers, you can hire a full-stack developer to help them and control all the processes.

  • Less professional burnout

A full-stack developer has more than one responsibility and a wide variety of different tasks. This variation serves as a relief from daily routine. Since they handle the entire project, they can schedule the tasks simultaneously and switch between different processes to avoid burning out.

Cons

While it might be a tempting thought just to hire a full-stack developer to do it all, it comes with its own set of cons.

  • Slower development process

A full-stack developer is still a one-person, no matter how many different tasks this specialist can cover. You cannot expect a single person to carry out all the processes with the same speed as two different developers work. If you hire a full-stack engineer, the list of tasks may keep increasing, leading to slower development progress.

  • Limitation to a certain tech stack

Many inexperienced company leaders or people without a tech background think about a full-stack developer as a person who knows everything and can deal with any tech problem. But in fact, full-stack engineers are those who know some technologies from the front-end and some from the back-end. Not necessarily their tech stack matches the project needs in full.

  • Not always in sync with the latest technologies

Software development is a field where you have to be in touch with the latest technology trends. As full-stack engineers specialize in several areas and different skills, it is hard to keep up with innovations and changes in the IT world. Not all developers might be aware of all the new tools and advancements in the market.

  • Lack of clear responsibility zone

Full-stack developers’ tasks often overlap. Even if you have an entire tech team, a full-stack developer must take on much of the workload and often switch between different processes. Sometimes they are confused about their exact role in a project.

  • Motivational challenges

This sad lesson we learned from our own experience. For a period of time, we had only one full-stack developer in our team. It was enough to cover our needs at that moment and it was a cost-effective decision. What we didn’t realize back then was that even developers are social creatures. 🙂 We lost our developer simply because he missed having a team around with whom he could discuss work-related questions and solve challenging tasks, missed the feeling of competition and professional growth which is easier to notice when comparing your success to others.

A checklist for hiring a software developer

If you have analyzed all the pros and cons above and decided to look for a full-stack engineer, here is a list of tips that can help you in your hiring process.

The right developer will possess relevant skill sets for the job. Here is what you need to look for.

  • Experience

Often, graduates lack relevant skills. You cannot expect inexperienced candidates to deliver excellent work. In-house talent is not always trained up to the mark. That is why companies have to look far beyond getting the software coders, engineers, and other professionals.

  • Technical skills

As full-stack developers work on the front-end and back-end, they must be well-versed with the basics. So, they must have good commands over front-end languages like HTML, CSS, JavaScript, and back-end ones like Node, PHP, .NET, and more.

Full-stacks must know the basics of database structure too. It involves knowledge of MySQL, MariaDB, MongoDB, and more.

The list of technologies can vary depending on a particular stack. Some main of them are MEAN (MongoDB-ExpressJS-AngularJS-NodeJS), MERN (MongoDB-ExpressJS-ReactJS-NodeJS), LAMP (Linux, Apache, MySQL, PHP), LEMP (Linux, Nginx, MySQL, PHP), and others.


The Challenges In Hiring Full-Stack Developers
It would be helpful to choose a suitable technology for your project first and then look for a developer with the required skills. The developer does not have to be an expert in all three layers, but they must be familiar with them to help you choose the right technology stack for your product.
  • Salary
As we discussed, there is a shortage of software engineers and tech talent all over the world. And it’s getting more and more challenging to hire experts on such competitive markets as the US, UK, most of the countries of Western Europe, especially Netherlands and Germany.Due to this, the value of the offer is quite expensive and has crossed far beyond $100,000. Established companies can afford to hire the top developers, but startups and small businesses simply do not have that kind of budget. The best option for them is to look for offshore programmer and cut down the costs with the outsourcing model.

Summary

If you decide on hiring full-stack developers, make sure you count all pros and cons and clearly understand your project needs. Take your time researching leading technologies on the market and searching for a skilled specialist with the required skills. An experienced full-stack software engineer will take on your product and deliver excellent results.
This insightful article has been contributed by Nikita Voloshin, Co-Founder and Chief Technology Officer at YouTeam Inc. - a YCombinator backed platform which makes it safe for startups to hire offshore vendors and fulfill their short-term hiring needs.

Hiring the right talent to develop a tech project can seem easy, but it's often more complicated than we might think. The folks at YouTeam know about this from both sides as a tech platform that as any product requires constant development, and as a marketplace for hiring developers dealing with client’s requests for engineering talent.

Getting started with Virtual Reality

“There are two kinds of people in this world: Those who think VR will change the world. And, those who haven’t tried VR."

I read this quote somewhere not so long ago. And even while conservatively looking at the scope and scale of the technology, one can easily say that the Virtual Reality experience is exciting to say the least, whether you use a $10 Google Cardboard or a more expensive Oculus Rift or HTC Vive.

Every advancement in computing allows new form factors to emerge which allows us to use the power of computation to create new applications and experiences never seen or felt before. And Virtual Reality is one new form factor which stretches the boundaries of creativity for developers and storytellers.

Within some time any existing game developer can quickly start building applications for VR and for those who haven’t tried their hand on game development or come from non-technical background can learn to develop for VR in no time as well.

What does one need to know to start building for VR?

The Stack:Developing for VR is not much different from game development. Apart from the fact that some additional hardware and software dependencies are required, the basic tools for development do not vary much.Most VR, and even AR, applications require a gaming engine for development, such as Unity3d or Unreal Engine:While these are new tools to learn for developers who do not have much experience in game development, the learning curve is relatively steep for you to start getting comfortable and start building your first application for VR. Many free resources are now also available online to learn.*Quick Tip: Start with Unity3d as it is less complex and a lot of open source knowledge base and resources are available easily.You will also require an appropriate SDK (Software Development Kit) depending on what device you want to build for:Hardware:Although there is a necessary hardware dependency for a VR application, you don’t necessarily need to purchase an expensive device straightaway. When you’re just getting started, a cheaper Google Cardboard can do the job just fine, but it restricts your movement to just 3 DOF (Degrees of Freedom) as opposed to a 6 DOF HTC Vive or Oculus Rift, which allows an immersive room-scale experience.3 DOF means that although you will be able to see in X, Y, Z directions by the motion of your head mounted display (HMD) in the Virtual environment, you wouldn’t be able to move or touch anything. However,, 6 DOF allows for a room-scale experience. While a 6 DOF looks good on the face of it, there are downsides as well. Room-scale VR requires high computation performance with a high-end graphic card and RAM that you probably won’t get from your standard laptops and will require a desktop computer with optimal performance and also at least 6ft × 6ft free space as opposed to 3 DOF that requires just a standard smart phone with an inbuilt gyro (which is inbuilt in most modern smart phones that cost about ₹15,000 or more).Some common devices available in the market today are

Tutorials and Courses:

It can sound a little intimidating in the beginning but actually learning to develop for VR is not all that hard. Once you get a hang of the game engine, one can quickly catch on and there are multiple avenues to explore if you want to learn how to create your VR application:YouTube Tutorials

Here are a few channels that provide good “Getting Started” tutorials for VR:

NurFACEGAMES

MatthewHallberg

Fuseman

Online CoursesA lot of MOOC (massive open online course) courses have come out in the last few months, making it easier to learn and some of them are even free!Most of these courses are short (typically 2–4 weeks). Here are a few of them:
  1. Introduction to Virtual Reality | Udacity (Free)
  2. VR Scenes and Objects | Udacity (Free)
  3. VR Software Development | Udacity (Free)
  4. https://www.coursera.org/learn/augmented-reality/home (Free)
  5. Make Mobile VR Games in Unity with C# for Google Cardboard ($95, there are some discounts available reducing the price to $20–$40)
  6. Cinematic VR Crash Course - Produce Virtual Reality Films (Free)
  7. VR Developer Nanodegree | Udacity (₹9,800/month)

Additional Resources:

And these should be enough to get you started.But if you get stuck, here are some cool applications to follow if you are looking for some inspiration or just want to explore the diversity of the content being generated for VR:SUPERHOT VR

Within

Discovery VR

Job Simulator: the 2050 Archives

Roller Coaster VR attraction - Android Apps on Google Play

Cardboard - Android Apps on Google Play

Google Earth VR

Tilt Brush by Google

Jaunt - Cinematic Virtual Reality - 360° VR video

Pee World VR

To be updated with the space, there are a few media platforms that cover Mixed Reality (VR/AR) exclusively, such as

VR News, Events, and Talent | UploadVR

Road to VR - Virtual Reality News

Inside VR & AR

http://vrtalk.com/forum/

So get started and make some exciting applications.

Register at the UnitedByHCl hackathon
Happy Mixing Reality!!

Happy mixing reality!!

Author:
Pratham Sehgal
Mixed Reality Enthusiast
Previously CoFounder - Trustio Acquired by Slicepay (Exclusive: Student micro-financing startup SlicePay acquires P2P lender Trustio)

Building your own Lisp Parser Part I

While writing a full-blown compiler for a programming language is a difficult and frustrating task, writing a smaller and more specific parser can be surprisingly easy if you know a small trick.

On the other hand, parsing problems pops up at several places in modern-day programming. So, learning this useful trick can be rewarding.



Source: http://mox.ingenierotraductor.com/2015/12/translation-is-like.html

Prerequisites

You need to know the basics of Python, more specifically, you should know the concepts of recursion and flow of control.

Objectives

After reading and understanding this post, you will be able to create simple calculators, interactive interpreters, parsers, very limited and small programming languages, etc. In general, you should be able to take input, tokenize it, perform whatever actions you want to on the tokens, and output the result of the process.At the end of this post, you will have created a simple, Lisp-like prefix calculator. Following is a demonstration of how it's going to look:> ( + 3 2 )= 5> ( / 2 0 )DivisionByZero> ( - -3 2 )= -5> -2= -2> ( + ( * 3 2 ) 5 )= 11

Step 1: Writing the Grammar

The first step to writing a parser is to write a clear grammar for its syntax. The grammar determines what is and what is not right. Once you have written the grammar, translating it to Python code is a trivial chore. The grammar will serve as our first pseudocode.For our tiny calculator, we know that the input can come in two forms: a Number (-2, .5, +8, 8.5, 9.) or a more complicated Expression begins with a (, followed by an operator, etc.).For writing a grammar, we need to identify different elements of the syntax. So far, we have Expression, Number, and Operator. The next important thing to do is to structure the elements (known as terms) into a hierarchical form. This is shown below:Expression:Number( Operator Expression Expression )Number:a floating-point number ([-+][0-9][*\.][0-9]*)Operators:
+
-
*
/
You will notice that Operator and Expression have no parent; they are independent terms.A grammar is read from the bottom up and different choices appear on distinct lines. Our grammar says that:
  • an Operator is one of +, -, *, /.
  • a Number is a floating-point number which matches the RegEx [-+][0-9]*[\.][0-9]*
  • an Expression is either a Number or a ( followed by an Operator, followed by two other Expressions, and finally ends in a ). Note that the definition of an Expression is recursive.

Step 2: Translating the Grammar into Pseudocode

Pseudocode is fake code resembling English which is supposed to be an intermediate code that can easily be converted into real code. Although writing pseudocode is optional, it is really helpful.The trick here is to put each term from our grammar into a separate function. Whenever we need to apply the grammar of a certain term, we only have to call the function. Following is the pseudocode implementing the grammar above:https://gist.github.com/HackerEarthBlog/f0a5a4304326936142da39b0d853f944This is our rough pseudo-code that should be good enough for our purpose. In the next step, we will write the real code.

3. Writing the Code

It is said very profoundly about Python that reading and writing Python feels like doing pseudocode. The same applies here, but there is one small caveat— Python doesn't provide any function for “unreading” or putting a character back in the input buffer.For this, I have created a small class which extends the file object to include this feature. To keep things simple, I have avoided inheritance and my class is not compatible with the file object provided by Python. Treat it like a black-box if you don't want to understand it.https://gist.github.com/HackerEarthBlog/6465f93e1ca155ded5e8b0c8294f16baHere is the buffer.py file which handles buffered input:https://gist.github.com/HackerEarthBlog/5330e5f11f96a22608b45affa61fa858

Explanation

expression():

expression() is our top-level function and maps the Expression grammar term. We first ignore all the whitespace. After that, it takes a single non-whitespace character as input and checks it against several possibilities.If the input string starts with +, -, ., or a digit, it is a number. We put the character back and input the entire number.If the input string starts with (, a complete expression is to follow. We input the operator, two more expressions which will serve as the operands, and finally the closing parenthesis. We then calculate the result and return it.

number():

The number function maps the Number grammar term and is very simple—just a wrapper around getword. We input a whole word and if it converts to a float, we return it, otherwise the function returns an error message.

operator():

The operator function inputs a single character and tests it for equality against several known operators. Like the above two functions, it also maps a grammar term, i.e., Operator. In case the given operator is not valid, an error message is returned.

calc():

The calc function is actually not necessary but makes the code substantially better. In an ideal program, each function should do only one logical task. calc removes some burden from expression.

UngetableInput

Although Python 3 supports buffered input through stdin.buffer, Python 2 has no such facility. Plus, Python 3's stdin.buffer would still require us to create some wrapper of our own.The UngetableInput class wraps Python's basic input to go through a buffer. We take input into the buffer and put a character back into the buffer when ungetc is called. Unless the buffer is empty, all input comes from the buffer.

Homework

This code works and leaves a lot of cleaning as homework for the reader. :) Following is a list of things you can do to improve and extend the rudimentary calculator:Improve buffer.py to handle input whitespace more accurately. Hint: You might want to use a string as the buffer.Implement a function to get a single character while skipping all whitespace and replace the whitespace skipping loop with it.Add the ability to create variables. Following the Lisp syntax, it should look something like the following:( define var_name 839457.892 )

What's Coming Next?

One of the most important parts of our program is the input buffer we created. Unfortunately, it's not general purpose and can break when used in something more complicated than our tiny calculator program. In the next article, we will examine a bigger module which does this chore better.