DevOpinions: Is the Python language here to stay?

DevOpinions: Is the Python language here to stay?

Curated by: Sergio A. Martínez

No single programming language can claim to be the most popular (as popularity is subjective and depends on factors such as industry type, location, and personal preferences), but Python is certainly one of the best candidates to grab that title. After all, according to the TIOBE Index, Python is the most used language overall (reaching the 1st position in July of 2022), and it has been steadily gaining ground since its debut in the early 90s, so now it’s the perfect time to review what’s so good about this tech, what capabilities let Python takes its current place in the software industry, and what downsides it might have.

DevOpinions Is the Python language here to stay

After all, Python has been the language of choice for many major technological projects in recent years, including Google’s App Engine, Instagram, and Pinterest, as well as being one of the most popular languages for teaching introductory computer science courses at various universities. It has even found applications in fields such as web development, scientific computing, and artificial intelligence, so given its versatility and widespread use, it’s no wonder that Python is often considered a basic skill among most developers around. 

However, is the excitement around Python warranted? You may already know that Python is praised for its readability and simplicity, often described as an «executable pseudocode,» which means that it’s easy for even non-programmers to understand, making it an ideal language for prototyping, or as a starting point for beginners.

In addition, it’s also open-source, meaning that anyone can contribute to its development (and keeps its already large library growing), so all this makes it a no-brainer when it comes to software development, but if we were to ask some actual developers about the good and bad sides to Python, maybe we can get insight on why this very dynamic (but sometimes confusing) language has earned its place in programming, so we asked Martín Ruiz and Elier Ramos, Application Developers at Scio with experience creating software with Python, to share their takes on this popular language.

What are the cool things about Python?

DevOpinions Is the Python language here to stay

On one hand, Python is a very versatile programming language that offers many advantages to developers, perhaps the most notable being its readability. Thanks to its use of indentation and whitespace, Python code is often far easier for people to read and understand than code written in other languages, which saves valuable time when working on larger projects. In addition, Python is an interpreted language, which means that it doesn’t need to be compiled before it can be run. 

I like the dynamism of Python. By being a higher leveled language than others like C, Java, or C#, it’s possible to develop the same kind of programs with briefer code”, says Martín. “It’s a multi-paradigm language where you don’t need to know OOP to generate programs capable of solving problems”.

The dynamism Martín mentions refers to, according to the words of the blog Data Towards Science, to a peculiar quality of this language, in which “to evaluate an expression, a compiler first searches the current block and then successively all the calling functions”. Additionally, even if the object-oriented features of Python are not as robust as those found in other languages, it still offers excellent support for it, making it a great choice to develop complex applications. 

This language is widely used for mathematical simulation and data analysis, and it’s very focused on engineering, but it can also find a lot of applications to replicate what other languages can do, making it a sort of “all-in-one”, explains Elier.

Python also includes a large standard library that can be used to develop a wide range of applications, and with so many advantages, it’s no wonder that it has become one of the most popular programming languages in the world. However…

Some downsides to coding in Python

DevOpinions Is the Python language here to stay

While Python is a versatile language with a wide variety of applications, it does have some well-documented disadvantages worth discussing. One potential downside, for example, is that Python code can be difficult to master, with a potentially confusing syntax due to its use of whitespace and indentation, which can make code written by more experienced programmers a challenge to understand. 

In addition, it’s not well suited for low-level tasks such as system programming or network programming, and Python’s interpreted nature can lead to slower execution times compared to languages like C++, which are compiled. Martin Ruiz, again explains some of its shortcomings:

Since it’s more dynamic, and it doesn’t have as many restrictions as other languages, the developer is the one responsible for following good practices and documentation to achieve clean code. In other words, it’s a lot easier to generate illegible code with Python than with other languages, and it’s also more prone to generate errors thanks to this same dynamism. After all, the variables of Python can take any other value type.

Furthermore, Python’s syntax, already somewhat difficult, is not consistent across all platforms, which can lead to compatibility issues, and the resulting code can be more difficult to debug and maintain, as well as having some structural issues that any seasoned developer must watch out for. In the words of Elier:

Developing software with Python is very quick, but the design pattern and dependency injections can get lost very easily with this language. You can have way too many instanced things, and that gets hard to follow. I really wish the design patterns were more explicit in their instance and declaration.

Additionally, the same popularity of Python makes finding experienced developers more difficult, as all big companies use it one way or another, reducing the available talent pool constantly. But despite these potential drawbacks, it remains a popular language for many types of projects due to its ease of use and wide range of libraries.

