Working as intended vs. Working as expected: A critical difference in software development.

Working as intended vs. Working as expected: A critical difference in software development.

Curated by: Sergio A. Martínez

Never trust a system that seems to be working» – Foone Turing

Anyone who has ever tried to develop software knows that it can be a very complex task. There are many different types of programs you can create, ranging from simple applications to large and complex operating systems, and each has its own unique set of challenges. However, there are common trends no matter what you are developing: for one thing, software is built upon layers of code, meaning that any change to the codebase can potentially affect the entire program. Software typically works in tandem with other programs and systems, so a change to one piece of software can often ripple outwards and cause problems with other programs. Furthermore, many software applications are used by millions of people all over the world, so even a small bug can have major consequences. 

Superapps-A-trend-to-watch-closely-in-2021-icono

In other words, developing software requires a great deal of care and attention to detail to ensure that the final product is stable and usable, ready to do what you want it to do. Nothing beats the moment when you run a program for the first time, and it seems to work very well. But for a certain kind of developer, this is the point when the actual challenge starts: getting something to work is the first step to creating a truly wonderful piece of software but may not be the end of it.

So, this time, we want to discuss the subtle and crucial difference between “working as expected” and “working as intended”, how this can make or break an entire project, and how a smart developer can begin to understand why a system might fail even after it successfully seemed to work perfectly. Onwards!

Knowing and not knowing  

Superapps A trend to watch closely in 2023 2

Software is everywhere. It’s running our phones, our computers, and our cars. It’s become so integral to our lives that we often take it for granted, when in fact, achieving software that works at all is almost miraculous. We’re talking about lines of code, written by fallible human beings, that work together to design very complex systems with tons of moving parts that must work in very specific contexts. And yet, more often than not, they actually do what we want them to do. Sure, there are the occasional glitches and bugs, but overall, it’s amazing that software works as well as it does. However, how do developers achieve that? 

We can sum it up with this famous quote by Former Secretary of Defense Donald Rumsfeld: “There are known knowns, things we know that we know; and there are known unknowns, things that we know we don’t know. But there are also unknown unknowns, things we do not know we don’t know.” It might look like a mouthful, but it’s a great starting point for risk assessment and post-mortems of software issues. How many known and unknowns do you have about the system you build? How many things you don’t know you don’t know? Because the idea of working software is not as clear as you might think, and your approach to this is defined by your experience as a developer. In short…

  • When something works, a junior developer feels excited. They tend to focus on the known knowns; they know the system is working, they know how it’s working, and further considerations are secondary until an issue becomes apparent. These developers are still experimenting and learning new things as they go. 
  • When something works, a mid-level developer feels relieved. They tend to focus on the known unknowns; they know the system is working, and move on to the unknowns (bugs, compatibility problems, glitches, etc.) that cause immediate issues, but mostly as a means of ensuring stability and shipping the product. 
  • When something works, a senior developer feels concerned. They focus on the unknown unknowns, without assuming that the system working is enough to move on; having a complete understanding is a must to guarantee the quality and intended functionality of the program. Thus, when achieving a working system, their first question is always “why?” to make sure the stability of the program is unassailable. 

So, it all comes down to experience, giving you a nagging feeling at the back of your mind when the code runs: is it doing it as it should? This is the heart of the problem between systems working as intended and systems working as expected, which are not always the same thing. Understanding the difference between both is what separates a good program from a bad one, ensuring that the design of a system is the one responsible for it working, and not a series of coincidences that give the impression that it is. Otherwise, you are sitting on a time bomb, ready to go off when the correct circumstances align. In short, the development process, once you complete a version of the product, should look more or less like this:

Okay, we might be exaggerating a little, but in broad strokes, this is how you avoid being blindsided when something unexpectedly breaks in the long run. Taking the time to view the program holistically, where you can properly see how every individual element is interacting with everything else, is the ideal way to develop a good, stable application, and although it is possible to reach the point where you actually know exactly how a system works, it’s never going to be on the first try.  

This Twitter thread linked above gives a great example of this, in which assuming that a working system is a good system can have deep consequences (long story short, an undetected error in the certification software of a company that built servers was loading the wrong kinds of tests, giving false positives on the architecture of machines intended to handle a lot of data, which could be quite a problem if left unchecked), and being aware of the existence of unknown unknowns can save you from a bad headache in the future.

Knowing is half the battle

So, to recap, the success of any software development project depends on two things: a complete understanding of how the application works, and a detailed risk assessment. Here at Scio, where we always try to bring the best software development in Mexico, we came to understand that, without these two elements, it is impossible to produce a good outcome:

