Why Nearshore Outsourcing Will Be The Next Hub For US Companies Software Development Services

nearshore outsourcingOutsourcing Software Development Services

In the United States, the Information Technology (IT) and Software Development sectors have been bridging the gap between company growth and lack of manpower using outsourcing. Outsourcing sends work to technology professionals who are not employed in-house by the company. However, they are capable of completing the tasks at hand and often have freelancing rates that they then charge the company whose services they completed. There are three kinds of outsourcing:

  • Onshore outsourcing – using a software development provider located in your own country. In the United States, this often works by using a firm in another state. For instance, a company located in Silicon Valley may outsource some customer service workers in Texas.
  • Nearshore outsourcing – finding a firm to fulfill IT or software development needs in another country, however one that is only a relatively short distance away so the time zones are comparable. In the United States, many companies outsource to agencies located in Central America.
  • Offshore outsourcing – using programmers and IT managed overseas in a different time zone on the other side of the world. IT work is very affordable in Asian countries such as India and China.

Nearshore outsourcing and software development combines the benefits of onshore with the cost-effectiveness of offshore. Reducing the physical distance between the teams allows for more effective communication and less of a cultural barrier. In return, there are less delays in projects and teams are able to work during the same hours, meaning less monetary loss for the company.

Nearshore Outsourcing as a Hub

A technology hub doesn’t have a neat definition, but Marketplace Tech’s Ben Johnson makes a pretty compelling argument that a hub should have four things:

  1. Government support
  2. Homegrown talent
  3. Venture Capital
  4. Culture

For comparison purposes, we are going to use San Jose, Costa Rica (where one of our nearshore offices is located). The headlines speak for themselves…

Government support? 

Mayor of San José, Costa Rica Promotes the Creation of a Hi-Tech City

Home-grown talent?  

Women’s Hackathon takes place in San José

Venture Capital?

A dozen founders and funders to watch in Central America and the Caribbean

Culture?

San Jose Pursuing Dream Of Being Friendlier, More Modern City

Costa Rica is one location that proves nearshore outsourcing is not only beneficial to tech companies in the United States. Thanks to the nearshore outsourcing opportunities that are flowing into the country, the country itself is able to grow and thrive. All-in-all nearshore outsourcing has all of the benefits of hiring in-house employees and outsourcing work to freelance workers. Plus, it helps the economies of not one, but two countries grow simultaneously.

At Number 8, we believe in the up-and-coming tech hubs that benefit from nearshore developing. If you’re interested in learning more about Number8 and what we do, give us a call at (502) 890-7665, or check out our information page here!

Node.js: An Introduction for Decision Makers

JavaScript and The Web

JavaScript is a popular web programming language that is most often associated with the client side or Front End. It is comprehensive, considering that JavaScript is the language that interacts with the web page’s elements directly through the HTML DOM (Document Object Model). Almost all web developers must use JavaScript to some extent, whether on the Front End or Back End, JavaScript is everywhere on web applications! JavaScript is responsible for binding events to DOM elements, it has responsibility for adding/editing/deleting DOM elements, and most importantly, it is what fires web service calls (often via AJAX) to the Back End. Simply put, a majority of web developers will have to write JavaScript at some point.

Node.js Structure

node.js

The following diagram shows a Node.js server lifecycle.

“Node.js is a JavaScript runtime built on Chrome’s V8 JavaScript runtime.” Using the least amount of words, Node.js is software that allows JavaScript to run on the server. Before deciding whether or not Node.js is a good option for your next web application, it is important to understand how it works. Node.js can be installed on any platform! It can run on Windows, Linux or Mac. This can save a lot of headaches when configuring and coding the application. This may be seen as an advantage, since your application will not be tied to any particular server architecture.

Other platforms and applications normally have an Application Starting Point event, function or file, where code is run linearly with a well-defined beginning and end. Node.js is different:  events are defined and attached to a server port, where they wait to run code until an event is triggered. “Node.js runs single-threaded, non-blocking, and asynchronously.”

This makes Node.js very fast and memory efficient due to the way that the server handles a new request.

It does not create a new thread, instead it starts running asynchronously and is always ready to handle the next request. This consumes less memory and makes the server fast, but it is important to understand when this is useful and when it may not be the best approach for a given set of business needs. This approach does not work as well as other options when the  application needs to perform a big, long, complex calculation but becomes very powerful when it is required to perform several actions at the same time or handle a high traffic load (horizontal scaling).