Final thoughts

I started to learn Python during college, thanks to a teacher I worked with, building a system for a software conference. He used it for everything he developed, and it helped me a lot when I got my Master’s Degree because almost every teacher there used it”, explains Martín of his total experience with Python. “I would definitely add the optional use of keys to group code to make it more legible, though. And anyone willing to study this language should try to understand dynamic scoping to make full use of it, without taking the same approach as more structured languages such as Java or C#.

So, taking it from an experienced Python developer, what this language offers is a “high risk / high reward” type of deal, where code in Python has to be very carefully constructed and documented to be maintained properly, but the results you get from it can be formidable. However, considering all this, is Python truly the code of the future? The same article for Data Towards Science sums it up:

As we’re witnessing the shift from desktop to smartphone, it’s clear that we need robust languages to build mobile software. But Python wasn’t made with mobile in mind. So even though it might produce passable results for basic tasks, your best bet is to use a language that was created for mobile app development. […] To be clear, laptops and desktop computers should be around for many years to come. But since mobile has long surpassed desktop traffic, it’s safe to say that learning Python is not enough to become a seasoned all-around developer.

So even with all these downsides, the continued popularity of Python in software development is still up in the air. Although this language has found its place in machine learning and web development, if you’re a seasoned programmer and want to stay ahead of the curve, you have it in your repertoire right now. It may be replaced one day by a newer language with better mobile support, but for now, it’s still the most popular option out there. And even if that does happen, maintaining the current Python-based software means it will remain a basic skill that every programmer needs to know. Dynamic or just very confusing, Python is an interesting language that is worth understanding.

Scio is a Nearshore software development company based in Mexico where we believe that everyone deserves everyone should have the opportunity to work in an environment where they feel like a part of something. A place to excel and unlock their full potential which is the best approach to create a better world. We have been collaborating with US-based clients since 2003, solving challenging programming puzzles, and in the process showcasing the skills of Latin American Engineers. Want to be part of Scio? Get in contact today!

The significant impact of Green Coding on the environment: Is balanced software development possible?

The significant impact of Green Coding on the environment: Is balanced software development possible?

Curated by: Sergio A. Martínez

With the need to be more environmentally focused every day, we look at an approach to software development that can help our industry utilize its resources better and more efficiently: Green Coding.

With the need to be more environmentally-focused every day, we take a look at an approach to software development that can help our industry to utilize its resources better and more efficiently: Green Coding.

When it comes to good practices in software development, there’s more to it than just efficiency and delivery of results during every sprint; there’s also a lot to consider about the impact caused by the products we make, both for our clients, final users, and the world at large. 

After all, we all know that software development can be a resource-intensive process. First, it generally requires a significant amount of development time to create robust and efficient applications. And second, developing software often requires the use of multiple tools and technologies, which can add to the cost of development. However, beyond these normal cases of resource investment from any software development company, what many people don’t realize is that coding can have a significant impact on the environment. After all, software development has always been a complex and time-consuming process, but in recent years this process has come into sharp focus, as the effects of global warming (and the time we have left to mitigate its effects) have become more and more pressing. 

In the case of technology, the creation of new software often requires the use of powerful machines, which consume large amounts of energy, and generate considerable amounts of heat and noise, in addition to the involvement of dozens or even hundreds of software development tools, each of which has a footprint. As a result, the environmental impact of software development can be significant.

Fortunately, there are several ways to reduce the environmental impact of software development, like using more efficient development tools that consume less energy or developing software in collaboration with other developers, which can help to reduce the overall number of development tools in use. However, all this could be for naught if our approach to software development doesn’t include a responsible mindset, which is the origin of a new way to approach the creation of new applications: Green Coding.

Green Coding: Efficiency in balance

The significant impact of Green Coding on the environment Is balanced software development possible

By taking these steps, developers can help to protect the environment while still creating high-quality software products, which is why more and more companies are adopting “Green Coding” practices. Green Coding is all about developing software in a way that minimizes its environmental impact, and that means anything from using energy-efficient hardware to writing code that is easier to recycle or reuse.