First, always assess the risks. This means identifying all of the potential problems that could occur during development and assessing the likelihood of each one occurring. Once the risks have been identified, they can be mitigated through planning and implementation. For example, if there is a risk that the application will not work as intended, then extra testing can be built into the development process to ensure that it does. And second, gain a complete understanding of how the application works. This includes understanding the code base, the architecture, and the dependencies. Without this knowledge, it is impossible to make informed decisions about the best way to develop the software. It also makes it more likely that errors will be made, which could lead to problems during development or after the application has been released. A complete understanding of how an application works will always be critical to achieve the best result.

The Key Takeaways

  • Software is a very complex field where the number of moving parts, requirements, and situations where it must work make it difficult to create flawless products.
  • One of the bigger challenges is understanding a system thoroughly, otherwise a software application can fail in unexpected and disastrous ways.
  • A key strategy is being aware of your known knowns, known unknowns, and unknown unknowns.
  • In other words, what separates novice developers from veteran ones is the understanding that a system working as intended is not the same as a system working as expected, and solving this difference can guarantee the best outcome.

Scio is an established Nearshore software development company based in Mexico that specializes in providing high-quality, cost-effective technologies for pioneering tech companies. We have been building and mentoring teams of engineers since 2003 and our experience gives us access not only to the knowledge but also the expertise needed when tackling any project. Get started today by contacting us about your project needs – We have teams available to help you achieve your business goals. Get in contact today!

Superapps: A trend to watch closely in 2023

Superapps: A trend to watch closely in 2023

Curated by: Sergio A. Martínez

After spending years building up Tesla, SpaceX, and other cutting-edge businesses, Elon Musk has turned his attention to Twitter. He’s been a longtime user of the social media platform, and he’s become increasingly frustrated with its shortcomings, but it was still quite a shock when he announced his intention to buy the popular social platform in early 2022. Since then, Musk has been locked into a battle regarding the acquisition of Twitter for quite some time, getting ready to take ownership of it. According to sources close to the matter, Musk has already made an offer to buy it for $26 billion. But why, exactly? What will Musk do with Twitter if he were to get his hands on it? Well, according to Business Insider:

Superapps-A-trend-to-watch-closely-in-2021-icono

Tech mogul Elon Musk would consider turning Twitter into a Superapp with a prominent role for payments should he finalize his planned purchase of the social media platform, according to comments made in a recent All-In podcast. […] Musk’s pitch to investors to fund the acquisition involves bringing in as much as $15 million from a Twitter payments business in 2023.

If you are familiar with the latest news in the Technology sector, then this idea might not sound as strange as it might seem. After all, 2023 seems to be poised to be the year of the Superapp, and Musk is simply getting ahead of the curve with one of the biggest trends will see in the app market. But what is a Superapp? 

Simply put, it’s a mobile application offering a wide range of services, including messaging, social networking, e-commerce, and payments. Superapps are becoming increasingly popular around the world as they offer users a one-stop shop for all their needs. In China, for example, WeChat (which Musk specifically mentioned) allows users to send money, book taxi rides, and even pay utility bills. In India, the superapp Paytm is used for everything from mobile phone top-ups to movie tickets. And in Southeast Asia, Grab offers everything from food ordering to investments, with plans to expand its scope even further. All in all, it can be said that Superapps offer convenient and efficient services, so it’s not surprising that they are gaining popularity in an ever-more digitized world.

A difference in approach  

Superapps A trend to watch closely in 2023 2

You might notice that the biggest Superapps in the world right now are focused on the Eastern hemisphere of the world, with Asian countries such as China, Korea, and India leading the charge by focusing on their local markets to great results. Why hasn’t the concept of the Superapp caught on in Western countries?

Well, there are several possible reasons for this. First, western users are already comfortable using multiple apps for different tasks, like using Google Maps or Waze for navigation, Uber or Lyft for ride-hailing, and PayPal or Venmo to make payments or transfer money. This is because people from these cultures value having a choice that better adjusts to their preferences, so switching to a single app that does all of these things would require a major change in user behavior. Second, western countries tend to have a well-established infrastructure that makes it less of a hassle to juggle between multiple applications, feeling less of a need for an option that centralizes everything into a single package. And in that same sense, westerners are generally more privacy-focused, making it less likely for them to give a single company access to all of their personal data.

However, this doesn’t mean that Superapps are destined to fail over here, but rather that the appropriate angle has not been found yet, or that the idea has not been tried before. Facebook (now Meta) tried to open its reach by starting to offer a multitude of services through the decade of 2010, like Facebook Marketplace for online shopping, Fundraiser for crowd-funding projects, and Work to create and share job resumes similar to LinkedIn, to say nothing of the option to use your Facebook account as log-in credentials in plenty of external websites. Even buying platforms like Instagram, WhatsApp, and Oculus was a bid to become the Internet’s definitive “One Stop Shop”, and while some of those services didn’t pan out, it still showed the value of breaching to create a platform that could be considered essential. However, this example differs from the current model of the Superapps in some key ways. After all, the idea is not to consolidate different platforms into a single one, but rather to build an application from the ground up that offers everything a user might need in a single step, with the appropriate scalability already accounted for in the system. Forbes Magazine explains it best:

As the name suggests, these apps are single purpose and focus on solving one consumer pain point and have a clear, easy to use interface. These apps are built to be scalable at the global level with architecture that enables them to expand globally without changing much. […] Users will be very loyal to an app that is easy to use, friction free, functional, provides good services and allows for a multifaceted experience.” But inside an environment that already seems to have an app for every single thing instead of a single app for everything, can the Tech industry crack the code for our local markets?

In search of the everything app

Superapps A trend to watch closely in 2023 3

We may be already moving towards this endgame, with more and more software giants looking to create the only app you will ever need. For example, let’s look at Microsoft Teams. At first glance, Teams might seem like just another instant messaging and video-conferencing app, but slowly (especially since the remote work boom of 2020), it has started to offer a wide range of features and integrations that make it an essential tool for businesses of all sizes. Users can easily store and share files or create task lists, making it an ideal platform for collaboration, integrating a variety of other productivity tools, such as Office 365 and OneDrive. As a result, Microsoft Teams is posing itself as an app that can help businesses boost productivity and streamline workflows, without the need for separate accounts for separate services like Zoom or Slack. But still, this is primarily focused on businesses and productivity, outside of that, other companies want to make their services as inclusive as possible.

Uber, to give another example, has expressed its intent to become an “operating system for everyday life”, expanding the scope beyond ridesharing, down to partnering with the famous chef Rachel Ray to open the “first virtual restaurant” through Uber Eats, implementing freighters into their transport division, as well as experimenting with an entrepreneur program to bring new ideas to the company and grow the platform even further. And finally, Amazon, following the steps of WeChat more closely, is experimenting with features such as Amazon Pay for e-commerce and even offering flight bookings in certain regions for no additional charge.

Still, this is just the beginning. The value of Superapps has started to become attractive enough to bring the biggest tech companies in the world, but that doesn’t mean that the next platform taking the world by storm has to come from them. 2023 is definitely going to be an interesting year for software and app development, and here at Scio, where we look to achieve the best software development in Mexico, we are ready to take on this challenge. Building a Superapp is no easy task, but this battle will require the kind of the best talent you can find. Which will be the first Superapp that conquers the western hemisphere. Maybe next year we will find out.

The Key Takeaways

  • As our world becomes more digitized, having platforms that offer a variety of services has started to become more and more attractive for the average user.
  • Throughout Eastern countries like India and China, big applications known as “Superapps” have become a fact of life, offering all kinds of services, like payments, ridesharing, and e-commerce, condensed into a single product.
  • In Western regions however, these kinds of applications have yet to catch on, but that has not stopped giants like Microsoft, Uber, and Amazon to find the right approach.
  • Yet, with the recent acquisition of Twitter and revealing his intentions to turn this social media platform into an “everything app”, Elon Musk might trigger this as one of the biggest trends of 2023.

Scio is an established Nearshore software development company based in Mexico that specializes in providing high-quality, cost-effective technologies for pioneering tech companies. We have been building and mentoring teams of engineers since 2003 and our experience gives us access not only to the knowledge but also the expertise needed when tackling any project. Get started today by contacting us about your project needs – We have teams available to help you achieve your business goals. Get in contact today!

The challenges of harnessing data in the era of mobile environments

The challenges of harnessing data in the era of mobile environments

Curated by: Sergio A. Martínez

With the news that the state of California in the US recently approved “digital license plates” for all cars, there’s no question about the importance that mobile technologies will have in our future lives, with more and more aspects of our daily activities becoming app-based and smartphone centered, fundamentally changing the way we interact with the world. People are already getting used to reaching for their phones to do all kinds of things, from checking the weather to managing their finances, to even diagnosing medical conditions. As a result, it’s only natural that the future of software development will become focused on mobile environments. After all, why develop for desktop computers when the majority of users will be accessing your software on a mobile device?

The-challenges-of-harnessing-data-in-the-era-of-mobile-environments-icono

In practical terms, it’s more important than ever for a software development organization to have strong mobile expertise to keep ahead of the curve, but this transitional period poses some challenges that could make or break the success of a company. Because, even if mobile environments are not exactly new, the rapid growth of this area of technology in the last 10 years means that there still are a lot of open questions when it comes to guaranteeing the development of a useful product for a client, and a seamless experience for the final user.

The biggest one is data. In the modern world, data is everything. Companies like Google and Facebook are built on it — they gather it up and then sell access to it. And it’s not just these companies that see the value of data; pretty much every business now relies on data to some extent, because it is incredibly valuable at all levels, from using it to improve products and services, to target marketing more effectively, to make all sorts of decisions to boost a company’s effectiveness, including internal metrics of output and productivity among every collaborator.  