It is important to note that the Sleep function will make the main single thread sleep, therefore putting everything to sleep! Apart from being fast and asynchronous, Node.js is also lightweight thanks to its modular approach. Node.js code can be seen as defined modules on ports. Common frameworks are heavy and contain all the references possible to use within that framework even if they aren’t used in a particular implementation. On the other hand, since Node.js defines modules, the references are only loaded when they are deliberately included (they need to be included with the ‘require’ keyword).

FrontEnd + BackEnd

Taking into consideration that Node.js is cross platform, asynchronous and lightweight, it’s often a good option for many API’s or other Back End projects where each operation requested is comparatively lightweight in scope but many are potentially needed in a small timeframe (horizontal scale). JavaScript has historically been limited to the Front End, are you telling me that it is now a legitimate Back End technology as well? In many cases, yes!

This is another great advantage, now both the Front End and Back End for an application can be done in the same language thanks to Node.js. For the Front End, JavaScript alone is not sufficient, the developer also needs HTML, CSS, and often frameworks such as Angular, React, etc. But this has always been the way for JavaScript in Front End. The same can be said for using JavaScript on the Back End, where familiarity with new modalities and different libraries and frameworks can round out a Back End JavaScript developer’s skillset. However, you can imagine the great potential efficiencies and savings unlocked by having the same pool of developers familiar with a language equally powerful on both the Front and Back Ends! This is the promise of Node.js.

Popularity & Community

After exploring some of Node.js’s characteristics, it shouldn’t be surprising to know that even big companies increasingly are choosing to use Node.js in production environments. Some examples: Netflix, LinkedIn, Walmart, Uber, PayPal and many more. Being popular and active in various production environments and companies makes Node.js a technology that has one of the most important advantages for any technology under evaluation, the community. Node.js has a very large and fast-growing community, thanks to its efficiency and its unique abilities. This helps because if an environment running Node.js presents an issue or needs diagnostics or maintenance, it is highly probable that someone else has already encountered the same issue, and the solution can be easily found and digested.

A big community for a given technology means that there is a lot of support and documentation on the web, which can drastically shorten the time-to-resolution.
A big community gives rise to another advantage, Node.js has a package manager (NPM) available to facilitate downloading and using third party libraries. There are countless extensions in these libraries that offer solutions to most problems that a developer might face, reducing the learning curve or development time of the project.

Conclusions

Node.js is an exciting option for many web applications when its high efficiency and lightweight, modular design are taken into consideration. It can handle high traffic loads and high concurrency with sometimes game-changing performance compared to many other platforms. Running a Back End project on Node.js is comparatively simple, and since the majority of developers are already skilled to some degree with JavaScript, synergies and efficiencies on your team could be very advantageous. Finally, Node.js has become so popular in the last few years that it now has a large community that have created thousands of solutions and extensions for tackling all sorts of common problems. If your next project will be highly concurrent, and your team has a lot of existing experience with JavaScript, considering Node.js makes a lot of sense.

Workplace Trends You’re Likely to See in 2018 and Beyond

2018 Workplace Trends

The workplace is changing more rapidly than ever. In 2017 we’ve seen progress in narrowing the wage gap, a shift from offshore to nearshore outsourcing for agile software development, and the rise in popularity of nontraditional benefits. Things will undoubtedly continue to gain pace in 2018. Here are some of our predictions for top workplace trends we will see in 2018 and beyond.

Higher Turnover from Burnout

Full-time workers in the U.S. work an average of 47-hours a week, with 40% of workers saying they work at least 50 hours. The availability of communication via technology means employees are forced to work in their off hours without additional compensation. This trend directly relates to the increased trend in workplace burnout which HR professional attribute to almost half of annual workforce turnover.  This trend is set to continue into 2018 for companies that fail to create wellness and flexibility programs that encourage employees to take time off for their health.

Artificial Intelligence in the Office

Artificial intelligence is the next big technology trend. Apple, Google, Facebook, Amazon, and Microsoft are all incorporating AI into their upcoming devices and services in order to create “smarter products.” In particular, businesses will be using Chatbots more and more to handle operations including on-demand customer support, data mining, personal assistance, and human resources. Internet retailer Overstock.com uses an HR chatbot called Mila that alerts managers when their employees are sick. Meanwhile, employees at Intel use an HR virtual assistant to answer questions about benefits and pay.

Emphasis on Human Interaction

workplace trendsCompanies will continue to explore the effects of interpersonal relationships between workers. We’ve already seen this trend in action this year as IBM shut down their remote worker’s program and the new Apple Park in Cupertino, designed to increase worker relationships and collaboration. Companies are hoping increased socialization in the workplace helps boost office morale while fostering creativity.