There are a lot of reasons why green coding is becoming a necessary practice in the software industry. For one, it’s simply the right thing to do: we have a responsibility to take care of our planet, and Green Coding is one way we can make a difference. But there are also practical reasons for adopting these practices; energy-efficient hardware, for example, can save developers money on their electric bills (an essential concern in remote setups), and code that is easier to reuse can save time and resources in the long run. So no matter what your motivation is, there are plenty of ways to go, so let’s review some techniques to ensure your code is as environment-friendly as possible.

  • Efficient writing: Before going into coding itself, let’s take a step back and think about the physical tool you use to write: your keyboard. How much energy does your keyboard spend during the day? Although the amount might seem negligible (around 1W per hour on average, maybe even less), most USB keyboards increase around 5 times the amount of energy they consume the older they get, depending on their build type and brand. And going along with the energy used by the whole computer setup, this energy adds up, which is why using wireless, rechargeable keyboards is getting popular in Green Coding circles, as it only needs a single 3-hour charge to work most of the day, and doesn’t consume energy directly while you use them. It may seem like a very small change, but considering how, on average, 600,000 people hit a space bar at the same time every 1/10 of a second, saving energy will have benefits in the long run.

  • Efficient coding:Coding, for the most part, can become greener almost instantly if we adopt the same software development processes as our industry did 20+ years ago, when coding was confined to strict lengths and sizes”, is an interesting point mentioned by Dean Clark, Chief Technology Officer at GFT, regarding the idea of implementing Green Coding practices. The truth is that, while our ability to code today is virtually limitless, the lean way of writing code when you had to make the most with limited space also meant that no waste of resources was allowed, and optimization was a day-to-day practical concern. “Nowadays, with a lot more leeway in the way we write code”, says Adolfo Cruz,  Project Management Officer, and partner at Scio. “And these approaches to making software could still teach us a thing or two in regards to taking care of our resources, allowing us to create more environmentally-responsible applications whose efficiency could save us a lot of energy and time in the long run”. 

 

  • Efficient debugging:Coding will inevitably result in bugs, and the act of debugging is, by itself, a way to improve the energy efficiency of software”, is the opinion of the blog TechXplore, which is why having a strong QA department with the appropriate tools is so important to achieve a true Green Coding approach. Following the last point, making sure that our applications are using resources responsibly, and wasting the least amount of energy possible at every step, could go a long way toward making software development more friendly to the ecosystem, and leading to more environmentally responsible practices overall. 

Collaboration as a key to Green Coding

The significant impact of Green Coding on the environment Is balanced software development possible_2

So to recap, Green Coding is the process of developing software in a way that minimizes its impact on the environment. We already mentioned some ways to achieve it, but a key practice in environmentally-friendly coding includes collaboration, Nearshore development, and expertise sharing. Collaboration is essential to Green Coding because working closely with others helps to ensure that everyone is on the same page and that no one is duplicating effort, allowing for more efficient use of resources, which can help to reduce a company’s carbon footprint. 

In the specific case of Nearshore development, working with developers in countries closer to their clients and end-users helps reduce travel emissions, allowing you to take advantage of different time zones so work can be done around the clock, which combined with good Green Coding practices, can make a difference when it comes to leaving a carbon footprint. 

You might not think that Nearshoring your software development would have anything to do with the environment, but the truth is it can be very beneficial, helping to improve efficiency and cut down on waste”, is the summary Adolfo Cruz offers about the advantages of collaborating within your same time zone, as expertise sharing is crucial to Green Coding, helping to raise the overall level of expertise in the industry to not only improve the quality of software but also help it reduce the need for training and support. 

Development involving a team of experts can often get the job done faster, with fewer errors, and less need for constant testing and development, saving a lot of time and resources. As a result, expertise sharing is an essential part of green coding. All in all, there are many good reasons to consider outsourcing your software development – even if you’re worried about the environment.

In the software development industry, going green is not just about being eco-friendly; it’s also about being efficient, effective, and collaborative. When development teams adopt Green Coding practices, they can work faster, and more efficiently, and as a result, have a positive impact on the software development process. In addition, by adopting green coding practices, development teams can help to make the software development industry more sustainable, and in turn, help the march towards a better future.

The Key Takeaways

  • The technology industry as a whole is very resource-intensive, and thus, a good starting point for more environmentally friendly practices.
  • However, beyond adopting hardware that spends less energy overall, there are practices in the software side of things that could help to be more responsible with resources.
  • Green Coding is an approach to software development where code is as efficient, light, and bug-free as possible, helping to run applications that overall leave a smaller footprint in the environment.
  • Nearshore development is a good approach to green coding, reducing the need for long travels (and thus, the emissions they involve), as well as sharing the necessary knowledge to always improve software, achieving a better balance with our environment.