With this in mind, how does data play into the increasingly technological-mobile world we are barreling towards? Can every organization make this jump, and if not, why?

Three challenges of mobile data 

The challenges of harnessing data in the era of mobile environments 2

Users are increasingly adopting mobile technologies as a normal part of their lives, going from laptops to smartwatches, and presenting software companies with a unique opportunity to offer new and innovative ways to engage with the world. By moving to a mobile-only environment, software companies can create customized experiences tailored to the specific needs of their customers, as well as offer several advantages, such as the ability to track customer usage data and deploy updates in real-time more easily. 

So, as the world continues to move towards a mobile-first mindset, software companies that embrace this change will be well-positioned for success if they can adapt and overcome three key challenges that come from the management of data in these mobile environments:

Challenge #1: Data growth

One of the key challenges for data management when pivoting to a mobile software development environment is planning for data growth. Mobile apps tend to generate a lot of data, which can come from a variety of sources; for example, users may generate data through app usage, social media interactions, or GPS tracking. This means that the area of data science and AI-based tools to parse through this unprecedented volume of information to mine useful insights will become more important than ever. In addition, the infrastructure surrounding this exponential data growth needs to withstand this challenge, as app developers may need to access data from distant servers or cloud-based storage, with a clear plan for how this data will be collected, stored, and accessed. 

Challenge #2: Data security

Mobile devices are inherently more vulnerable to security threats than desktop computers, so it’s important to have robust security measures in place. And encrypting all sensitive data and using secure communication protocols when transmitting this data is only the beginning. As more and more people turn to mobile devices to stay connected, the issue of user privacy also becomes a critical concern. 

In consequence, when managing mobile data, companies must protect user information from unauthorized access, allowing users to control how their data is used. And managing users is never an easy task: it can be difficult to keep track of who is using the app and when, and to ensure that only authorized users have access to sensitive data. Additionally, mobile devices are often lost or stolen, and this can pose a serious security risk if sensitive data is stored on the device. All in all, there are weak points at every level of mobile use and taking them into account will become more challenging as these platforms grow.

Challenge #3: Data compatibility

One of the biggest challenges for data management when pivoting to a mobile software development environment is compatibility. Not only do apps often need to be updated frequently to maintain compatibility with new devices and operating systems, with a huge gap between the average lifespan of a desktop computer (around six years or more) and a smartphone (less than three years), but these devices are often more limited in terms of storage and processing power than desktop computers, so it can be difficult to ensure that data is accurately represented in both environments. 

The challenge lies in keeping parity. Although mobile devices are frequently required in different situations than desktop computers, users are increasingly expecting an application’s capabilities to be on the same level in both mobile and desktop environments, making it important to consider the limitations of mobile devices.

Making the jump

The challenges of harnessing data in the era of mobile environments opcional

This has given rise to the myth that “A company isn’t ready to go mobile because its data isn’t mobile-ready”, meaning that most of these challenges have not been resolved to commit to a mobile-first environment. However, is that actually the case, or maybe other reasons might help an organization move towards the increasingly common mobile development? That same article offers an explanation:

The data itself doesn’t need to be ready; data will always be ready for mobile. It’s the interface and how the data is processed that usually isn’t ready and prevents a company from jumping into mobile. Many companies simply aren’t ready to expose their systems due to security risks. Enterprise mobility platforms offer security, authentication, and data handling that enable enterprises to provide secure, well-performing apps ready for external access to corporate back ends.

What this means is that “mobile-ready data” is not about the data itself, but the digital infrastructure built around it, designed to support it across a variety of environments and devices. This can be tricky depending on the organization; after all, the mobile jump means a different way of conceptualizing data, even if the data itself remains the same. Rather, the approach to the three challenges listed above is the one that must change. Mobile environments, after all, will only become more complex as more systems and services are adapted to them, increasing the necessity to jump this barrier in a way that ensures reliability and security. 

The rapid adoption of new technologies such as 5G will only accelerate the shift to mobile-only software development”, says Luis Aburto, CEO, and Founder of Scio, regarding the approach for the best software development in Mexico “There’s a larger potential market for mobile apps, and the hardware and software capabilities of mobile devices are increasing. For example, there’s currently a trend towards BYOD (Bring Your Own Device) in the workplace, meaning that more employees are using their personal mobile devices for work purposes, relying on this mobile environment for a critical part of their lives. As a result, the demand for business-friendly mobile apps is increasing, and the challenges of security, growth, and compatibility here are not optional. Mobile is increasingly a must, not a side consideration.