Upskill Nation

In order to “higher up” and fill the growing skills gap in the workforce, companies are investing resourcing in “upskilling,” or providing current workers with additional training and education that allow them to fill higher positions. The National Federation of Independent Business reports that 45% of small businesses can’t find qualified candidates. Meanwhile, 60% of all employers have open positions that remain vacant for twelve weeks or more. Employers hope the process helps workers stay relevant in positions automated in the future.

An Aging Workforce

The Baby Boomer generation is living longer. The number of people 65 and older should triple by the years 2050. Meanwhile, a higher quality of life is keeping them in the workforce longer. About three out of every four Americans plan to work past retirement age. Projections expect the aging workforce to cost companies in the form of equal opportunity, retirement benefits, and healthcare. Meanwhile, younger employees will have a harder time advancing in their careers as senior employees maintain their leadership positions.

 

At Number8, we keep our finger on the pulse of both past and future workplace trends. We think keeping up with this news helps us implement the things that work in our business practices. We do this for increased job satisfaction for our employees while providing services that satisfy our clients’ needs. If you’re interested in learning more about Number8 and what we do, give us a call at (502) 890-7665, or check out our information page here!

Why Programmers Include Unit Tests for Quality Assurance

Described concisely and directly, Unit Tests is Quality Assurance (QA) for the core of your software. The main difference between Unit Tests and regular QA is that Unit Tests are not done by a user interacting with the software directly. In fact, they are done by a programmer with code.

When we develop software, it must meet an objective or main requirement.

  • The core of the software is the code that relates directly to that objective.
  • The core is essential. If it does not function correctly, the software has no purpose.

Examples of software cores:

  • Online Payment – the code that processes the credit card or web payment method given by the user.
  • Hotel Booking Engine – the code that associates the user’s information to the hotel room and saves this to a database.
  • Scientific Calculator – the code that performs the actual calculations and returns a result.

When a software is declared ‘done,’ Quality Assurance (QA) tests the software to assure it satisfies its objective.

  • In a controlled environment, QA tests every core function possibility, making sure nothing breaks and everything works as expected.
  • The core is outlined clearly with every one of its cases for QA to test continuously.

The number of tests QA needs to perform can grow rapidly…

For instance, take a basic calculator (a relatively simple, single page application) that uses 4 basic functions (ADD / SUBTRACT / MULTIPLY / DIVIDE)

At first, QA needs to test the calculator’s 4 basic functions…

However, to ensure quality, QA needs to test every possible combination of functions at one time. 

One feature at a time:
ADD SUBTRACT
MULTIPLY DIVIDE

 

Two features at a time:
ADD / SUBTRACT ADD / MULTIPLY ADD / DIVIDE
SUBTRACT / MULTIPLY SUBTRACT / DIVIDE MULTIPLY / DIVIDE

 

Three features at a time:
ADD / SUBTRACT / MULTIPLY ADD / MULTIPLY / DIVIDE
SUBTRACT / MULTIPLY / DIVIDE SUBTRACT / DIVIDE / ADD

 

Four features at a time:
ADD / SUBTRACT / MULTIPLY / DIVIDE

 

  • For a basic calculator application that has four functions, QA needs to run 15 tests continuously to ensure it works properly.
  • Each scenario should be tested with its own input and all outputs need to be verified.
  • Now imagine another a new function is added to the app, for example, the trigonometric function sine. You have to test all the above functions again, but this time with the sine code added.
  • With the addition of 1 function, the number of tests increases from 15 to 31. The addition of 1 function doubles the number of tests to perform and forces QA to repeat tests.
  • A typical scientific calculator includes at least 13 functions:  add, subtract, multiply, divide, percent, sine, cosine, tangent, square root, nth root, exponent, log, factorial.
  • That yields a grand total of 8191 different test cases to perform!

This amount of QA is not feasible for a person to perform…. enter unit tests.

  • Unit Tests are QA for the software core done by machine calculations, therefore free of human errors.
  • Unit Tests will send inputs to the software core and evaluate the result.
  • The fact that it is done by code helps test a big number of cases and vary the inputs accordingly.

Typical Unit Test Structure

Given… Inputs
It (when)… Code to be tested.
Should (then)… Evaluation of results.
  • In the ‘Given’ section the programmer declares the inputs that will be passed to the feature tested. This can be a single number (like the calculator) or a different input, like a database object.
  • In the ‘It’ section, the programmer details the function or code that will be run and tested.
  • In the ‘Should’ section the results are evaluated and the Unit Test passes or fails.
  • Unit Tests include objects called ‘Mocks’ which resemble a database record. The programmer hardcodes the Mock’s attributes values, but it is important to note that the attributes are the same as a database record attributes, making it able to be tested.

 