Scio is an established Nearshore software development company based in Mexico that specializes in providing high-quality, cost-effective technologies to help you reach new heights. We have been developing 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’ll be happy to help you achieve your business goals.

Five years of technology: What has changed in the world of software since 2017?

Five years of technology: What has changed in the world of software since 2017?

Curated by: Sergio A. Martínez

Every year, the data insight company Gartner, as part of their mission to help our industry to pay attention to the latest trends and development in software and development, publishes a list of the most promising technologies of that year, the ones that seem to be able to change the direction of the future.

It’s (not) about time: Why is managing your energy the best software development approach?

Knowing this, and with the benefit of insight, we took a look into some of the predictions made way back in 2017, asking some of Scio’s leader, Luis Aburto, Rod Aburto y Adolfo Cruz, their thoughts about these technologies during the past five years, what they got right, and if some new developments could still await for us in the future. Enjoy!

Prediction 1: AI & Advanced Machine Learning

It has definitely become popular”, Luis Aburto, CEO, and Co-founder of Scio, comments. “Applications like Jasper.io have advanced to a point where they are not toys anymore, but tools that a professional organization can rely on.” On the other hand, Adolfo Cruz, PMO Director, holds the opinion that this technology is still in its infancy. “There’s still a long road ahead. These programs are still unable to emulate the soul of many creative tasks. Maybe one day, but not very soon.” 

And in the case of software like the Applicant Tracking Systems we have talked about before, Luis still believes that AIs and Advanced Machine Learning are still not a “one-size-fits-all” solution. “These programs could work well in bigger companies that have an enormous amount of information to sift through, so an AI program could perform better in that case. But for medium companies like Scio or even smaller companies, human intervention keeps being preferable.” 

Prediction 2: Intelligent Apps

Although they aren’t ubiquitous yet, applications like chatbots and virtual assistants have proven to be a valuable tool in many businesses”, comments Luis Aburto. We are currently building a chat application along with one of our clients, and it’s an interesting challenge that will get more complex, but also more useful day by day. Someday, you’re probably not going to be talking to humans in any client service.

Prediction 3: Digital Twinning

Building a virtual mirror of a physical object is going to get big in manufacture and development of systems”, says Rod Aburto. “I know of business areas like airspace that can develop planes using the tons of data generated in each flight, gigabytes of information transmitted directly from the plane that could revolutionize the industry. In that sense, digital twinning might be a useful tool from now on, but I only see it in specific industries. Not much in the mainstream.” 

Prediction 4: Virtual and Augmented Reality

I believe AR is still marching slowly. Maybe now with the Metaverse, they can jump forward, although I see more future in full virtual reality than AR”, says Luis. 

“And it’s still more of a plaything than anything else, without much in the way of practical applications”, adds Rod Aburto, referring to the current state of most popular AR uses. “At some point, it was said that doctors could do surgery at a distance with the help of this technology, but I see that as a very unlikely outcome.  

Even Microsoft, with the big push of the Hololens, couldn’t really crack it”, continued Luis. They sold some to the military and the like, but for the average person, it seemed more of a novelty than a truly groundbreaking tool. And the idea of everyone walking around with Google glasses, seeing augmented reality applications everywhere, is not really the future I expect.” 

Prediction 5: Blockchain

Okay, that one is everywhere”, said Rod Aburto. “But not necessarily with their original purpose of being a public ledger audited by everyone. Their main application is still in cryptocurrency, and more as a financial gamble than anything else.

Although the future seems to lead to the so-called Web3, where the more transactional aspects of the blockchain become clearer”, intervenes Luis at the end. Like the whole “digital ownership” concept of NFTs, I think that this technology still has many issues to solve, like how costly it is to make transactions and not to mention how slow it is for any practical purpose. But those things can only improve.” 

So what do you think? With all these technologies constantly growing and evolving, where will we be standing in five years’ time? Will some of these still be around as we know them, will they find new and exciting applications or something new will throw our predictions in an unexpected direction? Because one thing is sure: however the future shapes up, here at Scio we will be ready to help you explore new technological territories with the best talent in all of LATAM. Give us a call and let’s get started!

Scio is an established Nearshore software development company based in Mexico that specializes in providing high-quality, cost-effective technologies to help you reach new heights. We have been developing 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’ll be happy to help you achieve your business goals.

HR, AI and the future of job applications: Where are we headed?

