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!

Scio Spotlight: Talking about passion, projects and videogame development with Pedro Ramírez

Scio Spotlight: Talking about passion, projects and videogame development with Pedro Ramírez

Curated by: Sergio A. Martínez

For many people, the idea of software development is just a job, with long hours in front of a computer, coding and debugging programs until they meet the requirements of their employer or client. However, software development can also be a fun hobby, taking on personal projects or contributing to open-source software where developers can exercise their creativity and practice their craft without the pressure of deadlines. In addition, working on side projects can give developers a chance to learn new programming languages and technologies; after all, practice makes perfect.

The-Scio-Spotlight-Talking--1

So, by working on side projects, developers can not only gain valuable experience but also try out new techniques and learn new languages. In many cases, side-projects can also be a great way to develop new skills. For example, by working on a project in their spare time, developers can learn how to manage a team or how to bring an idea to fruition. Moreover, working on side projects can also help developers stay up to date with the latest industry trends. By keeping their skills sharp, developers can increase the scope of their talents and the chance of growing professionally in ways you might not even expect.

So, this time we want to dive into the kinds of side-projects that many Scioneers have dabbled into during the years, and this time we chat with Pedro Ramírez, a Chief Architect at Scio with many years of experience, about a project he is most proud of: a complete videogame.

And this is because, for any software developer, no matter how experienced, creating a videogame can be daunting. Numerous challenges need to be solved and overcome, from designing compelling gameplay, to ensuring that the game runs smoothly on a variety of devices and platforms, to getting it into digital stores. For Pedro, though, this was an opportunity to learn and have fun alongside his son, releasing the endless runner FlyFlyFly in 2016 for mobile devices. You can still find it on the Microsoft Store, and talking about its development, shed a lot of light on the process for a software developer trying to get a project done on the side.

At first, I thought it was going to be simple, but there were a lot of challenges to solve along the road. You can use a lot of tools and libraries today to make game development easier, but still requires a lot of puzzle-solving and learning to manage your resources wisely. For example, I needed to save as much memory as possible at the start of development to make sure the game ran smoothly on every device possible, and the Microsoft tools don’t give you much. And even when I got it working, lots of things were still in the air.

However, being a solo game developer is no easy feat. Not only do you need to be skilled in programming, but also be able to create engaging gameplay, design attractive visuals, and even engage in marketing for your game to build a community around it. Of course, you don’t need to be an expert in all of these areas — there are plenty of tools and resources available to help you get started, but it’s important to have a general understanding of all the different aspects of game development if you want to be successful, and most of the time that is a challenge by itself.  

I had to develop stuff completely new to me, like the user interface, or draw the graphics and make them work as intended. Not everything is just writing code, you need a knack for art to make it look nice and appealing, which was one of my biggest learning experiences of the whole deal. When I started this project, I thought it would be easier than it was, so it was a big reality check when I realized how much I still needed to learn, especially when it comes to trying to get the word out and make it stand out in the stores.”

A passion project (in more than one sense)

Anyone who’s ever gone through software development knows how rewarding it can be to see your code doing something. It’s even more satisfying when it’s something you built yourself, just for fun. But what you might not know is that having a personal side-project in software development can be pretty advantageous, too. For one thing, it gives you a chance to explore new technologies and learn new skills without the pressure of having to produce perfect results. You can also use your side project as a portfolio piece to show future employers what you’re capable of. 

Three or four years ago, we had a client in Scio that was looking to develop an RPG-type game, similar to Final Fantasy, and I was put in charge of it thanks to my experience with FlyFlyFly”, tells Pedro. “In the end, the client had to put the project on hold for budget reasons, but we still have the source code somewhere in the Scio servers, and I’m proud of the opportunity it offered me. That’s why I believe that doing things for passion and fun can be so important in software. You never know when those skills will come in handy.

And beyond that, working on a project by yourself can be a great way to relieve stress and take a break from the day-to-day grind of work, and when done purely for your own enjoyment, you can learn new programming techniques, try out new tools and frameworks, and generally push yourself outside of your comfort zone. What’s more, side projects can be a great way to make connections with other developers and build up your professional network, and maybe even have unconventional learning experiences along the way.

When I first started development on FlyFlyFly, I was working for Amazon, and that technically made it their property, thanks to the terms of my contract with them”, explained Pedro about one of the most unexpected issues of this project. “It was basically a conflict of interests with the IP or so, and that basically made it impossible for me to maintain the game after I left them to work elsewhere, which is one of the reasons I couldn’t keep updating it on Android and iOS. Still, the experience I had with my son figuring out the game and learning how these storefronts work is invaluable.

The-Scio-Spotlight-Talking--Flyflyfly-2

