Sunday, 30 August 2020

Open standards vs. open source: A basic explanation

What are open standards, exactly? You’ve probably heard the term thrown around, but why does it matter to your business? How does it relate to open source? What’s the difference?

Take a common example. Have you ever noticed that Wi-Fi seems to work the same with any router, phone or computer? We tend to take these types of standards for granted, but they bring huge benefits to our daily lives.

Imagine if there were no standards like Wi-Fi. Every business might have its own form of wireless technology. If your favorite coffee shop had a router made by Company X, and you owned a computer made by Company Y, you might have to find another coffee shop to check your email.

Even if each business had a functioning form of wireless internet, a lack of standards would make interoperability nearly impossible. Customers of every company would suffer.

Have you ever wondered how competing businesses all across the world somehow converge on one format for these things?

The answer is often open standards.

What are open standards?

An open standard is a standard that is freely available for adoption, implementation and updates. A few famous examples of open standards are XML, SQL and HTML.

Businesses within an industry share open standards because this allows them to bring huge value to both themselves and to customers. Standards are often jointly managed by a foundation of stakeholders. There are typically rules about what kind of adjustments or updates users can make, to ensure that the standard maintains interoperability and quality.

What is open source?

What is open source, then? The term may sound similar to open standards; but, in reality, it is fundamentally different.

At its core, open source code is created to be freely available, and most licenses allow for the redistribution and modification of the code by anyone, anywhere, with attribution. In many cases the license further dictates that any updates from contributors will also become free and open to the community. This allows a decentralized community of developers to collaborate on a project and jointly benefit from the resulting software.

How open standards and open source help prevent vendor lock-in

Both open source and open standards can help protect clients from vendor lock-in, but they do it in different ways.

Let’s start with an example of an open standard. A business might buy a PDF reader and editor from a vendor. Over time, the team could create a huge number of PDF documents. Maybe these documents become a valuable asset for the company. Since the PDF format is an open standard, the business would have no problem switching from one PDF software to another. There is no concern that it would be unable to access its documents. Even if the PDF reader software isn’t open source, the PDF format is an open standard. Everyone uses this format.

Now, let’s instead take a look at the benefits of open source. Imagine that a business had spent millions of dollars writing internal software code for a proprietary operating system. That business would no longer have the option of changing vendors. It would be stuck with that operating system, unless it wanted to make a significant investment re-writing that code to run on a different system.

Open source software could have prevented that issue. Because open source software does not belong to any particular business, clients are not locked-in to any particular provider.

In both of these examples, the client would be able to avoid vendor lock-in. In one case this is because a piece of closed software followed a common open standard. In the other case, it is because the software itself belonged to an open source community.

While these are fundamentally different things, both help foster innovation while also providing more options to customers. 

https://www.ibm.com/

Friday, 21 August 2020

Importance of Software Engineering

Software engineering is the study of and practice of engineering to build, design, develop, maintain, and retire software. There are different areas of software engineering and it serves many functions throughout the application lifecycle. Effective software engineering requires software engineers to be educated about good software engineering best practices, disciplined and cognizant of how your company develops software, the operation it will fulfill, and how it will be maintained.

Software engineering is a new era as CIOs and Digital Leaders now understand the importance of software engineering and the impact – both good and bad – it can have on your bottom line.

Vendors, IT staff, and even departments outside of IT need to be aware that software engineering is increasing in its impact – it is affecting almost all aspects of your daily business.

The Importance of Software Engineers

Software engineers of all kinds, full-time staff, vendors, contracted workers, or part-time workers, are important members of the IT community.

What do software engineers do? Software engineers apply the principles of software engineering to the design, development, maintenance, testing, and evaluation of software. There is much discussion about the degree of education and or certification that should be required for software engineers.

According to StackOverflow Survey 2018, software engineers are lifelong learners; almost 90% of all developers say they have taught themselves a new language, framework, or tool outside of their formal education.

Software engineers are well versed in the software development process, though they typically need input from IT leader regarding software requirements and what the end result needs to be. Regardless of formal education, all software engineers should work within a specific set of best practices for software engineering so that others can do some of this work at the same time.

Software engineering almost always includes a vast amount of teamwork. Designers, writers, coders, testers, various team members, and the entire IT team need to understand the code.

Software engineers should understand how to work with several common computer languages, including Visual Basic, Python, Java, C, and C++. According to Stackoverflow, for the sixth year in a row, JavaScript is the most commonly used programming language. Python has risen in the ranks, surpassing C# this year, much like it surpassed PHP last year. Python has a solid claim to being the fastest-growing major programming language.

Software engineering is important because specific software is needed in almost every industry, in every business, and for every function. It becomes more important as time goes on – if something breaks within your application portfolio, a quick, efficient, and effective fix needs to happen as soon as possible.

Whatever you need software engineering to do – it is something that is vitally important and that importance just keeps growing. When you work with software engineers, you need to have a check and balance system to see if they are living up to their requirements and meeting KPIs.

Thursday, 20 August 2020

How Natural Language Processing Is Changing Data Analytics

Natural language processing (NLP) is the process by which computers understand and process natural human language. If you use Google Search, Alex, Siri, or Google Assistant, you’ve already seen it at work. The advantage of NLP is that it allows users to make queries without first having to translate them into “computer-speak.”

NLP has the potential to make both business and consumer applications easier to use. Software developers are already incorporating it in more applications than ever, including machine translation, speech recognition, sentiment analysis, chatbots, market intelligence, text classification, and spell checking.