HR, AI and the future of job applications: Where are we headed?

Curated by: Sergio A. Martínez

Maybe it’s not exaggerated to say that the future will be driven by machines. With advancements in Artificial Intelligence (AI), machine learning, neural networks, and algorithmically-driven programs; machines can be applied virtually anywhere, from transportation, to design, to even art.

HR, AI and the future of job applications: Where are we headed?

And right now, one of the hottest new trends, at least when it comes to Human Resources and the job market, is the implementation of job interview software that can select, completely neutrally but with 100% accuracy, the best candidate for a given position. Or at least, that’s in theory what is supposed to happen, but what is the reality and ramifications right now? What does a machine do that an HR professional can’t, and what are the limits of these kinds of technologies?

The theory: Machines looking for data

The most common programs for this type of work are called Application Tracking Systems (ATS), which is software that helps businesses manage job applications. These systems automate many of the tasks associated with recruiting, such as posting job ads, screening resumes, and scheduling interviews, and often use machine learning algorithms to help identify the best candidates for a given position. 

Many ATS systems also offer features that allow candidates to track their applications and receive updates on the status of their hiring process, normally with minimum human involvement, and they are getting popular by the day in most industries, with software development and technology at the forefront. As explained by Oracle: 

Some organizations lack the reach to connect with top job seekers or to cast a wide enough net in the marketplace. Others are missing critical data on the right channels to find specific candidates; other organizations may lack brand recognition and the means to develop it. An ATS can help address these critical candidate challenges”. 

It’s no wonder, then, that these systems are becoming so popular, thanks to the many key advantages they offer over traditional methods of recruiting. For one, machine learning and artificial intelligence can sift through large numbers of applications quickly and efficiently, instead of relying on human recruiters to go through every application, which is both time-consuming and expensive.

Furthermore, these programs can identify patterns and trends in data that might otherwise be difficult to spot by the human eyes, which could help businesses to better understand the kinds of candidates that are most likely to be successful in a given role, as well as identify potential red flags that might indicate that a candidate is not worth pursuing. And more critically, artificial intelligence can help automate repetitive tasks like sending out interview requests or scheduling follow-up calls, freeing time for human recruiters to focus on more strategic tasks, such as developing relationships with potential candidates. 

And the cherry on top is that an ATS can help a company ensure that its hiring practices are fair and compliant with equal opportunity laws, ensuring inclusion and openness to all kinds of candidates. So with many issues solved, what are then the challenges that these systems face? And can they completely replace a hiring process done through interviews and human interactions? 

HR, AI and the future of job applications Where are we headed

The reality: Machines finding (only) data

At a first look, the idea of using IA to select job candidates isn’t far-fetched; after all, the heart of it is just comparing information: the needs of the position vs. the experience and skills of the applicant. Current job application software could theoretically perform this well by using specific data points calibrated to look for particular needs. However…

Job hunting may be one of the few instances where technology doesn’t improve our lives”, says an article by the Wall Street Journal about the flaws in these tools. That’s because most companies use Applicant Tracking System software to parse the resumes they receive. This helps recruiters by simplifying the task of assessing resumes. But research indicates that the ATS rejects a startling 75% of resumes because of formatting, insufficient use of relevant keywords, and other criteria that have nothing to do with candidate qualifications.

The reality is that, while these systems are designed to help employers sift through the hundreds or even thousands of job applications they receive, in practice they often end up weeding out qualified candidates making the job search even more competitive, and with less accurate results for the final candidate. And the problem only grows when we start to rely on IA to drive things like interviews or tests instead of human interaction.

For example, in the podcast “In Machines We Trust” of the MIT Technology Review, the effectiveness of these virtual tools was tested, with some startling results: “One gave our candidate a high score for English proficiency when she spoke only in German”, and “[the] algorithm assessed candidates differently when they used different video backgrounds and accessories, like glasses, during the interview.”. 

And that’s without getting into the parameters and limits of these tools, which necessarily reflect the limits and parameters of the people designing and implementing them. As mentioned earlier, the idea for many of these ATS and AI interview software is to help companies find the best possible candidate for a job, but who and how defines what is “perfect”? Or “fair?” To quote the aforementioned MIT Technology Review:

Instead of scoring our candidate on the content of her answers, the algorithm pulled personality traits from her voice, says Clayton Donnelly, an industrial and organizational psychologist working with [AI-powered interview software] MyInterview. But intonation isn’t a reliable indicator of personality traits, says Fred Oswald, a professor of Industrial-Organizational Psychology at Rice University. “We really can’t use intonation as data for hiring,” he says. “That just doesn’t seem fair or reliable or valid.