All in all, with an estimated 70% of internet traffic now coming from mobile devices, the shift has profound implications for businesses of all sizes. Companies could get away with not having a strong mobile presence, but that’s no longer the case, and using data properly in this new reality is critical to success. Most companies need to understand how their customers are using mobile devices and what they want from the mobile experience, guaranteeing safety and reliability, and adopting the correct data approach are critical for an effective strategy. In short, those that can correctly harness the power of data will be well-positioned to win in the new mobile-first world.

The Key Takeaways

  • The future will increasingly become mobile, and current software development organizations need to reassess their approach to this environment to ensure success.
  • One of the key challenges of mobile development is data, a pillar of technology and innovation today.
  • Properly using data in mobile environments poses three key challenges to overcome: Growth, Security, and Compatibility.
  • The expectation of users and clients about mobile development is increasing, so developing the infrastructure necessary to store, access and secure data will be more important than ever.

Scio is an established Nearshore software development company based in Mexico that specializes in providing high-quality, cost-effective technologies for pioneering tech companies. We have been building and mentoring teams of engineers since 2003 and our experience gives us access not only to the knowledge but also the expertise needed when tackling any project. Get started today by contacting us about your project needs – We have teams available to help you achieve your business goals. Get in contact today!

Employer of Record or Nearshore teams: Are all remote hire and collaboration models equal?

Employer of Record or Nearshore teams: Are all remote hire and collaboration models equal?

Curated by: Sergio A. Martínez

Finding the best talent can be challenging for businesses in the software development industry. We live in a time of fierce competition for experienced developers everywhere, and many companies are opting to look outside their own country for the skills they need. And with so many alternatives to connect with talented developers to choose from (like a Nearshore partnership or an Employer of Record), how can you be sure you’re making the right decision? First, a few things to consider while looking for the best remote talent:

Employer-of-Record-or-Nearshore-teams-What-do-you-need-icono

Selecting the best for you

  • First, think of your company’s needs. What kind of software development do you need? Do you need someone with experience in a specific programming language or platform? If you have a good understanding of this, you can start to narrow down your search.
  • Although cost is an important consideration, the quality of the work will make a difference, so going for the cheaper option might not always be advisable, especially with the type of expertise required to develop complex software products that might need a trustworthy team behind it.
  • And finally, don’t forget to factor in language barriers. Unless you’re looking for talent in a country where English is widely spoken, you’ll want to make sure the developers you’re considering are fluent in the language your company uses and ease up communication between everyone.

With these factors in mind, you’ll be well on your way to finding the best talent for your software development needs, with a few options out there that are important to understand. For example, you might see the term “Employer of Record” (EOR), alongside alternatives like offshore outsourcing, or Nearshore augmentation. So, if this is your first time giving it a go working with an outside team, then knowing what to expect and how to approach each of these options is the best course of action for you, so let’s break down what they offer you and what advantages you might get with either approach. 

What kind of team do you need to set up?

The Toyota Production System in software development Lean, Agile, and Effective. 3

Any company in the business of developing software knows that having talented developers on staff is crucial to success, which is why many companies choose to tap into a global pool of talent. Developers from different parts of the world can bring a unique perspective to the table, which can help create better products and can help to foster a sense of diversity and inclusion. This, in turn, can make the workplace more creative and innovative.

 Employers of Record (EOR) and Nearshore Development Companies are both business models that provide foreign companies with the ability to hire employees in another country, with a few key differences between the two. On one hand, an Employer of Record provides various employment-related services to client companies which can include payroll, benefits administration, workers’ compensation, and compliance with employment laws, typically working with companies that do not have their own human resources departments or that outsource their HR functions. An EOR is responsible for hiring, onboarding, and paying employees on behalf of a client, and this type of arrangement is often used when a company wants to hire employees in a country where they don’t have an established presence.

By working with an EOR, companies can save time and money on HR-related tasks, as well as help companies navigate the complex world of employment law, especially in different countries where these practices might look very different. For these reasons, EORs are an increasingly popular solution for companies looking to outsource their HR functions.

A Nearshore augmentation option, on the other hand, refers to a group of software developers who work close to their clients, typically in the same country or region, in an arrangement that offers several benefits, including improved communication, faster turnaround times, and a deeper understanding of the client’s needs. Nearshore development teams are often used for complex projects that require close collaboration between developers and clients, taking advantage of time zone differences and tapping into a talent pool that may be difficult to access otherwise.

One of the best things about working with a Nearshore team is the chance to build strong relationships with other professionals”, explains Luis Aburto, CEO, and Co-Founder of Scio. “Unlike working with an offshore team, you’re much more likely to have regular face-to-face interactions with your colleagues, giving you the chance to get to know them as people, rather than just co-workers. As a result, you’re more likely to develop a strong sense of trust and camaraderie.

Expertise matters

The Toyota Production System in software development Lean, Agile, and Effective.

