TECH

January 24, 2025

Anti-Patterns That Every Developer Should Know

Understanding Anti-Patterns in software development

In software development, it's important to write code that is not only functional but also clean, maintainable, and scalable.

However, developers often encounter many challenges while building systems, and in some cases, they may fall into common traps known as anti-patterns.

These are poor programming practices that seem like good solutions at first but, over time, lead to inefficiencies, hard-to-maintain code, or even system failures.

In this article, I want to explore some well-known anti-patterns in software development and provide examples in code to help you understand how to identify and avoid them.

 

1. Hard-code, Magic String and Number

Hard-code means hard-coding some values and some logic that needs to be changed directly into the code, such as database connection, some configuration...

Magic string and magic number means hard-coding a number, a magical string, without clearly stating where that number/string comes from, or what it is...

For example, the code below is both hard coded and uses magic numbers.

Solution: This Anti Pattern is easy to handle. Just don't hardcode the config values (but read from the config file or know the environment), separate the magic numbers into separate variables, or write more comments.

The code after the fix is much easier to understand, right?


2. Callback hell

The concept of the callback is certainly not strange to JavaScript coders, especially when processing asynchronous JavaScript functions (like in NodeJS for example).

However, if we overuse callback functions without proper coding methods, our code will become extremely complicated and difficult to read.

 

Solution: to avoid callback hell, there are several approaches that make asynchronous code more manageable and readable. Two common solutions are Promising and Async/Await.

  • Using Promises: A Promise is an object representing the eventual completion (or failure) of an asynchronous operation and its resulting value. Promises allow you to avoid nested callbacks by chaining .then() methods.

  • Using Async/Await: Async/Await is a more modern and cleaner approach to handling asynchronous code. It allows you to write asynchronous code in a synchronous-looking manner, making it much easier to read and maintain.

 

3. God Class/Object

A God Object is an anti-pattern where a single class or object is given too many responsibilities, making it overly complex and difficult to manage.

This is a common mistake among students who are working on projects, or in projects that are too old, and written by inexperienced developers.

Gob Class means a super-huge, Divine Class that can do anything, so it is called God. This mistake occurs when developers put too many features into one class.

Solution:

  • Following the Single Responsibility principle in SOLID, each class should only have 1 Responsibility.
  • Refactor the code gradually, separate the class into smaller classes, and group functions/data that are often used together into a separate class.

 

4. Copy-Paste Programming

Another common anti-pattern is copy-paste programming, where developers duplicate code instead of abstracting common functionality into reusable functions or classes.

This is a pattern of writing code once, the next time you need to use it, copy the old code, and modify it a bit to make it run.

In the long run, this will cause the project's code to swell. The code is repetitive, and when editing or fixing bugs, many places will have to be fixed. If you forget or miss something, you will miss bugs.

Solution:
The simplest way is to separate the code that needs to be used into a separate function, a separate library to use.

 

5. Spaghetti Code

Spaghetti code refers to code that has a tangled and convoluted structure, often because of excessive use of global variables, lack of proper design, the flow is roundabout, extremely difficult to read, and difficult to fix.

The reason could be that the coding team doesn't have a specific design, or the developer is lazy so they code haphazardly. Or because the requirements are constantly changing and overlapping, but the modules and designs are not updated, so they also overlap!

Solution:

  • This is the most difficult Anti Pattern to solve completely! Because it is not only related to the code but also related to the design of the modules in the system
  • The easiest way is to destroy and rewrite when you understand the original logic, but it will take a lot of time and may lack requirements
  • You should gradually refactor the code and separate it into small parts. You can redesign the modules if necessary.


6. Golden Hammer

The Golden Hammer anti-pattern happens when a developer uses a familiar tool or technology to solve every problem, even when it's not the best fit.

For example, a programmer was assigned to develop a website project that required a simple UI and required fast response, with no animation.

However, he chose a UI library that he was familiar with even though it was quite heavy, had many unnecessary configurations, and was difficult to use for beginners.

Using the wrong tool for the job can lead to inefficiency, poor performance, and scalability issues. It's essential to choose the right tool or technology based on the specific needs of the problem.

Solution:

Evaluate the problem carefully and choose the right technology. For instance, if you need to store large amounts of unstructured data, consider using NoSQL databases like MongoDB or Cassandra instead of traditional relational databases.


7. Premature Optimization

Optimizing code is the process of editing/rewriting code to reduce size, limit input/output, increase execution speed, and reduce the amount of hardware needed.

Sometimes, optimizing code too early (not knowing where it runs slowly, and which part to optimize) is completely unnecessary, it also makes the code more complicated, harder to read, and harder to debug.

Solution:

Don't optimize too soon or too quickly. Ask yourself if the code needs or is worth optimizing.


Conclusion

Avoiding anti-patterns is crucial to writing high-quality, maintainable code. By recognizing and addressing issues like God Objects, Spaghetti Code, Lazy Classes, Copy-Paste Programming, and the Golden Hammer, developers can build systems that are easier to maintain and extend over time. As software development practices evolve, it’s essential to constantly improve our approach and learn from past mistakes


[References]
https://dev.to/yogini16/anti-patterns-that-every-developer-should-know-4nph
https://www.freecodecamp.org/news/antipatterns-to-avoid-in-code/
https://medium.com/@christophnissle/anti-patterns-in-software-development-c51957867f27

 

 

 

View More
TECH

January 24, 2025

Consuming Python API Testing with Pytest and Flake8

Testing is indispensable and crucial when developing an API for your application. It ensures that all functionalities works correctly and prevents unexpected errors. In Python, we can combine Pytest for functional testing and the Flake8 is an analysis tool to check the quality of a source code. Today, we will explore how to set up and use these tools effectively for testing an API.

1. What is Pytest?

Pytest is a flexible testing framework that supports fixtures, written in Python, and used for parameterized testing and plugins. It is ideal for API testing, capable of handling both basic and complex test cases.

2. Why write unit tests?

  • Ensure that the returned results are as expected, confirming the correctness of the API.
  • Help detect and identify parts affected by new updates, making maintenance easier.
  • Help discover and fix errors early in the development phase, reducing the risk of serious issues in the production environment.
  • Test individual parts of the API to ensure they function correctly and reliably.

3. Environment Setup

3.1. Install pytest: pip install pytest

3.2. Install flake8: pip install flake8

3.3. Install requests library: pip install requests

3.3. Install flask: pip install flask

3.4. Verify installation:

pytest --version
flake8 --version

4. How to Implement Pytest

4.1. Create an API file: app.py

4.2. Create test cases:

Test Case ID Description Steps Type Expected Result Date
TC001 Call API successful Request to the URL: http://127.0.0.1:5000/division Normal case
status_code: 200
message: "Successful"
result: 1
dd/mm/yyyy
TC002 Missing parameter "value1" Request to the URL: http://127.0.0.1:5000/division Error case
status_code: 400
error: Missing parameters
dd/mm/yyyy
TC003 Missing parameter "value2" Request to the URL: http://127.0.0.1:5000/division Error case
status_code: 400
error: Missing parameters
dd/mm/yyyy
TC004 Parameter value 2 is zero Request to the URL: http://127.0.0.1:5000/division Error case
status_code: 400
error: Invalid parameters
dd/mm/yyyy
more... ... ... ... ... ...

4.3. Create test code:

Create a test file and write your test cases. Your test file should start with test_ or end with _test.py. Here’s an example of a test file: test_app.py

4.4. Execute tests

Open a terminal and run the API: python app.py

Open another terminal and run Pytest: pytest test_app.py -v

4.5. Results

Pytest will display the results of the test cases in the terminal

4.5.1 Fail

4.5.2 Passed all test cases

5. What is flake8 and How to Implement It?

5.1. What is flake8?