HR, AI and the future of job applications Where are we headed

The question, then, is how an organization interprets and analyzes the knowledge and insights offered by this technology. After all, the biases of AI job interview applications can be difficult to spot, but they can significantly impact who gets ultimately hired. For example, if a company’s AI job interview application is trained on purely historical data, it may mistakenly favor candidates who are similar to those who have been successful in the role in the past. This can lead to talented candidates being overlooked simply because they don’t fit the profile of those who have been successful in the role before, and whose needs may have changed since. So to overcome these biases, companies need to be aware of the limitations of their tools, like:

  • They’re powered by machine learning, which means they’re not always accurate. Although machine learning is evolving by the day, and results could only get more accurate in the future, right now the flaws of the algorithm, the parameters of the search, and the logic behind these programs could be driving out valuable talent today.

  • They often screen out qualified candidates because of resume format issues. If you have ever tried to use a program to scan a PDF, transcribe a conversation, or use an IA to describe an image accurately, you might see how unusual formatting can trip the entire system up. 

  • They’re designed to save time for recruiters, not applicants. So a system could ask for some very specific and time-consuming requirements from the applicants (like aptitude tests, CV formats with little flexibility, keyword density optimization, photos, etc.) that, while useful for an organization hiring, could discourage a valuable candidate from applying.

  • They’re biased against certain groups of people. For example, a study by the New York University’s IA Now Institute discovered that “such systems have historically had trouble understanding women’s voices”, and it goes from there, so relying on them could be counterproductive to the goal of “fair” hiring.
HR, AI and the future of job applications Where are we headed_3

Machines helping humans (and not the other way around)

These technological tools will keep getting improved and optimized, that’s for sure, but the value of a person involved directly in a process as critical as hiring the perfect candidate cannot be underplayed”, says Helen Matamoros, Human Capital Manager at Scio. “Because, even if the idea of automating these tasks is no longer out of reach, we must not forget that hiring people goes beyond selecting skills and experience; a cultural fit with the organization, the capacity to grow, the disposition to collaborate and teach others, and else are things that an algorithm, as perfect as we can make it, cannot master on its own, and need the criteria and experience of an expert that can take away such information and use it properly”.

That’s why the “Human” portion of “HR” is still a necessity, even in an age of IA and automated software: tools that help perform our jobs better and more effectively, without taking away what makes the system works: understanding from person to person to ensure the best possible choice, which is the approach Scio has when looking for talent to join our organization. 

Because beyond merely selecting and onboarding a candidate, the idea of our process is to ensure our vision is shared, both parties (Scio and the candidate) have clear and common expectations about collaborating, and ensuring that any new Scioneer fits right in with the team. These tools might facilitate some of these processes, but at the heart of it, the future is still relying on expertise to make the best possible choices.

 

The Key Takeaways:

  • Hiring a candidate for an open position in an organization is a critical activity that can be time-consuming and expensive.
  • New kinds of software and IA-based tools can help with this, but they come with a lot of caveats.
  • Relying solely on them to hire someone for a position can have unintended consequences, from discouraging talent to apply, to giving incorrect insights to make a final choice.
  • Having people involved in the process is still invaluable because hiring a person goes beyond checking a CV: it has to be a cultural fit, make sense with the team dynamic, and be a fit for both the candidate and the organization, and that can be something outside the scope of a program.

Scio is an established Nearshore software development company based in Mexico that specializes in providing high-quality, cost-effective technologies to help you reach new heights. We have been developing 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’ll be happy to help you achieve your business goals.

Technical debt or Futureproofing?: Two sides of creating software.

Technical debt or Futureproofing?: Two sides of creating software.

Is technical debt a recurring problem you face, or is trying to future proof the software you write the best course of action? Today, we take a look at one of the most complex problems when creating software, analyzing the pros and cons of both approaches.

by Scio Team

Software development is… complex. At its core, it’s an interesting challenge where improvement and evolution happen alongside the construction of the software itself, with the possibility that it changes course when you learn new things, get a new perspective, or bring diverse points of view to the table.

As we said elsewhere, developing software is very similar to writing a novel, or painting a picture: it’s as much of a discipline as is a creative exercise, borrowing and modifying itself throughout the project. However, there’s a big difference between a book and software; the software is part of an infrastructure, meant to interact with a user, across an undefined period, which gives this profession a unique challenge: what happens to the code I’m writing today when tomorrow arrives? 