In other words, EORs typically handle all payroll and compliance-related matters for their clients, whereas Nearshore teams focus primarily on developing software, and thus, have vastly different scopes and objectives when considered on their own. An EOR typically acts like the middleman between a company and the talent pool in another territory, locating employees to work for your organization, and taking care of everything on the more legal side. Beyond that, things like career paths, growth, and training are still the responsibility of the company hiring these services.

A Nearshore company, however, is more like a partner, whose expertise and roster of developers and engineers are ready to integrate with your project, understand it from top to bottom, ready to share knowledge to arrive at the best solution possible for any challenging product development. And this comes from the experience and growth that we share as part of our organization’s culture, offering the people with the perfect skill set from the get-go to join your team right away.

Any software development project comes with a certain amount of risk. There’s always the chance that something will go wrong, or that the finished product won’t meet the client’s expectations. That’s why it’s so important to seek out experienced people who can help to minimize the risk and ensure a successful outcome”, says Adolfo Cruz, Partner and PMO at Scio. “Seasoned developers have seen it all before, and they know how to anticipate and avoid a problem and have a wealth of knowledge and technical expertise that can be vital in ensuring the success of any project. And more importantly, they also know how to communicate with other members of the development team and can provide valuable insights throughout the project.” 

In that sense, looking for a Nearshore partner that not only is close enough geographically to ensure synchronization and easy collaboration between teams, but also can offer tailor-made teams for every challenge of your product development is the best option to choose. This is more difficult to achieve when setting up a remote office through an Employer of Record, whose advantages lie in creating branches or new offices overseas, but still require bringing a team up to speed in matters of preparation and skill sets. Ultimately, the right partner for your business will depend on your specific needs and goals. But by understanding the difference between these two types of providers, you can make an informed decision about which one is right for you.

The Key Takeaways

  • Working with remote talent is becoming the better option these days, and you should always have your organization’s needs as a priority.
  • Among all the options, Employers of Record and Nearshore development companies are some of the most popular, and they have key differences.
  • An EOR lets you set up a remote team and take care of the HR side of things, making it easy to navigate the compliance rules of another country.
  • While a Nearshore partnership offers developers and engineers ready to join and collaborate with a project, ready to offer experience from the get-go.

Scio is an established Nearshore software development company based in Mexico that specializes in providing high-quality, cost-effective technologies for pioneering tech companies. We have been building and mentoring teams of engineers since 2003 and our experience gives us access not only to the knowledge but also the expertise needed when tackling any project. Get started today by contacting us about your project needs – We have teams available to help you achieve your business goals. Get in contact today!

The Expert Blindspot, or why you should let junior developers do code review.

The Expert Blindspot, or why you should let junior developers do code review.

Curated by: Sergio A. Martínez

When you are trying to bring a new application to life, code reviews are an essential part of the development process. They help ensure the quality of the code, identify potential problems and bugs early enough to squash them and provide the perfect opportunity to get feedback from your peers. This is a source of insight and helpful criticism that can help a developer grow.

The-Expert-Blindspot-or-why-you-should-let-junior--icono

After all, in big collaborative projects such as software development, no part of the process is made in isolation; receiving advice is an important part of every good team, cultivating a better collaborative environment, and establishing a sense of trust and camaraderie among the team. Code reviews, for example, are one of the most important steps in this process, but how they should be conducted, and by whom, are questions to keep in mind when trying to guarantee the quality of any product. 

Naturally, this task tends to fall on the shoulders of the more experienced developers of a team, as seniors should know what they are doing and what to look for, but is their input the only valid one? Or should junior developers be allowed to do code reviews for their more experienced teammates? What benefits can a team have by giving the least experienced members such a responsibility?

We want to make the case that allowing junior developers to review the code written by a senior collaborator not only helps them grow their skills, but it’s a procedure essential to ensure quality in the codebase. Any team that doesn’t employ this strategy might be missing a great opportunity there, but what’s the reasoning behind it?

“You can’t win against someone who makes a bet for fun”

The Expert Blindspot, or why you should let junior develop

In professional poker, winning against amateurs is not exactly guaranteed. Of course, luck is involved, but the technique is important too. Knowing how to read the tells of your opponent, having a good idea of which cards are currently in play, and learning to push your bets at the most strategic moments are part of the toolset of any professional player. And all this can be disrupted rather easily by an amateur with less experience at the game because they are harder to estimate and bluff.

This interesting irony was noted by movie critic Gene Siskel, an experienced player when he lost against his equally famous partner Roger Ebert at a bachelor party: “You can’t win against someone who makes a bet for fun”. In other words, professional player has very specific expectations if they are going against another pro, and their decisions come from a place of knowledge and experience where possibilities tend to be more studied and controlled. So, if you are an experienced developer reviewing the code written by another experienced developer, what exactly do you expect to see? Is that different from reviewing the code written by a junior programmer? Of course, the answer is yes. This phenomenon is called “the expert blind spot”:

The experts will have difficulty to understand why the beginners don’t understand. For them, the concept feels obvious. The learners, on the other side, won’t be able to ask the good questions either, since they’re not aware of what they don’t know. How to ask good questions if you have no idea what kind of answer you want?

Although the expert blind spot is usually used in the context of teaching, the difficulties a veteran might have to pass along his knowledge in the context of code reviews are similar to our earlier poker example. A senior reviewing the code of a senior tends to have certain expectations about it, which is both a benefit and a risk: certain things might be taken as “obvious” and not be considered until it’s too late.  

After all, anyone who has ever worked on a complex project knows the frustration of feeling where something might be wrong but can’t quite see it. That’s why it’s always a good idea to take a look at it with fresh eyes. In that sense, junior developers can bring a lot to the table when it comes to code reviews, free from all assumptions and rigid pathways that might trip up even the best programmers.

A good way to conduct a code review

The Expert Blindspot, or why you should let junior 2

However, that is not to say that junior developers should bear the entire responsibility of code reviews; guidance and backup are still needed to ensure they are properly conducted during the sprint. In the words of Carlos Estrada, a Lead Developer Application at Scio:

It’s generally a good idea to have a junior dev participate in code reviews, it’s useful for them to see what changes a senior does, and learn to find and track changes, but they cannot be the ones to approve the review. There have been a few internal projects I supervised where mostly juniors were involved, and when the time was short, the juniors had to do it themselves, learning from the comments I have left on earlier reviews.”

In short, junior developers are the backbone of any software development team. They may not have as much experience as their senior colleagues, but they can make up for it with a desire to learn and master the craft, which makes them a perfect addition to a thorough code review: 

  1. As already said, by conducting code reviews, junior developers can see for themselves how code written by a veteran looks; which good practices are implemented, proper comment discipline, and readability, which can help them become better programmers. 
  2. A junior reviewing code can spot mistakes that a veteran might otherwise overlook due to the expert blind spot; a fresh perspective, free of all the expectations and assumptions a senior can unconsciously have, can sometimes obtain a better insight of the code.  

However, not all code review processes are created equal, and for one to be effective, it should follow a few simple steps that ensure the resulting review is useful. Many veteran developers may know these steps by heart, but to a junior starting to learn the value of these exercises, the following procedure is always recommended: 

  • First, developers should submit their code for review early and often.

    This allows for more frequent feedback and helps to prevent errors from becoming entrenched in the codebase. 

  • Second, all reviewers should have a common understanding of the project’s goals.

    This helps to ensure that everyone is on the same page when it comes to evaluating the code. 

  • Finally, reviewers should focus on providing constructive feedback.

    By indicating what works well and what could be improved, reviewers can help developers produce better code with fewer errors. 

So, to recap, code reviews are an important part of the software development process, and juniors can learn a lot from participating in them. However, they need guidance from seniors to make sure that the code is correct and meets the standards that these projects strive for. And the final approval always must come from a senior member of the team, keeping an eye on the process, and making sure everyone can learn from it. After all, experience builds on the chance to bring new perspectives and let them teach new things.

Scio is an established Nearshore software development company based in Mexico that specializes in providing high-quality, cost-effective technologies for pioneering tech companies. We have been building and mentoring teams of engineers since 2003 and our experience gives us access not only to the knowledge but also the expertise needed when tackling any project. Get started today by contacting us about your project needs – We have teams available to help you achieve your business goals. Get in contact today!

Why can your career portfolio look like a squiggly line?

Why can your career portfolio look like a squiggly line?

Curated by: Sergio A. Martínez

What are the expectations you have for your career? And we mean real, tangible things that you can expect from choosing a particular professional field: Autonomy? Flexibility? Knowledge? A better living standard? The chance to grow as a person? Trying as many new things as possible? This is a line of thinking you should consider when building a career portfolio; the definition of a meaningful career has changed and choosing the correct workplace can make a world of difference for a professional looking to put their talents to the best use.

Why-can-your-career-portfolio-look-like-a-squiggly-line

Why choose a career portfolio?

And one of the most significant changes in recent years is how the idea of the “career ladder” has slowly started to disappear thanks to a completely different job landscape, where spreading out skills and options has begun to be seen as the best career move possible. A “career ladder” in software development is typically referred to as starting as an entry-level programmer, working on coding and bug fixes. As they gain experience, they may move up to more senior positions, such as a Lead Developer or Project Manager. However, more and more developers agree that taking on new challenges and continuously learning new technologies is essential for success in this ever-changing field, with no “right” path to take when climbing the career ladder in software development. Rather, it depends on each individual’s skills and preferences.

This has resulted in the idea of forgoing career ladders, and instead focusing on “career portfolios”, or the idea of acquiring a varied list of skills, interests, and experience, tailored to your affinities and what you want from a professional field. But what does a career portfolio look like in practice and how to choose a workplace where you have the flexibility to experiment and learn new things?