Unit Tests are not fancy, unnecessary code

  • Unit Tests run quickly while verifying outputs correctly.
  • They are scalable and fit for applications with multiple requirements.
  • When a new variable is added, tests that verified the old cases can be reused.
  • Unit Tests are not a luxury, but an advanced way of doing QA by code that is needed when the software that wants to be tested has too many cases for a human to consider.
  • Plus, they are free from a human error, like passing a wrong input or interpreting the result incorrectly.
  • Unit Tests make QA more efficient while making it harder for its members to enter, as they will require a programming background.

 

At Number8 our programmers implement necessary code to ensure your software products can handle all functions and develop as needed. If you are interested in learning more about our development process or if you think you are qualified to join our team, then give us a call at (502) 890-7665 today!

Why Northern California Tech Companies Turn to Nearshore Outsourcing

Northern California: A National Tech Hub

The tech industry is one of the most important contributors to the Northern California economy. In order to continue developing high paying jobs, information and technology companies outsource operations to streamline processes and cut down on costs. Traditionally, Silicon Valley managers have looked to India for their outsourcing needs. However, there are various cultural issues when outsourcing to India.

Drawbacks of Offshore Outsourcing

     

  • Communication Issues – It’s hard enough translating programming concepts to clients and establishing milestones. You are bound to run into issues communicating with programmers who speak a different English dialect on top of that.
  • Time Loss – There is almost an entire day’s worth of time lost between San Francisco and Mumbai. When working with developers in India, take the loss of time into consideration when establishing project parameters. While the idea of planning a day ahead of schedule sounds great in theory, in practice we know that unexpected issues always require up-to-the-minute communication with programmers.
  • Spaghetti Programmers – The vast majority of coders in the Indian outsourcing market train to churn out work as quickly as possible. The term “spaghetti programming” refers to the code they produce; it loops round and round into a jumbled mess and if anything goes wrong, it’s very difficult to trace steps back and fix it.
  • Hidden Costs – An abundance of cheap, quick labor produces systems without structural integrity od proper checks. A system like this will eventually crash, leaving people in charge of small to medium-sized projects scrambling to fix it. Project managers end up spending the same amount of manhours they originally outsourced fixing the problem, sometimes doubling the cost of operations.

 
 

Nearshore Outsourcing: Solving Offshore Issues for Silicon Valley

 
northern californiaDespite the issues that come with offshore outsourcing, Northern California businesses still need to reach their demands for tech talent. The United States systematically fails to produce homegrown programmers and coders. Without these workers, operations halt and business growth stagnates.

Operations managers in Silicon Valley are turning to nearshore outsourcing to bridge the gap between the lack of tech talent and their business’s needs. Nearshore outsourcing finds talent in countries close to the U.S. such as Honduras and Costa Rica. There are various advantages to nearshore outsourcing.

Benefits of Nearshore Outsourcing

       

    • Smaller cultural margin – The culture in India is very hierarchical; because of this, workers tend not to take initiative on projects. They hesitate to think beyond their instructions. In many ways, the culture in Latin American culture closely aligns to that of the United States. Additionally, the English dialect studied in Central America is closer in line with that of the United States, whereas in countries like India they learn the British dialect. It may seem like a small difference, but the difference in dialect is a major barrier to effective communication.
    • Less time overlap – While there is an entire day’s difference between Silicon Valley and Mumbai, there is only an hour difference between San Francisco and Costa Rica.
    • Agile development – Nearshore programmers in Central America train in the methodology of Agile software development. Under the values and principles of agile software development, operations evolve though self-organizing cross-functional teams and collaborative effort. That means when something goes wrong, there’s no starting from scratch. Agile development is about motivated individuals working in real time and creating working software that evolves with business needs.
    • Lower costs – Nearshore combines the cost efficiency of outsourcing with the convenience of real-time communication. Higher productivity cuts down on overall costs and requires less backtracking.  Furthermore, with nearshore outsourcing, supervisors in charge of development projects are able to directly oversee their teams. Flights from Northern California to Central America are quick and relatively cheap.

     

    At Number8, we help Northern California tech businesses connect with agile software developers in Central America. Our teams–both foreign and domestic– provide cost-effective services minus the difficulties and risks that come from offshore outsourcing. If you’re interested in learning more about Number8 and what we do, give us a call at (502) 890-7665, or check out our information page here!