However, a question you might be thinking is why put some much effort into a side project like FlyFlyFly? Well, if you ask any software developer what they love most about their career, they’ll likely tell you it’s the challenge. Building new software is like solving a puzzle — it’s endlessly fascinating, and there’s always something new to learn, but even the most dedicated developers can burn out if they’re not passionate about what they’re doing, which is why this is such an important element of software development; when you’re passionate about the work, all the difficult challenges are worth it, constantly driving you to push yourself to do better.

After all, it’s easy to think that working hard and being passionate means the same thing. After all, if you’re putting in the hours, it stands to reason that you must care deeply about the work, right? But in reality, these are two very different things that need to be balanced carefully: Working hard is a necessary part of achieving success in any field, but to be truly successful, you need to be passionate about what you’re doing. Passionate people are driven by a desire to excel, not just by a sense of duty or a fear of failure; they’re willing to put in the extra work because they love what they’re doing and believe in their abilities. Projects like the game created by Pedro are a great example of this: a fun bonding project that taught him so much pushed him to learn new things, and even was useful to get a project rolling at Scio.

So, if you want to achieve your goals, ask yourself: Are you working hard because you’re passionate about what you do, or just because you think you should be? The answer will make all the difference.

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 Bus Factor and Nearshore talent: A net positive outcome

The Bus Factor and Nearshore talent: A net positive outcome

Curated by: Sergio A. Martínez

When you’re cooking up a new software application, it’s important to think about the future. We have talked before about measures like futureproofing, refactoring, and how to deal with technical debt to maintain an application in the long run, but let’s look today beyond the product, and think instead about the team in charge of helping it become a reality. And «the Bus Factor» is key in all of this.

What does "Bus Factor" mean?

What does «Bus Factor» mean?

Chances are you won’t be the only one working on the project; at some point, someone will need to pick up where you left off. It happens all the time, as it is not very realistic to expect that the same people that build a piece of software will be around forever to take care of it when the need arises. 

That’s why it’s important to have a robust risk assessment approach to development, identifying anything that could jeopardize the success of a project. This includes both technical risks, such as the possibility of errors in the code, and non-technical risks, such as changes in market conditions. Risk assessment is an important part of project management, helping to identify potential problems early on and develop plans to mitigate them. There are several different methods for conducting a risk assessment, but all involve breaking down the project into its component parts and evaluating each one for risks. 

And when it comes to assessing risk in software development, the Bus Factor is an important consideration to ensure a project not only gets finished but also can be trusted to work in the long run. Simply put, this factor indicates the number of people who would need to be proverbially “hit by a bus” before a software project would be severely impacted and stall. If your Bus Factor is 3, for example, that means that losing 3 people is all you need for the project to fail, so measures to bring that number up become necessary to guarantee a good outcome in development.

As a result, it’s essential to pay attention to the configuration of a team when developing software. By ensuring that team members are aware of the codebase, that collaboration is encouraged, and that everyone is on the same page, you can help to reduce the risk of potential problems down the line.

A bus is always around the corner

The Bus Factor and Nearshore talent: A net positive outcome

So, with proper risk assessment, software development projects can be more successful and less likely to encounter unforeseen problems. That’s why it’s important to increase your Bus Factor; if too few people know how the code works, if the tasks are too partitioned, or if there’s no good collaboration between team members, then the project is at risk. A low Bus Factor can lead to problems when people leave the team, get sick, or are otherwise unavailable, bus involved or not. 

Losing key people during development can be devastating. They can take with them valuable knowledge and expertise that can be difficult to replace, as well as disrupting the workflow and causing delays”, says Adolfo Cruz, PMO Director and Partner at Scio. “However, the worst part of losing key personnel is the impact it can have on morale. When experienced and talented individuals leave, it can be demoralizing for those who remain and damage an organization’s ability to attract new talent. It’s a ripple effect that extends far beyond the immediate impact on the project.

So, when it comes to increasing your Bus Factor, there are two sides to take into consideration. The first one, the technical part, is simple enough: losing people can make it difficult to make changes to the codebase, since there may be no one who understands how it all fits together, and some good practices in project management are important to reduce this risk as much as possible. For example:

  • Use comments liberally. Some programmers believe that comments are essential, while others feel that they only clutter up the code. After all, well-written code should be self-evident, and easy to understand, but in a complex project with many people involved, it never hurts to explain what the code is doing and why. If you need to bring someone entirely new to the project you can easily waste time trying to reverse-engineer some vital functions of the application. So even if the code looks obvious, leaving comments just to be sure it can be understood in the future goes a long way toward ensuring a project can be maintained properly. 
  • Write clear and concise documentation. On the same token, this will help others understand the design decisions behind your code. Without clear and concise documentation, it can be difficult to keep track of the various code dependencies and file hierarchies, essential for ensuring that the project runs smoothly. In addition, documentation can be extremely helpful when it comes to debugging (which may not be done by the exact same team that wrote the code), aiding to pinpoint the root cause of a problem more quickly.
  • Hold regular team meetings. The Agile methodologies in software development have done wonders for team collaboration, offering a way to keep everyone up to date on the project’s progress and ensuring that everyone is on the same page. Additionally, by keeping everyone in the loop, points of failure can be identified before they become a problem for the project, making regular meetings with the team a must for a well-managed development cycle.