The squiggly line to your full potential

Why can your career portfolio look like a squiggly line 2

We have talked before about how software development is already a pretty open career path, where the central concept (solving complex logic puzzles) can be applied almost anywhere. And with new technologies and approaches emerging all the time, those who want to succeed in this field need to be able to quickly adapt and learn new skills, which is why more and more developers are warming up to the idea of flexible career paths.

Having the opportunity to move between different roles and teams here at Scio is how to help ensure our people remain agile and responsive to change”, says Helena Matamoros, Human Capital Manager at Scio. “We know the importance of providing the opportunity to try new things and different approaches. In software development, it’s very important to encourage innovation and creativity, no matter where you are in your career. 

Nevertheless, where to start with this flexibility and craft a portfolio that showcases your talent, skills, and interests? After all, as the world keeps changing at an ever-increasing pace, those who embrace change will be the ones who thrive. In the words of the Harvard Business Review: “A career portfolio approach solves these problems and takes career development to a new level. It’s not only a tool for individuals to rethink their professional identity and reach their full potential.” So, as a starting point, you can ask yourself the following questions to plan your portfolio.

A) How much free time will you need?

An excellent way to define your career progress is by deciding how much time you are willing to devote to learning a new skill. The best way to go about it is to develop a yearly plan divided into quarters, months, weeks, or even days, decide on specific goalposts and work towards them. Depending on your job, your time might be at a premium, so knowing what’s the best path depends on your skills, talent, and amount of time available, critical to growing and becoming good at something new.

B) What are your interests?

As we said, a good portfolio comprises stuff you are personally interested in, but also makes good synergy with the career path you are currently following; for example, if you like being with people and think you have leadership qualities, why not work on your soft skills to be a Team Lead? Or a project manager? After all, these roles are more about getting close to people, listening, and empathizing, but still, they need a solid understanding of tech to the scope and plan effectively. 

C) Does your workplace allow for flexibility?

However, this might not be a smooth experience if you aren’t part of an organization that values this kind of growth, the number of which is growing as more people see the value in following a squiggly line. Organizations like Scio, for example, not only allow developers to explore different areas of software but actively offers courses and workshops (under the Sensei-Creati Program) that actively want developers and everyone else to grow as they see fit. Hence, researching which kinds of opportunities a company offers before joining is always the best idea. 

Focusing your career on yourself

Why can your career portfolio look like a squiggly line 2

A lot of people think that the best way to further their career is to focus on external factors, like networking, making money, or climbing up the corporate ladder, but the truth is that focusing on yourself and building up a portfolio of diverse interests and skills has no comparison, especially in the software development field. When you invest in your own professional growth, you become more skilled and knowledgeable, which makes you feel more balanced and successful. 

After all, you are the only person who knows what you want out of life, and when you make career decisions based on what you think will make other people happy, you’re not likely to end up in a job that makes you truly satisfied. On the other hand, if you stay true to yourself and pursue opportunities that align with your goals and values, you’ll be much more likely to find a fulfilling career. 

There’s plenty of reasons why a company should offer growth opportunities for their employees, and not only because it helps productivity or retain talent”, continues Helena about the philosophy of Scio. “It’s important to understand that many job seekers are looking for more than just a steady paycheck. They want to work for a company that will invest in their development and help them reach their full potential. It also boosts morale and motivation among everyone, When people see that their company is committed to helping them grow and develop, they feel appreciated and valued. Ultimately, growth opportunities are good for both employers and employees alike.

In the end, focusing on yourself is the best way to set yourself up for a successful career, and it’s in your best interest to collaborate with an organization that sees the value in a wide range of skill sets and affinities in their employees. Software development today is more diverse than ever, and the “ladder” upwards is just one of many options available to take during a career. So, if you want to make a name for yourself in the software development world, focus on building a great portfolio. It’s sure to pay off in the long run.

The Key Takeaways

  • The way careers work nowadays is pretty diverse, not just as a rigid path straight up, especially regarding software development.
  • Building a portfolio of talents and skills is becoming more common and more desirable, and this flexibility is an important feature of any organization looking to grow.
  • The skills you acquire should synergize with each other, but a company interested in the development of their employees already offers the workshops and options necessary to make it work.
  • Developing a person’s full potential is one of the core tenets of Scio, because that’s how true innovation and advancement are achieved. 

Scio is an established Nearshore software development company based in Mexico that specializes in providing high-quality, cost-effective technologies for pioneering tech companies. We have been building and mentoring teams of engineers since 2003 and our experience gives us access not only to the knowledge but also the expertise needed when tackling any project. Get started today by contacting us about your project needs – We have teams available to help you achieve your business goals. Get in contact today!