Flake8 is a Python linting tool that helps you check your code for common issues and ensures it follows PEP 8 (Python's style guide).

Flake8 checks for:

  • PEP 8 compliance (Python's style guide).
  • Common bugs or code smells.
  • Unused variables or imports.

By integrating flake8, you can ensure that your code is clean, maintainable, and adheres to industry standards.

5.2. Run Flake8 to check for issues in the source code: flake8 app.py

5.3. Result:

Fail

When an error occurs, you can refer to the rules of Flake8 at Flake8 Rules (https://www.flake8rules.com/) to fix the error. This site provides a detailed list of rules, helping you to easily understand and correct issues in the source code according to PEP 8 standards.

Passed

Conclusion

Combining Pytest and Flake8 streamlines code quality assurance. Pytest validates functionality, while Flake8 enforces coding standards, ensuring your code is both robust and well-structured.

Reference

  1. https://docs.pytest.org/en/
  2. https://flake8.pycqa.org/en/latest/
  3. https://www.flake8rules.com/
  4. https://dev.to/coderpad/a-guide-to-database-unit-testing-with-pytest-and-sqlalchemy-1i96
View More
BUSINESSTECH

January 24, 2025

What is IT Staff Augmentation - A Flexible Solution to Scale Your Workforce As Needed

In recent years, the demand for IT staff augmentation has been on the rise among organizations worldwide. This growing trend can be attributed to several factors, such as increasing expenses in hiring skilled software developers, growing necessity for agile development practices, and the constant push towards becoming more adaptable, quickly scalable teams.

In support of this surge in the trend, market data points out, according to Verified Market Research, the IT staff augmentation service market was valued at USD 299.3 billion in 2023 and is estimated to reach USD 857.2 billion by 2031, reflecting a strong 13.2% compound annual growth rate (CAGR) from 2024 to 2031. In other words, it is projected that the market may indeed reach threefold of its current worth by the year of 2031, a clear indication of the fact that IT staff augmentation is quickly taking root across the world.

With operational experience of over 20 years delivering IT staff augmentation service and software development outsourcing to the clients around the globe, we at ISB Vietnam have seen first-hand how such solutions can turn around the scaling and innovating capabilities of a given organization. In this article, we shall take a close look at the IT staff augmentation basics, weighing some pros and cons before sharing a few best practices. By the end, readers will have a far better understanding of how working with a seasoned IT staff augmentation company can help meet their ever-evolving business needs.

 

What Is IT Staff Augmentation? Definition and Meaning

IT staff augmentation is a versatile solution for staffing temporarily external IT professionals with particular skills that your organization needs. Usually, you take help from a company that provides skilled developers, engineers, or other IT experts. These specialists become part of your internal team while you manage the project. Thus, you benefit from skill sets while retaining project management control.

The real benefit of IT staff augmentation services is agility and cost-effectiveness. You scale up or down your workforce based on project needs but without costing much more than a full-time hire or going through a long process of hiring. Such agility and flexibility aid faster-turning industries amidst frequently changing market trends.

 

Staff Augmentation vs. Project Outsourcing

When companies need external help for an IT project, they generally consider two main options: staff augmentation or project outsourcing. With project outsourcing, the vendor typically takes complete ownership of the project, including all management responsibilities. By contrast, IT staff augmentation keeps project management in-house. Your organization retains leadership of daily operations and decision-making, while the external team members integrate with your existing workflows.

 

Key Benefits of IT Staff Augmentation

When projects are fast-paced and susceptible to changing developments, IT staff augmentation frequently gives a lot more flexibility than project outsourcing. Especially where the organization already has an in-house development team and prefers to manage project management internally. This allows you to have temporary support from outside experts added to your existing team, hence reacting to changing requirements much faster and running projects in a very agile manner. Mentioned below are the three crucial reasons that demonstrate the reasons for the widespread acceptance of IT staff augmentation services.

 

1. Quick Access to Highly Specialized Talent

In case there is a lack of certain IT skill sets in the team, staff augmentation simply offers a direct path to top professionals around the world. Rather than wasting valuable time in posting job ads, interviewing, and onboarding new employees, you will quickly source what you need, such as experts with the necessary talents and experience.

When you partner with IT staff augmentation companies, the capabilities of the organization can ramp up very quickly. This allows your business to remain on track without sacrificing quality or violating delivery deadlines.

 

2. Optimized Costs and Flexible Resource Allocation

Another major benefit is cost optimization. Hiring full-time employees for short-term needs can lead to excessive overhead due to salaries, benefits, and recruitment expenses. In contrast, IT staff augmentation requires payment only for the duration you actually need the additional resources.

This pay-as-you-go model helps keep budgets predictable and manageable, giving you the freedom to expand or contract your team in line with project demands. In other words, you can sidestep the financial burden of maintaining permanent staff without risking a shortfall in workforce capabilities when project requirements intensify.

 

3. Continuity in Management and Operations

By integrating outside specialists into your current team, you can retain your existing processes, tools, and management style. In an IT staff augmentation setup, your organization maintains control of day-to-day project oversight. You direct tasks, set priorities, and coordinate development efforts just as you would with an entirely in-house team.

This stands in contrast to project outsourcing, where a significant portion of oversight is delegated to the vendor. For organizations that value hands-on control of critical projects, staff augmentation offers a middle path—bolstering your team with expert talent, yet preserving your internal workflow and decision-making authority.

 

Potential Drawbacks of IT Staff Augmentation

While IT staff augmentation offers clear benefits, it also presents certain challenges. Being aware of these potential issues can help your organization make the most of this approach. Below are two key considerations:

 

1. Projects Needing Extensive Internal Knowledge or Long-Term Commitment

IT staff augmentation tends to be most effective for focused or shorter-term projects with well-defined goals. If a project demands deep organizational context—such as complex business processes—or spans multiple years, the additional onboarding and knowledge transfer may outweigh the advantages. In such scenarios, forming a dedicated internal team or pursuing a different staffing model could be more sustainable.

 

2. Balancing Internal and External Resources

Relying too heavily on external IT staff may dilute your organization’s internal expertise and reduce control over critical operations. While staff augmentation can provide a flexible boost to your workforce, it’s essential to maintain a strong in-house foundation. This balance helps preserve core institutional knowledge, ensures continuity, and guards against the risks that come with sudden changes in external resources.

In all knowledge and with the foresight that any pitfalls may bring, staff augmentation can be strategically and smartly approached to provide a substantial level of flexibly without the drawbacks.

For those interested in diving deeper into effective IT Staff Augmentation strategies, feel free to reach out to us at ISB Vietnam where our team of experts is ready to provide tailored guidance and support.


Best Practices for Successful IT Staff Augmentation

Using IT staff augmentation services effectively is more than just hiring more staff. A clear plan is needed, beginning with a clearly defined intention and ending with the support for your extended team. The following six best practices will serve as a guide:

 

1. Set Goals and Objectives

Before delving into IT staff augmentation, ensure a clear view of what your project requires in terms of needs, timelines, and challenges. As mentioned in the sections in “Potential Drawbacks of IT Staff Augmentation”, there are instances where it would be fitting to resort to other means, such as hiring in-house employees or outsourcing the whole project . Such clarity will position you properly in deciding whether IT staff augmentation will suit your needs.

 

2. Set the Skills and Competencies Needed

Once the goals and objectives have been set, accurately outline the technical and soft skills that your extended staff will need. Apart from the basics: budget limits and duration of a project, also consider having specialized technical expertise, industry knowledge and language skills, and personality characteristics such as flexibility and communication skills. This all-encompassing view will assist in identifying candidates who not only meet the required technical fundamentals but also harmonize with your in-house team.

 

3. Choose the Right IT Staff Augmentation Partner

Finding a reputable IT staff augmentation company is crucial. Different providers offer different talent pools, specialty areas, and resource availabilities. Your perfect partner should provide the exact mix of skills and experience you are looking for.

For instance, at ISB Vietnam, we leverage our heritage as a Japan-affiliated company based in Vietnam to provide top-tier developers who possess high-level technical expertise and strong quality control skills. We also excel in English and Japanese language support, enabling us to deliver IT staff augmentation services to clients worldwide. For deeper insights into Vietnam’s software development talent and IT market, you might refer to these articles:

Key insights and trends for software developers in Vietnam 2024–2025

Vietnam’s IT Market Landscape 2024–2025: Why Vietnam Leads in IT Outsourcing and Offshore Software Development

 

4. Conduct Interviews with Prospective Team Members

Even with a trusted partner, it’s wise to interview any candidates who will play a major role in your project. Just as you would with full-time employees, use this opportunity to verify their technical skills and assess soft skills like communication, teamwork, and adaptability. If you have a large pool of candidates and can’t interview everyone, focus on key contributors. This approach helps ensure a strong cultural fit and alignment with your project goals.

 

5. Clearly Define Roles and Responsibilities

Once new IT staff are inducted into your team, it is wise to set out roles and responsibilities in clear terms. The clarity in each person's role in the whole set of things for the project will enhance accountability, prevent confusions, and simplify workflows. The principle also promotes cohesiveness within the team such that everybody knows how best they can contribute toward the success of the project.

 

6. Offer Ongoing Support and Integration

After your augmented team members have onboarded, maintain a supportive environment. Temporary staff often face unique challenges, such as understanding existing processes and team dynamics. As a manager, keep an open line of communication to ensure they receive the guidance they need. By proactively offering assistance, you can help them integrate faster, enhance productivity, and address any minor issues before they escalate.

By following these best practices, companies can optimize the impact of IT staff augmentation services, ensuring that temporary team members become true collaborators.

 

Conclusion

Due to increasing pressure to produce more and greater innovations at a higher speed and efficiency, IT staff augmentation has emerged as one of the most effective means to add resources to development teams on short notice. Whether niche talent is needed for a project with time sensitivities or you would like to scale technical capabilities with less commitment than full-time hiring, IT staff augmentation services can fill such gaps on short notice and in a cost-efficient manner.

However, be sure to approach this model with a focus on clear objectives, demarcated roles, and a solid onboarding process. By identifying exactly what skills you need, connecting with the appropriate IT staff augmentation company, and providing continuous support to augmented team members, many of the hurdles that characterize short-term staffing solutions can be subdued.

Larger factors should guide the decision regarding staff augmentation. In the case of short-term, specialized needs, which require quick turnaround times, staff augmentation can enable agility and foster innovation. For longer-term projects, a more permanent in-house team or some form of outsourcing may work better. Careful, thoughtful weighing of these factors will help ensure that your staffing choices drive the sustainable growth you're after and keep your projects on track.

 

About ISB Vietnam

At ISB Vietnam, a leading offshore software development outsourcing company in Vietnam, we’ve spent over 20 years helping companies worldwide navigate their IT requirements—offering not just skilled developers but also the high quality standards and language support that global projects demand.

If considering an IT staff augmentation strategy or looking for a trusted partner to meet specifications for your organization's needs, we would like to show you our resources and expertise.
Contact us to find ways how to collaborate for your success or something.

View More
BUSINESSTECH

January 22, 2025

Vietnam’s IT Market Landscape 2024-2025: Why Vietnam Leads in IT Outsourcing and Offshore Software Development

The rapid advancement of IT technologies related digital transformation (DX) and artificial intelligence (AI) has been remarkable lately. What was once considered the cutting edge or a niche technology has progressively become an integral part of business operations, creating continually rising demand for software development expertise. Today, those involved in software development are facing a significant shortage of skilled developers worldwide, which has naturally led to rising labor costs.

Worldwide challenges have resulted in an increase in businesses turning to offshore software development and IT outsourcing solutions. Such approach provides access to a large pool of highly skilled and cost effective talent. Offshore development destinations have been popular throughout Asia, Eastern Europe, and Latin America. Amongst these regions, Vietnam has stood to be among the most appealing as its ever-growing reputation gets them to be a leading software development and IT outsourcing services hub.

Based on the previous article, this article presents the latest developments and trends in Vietnam's IT market. The findings, published in the newest Vietnam IT Market Report 2024–2025 by TopDev, Vietnam's leading IT talent platform, along with our two decades experience at ISB Vietnam in offshore software outsourcing service providers, together, these data form the basis of this article, which explores the current state of Vietnam's IT industry and highlights the unique advantages it offers as an outsourcing destination.

The following articles provide a detailed overview of offshore development and its advantages and disadvantages, so please take a look at these articles as well.

Onshore vs. Offshore: Definition, Differences, and Key Considerations

Pros and Cons of Onshore and Offshore Development: Choosing the Right Model for Your Business Growth

 

Vietnam’s Population and Workforce Provide Abundant IT Talent

According to Key insights and trends for software developers in Vietnam 2024-2025, Vietnam boasts a robust IT workforce, with approximately 560,000 professionals employed in computer science and IT-related fields. This is bolstered by about 55,000-60,000 students joining computer science and IT-related majors every year, adding to the tank of skilled software developers and IT specialists.

This abundant IT talent is supported by several factors, with Vietnam's demographics being one of the first. Vietnam's population continues to rise, and by December 2023, the population reached nearly 100 million people, making it the 15th largest population worldwide, and ranks 3rd in Southeast Asia.

 

Year Vietnam’s Population
2021 98.51M
2022 99.46M
2023 100.3M

 

Population pyramid of Vietnam

 

Vietnam's youthful population, as depicted by its population pyramid, makes its median age fairly young at 33.1 years as reported by the CIA’s The World Factbook. For perspective, on the other end of the scale, the median age in the U.S. is 38.9, in the U.K. 40.8, in Germany 46.8, in Singapore 39.4, in Australia 38.1, and in Japan 49.9. This youthful age profile, where the larger segment of the Vietnamese population belongs to the age relative to the working force, provides a solid advantage for the country in promoting its IT sector.

For software developers and IT professionals, it is essential to keep pace with the changing leaps in technology. The younger workforce is generally flexible, eager to learn, and quick to embrace new tools and practices. Moreover, with Vietnam having a high percentage of under-20s, it guarantees a steady supply of working-age talent for many decades forward.

As highlighted in the article Key insights and trends for software developers in Vietnam 2024-2025, talented individuals in Vietnam increasingly seek careers in the IT sector, drawn by attractive salaries and growth opportunities. This trend aligns with the government’s strategic focus on developing IT talent, ensuring that Vietnam’s software development workforce continues to grow in both quality and quantity.

 

Vietnam’s IT Service Revenue

The revenue trend for the IT services industry in Vietnam is useful information. Vietnam has experienced continuous growth in IT service revenue over the years, and this upward trajectory is projected to continue. By 2024, the sector is expected to reach $2.07 billion, with a compound annual growth rate (CAGR) of 11.51% from 2024 to 2026. Looking further ahead, Vietnam’s IT service revenue is forecast to expand to $3.2 billion by 2028.

 

IT Services revenue by segment in Vietnam

 

The growth in the IT Outsourcing segment of the four segments—Business Process Outsourcing (BPO), IT Consulting & Implementation, IT Outsourcing, and Other IT Services—is particularly noteworthy. Vietnam's IT Outsourcing revenues are projected to grow dynamically from $0.7 billion in 2024 to $0.83 billion in 2025, $0.98 billion in 2026, $1.13 billion in 2027, and $1.28 billion in 2028, almost doubling in size within a period of four years.

This growth comes through a possible commercial advantage of Vietnam as one of the most captive destinations for outsourcing. While global demand for IT solutions continues to increase with a shortage of qualified IT professionals, Vietnam has strategically positioned itself as a reliable and cost-competitive partner for businesses round the globe.

Given those trends, Vietnam is poised to further expand in software outsourcing and offshore software development. The advantage of providing high-quality IT services at affordable prices makes it remain an attracting country in meeting the global demand of IT.

 

Average Salaries and Rates for Software Developers in Vietnam

As noted earlier, Vietnam has a rich, highly skilled IT labor force and serves as a fast-growing destination for IT outsourcing. One major reason for Vietnam's attractiveness is the cost of IT talent.
The report mentioned the average gross salary for software developer in Vietnam is around $1,300 per month. Including various costs such as management costs, the average hourly rate for software developers in Vietnam is around $20 to $40. Naturally, these rates vary depending on the developer's level, years of experience, skills, and tech stack etc.

Like this, the salary and rates levels of developers in Vietnam are low when compared to Western countries. This feature opens the door for strong cost competitiveness of Vietnam and a cost-effective alternative to having local developers or outsourcing to local software companies in many parts of the world.

While labor costs remain subdued, the quality of software developers is on an upward trend in Vietnam, which reflects advances in the experience and skill levels of the workforce. By outsourcing to Vietnam, offshore development offers an acceptable blend of quality and expense because of the competitiveness of developers there.

The balance between level of technologies and IT workforce cost-effectiveness puts Vietnam in an advantageous position to be one of the leading software outsourcing and offshore development destinations. Companies can access skilled developers across a wide array of technologies at a fraction of the cost compared to Western markets.

 

Conclusion

Vietnam's IT sector is one of the most remarkable success stories. With over 100 million people and still growing, the median age in Vietnam is about 33 years, presenting a young workforce with a high proportion of working-age people. This demographic advantage, together with the fact that 55,000-60,000 computer science and IT-related students come in every year, provides long-term talent supply for IT professionals.

In 2024, approximately 560,000 experts are already working in IT-related fields, and this number is expected to increase more in the coming years. With both private and public initiatives churning out IT talent in droves, this human resource from Vietnam has indeed been highly developed to continue attracting attention globally.

The revenues of the IT Outsourcing industry of Vietnam are thus seen to surge and probably double in the next four years. It replicates the growing reputation of the country as one of the most favored destinations for offshore software development and outsourcing. With abundant skilled professionals at economical rates, Vietnam can well cater to the increasing demand for software development services across the globe.

Arguably, one of the most significant competitive advantages for Vietnam is cost-effectiveness. It making the country much cheaper compared to Western nations and even to many other outsourcing countries around the world. While it remains affordable, its quality and developer expertise are improving day by day to offer businesses a perfect blend of cost and capability.

For companies considering software outsourcing or offshore development, Vietnam really has much to offer. With the powerful workforce, rapid industry growth, and unmatched cost competitiveness, it is unparalleled for a variety of businesses in search of high-quality and scalable IT solutions.

If one considers outsourcing or offshore development, then no doubt Vietnam will also be among those worthy destinations to head to. Immense opportunities avail here, and their values as an IT outsourcing hub can only rise upwards in the time to come.

 

About ISB Vietnam

As a leading software development and offshore services provider, we specialize in delivering high-quality and cost-efficient solutions for our partners for the past 20 years.

ISB Vietnam is proud to have a team of highly skilled software developers based in Vietnam, known for their technical expertise and commitment to excellence. Leveraging a vast network of developers both within Vietnam and across the globe, we are uniquely positioned to deliver tailored software development solutions that meet the diverse needs of our clients.

For any inquiries related to IT Outsourcing Solutions, we are the right partner.

Don’t hesitate to contact us to discuss how we can work together to make your project a success.

View More
BUSINESSTECH

January 21, 2025

Key insights and trends for software developers in Vietnam 2024-2025

In recent years, Vietnam has been attracting attention as a destination for offshore development and software development outsourcing due to the growing global need for IT, rising labor costs and shortages of software developers.

This study will refer to the Vietnam IT Market Report 2024 - 2025 published by TopDev, a major IT human resources platform in Vietnam, and also examine characteristics and trends of software developers in Vietnam through ISB Vietnam’s perspective, as the company has been providing offshore software development outsourcing services from Vietnam for more than 20 years.

We hope this article will be helpful to people gathering information about Vietnamese software developers, software development outsourcing, and offshore development destinations.

 

Number and Quality of Software Developers in Vietnam

Vietnam has become well-known across the world for its abundant IT talents, particularly in software development. The Vietnam IT Market Report 2024–2025 published by TopDev stated that about 560,000 professionals work in computer science and IT-related fields. This number is increasing, with an addition of 55,000 to 60,000 students on average each year, enrolling in computer science majors and it-related fields. Consequently, Vietnam continues to see a boom in professionals with high-level specialized knowledge and practical experience in software development and IT.

Factors that account for this phenomenal growth:

  • Government Policies: The Vietnamese government recognizes IT talent development as a national strategy by actively supporting the IT sector within national development plans.
  • Competitive Remuneration: The IT and Tech industry in Vietnam has been recognized for paying above-average salaries compared to other industries. This financial advantage serves as a magnet for talents to pursue careers as software developers or work within IT companies.

 

These factors set the base for the high-quality and skilled talent within the industry and is a major contributor to the rapid growth of the technology industry in Vietnam.
Vietnam software developers are acknowledge for their work ethic and being highly skilled. Vietnam has consistently ranked among the top 10 countries for best offshore software development and outsourcing services due to the vast talent pool and competitive rates.

A few examples stand out:

  • In the Global Services Location Index of Kearney, Vietnam came in sixth among the biggest countries for software outsourcing services in 2021.
  • As per Accelerance's 2022 Global Software Outsourcing Trends and Rates Guide, Vietnam ranks at the second spot among its Southeast Asian peers when it comes to being a software outsourcing destination.

 

In fact, Vietnam's IT sourcing revenue has been experiencing significant growth and is projected to increase substantially from $700 million in 2024 to $1.28 billion in 2028, nearly doubling within just four years.

Such praise is a testament to the continuous rise in both the quality and quantity of software developers based in Vietnam, furthering its standing as a favored destination in global offshore software development and software development outsourcing.

Next, we will dive into the features that distinguish Vietnamese software developers and the most common Tech Stacks according to the report above.

 

Age Distribution, Years of Experience, and Level Distribution of Software Developers in Vietnam

Vietnam is a fast growing economy characterized by a youthful population, with an average age of 33 years. Such demographic trends are reflected in Vietnam's software developer workforce, largely shaped by the younger generation.

 

Age Distribution

Age distribution of developers in Vietnam

 

As per estimates, in 2024, the age profile for the majority of Vietnamese software developers is 25-29 years of age, accounting for 29.3% of the total. Right after them comes the age group 20-24, which with 28.8% includes young adults. This means that over half or 58.1% of all developers in Vietnam fall into the 20s age group. The remaining proportions include 30-34 years (15.8%) and 35-39 years (10.2%).

While younger developers still dominate, the overall age distribution has moved upward gradually from 2022 to 2024. The proportion of developers who are 15-19 and 20-24 has decreased, while the groups of 25-29 years and 30-39 years have seen increases. This constitutes a maturing software development workforce with a growing number of experienced professionals.

 

Years of Experience

Years of experience of developers in Vietnam

 

The same pattern is displayed in the skill levels of the developers. In 2024, most developers had 2 to 3 years of experience, at 28.8%, followed by those with 0 to 1 years of experience, at 22.1%. Together, developers with 0 to 3 years of experience account for 50.9% or around half of the total work force. After this, there is a consistent upswing of developers from midlevel to senior level: 4 to 5 years (18.4%), 6 to 7 years (11.7%), 8 to 9 years (7.9%), and 10 to 11 years (6.0%).

Although the first-year workers dominate the field of software development today, the steady mainstream growth of skilled personnel also indicates a transition of the developer workforce to a more competent level-suitably equipped to handle streaming, large-scale, complex projects.

 

Level Distribution

Level distribution of developers in Vietnam

 

This maturity, however, is reflected in the current level distribution. In 2024, the junior tier made up 34% of developers and is the largest group. Next comes the middle-tier, with 30%, while the two groups put together account for 64% of the total developers. The number of fresher is reducing while the number of junior and middle is increasing, indicating that the overall skill level within the Vietnamese software development community is rising.

 

A Key Strength in Vietnam’s Software Development Industry

A steady rise in the average experience and skill level of developers, in addition to an annually increasing influx of tens of thousands of new IT professionals each year, is a major advantage for Vietnam. This development, thus, reinforces Vietnam's position as a top choice for software development outsourcing and offshore software development services.

Vietnam is soaring above expectations with a clash of youthful yet highly skilled developers ready to provide reliable yet cost-effective solutions for the clients, and the evolution of this young workforce should be considered testimony to the country's strength in the market for offshore software development.

 

Trends and Characteristics of Tech Stacks among Software Developers in Vietnam

Vietnamese software developers utilize a diverse range of tech stacks, each with distinct trends and preferences across different fields. Below, we delve into the most popular programming languages, frameworks, and technology categories based on their popularity among developers in Vietnam.
*The numbers in () indicate the popularity

 

JavaScript

JavaScript continues to be a leading programming language among developers in Vietnam. A significant development in 2023 was the introduction of "Bun (64.3%)," which quickly rose to prominence, overtaking established frameworks such as Node.js (48.2%), Angular (45.1%), and ReactJS (36.0%). Furthermore, TypeScript (32.9%) and Vue (31.4%) are also popular choices, highlighting JavaScript's adaptability within modern web development.

 

Java

In the realm of Java, Spring Boot (45.2%) leads as the top choice, followed by Hibernate (7.0%) and Struts (1.2%). These frameworks are preferred for their reliability and efficiency in building enterprise-grade applications, making Java a cornerstone for backend development in Vietnam.

 

Python

Python is widely used due to its varied frameworks like Django (35.1%), Pandas (31.0%), and Flask (19.1%). In areas like data processing and machine learning, libraries such as PyTorch (16.9%) and TensorFlow (11.4%) are among the top selections, reinforcing Python’s significance in AI development efforts. On an international scale, Python has earned recognition as the most favored programming language for 2024, resulting in increased demand.

Most popular programming languages in 2024

 

.NET/C#

In the .NET & C# space, .NET Core (46.2%), ASP.NET Core (37.0%), and .NET Framework (29.0%) dominate. While this category has seen little change in recent years, these frameworks remain central to enterprise and desktop application development in Vietnam.

 

PHP

In the landscape of PHP frameworks, Laravel stands out with considerable support from 60.5% of developers opting for it. It is followed by Symfony at 24.7% and CodeIgniter at 17.1%, illustrating that PHP remains relevant in crafting web applications.

 

Mobile Development

In mobile development, Java (50.2%) and Swift (30.5%) are the leading choices, enabling robust native application development for Android and iOS, respectively. Flutter (19.1%) and React Native (10.2%) also see significant adoption.

 

Database Technologies

MySQL (78.0%) remains the most widely used database technology, praised for its open-source reliability. Other popular options include SQL Server (59.9%) and MongoDB (36.1%), reflecting the diverse data management needs of Vietnamese developers.

 

DevOps and Cloud Platforms

Within DevOps practices, Linux reigns supreme with a substantial share of 76.5%, closely trailed by Docker at 52.7%. In terms of cloud platforms, AWS leads with a commanding presence of 38.3%, while Azure accounts for 25.2% and VMWare captures 17.1%. These tools play an essential role in enhancing modern development environments and ensuring they can scale effectively.

 

Detailed Tech Stack Data of Vietnamese Software Developers

All this data consists of breakdowns of some of the most popular technology stacks among Vietnamese software developers, namely, the browser, tools, frameworks, and platform that dominate in each category. According to the presented report, these statistics provide insight into the preferences and expertise of Vietnamese developers.
*The numbers in () indicate the popularity

  • Javascript: Bun (64.30%), NodeJS (48.20%), Angular (45.10%), ReactJS (36.0%), Typescript (32.9%), Vue (31.4%)
  • Java: Spring Boot (45.20%), Hibernate (7.00%), Struts (1.20%), Vaadin (1.20%)
  • Python: Django (35.10%), Pandas (31.00%), Flask (19.10%), PyTorch (16.90%), TensorFlows (11.40%)
  • .NET/ C#: .Net core (46.20%), ASP.Net core (37.00%), .Net framework (29.00%), ASP.Net MVC (16.50%), Xaramin (0.70%)
  • PHP: Laravel (60.50%), Symfony (24.70%), CodeIgniter (17.10%), Yii (4.50%), CakePHP (4.00%)
  • Mobile Development: Java (50.20%), Swift (30.50%), Flutter (19.10%), React Native (10.20%), Kotlin (3.80%)
  • Database technologies: MySQL (78.00%), SQL Server (59.90%), MongoDB (36.10%), PostgreSQL (31.40%), Redis (21.90%)
  • DevOps: Linux (76.50%), Docker (52.70%), Bash (11.90%), Kubernetes (10.30%)
  • Cloud Platform: AWS (38.30%), Microsoft Azure (25.20%), VMWare (17.10%), Firebase (14.60%), Google Cloud Platform (8.60%)

 

Conclusion

This article has explored the various dimensions of Vietnam’s software developers, providing insights into its workforce, technical expertise, and evolving trends. Drawing from the Vietnam IT Market Report 2024–2025 and industry data, the following key points summarize Vietnam’s position in the global IT landscape.

 

Dynamically Growing and Evolving Workforce

Vietnam has a youthful and growing pool of software developers with many in the 20-29 age range. Because of a developing industry, the workforce is mostly composed of junior-level developers, with a gradual increase shown of mid-level and experienced developers. Government initiatives and much attention paid to IT education are driving this development.

 

Wide range of tech stacks

The effectiveness of Vietnamese developers with a range of programming languages and frameworks makes them distinguished not only on the commonly used technologies such as JavaScript and Python, but also for specialized tools for mobile development, cloud platforms, and DevOps. Developers are flexible enough to handle a variety of industry needs, the report emphasized, and have been able to embrace modern technologies and keep pace with recent trends.

 

An Excellent Outsourcing Destination

International rankings such as Kearney's Global Services Location Index and Accelerance's outsourcing reports highlight Vietnam's prestige for offshore software outsourcing. These rankings reaffirm that Vietnam is on the path to an eye-catching career in the global IT ecosystem.

 

About ISB VIETNAM

As a leading provider of software development and offshore services, we have specialized in delivering high-quality, cost-effective solutions to our partners for the past 20 years.

ISB Vietnam is proud to have a team of highly skilled software developers based in Vietnam, known for their technical expertise and commitment to excellence. Leveraging a vast network of developers both within Vietnam and across the globe, we are uniquely positioned to deliver tailored software development solutions that meet the diverse needs of our clients.

For any inquiries related to IT Outsourcing Solutions, we are the right partner.

Don’t hesitate to contact us to discuss how we can work together to make your project a success.

View More
TECH

January 17, 2025

The History and Popularity of Programming Languages over the Last 40 Years

In our last article “Most popular programming languages in 2024”, we dived into the platform TIOBE and its latest data in relation to the most popular programming languages. We discovered that Python had attracted overwhelming popularity in 2024 because of the exploding demand for AI and data science. Besides Python well-known languages such as C++, C#, Java and JavaScript have maintained their strong positions in the programming language rankings of 2024, proving their long-term popularity.

Today, we will once again draw on index data from TIOBE. This time we will present an overview of shift in programming language popularity over the past 40 years. From 1984 until 2024 to gain a deeper understanding of the historical trajectory of these programming languages. We believe this article is important to understand vital technological milestones that been a big part of shaping the digital landscape as we see it today.

TIOBE Index

The TIOBE Index is one of the most recognized platforms globally for understanding programming languages and their popularity. It has been trusted and relied upon by developers, businesses, and researchers for many decades. To get a fuller insight into the TIOBE Index, its gauges, and why it still commands such respect within its sectors, we suggest that you refer to the in-depth overview enlisted in the link below.

Most popular programming languages in 2024

 

The History and Popularity of Programming Languages over the Last 40 Years

In this section, we will go deeper into how programming languages have developed in popularity over the past 40 years. We will look at the period from 1984 up until 2024 as reflected by the TIOBE Index.

 

Programming Language Popularity Ranking from 1984 to 2024

Programming Language Popularity Ranking from 1984 to 2024

 

Programming Language

1984

1989

1994

1999

2004

2009

2014

2019

2024

Python

-

-

23

24

7

7

7

3

1

C++

13

2

2

2

3

3

4

4

2

C

1

1

1

1

1

2

1

2

3

Java

-

-

-

3

2

1

2

1

4

C#

-

-

-

13

9

6

5

6

5

JavaScript

-

-

-

10

10

9

8

7

6

Go

-

-

-

-

-

-

35

18

7

Visual Basic

-

-

-

-

-

-

234

20

8

SQL

-

-

-

-

100

-

-

9

9

Fortran

11

9

5

17

14

25

30

29

10

Ada

3

4

7

12

16

26

32

35

24

Lisp

2

3

6

19

13

17

17

31

30

Objective-C

-

-

-

-

38

27

3

10

35

(Visual) Basic

4

5

3

4

4

5

41

-

-

* Average popularity ranking for the 12 months of each year

* "(Visual) Basic" originally encompassed all Basic dialects, including Visual Basic. Since 2011, after splitting these variants into distinct categories (Visual Basic .NET, Classic Visual Basic, etc.), the major implementation, Visual Basic .NET, is now referred to simply as "Visual Basic."

* SQL, despite its age, was only added to the TIOBE Index in 2018 after it was pointed out to be Turing complete, resulting in a relatively short presence there.

 

1984 would be the year that really mattered for the IT industry and Apple. It was the year when Apple launched the first personal computer called Macintosh, with a graphical user interface (GUI). In its wake, Microsoft rolled out its very first operating system, Windows 1.0, in 1985. This time also marked an era for PCs as we know it today and is symbolic starting point for the 40 years journey.

A broad look at the TIOBE Index trends from 1984 to 2024 reveals that the most popular programming languages have changed dramatically in tandem with available computing resources, evolving software development methodologies, and shifting industry structures.

Back in 1984, the programming language C was dominating. Remarkably, even after four decades, C still ranks near the top of the programming language ranking in 2024. However, Python has now ascended to become the undisputed leader among today’s most popular programming languages.

This long-term trajectory underscores a fundamental pattern: a steady shift from low-level to high-level languages, and eventually toward specialized languages thriving in cutting-edge domains.

Next, let's take a look at the changes of popular programming languages in each decade from the 1980s to the 2020s.

 

1980s–1990s: The Era of C, Fortran, Lisp, and Ada

Since 1984, the programming language C has proved its importance and efficiency at a time where limited capabilities and resources were available. Meanwhile, languages like Lisp, Ada, and Fortran rose to prominence, particularly in scientific computing and embedded systems. These languages served as the cornerstone of computer engineering and computational science at the time. Today, C is still one of the most popular choices for systems programming.

 

2000s: The Ascent of Java and C++

Around the late 1990s and early 2000s, the rise of the Internet and object-oriented programming boosted the popularity of Java and C++. While C remained strong, holding the No.1 spot in 2004 and almost maintaining it in 2009, Java surpassed C to claim the top position in the TIOBE index by 2009. C++ enjoyed strong popularity, placing third in both 2004 and 2009 and claimed its status among the most popular programming languages. Meanwhile, as Windows dominated the PC market, Microsoft’s C# saw increasing growth, climbing to sixth place by 2009.

 

2010s: The Rise of Python

The technologies of data science, AI, and machine learning propelled the 2010s and changed rankings in popular programming languages. Python, ranked seventh in 2014, gushed to third by the TIOBE index by 2019. Its mighty repositories, frameworks, and unmatched versatility in data, AI, and Python scripting all played a big part in this rise.C retained the big number one spot in 2014 and the second place by 2019. During that time, JavaScript became solidified as the de facto front-end development language, whereas Go found its place as a cloud-native. Languages like Objective-C were briefly to spike due to iOS development, soon to yield prominence to the new laurel, Swift.

 

2020s (until mid-2020s): Python’s Unstoppable Lead and the Enduring Legacy Languages

By 2024, Python had firmly established itself as the leading language in the programming language ranking, leaving its nearest competitors far behind. The unrelenting demand for AI, machine learning, and data science propelled Python to become the industry’s “common language,” bridging developers across countless domains. Meanwhile, legacy languages like C++ and C remain popular mainstays, and Java, C#, and JavaScript—pillars of the 2000s and 2010s—continue to command strong positions.
Languages like Fortran, Ada, and Lisp, developed in earlier eras, still play vital roles in niche sectors where their unique capabilities are indispensable. In the 2020s, cutting-edge technologies coexist with these legacy systems, reflecting the rich and diverse landscape of modern programming languages.

 

Conclusion

In the 40 years from 1984 to 2024, as technology has evolved significantly, the computing and business environments have also changed dynamically. Following these changes, various programming languages have risen and fallen.

When hardware resources were a constraint, C, Lisp, Ada, and Fortran were widely used, when the demand for commercial enterprise applications expanded, Java was one of the most popular programming languages. And in the AI era of 2024, Python had firmly claimed the top spot in the programming language ranking.

After 2025, which programming languages will become more popular in the ever-innovating IT ecosystem? It will be important to keep an eye on the ever-changing trends in programming languages.

 

For the Most popular programming languages ​​in 2025, please check the following article.

Most popular programming languages in 2025

 

About ISB Vietnam

ISB Vietnam (IVC) is at the forefront of the rapidly changing programming trends and is aligned with an intelligently reliable partnership with a trustworthy company being attuned to this moving technology-based landscape.

As a leading IT outsourcing company with 20 years of experience, we are experts to deliver innovative, high-quality, and cost-effective solutions that exceed the expectation of our partners.

For inquiries or to discuss how we can help make your project a success, don’t hesitate to contact us.

View More
TECH

December 19, 2024

Most popular programming languages in 2024

As 2024 comes to an end it is time to look back at an eventful year in the IT landscape. AI is again writing headlines together with other cutting-edge technologies such as cybersecurity, cloud infrastructure and autonomous vehicles. Following these technology trends, there has also been a shift in popular programming languages.

For example, the widely recognized ChatGPT—now virtually synonymous with AI—was primarily developed using Python. This close relationship between programming language popularity and technology trends underscores why it’s essential to monitor which languages are thriving.

To provide a clearer picture, we will in this article share valuable insights from the TIOBE Index, which publishes data on the popularity of programming languages, and why this website is relevant to follow for the latest programming trends in 2024.

 

For the Most popular programming languages ​​in 2025, please check the following article.

Most popular programming languages in 2025

 

The TIOBE Index

In this section, we will give a short introduction to the TIOBE Index published by TIOBE Software once a month. The index shows the most popular programming languages month by month and has received great acknowledgment from tech communities.
By measuring a given language’s presence across a variety of search engines and technology resources.
In other words, the TIOBE Index tracks the frequency and visibility of each language online. As a result, it offers an objective snapshot of how widely used, referenced, and discussed these languages are worldwide. This makes it an invaluable resource for developers, learners, and businesses evaluating which languages to adopt or invest in.

 

How the TIOBE Index Is Defined

The TIOBE Index evaluates popularity primarily through the number of search hits related to a particular programming language. Data is aggregated from about 25 authoritative sources, including major search engines and platforms like Google, Wikipedia, Bing, Microsoft, SharePoint, eBay, and Amazon.
By using search hits as a proxy for visibility, the index effectively benchmarks how much attention and usage each programming language garners. The TIOBE Index should not be viewed as an indicator of how technically advanced or superior a programming language is. It represents factors such as market trends, developers' interest, educational resources, and support and training from vendors.
Moreover, the methodology behind the TIOBE Index is standardized and consistently applied every month. The systematic way allows one to trace how the popularity of programming languages has changed over time. It offers decent insight into the evolution of the developer ecosystem, showing where the market is today and where it could go in the future.

 

2024 Programming Language Popularity Ranking

Now, it is time to focus on the latest data provided by the TIOBE Index on the most popular programming languages for December 2024. We now take a look at the first 10 programming languages before going on to the full top 50 list.

At the forefront, Python, in first place, stands as the dominant leader with the highest popularity. As of December 2024, Python's popularity rating is to stand at 23.84%, which is many steps ahead of C++ at 10.82% that comes in second place. This supremacy of Python is attributable to its main area of use- AI, machine learning, and data science along with web developing, automation, and infrastructure management.
Its flexibility gives it a status in a larger aspect in the industry.

C++, in second place, maintains a steady rating above 10%. Its enduring popularity comes from its unmatched performance capabilities—essential for system-level development, game engines, and embedded systems. Meanwhile, Java (9.72%) and C (9.10%), occupying the third and fourth spots respectively, remain fundamental workhorses in enterprise systems and mission-critical embedded environments. Their longstanding presence reflects stable, long-term demand across numerous industrial sectors.

In fifth place, C# (4.87%) retains support due to its integration with the .NET ecosystem, Azure services, and game development platforms like Unity. JavaScript (4.61%) stands firmly in sixth place, underscoring its role as the go-to language for front-end web development. With the support of TypeScript and other modern frameworks, JavaScript’s influence shows no signs of waning.

Go (2.17%), ranked seventh, continues to gain traction as a core language for cloud-native services and microservice architectures, leveraging efficient concurrency and a lightweight runtime. SQL (1.99%), in eighth place, remains an unshakable pillar of data-driven enterprises, powering databases and ensuring essential data operations. Visual Basic (1.96%) in ninth place, while older and more niche, still satisfies certain legacy system demands and specialized internal tools. Rounding out the top 10, Fortran (1.79%) persists as a hidden champion in scientific and high-performance computing (HPC) scenarios.

Overall, we see a landscape dominated by Python’s meteoric rise, stable performances from time-tested giants like C/C++/Java, and strong footholds for languages like Go and SQL that excel in specific domains. As we move into 2025, generative AI and cloud-native technologies are set to change which programming languages are most popular. It's important for businesses, developers, and learners to keep up with these trends to stay ahead.

Below is the list of the top 50 programming languages in the 2024 programming language popularity ranking.

 

2024 Programming Language Popularity Ranking TOP50

Ranking Programming Language Ratings
1 Python 23.84%
2 C++ 10.82%
3 Java 9.72%
4 C 9.10%
5 C# 4.87%
6 JavaScript 4.61%
7 Go 2.17%
8 SQL 1.99%
9 Visual Basic 1.96%
10 Fortran 1.79%
11 Delphi/Object Pascal 1.44%
12 PHP 1.39%
13 Scratch 1.33%
14 Rust 1.29%
15 MATLAB 1.09%
16 R 1.05%
17 Assembly language 1.04%
18 Ruby 1.03%
19 COBOL 0.98%
20 Swift 0.98%
21 Lisp 0.97%
22 Prolog 0.90%
23 Kotlin 0.82%
24 Ada 0.72%
25 Classic Visual Basic 0.70%
26 Perl 0.64%
27 Lua 0.64%
28 SAS 0.57%
29 (Visual) FoxPro 0.57%
30 Haskell 0.54%
31 Scala 0.51%
32 Julia 0.50%
33 Dart 0.47%
34 VBScript 0.41%
35 Objective-C 0.38%
36 Transact-SQL 0.37%
37 PowerShell 0.37%
38 Bash 0.33%
39 PL/SQL 0.27%
40 D 0.21%
41 Solidity 0.20%
42 TypeScript 0.20%
43 GAMS 0.20%
44 ABAP 0.19%
45 Awk 0.17%
46 X++ 0.16%
47 RPG 0.15%
48 Elixir 0.15%
49 ML 0.14%
50 Clojure 0.14%

 

2024 Monthly Trends in Programming Language Popularity

Next, let’s examine the monthly rating changes throughout 2024. The year’s TIOBEs index data suggests that programming language popularity evolved significantly along multiple dimensions—ranging from specialized niche demands to the steadfast stability of legacy languages. By analyzing these month-by-month trends, we gain deeper insights into how these languages adapted and surged in response to industry needs.

2024 Monthly Trends in Programming Language Popularity

Programming Language Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
Python 13.97% 15.16% 15.63% 16.41% 16.33% 15.39% 16.12% 18.04% 20.17% 21.90% 22.85% 23.84%
C++ 9.96% 10.53% 10.70% 9.76% 9.53% 10.03% 10.34% 10.04% 10.75% 11.60% 10.64% 10.82%
Java 7.87% 8.88% 8.95% 8.94% 8.69% 8.40% 8.59% 9.16% 9.45% 10.51% 9.60% 9.72%
C 11.44% 10.97% 11.17% 10.21% 9.98% 9.23% 9.48% 9.17% 8.89% 8.38% 9.01% 9.10%
C# 7.16% 7.53% 7.54% 6.77% 6.49% 6.65% 6.72% 6.39% 6.08% 5.62% 4.98% 4.87%
JavaScript 2.77% 3.17% 3.38% 2.89% 3.01% 3.32% 3.79% 3.91% 3.92% 3.54% 3.71% 4.61%
Go 1.38% 1.73% 1.56% 1.85% 1.60% 1.93% 2.19% 2.03% 2.35% 2.02% 2.35% 2.17%
SQL 1.46% 1.82% 1.92% 1.61% 1.44% 1.75% 2.04% 2.21% 1.94% 1.64% 1.94% 1.99%
Visual Basic 1.60% 1.52% 1.42% 1.70% 2.01% 1.66% 2.08% 2.18% 2.70% 2.35% 1.95% 1.96%
Fortran 1.09% 1.40% 1.22% 1.47% 1.24% 1.53% 2.05% 1.79% 1.78% 1.80% 1.97% 1.79%

 

Python: Dominating AI & Data Science

Python’s ascent in 2024 is nothing short of extraordinary. From 13.97% in January to 23.84% in December, the language saw a roughly 10-point surge. Backed by a powerful ecosystem of machine learning frameworks, large language models (LLMs), and comprehensive libraries, Python’s role in AI, data science, and cloud-based development positioned it as the undisputed market leader. Its extensive toolkit, ease of learning, and productivity gains create a virtuous cycle that further cements its standing atop the program language ranking.

 

C++, Java, and C: Evolving Foundations

Occupying the tier right behind Python, C++ (10.82%), Java (9.72%), and C (9.10%) maintained their prominence in 2024. C++ enjoyed stable demand in performance-critical areas such as systems software and embedded development. Java preserved its reputation as a trusted enterprise workhorse, adapting to cloud-native and microservices architectures and reliably holding its share in the high single digits. While C’s share dipped slightly, it remains indispensable for operating systems, firmware, and other low-level applications.

 

C# and JavaScript: Specialized Ecosystems and Mixed Fortunes 

C# dropped from 7.16% to 4.87% over the year, facing competition from Python and rising languages like JavaScript, though it remains important in enterprise software and game development. JavaScript, meanwhile, ended the year strong at 4.61%.

With web applications only growing more complex, JavaScript remains a cornerstone of front-end development. Its synergy with TypeScript and modern frameworks ensures it retains a central role in shaping the user experience on the web.

Overall, the TIOBE Index in 2024 highlights a dynamic, multifaceted ecosystem where established players, emerging challengers, and specialized solutions coexist. From the unstoppable rise of Python to the steady core of C/C++/Java and the evolving fortunes of languages like C# and JavaScript, this year’s data offers a revealing snapshot of the most popular programming languages and the forces that drive their continued transformation.

 

Conclusion

In this article, we've discussed the most recent rankings of programming languages popularity as of December 2024, with data from TIOBE Index. We also analyzed how these rankings and ratings transformed during the year. A view of the trends of 2024 shows that Python, riding high on the waves of the AI and data science revolution, has established itself as the language of our time.

Looking back on the entire year, we see a landscape marked by Python’s dramatic surge, the steady resilience of legacy languages like C, C++, and Java, and the evolving roles of languages like C#, JavaScript, Go, and SQL.
This new environment reflects an industry in constant change, responding to the demands of AI, cloud-native architectures, and specialized domains.
Heading into 2025, the programming landscape continues to evolve, with Python maintaining its dominance, C# facing pressure from competitors, and languages like JavaScript and Go gaining traction. Becoming aware of these trends helps developers, enterprises, and learners alike to adapt to changes in technology while tuning for subsequent innovations coming our way.

For a detailed insight into the popularity of programming languages from 1984 to 2024, as inferred from TIOBE Index, refer to the following article. If you're keen on getting an in-depth perspective on popular programming languages, we highly recommend reading it.

The History and Popularity of Programming Languages over the Last 40 Years

 

Also, for the Most popular programming languages ​​in 2025, please check the following article.

Most popular programming languages in 2025

 

About ISB Vietnam

ISB Vietnam (IVC) is at the forefront of the rapidly changing programming trends and is aligned with an intelligently reliable partnership with a trustworthy company being attuned to this moving technology-based landscape. As a leading software development and offshore services provider, we specialize in delivering high-quality and cost-efficient solutions for our partners for the past 20 years.
For any inquiries related to IT Outsourcing Solutions, we are the right partner.
Don’t hesitate to contact us to discuss how we can work together to make your project a success.

View More
TECH

December 7, 2024

CakePHP 4: How to implement authorization.

In the previous sections, I introduced how to create a login feature for a website developed based on the CakePHP framework.

CakePHP 4: How to Create a Login Function.

CakePHP 4: How to Create a Token-Based Login Function.

In this article, I introduce how to implement authorization in an application using the CakePHP framework by utilizing the Authorization plugin.

1, Installation

We install the plugin with composer using the command below:
php composer.phar require "cakephp/authorization:^2.0"
The Authorization plugin integrates with the CakePHP application as both a middleware layer and a component to easily check authorization. In src/Application.php, implement the AuthorizationServiceProviderInterface interface and implement the getAuthorizationService() function as shown below.

class Application extends BaseApplication implements AuthenticationServiceProviderInterface, AuthorizationServiceProviderInterface
{
    /**
    * getAuthenticationService
    * @param ServerRequestInterface $request
    */
   public function getAuthorizationService(ServerRequestInterface $request): AuthorizationServiceInterface
   {
       $resolver = new OrmResolver();
       return new AuthorizationService($resolver);
   }
}

In the bootstrap() function, add the plugin as shown below:

/**
* Load all the application configuration and bootstrap logic.
*
* @return void
*/
public function bootstrap(): void
{
    // Call parent to load bootstrap from files.
    parent::bootstrap();

    // …

    // Load more plugins here
    $this->addPlugin('Authentication');
    $this->addPlugin('Authorization');
}

In the middleware() function, add the AuthorizationMiddleware.

/**
* Setup the middleware queue your application will use.
*
* @param \Cake\Http\MiddlewareQueue $middlewareQueue The middleware queue to setup.
* @return \Cake\Http\MiddlewareQueue The updated middleware queue.
*/
public function middleware(MiddlewareQueue $middlewareQueue): MiddlewareQueue
{
    $middlewareQueue
    // …
    ->add(new BodyParserMiddleware())

    ->add(new AuthenticationMiddleware($this))
    ->add(new AuthorizationMiddleware($this));

    return $middlewareQueue;
}

In src/Controller/AppController.php, load the Authorization component in the initialize() function.

class AppController extends Controller
{
    /**
    * Initialization hook method.
    *
    * Use this method to add common initialization code like loading components.
    *
    * e.g. `$this->loadComponent('FormProtection');`
    *
    * @return void
    */
    public function initialize(): void
    {
      parent::initialize();
      // …

      $this->loadComponent('Authentication.Authentication');
      $this->loadComponent('Authorization.Authorization', [
          'skipAuthorization' => [
            'login','webLogin', 'logout' // functions do not need to check authorization.
          ]
      ]);
    }
}

 

2, Policies.

Policies are classes that resolve permissions for a given object. These classes will be stored in the src/Policy directory. We can generate a policy class for an entity or table using CakePHP's bake.

# Create an entity policy
bin/cake bake policy --type entity Article

# Create a table policy
bin/cake bake policy --type table Articles

3, Implement.

In this article, I will implement API authorization requirements in the table below using policy.

Title endpoints remark
Update an Article (PUT) /api/articles/{id}.json Can only be used by authenticated article writer users.
See like count on an article(GET) /api/articles/{article_id}/likes.json All users can see like count on an article.

 

For the API Update an Article (PUT), can only be used by authenticated article writer users. We check if the logged-in user is the owner of the article to determine the edit permissions.

class ArticlePolicy
{
    // …

    /**
    * Check if $user can edit Article
    *
    * @param \Authorization\IdentityInterface $user The user.
    * @param \App\Model\Entity\Article $article
    * @return bool
    */
    public function canEdit(IdentityInterface $user, Article $article): Result
    {
      $isAuthor = $this->isAuthor($user, $article);
      if ($isAuthor) {
          return new Result(true);
      }
      return new Result(false, 'Permission denied');
    }

    protected function isAuthor(IdentityInterface $user, Article $article)
    {
      return $user->getIdentifier() === $article->user_id;
    }

}

For the API See like count on an article(GET), all users can see like count on an article. In the LikePolicy class, the canView() function returns true so that all users can see the number of likes on the article.

/**
* Likes policy
*/
class LikesPolicy
{
    /**
    * Check if $user can view Likes
    *
    * @param \Authorization\IdentityInterface $user The user.
    * @param \App\Model\Entity\Likes $likes
    * @return bool
    */
    public function canView(IdentityInterface $user, Likes $likes)
    {
      return true;
    }
}

4, Testing.

For the API Update an Article (PUT), update the article with the user as the owner.

For the API Update an Article (PUT), update the article with a user who is not the owner. The expected result is that the article will not be updated.

For the API See like count on an article(GET), check with a user who is not logged in.

For the API See like count on an article(GET), check with a logged-in user who is not the owner.

You can find the complete source code at: https://github.com/ivc-phampbt/cakephp-authentication

Conclusion

I hope this article helps you understand how CakePHP integrates with the Authorization plugin to implement authorization and can be applied to projects related to CakePHP.

References

https://book.cakephp.org/authorization/2/en/index.html

https://www.rockersinfo.com/php-frameworks/cakephp-development-company/ [Image]

View More
TECH

December 7, 2024

Introduction About SOAP API

SOAP (Simple Object Access Protocol) is a protocol used to exchange structured information between systems over a network. It is based on XML and provides a way for applications to communicate using standard messaging formats. SOAP was designed with a focus on reliability, security, and extensibility, making it an excellent choice for enterprise-level applications. Despite being older than other web service protocols like REST, SOAP is still widely used in critical systems that require robust features.

What is SOAP?

SOAP is a protocol that defines a set of rules for structuring messages and allows communication between applications over different platforms and programming languages. A SOAP message is always an XML document, and it follows a strict structure that includes an envelope, header, body, and optionally, a fault element for error handling.

Key components of a SOAP message:

  • Envelope: The outermost part of the message, which contains all other elements.
  • Header: Contains metadata, such as authentication or routing information.
  • Body: The main content of the message, where the actual data is stored.
  • Fault: A part of the message for reporting errors, useful for debugging and issue resolution.

SOAP can work over various transport protocols like HTTP, SMTP, or JMS, and it is known for its reliability and security features, making it suitable for complex, transactional, and high-security applications.

When to use SOAP?

SOAP is particularly suited for scenarios that require high levels of security, reliability, and formal contracts between client and server. Here are some specific cases when SOAP is the ideal choice:

  1.  Enterprise Systems: SOAP is perfect for large-scale, mission-critical applications in industries such as banking, finance, or healthcare, where security and data integrity are essential. For example, SOAP is often used in payment processing systems, where transactions must be secure, reliable, and auditable.
  2. Transactional Systems: SOAP supports ACID (Atomicity, Consistency, Isolation, Durability) properties, making it ideal for applications that require guaranteed message delivery, such as financial transactions, stock trading systems, and order processing systems.
  3. Systems with Complex Security Requirements: SOAP has built-in security standards like WS-Security for message encryption, integrity, and authentication. This makes it suitable for applications in sectors such as government, healthcare, or defense, where data confidentiality and security are paramount. For example, SOAP is used in systems where encrypted communication is needed for the transmission of sensitive data.

Advantages of SOAP

  • High Security: SOAP supports WS-Security, which includes features like encryption, authentication, and message integrity, making it ideal for sensitive data transmission.
  • Reliability: SOAP supports WS-ReliableMessaging, ensuring that messages are delivered reliably, even in the event of network failure.
  • Extensibility: SOAP is highly extensible, allowing developers to build additional features such as transaction management, security, and messaging patterns.
  • Error Handling: SOAP has a built-in error-handling mechanism through the <fault> element, making it easier to identify and resolve issues in communication.
  • Formal Contracts: SOAP services are often described using WSDL (Web Services Description Language), which defines the service's structure and operations, ensuring that both the client and server understand the contract.

Disadvantages of SOAP

  • Complexity: SOAP messages are verbose due to their XML-based format, making them more complex and harder to work with compared to simpler protocols like REST.
  • Performance: The XML format adds overhead, making SOAP less efficient than other protocols, especially when large volumes of data need to be transferred.
  • Limited Flexibility: SOAP is rigid in its structure and requires developers to adhere to its strict rules, making it less flexible compared to REST, which is more lightweight and adaptable.

Comparing SOAP with REST

To better understand the differences between SOAP and REST, here is a quick comparison in a table format:

Feature SOAP REST
Protocol vs. Style

SOAP is a protocol with strict rules

REST is an architectural style, not a protocol

Data Format

XML

Typically JSON (but can also be XML)

Security

Built-in security (WS-Security)

Relies on HTTPS for security

Error Handling

Detailed error handling with <fault> element

Custom error messages via HTTP status codes

Performance

Slower due to XML overhead

Faster and more efficient with JSON

Stateful/Stateless

Can be stateful or stateless

Stateless by design

Ease of Use

More complex and harder to implement

Simpler to implement and easier to use

Use Case

Enterprise systems, financial transactions, healthcare

Web and mobile applications, lightweight services

 

Demo Example: SOAP Request for Weather Service

<?php
    $wsdl = "http://www.webserviceX.NET/WeatherService.asmx?WSDL";

    $client = new SoapClient($wsdl);

    $params = array(
        'CityName' => 'Ho Chi Minh',
        'CountryName' => 'Viet Nam'
    );

    try {
        $response = $client->__soapCall('GetWeather', array($params));

        echo "Weather Information: ";
        var_dump($response);
    } catch (SoapFault $e) {
        echo "Error: " . $e->getMessage();
    }
?>

 

Conclusion

SOAP remains a powerful option for applications that require robust security, reliability, and compliance with strict standards. Its use in industries such as finance, healthcare, and government proves its importance in scenarios where data integrity, encryption, and transaction management are essential.

 

References

View More
TECH

December 4, 2024

Some tips for jQuery performance improvement

jQuery is a popular Javascript library that developers often use for client-side development. Improving performance when working with jQuery involves understanding its best practices and optimizing your code for efficiency. Here are some tips along with sample code snippets to illustrate:

  1. Cache jQuery Objects:

    Instead of repeatedly querying the DOM for the same elements, cache them in variables.

    For example:

    $('.myElement').css('color', 'red');

    $('.myElement').addClass('highlight');

    Should be changed to:

    var $myElements = $('.myElement');

    $myElements.css('color', 'red');

    $myElements.addClass('highlight');

  2. Using Chaining

    When a DOM element undergoes a change, it allows for the chaining of similar object references into groups for execution. This enables the reuse of existing jQuery objects, eliminating the need for repetitive creation, improve performance.

    For example:

    $('#myContents').addClass('active');

    $('#myContents').css('border', '1px solid');

    $('#myContents').css('background-color', 'red');

    Should be changed to:

    $('#myContents').addClass('active').css('border', '1px solid').('background-color', 'red');

  3. Use Efficient Selectors

    jQuery selectors can be slow, especially complex ones. Use efficient selectors like IDs or classes with a tag name.

    For example:

    $('ul li[data-category="books"]:first-child');

    Should be changed to:

    $('#books-list li:first-child');
  4. Event Delegation

    Use event delegation for handling events on dynamically added elements. Attach event listeners to a parent container rather than individual elements.

    For example:

    $('.list-item').click(function() {
    // Handle click event
    });

    Should be changed to:

    $('.list-container').on('click', '.list-item', function() {
    // Handle click event
    });
  5. Use .on() instead of Shortcut Methods

    $.on() is more versatile and performs better than shortcut methods like .click(), .hover(), etc., especially when binding multiple events.

    For example:

    $('.button').click(function() {
    // Click handler
    });

    Should be changed to:

    $('.button').on('click', function() {
    // Click handler
    });
  6. Use .prop() for Boolean Attributes

    When dealing with boolean attributes like checked, use .prop() instead of .attr() for better performance.

    For example:

    $('input[type="checkbox"]').attr('checked', true);

    Should be changed to:

    $('input[type="checkbox"]').prop('checked', true);
  7. Minimize DOM Access in Loops

    If you're iterating over a collection of elements, cache your selections outside the loop to avoid repeated DOM queries.

    For example:

    $('.list-item').each(function() {
    $(this).addClass('processed');
    });

    Should be changed to:

    var $listItems = $('.list-item');
    $listItems.each(function() {
    $(this).addClass('processed');
    });

    By following these tips, you can significantly improve the performance of your jQuery code, making it faster and more efficient. Hope this helps!

    References:

    https://jquery.com/

    https://stackoverflow.com/questions/30672695/how-to-optimize-jquery-performance-in-general

    https://stackoverflow.com/questions/30672695/how-to-optimize-jquery-performance-in-general

    Image source: https://www.freepik.com/free-photo/html-css-collage-concept-with-person_36295465.htm

View More
1 2 3 4 14