A debt to ourselves

It’s OK to borrow against the future, as long as you pay it off”, are the words of Ward Cunningham, one of the authors of the Agile Manifesto, which revolutionized the way we look at software development. We all know how borrowing money works in our daily life, but what he referred to is a specific concept many in the software industry are aware of: Technical Debt.

As you may know, technical debt is “the implied cost of future refactoring or rework to improve the quality of an asset to make it easy to maintain and extend”; is the knowledge that certain parts of a program may require to be fixed at some point in the future. 

There are plenty of reasons why a dev team may incur this “debt” (be it for budgeting, skill, or deadline reasons), but the nature of its payment is stumbling onto issues that need to be fixed quickly, which may bring more issues later that will require further fixes and so on, effectively like trying to pay a loan with a high-interest rate. If you are not careful, you will end up paying it perpetually.   

Technical Debt is considered a serious problem and plenty of literature and management advice have been written to mitigate its effects, but like with any kind of loan, it can bring plenty of benefits if chosen and managed correctly. After all, if we take on a debt, it is for something in exchange, be it having cash on hand to accomplish something, or achieving working software to solve the issue at hand.

And the proper way to deal with debt, be it technical or otherwise, is to pay it on time, which in software development means refactoring a lot of the work done. 

However, depending on the level of debt accrued by a team, this refactoring may bring a hefty tag, especially if the time between creating the program and improving it allowed many dependencies to flourish, or some of the knowledge behind the construction to get lost (such as the original team changing), so you may want to avoid the need of refactoring as much as possible because you don’t know the context in which the program will be improved. So what then?

A proof of thinking ahead

Technical debt or Futureproofing?: Two sides of creating software.

Futureproofing may be the answer. What futureproofing tries to do is “anticipate and minimize the effects of shocks and stresses due to future events.” This practice is not limited to software, but it can help to try and mitigate some of the problems technical debt will bring, especially if we are thinking ahead of the need for refactoring at a certain point in the future or having to deal with legacy software inside critical systems in any organization.

However, saying it is much easier than doing it, and any approach to futureproofing a system, so it can be tinkered with or without issue decades from now, is a tenuous art at best. After all, how can anyone predict what software will look like in 2050? The solutions we implement may make sense today, but will probably need some explanations later.

A solution could be, to create software that follows a pattern, so its logic can be easily deduced by a future dev team, as well as taking the proper due diligence when choosing tools and frameworks that have a better chance to remain supported or at least accessible in the coming years, or avoiding “monoliths” where a single application is responsible for tons of functions, but one can still get blindsided by a development impossible to foresee.

This brings an interesting conundrum for many developers trying to find the right approach: is it better to futureproof software to try and avoid technical debt, or is better to acquire some debt if that means having the flexibility to refactor software at some point in the next few years?

Two sides of the same coin

The reason is very simple, yet has lots of implications: if you acquire technical debt, you cannot futureproof because you are assuming you will need to change things. If you futureproof it, then you are making stuff that will greatly resist refactoring, making it likely to turn into “legacy” software.

A good approach to finding a solution to this is developing products with a few things in mind, mainly no software product is forever, and everything has a shelf life that we will need to wrestle with at some point. 

“Generally, it is not until something breaks when a team realizes they have a big debt needing to be paid”, commented Scio’s PMO, Adolfo Cruz, about this issue. “It’s more common when a product is brand new and it’s still building its user base. The volume of transactions is low at first, so you may not see any problems, but if the scalability wasn’t planned well, then it’s more likely that debt will flow under the radar until it’s too late, so it’s important to take steps to prevent this.”

The trick is trying to push back that point as much as possible, having the proper procedures to ensure the code can be fixed. A good commenting discipline, for example, can save a lot of headaches while refactoring an application, letting whoever has to modify it knows what can break and what depends on every function. This can work as futureproofing without going into a lot of technical debt, as many of the problems when trying to refactor old programs is the fact that the code sometimes is not very clear, and in places of a lot of personnel turnover (like a government agency), it’s easy to let cracks grow.

The useful approach, then, is considering both of these concepts as the two sides of the same coin: the delicate balance that is developing good software amidst the needs of the now and the later. A great software development team should strive for products that pass the test of time, while also knowing that nothing is perfect, and using the need for refactoring as a tool, not only a problem.