By taking these steps, you can help increase your Bus Factor and make it easier for others to step in and continue working on your project if something happens to a key member of the development team. Nevertheless, the challenges of maintaining a project can go beyond the product itself, and with the way development works today, a different approach might be needed.

What happens when the bus is in another country?

Ghost-Colleagues

Software development is a notoriously challenging field, and one of the biggest changes we are currently living through is the normalization of remote teams, an increasingly likely outcome in a post-pandemic world where the advantages of having a hybrid approach and collaborating with external people, have become clear.

However, how does the Bus Factor come into play when your team is distributed over a wide geographical area? With so many options in outsourcing or hiring freelancer developers to collaborate on a given project, management has an increasing challenge in keeping everyone looking in the same direction and minimizing any risk involved in not having direct contact with a team. The challenge is that software development often requires very specific skills to carry through, from programming languages to types of technology being worked on, and the Bus Factor gets lower as more variables are involved in development.

The complexity of a project isn’t necessarily the biggest problem contributing to your Bus Factor; that dubious honor goes to the subject’s specificity. The more specific your topic, the worse your bus factor will be. More specifically, if all other factors remain constant, your bus factor will decrease proportionately to how much specific expertise is required to carry out your work”, explains the blog “How to Beat the Bus Factor (and Be Prepared for Anything)” published by the workflow management company Process. st.

This is especially true when a project requires very specific skills that are hard to find. For an extreme example, imagine you’re working on a project requiring knowledge of a particular software library that only a handful of people know how to use. In such a case, it can be nearly impossible to find someone with the necessary skill set, and in case you do, how do you ensure that person not only remains during the entirety of development but also can come back and help if something goes wrong? Or leaves enough documentation behind so other people in the team can continue? If those questions are a concern, a different approach may be needed.

As the benefits of Nearshore collaboration become more widely recognized, even more businesses will likely choose to partner with developers in Mexico and Latin America”, says Luis Aburto, CEO, and Co-Founder of Scio. “There are many reasons for this trend, but one of the most important is the increased collaboration that Nearshore development enables, letting developers in nearby time zones to integrate easily to a specific project.

The option of Nearshore is attractive if an organization is looking to increase its Bus Factor, guaranteeing a positive outcome in the development cycle. You may have heard of Nearshore companies before, easily confused with mere outsourcing at first glance, but unlike trusting development to an external team (often in faraway locations such as India or China), the Nearshore model offers many benefits, including shorter project timelines, competitive costs, and reduced risks within the same time zone, allowing for a smoother collaboration no matter where in LATAM is the talent you want. 

In the case of Scio, we offer teams of skilled and experienced developers working together, putting collaboration and knowledge-sharing as some of our core tenets. This way, some of the common approaches to increasing the Bus Factor (like cross-training developers in a multitude of skill sets, empowering developers to grow and take on more challenges, implementing Agile methodologies, encouraging close communication at every level, and generally fostering a culture of collaboration and team-focused mindsets) are endemic to Scio, where not only we ensure any onboarding process in a new project is as seamless as possible, but also that everyone is continually learning and growing with new skills, offering knowledge and insight at every turn. In the rare cases, the Bus Factor comes into play, have ready-to-go measures to minimize its impact.

In short, the Bus Factor is an important part of risk assessment in every software development project, and increasing it as much as possible is always the best policy. So next time you or your company is looking into bringing talent to a team to complete a project, think of the best options out there to manage this risk as best as you can. 

The Key Takeaways

  • Risk assessment is important for every software development cycle, and the Bus Factor is one of the most critical metrics to watch out for.
  • In short, the Bus Factor is the number of people that can leave a project before it stalls completely, leading to negative outcomes for development.
  • Good practices can be implemented (like a commenting discipline, through documentation, and having consistent meetings to keep everyone in the loop) can increase the Bus Factor in any project.
  • However, when it comes to working with remote or distributed teams, the Bus Factor can increase depending on the approach of this collaboration.
  • Nearshore development can offer a solution, with organizations like Scio offering the support and culture necessary to ensure collaboration is a success, and a positive outcome can be reached for the project.

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!