This technology can be especially useful within data analytics, which analyzes data to help business leaders, researchers, and others gain insights that assist them in making effective decisions. As we’ll see below, NLP can support data analytics efforts in multiple ways, such as solving major global problems and helping more people, even those not trained in data processing, use these systems.

Managing Big Data

With the help of NLP, users can analyze more data than ever, including for critical processes like medical research. This technology is especially important now, as researchers attempt to find a vaccine for COVID-19.

In a recent article, the World Economic Forum (WEF) points out that NLP can help researchers tackle COVID-19 by going through vast amounts of data that would be impossible for humans to analyze. “Machines can find, evaluate, and summarise the tens of thousands of research papers on the new coronavirus, to which thousands are added every week….” In addition, this technology can help track the spread of the virus by detecting new outbreaks.

According to the WEF article, NLP can aid the research process when data analysts “[train] machines to analyze a user question in a full sentence, then to read the tens of thousands of scholarly articles in the database, rank them and generate answer snippets and summaries.” For example, a researcher may use the question, “Is COVID-19 seasonal?” and the system reviews the data and returns relevant responses.

Solving Problems

In addition to pressing health problems, NLP used in conjunction with artificial intelligence (AI) can help professionals solve other global challenges, such as clean energy, global hunger, improving education, and natural disasters. For example, according to a Council Post appearing on Forbes, “Huge companies like Google are setting their sights on flood prevention, utilizing AI to predetermine areas of risk and notify people in impacted areas.”

Enabling More Professionals

According to an InformationWeek article, “With natural language search capabilities, users don’t have to understand SQL or Boolean search, so the act of searching is easier.” As the quality of insights depends on knowing how to “ask the right questions,” this skill may soon become essential for business operators, managers, and administrative staff.

For example, anyone within a company could use NLP to query a BI system with a question like, “What was the inventory turnover rate last fiscal year compared to this fiscal year?” The system would convert each phrase to numeric information, search for the needed data, and return it in natural language format. Such queries allow any employee in any department to gain critical insights to help them make informed decisions.

Creating a Data-Driven Culture

In the past, business intelligence (BI) powered by data analytics required trained data professionals to correctly input queries and understand results. But NLP is changing that dynamic, resulting in what some experts are calling “data democratization”: the ability for more people to have access to data sets formerly reserved only for those with the advanced skills needed to interpret it.

The more people within a company who know how to gather insights based on data, the more that company can benefit from a data-driven culture, which is one that relies on hard evidence rather than guesswork, observation, or theories to make decisions. Such a culture can be nurtured in any industry, including healthcare, manufacturing, finance, retail, or logistics.

For example, a retail marketing manager might want to determine the demographics of customers who spend the most per purchase and target those customers with special offers or loyalty rewards. A manufacturing shift leader might want to test different methods within its operations to determine which one yields the greatest efficiency. With NLP, the commands needed to get this information can be executed by anyone in the business.

In Summary

NLP is not yet widespread. According to the InformationWeek article, “A few BI and analytics vendors are offering NLP capabilities but they're in the minority for now. More will likely enter the market soon to stay competitive.”

As it becomes more prevalent, NLP will enable humans to interact with computers in ways not possible before. This new type of collaboration will allow improvements in a wide variety of human endeavors, including business, philanthropy, health, and communication.

These advancements will become even more useful as computers learn to recognize context and even nonverbal human cues like body language and facial expressions. In other words, conversations with computers are likely to continue becoming more and more human.

https://www.kdnuggets.com/2020/08/natural-language-processing-changing-data-analytics.html

Monday, 10 August 2020

Software Architecture Guide

 What is architecture?

People in the software world have long argued about a definition of architecture. For some it's something like the fundamental organization of a system, or the way the highest level components are wired together. My thinking on this was shaped by an email exchange with Ralph Johnson, who questioned this phrasing, arguing that there was no objective way to define what was fundamental, or high level and that a better view of architecture was the shared understanding that the expert developers have of the system design.

A second common style of definition for architecture is that it's “the design decisions that need to be made early in a project”, but Ralph complained about this too, saying that it was more like the decisions you wish you could get right early in a project.

His conclusion was that “Architecture is about the important stuff. Whatever that is”. On first blush, that sounds trite, but I find it carries a lot of richness. It means that the heart of thinking architecturally about software is to decide what is important, (i.e. what is architectural), and then expend energy on keeping those architectural elements in good condition. For a developer to become an architect, they need to be able to recognize what elements are important, recognizing what elements are likely to result in serious problems should they not be controlled.

Why does architecture matter?

Architecture is a tricky subject for the customers and users of software products - as it isn't something they immediately perceive. But a poor architecture is a major contributor to the growth of cruft - elements of the software that impede the ability of developers to understand the software. Software that contains a lot of cruft is much harder to modify, leading to features that arrive more slowly and with more defects.

This situation is counter to our usual experience. We are used to something that is "high quality" as something that costs more. For some aspects of software, such as the user-experience, this can be true. But when it comes to the architecture, and other aspects of internal quality, this relationship is reversed. High internal quality leads to faster delivery of new features, because there is less cruft to get in the way.

While it is true that we can sacrifice quality for faster delivery in the short term, before the build up of cruft has an impact, people underestimate how quickly the cruft leads to an overall slower delivery. While this isn't something that can be objectively measured, experienced developers reckon that attention to internal quality pays off in weeks not months.

https://martinfowler.com/architecture/