What do you consider is the best approach when creating software? An application with some debt that will let you fix it in the future if it needs to, or building something hard to repair that may stand the test of time?

Is AI going to replace human developers?

Is AI going to replace human developers?

The idea of a future when AI can perform all sorts of tasks, even programming, is irresistible, but is it something feasible? Is programming a job that can be done by machines, and if not, why?

By Scio Team

One of the biggest leaps of these past two decades, and indeed the most intriguing technology development of the 21st Century, is the advancement of Artificial Intelligence that seems to occur every day. It is understandable why; science fiction technology has a sort of magnetism that attracts all kinds of engineers, entrepreneurs, and visionaries, many of them with the cash to back up the R&D necessary to bring these visions to life.


AI also has the allure of being potentially implemented anywhere, automatizing plenty of daily tasks to free up our time. It’s also attractively dangerous, as countless Terminator jokes can attest every time a new development hits the news.

However, what is actually feasible for AI to accomplish? What are its real applications, at least for now? For the last 7 years or so, there have been some talks about AI being capable of performing more intensive labor, programming, and development among them, but is the job of the programmer in danger of being done by a robot?

It’s easy to imagine, at least. Plenty of tools already use some measure of AI to function, and interesting experiments crop up daily, from intelligent chatbots to autonomous machines. But are those tasks comparable to the actual job of programming in any way? Because as an engineer or developer knows, writing code is just a small part of the whole process of creating software. 

Processing large amounts of data? Software’s great at that. Figuring out what a human wants, or what a usable UI is like, or what the real problem you need to solve is… those are hard”, says an entry in the blog Code Without Rules titled “When AI replaces programmers”, which goes directly to the big issue in a future of machine-produced code.

Although there have been some advancements on the idea of teaching an AI to write code and produce entire programs, like the experiment done by Andrej Karpathy in 2015 where he trained a neural network with GitHub’s Linux repositories to write its own code, the results are still mixed. According to the site Perforce.com:

“[The] AI generated code (including functions and function declarations) overnight. It had parameters, variables, loops, and correct indents. Brackets were opened and later closed. It even had comments. However, the AI produced code had syntactic errors. It didn’t keep track of variable names. Sometimes variables were declared but never used. Other times variables were used but not defined.

Of course, this was way back in 2015, and the technology behind these networks has only improved since then, but the actual viability of letting a machine program by itself one day, especially for more critical areas like Defense, Finance, or Healthcare, it’s still far away and will still be at the mercy of human instruction.

The advantage of outsourcing these kinds of tasks, be it to a remote developer or an entire Nearshore company, is the ability to communicate clearly anything you may want in the software produced. Collaboration is constant, communication is key, and the skill to apply different ways to solve issues is a given in any valuable development team.

Because that’s the gist of it, be it Art or Programming. Paintings produced by AI have been auctioned off for thousands of dollars, and are a great example of the places this technology can go, but most of them still look like this:

AI can paint
Photo by stxnetx.com

This is to say, the “creativity” involved in these kinds of efforts is still a long way off, and having this skill while programming is critical to producing code that solves actual problems and accomplishes the expectations of both clients and final users.

“There have been some experiments before, even since the 90s, with tools whose purpose was to generate applications”, explains Adolfo Cruz, Scio’s Project Management Director, and the best person to have an idea of where this technology is going. “If you wanted to generate a User Form, for example, you defined the parameters (first name, last name, age, date, etc.) and these programs delivered a simple but functional result.”

“Those very early tried, but they worked and now it’s evolving to full-on Artificial Intelligence. However, if these tools become a reality, they’ll probably lack the spark of human imagination. During development, a programmer sometimes gets ideas about cool features that could add value to a project, and these kinds of things will be difficult to achieve for a machine.” 

“But beyond that, I think we’ll see software coded by machines. Maybe there will be a point when an AI can understand and interpret the user, getting a command like “create a chat program” and propose three options, which can be narrowed by the user.”

For sure, these three options would not take any time at all for a machine, but deciding which path to take from there, refining and redefining options, could be a tiring process, although, in terms of man/hours invested, it’ll need a lot less effort than having multiple people working on this same project.

“Still, there are a lot of questions unanswered”, Adolfo concluded. “How long would it take to explain exactly what you want, what frustrations would that cause, and how that impacts the adoption of this technology is a whole discussion to have. It’s not simply about technical feasibility, but acceptance among the public.”