Functional Programming hits the Big Time

functional-progNo longer the stuff of more esoteric applications, functional programming is beginning to see increased usage across the software development world. At its essence, functional programming tells software explicitly what to do, instead of procedural programming’s focus on how to do it. As revealed in its name, it is a stateless paradigm with more similarities to mathematical functions than a massive object-oriented application.

Let’s take a high level overview of functional programming to see if it makes sense as part of your development team’s toolbox. Perhaps it triggers some insights to solve a pressing problem in your current software engineering efforts?

So what is Functional Programming?

The changing business world and its focus on interactive apps able to scale massively are outgrowing state-driven software. This fact is highlighted in a recent article by Forrester Research published in ZDNet providing a look at functional programming and its increased relevance to the programming community. The article notes FP requires a different mindset and approach compared to traditional programming languages.

A recent study reported that over half of all surveyed developers work for a company now using functional programming in some fashion. Forrester compares this migration to the emergence of object-oriented programming in the 90s. OOP served to transcend the limitations of procedural programming back then, and FP is poised to do the same thing to OO software today.

In addition to its overall brevity compared to object-oriented code, functional programming offers other advantages over older programming styles. It reduces regression errors in code, supports greater reuse, and also makes both the creation and maintenance of software an easier process. As noted earlier, applications written with a focus on the functional paradigm are able to massively scale better than OO software.

That latter point is especially important in a business marketplace increasingly dependent on eCommerce and social media.

Functional Programming Languages

While there is a host of functional programming languages considered to be “pure,” many of these are included as part of mathematical software. Thankfully, nearly all popular languages support the use of functional programming constructs embedded within any codebase. As such, programmers and architects need to be conscious of thinking in a functional mindset when designing and writing applications.

A hybrid language like Scala (or even F# for Microsoft shops) serves a bridge for introducing more functional concepts into a team’s “regular” programming style. Even old school examples like PHP or JavaScript are able to work as a functional programming language. Simply understanding how functions work within any language helps bootstrap this new mindset.

While Forrester provides the full functional programming report referenced in the ZDNet article, it requires a subscription to their research service. If your company already subscribes, congratulations and a download are in order. The research report is also available for non-subscriber purchase for $499.

Thankfully, there are other free resources available for learning about functional programming. The UK-based developer, Mary Rose Cook has a detailed blog post on the topic. Smashing Magazine also provides a useful introductory article.

Simply put, learning about functional programming is a wise choice for any software professional. Expect to encounter its use in your career soon, if you aren’t already using it today.

As always, thanks for reading this edition of the Betica Blog. Come back soon for additional insights on the programming world.

Don’t make Agile Projects a Death March

agile death marchBack in the halcyon days of software development – around two or more decades ago – programmers typically worked longer than 40-hour weeks; sometimes way longer. This is likely still true in some business sectors, especially the video game industry. Over time, however, software engineers began to demand a better balance between their professional and personal lives.

One of the reasons Agile become so popular is its focus on improving the efficiency and productivity of the application development process. Most of this gets accomplished without breaking the programmer’s back. Still, managers need to be reminded not to make Agile projects a death march.

A Recent Trend towards Poor Agile Project Management

In a January blog post for Leading Agile, veteran IT manager, Dave Nicolette talks about a recent trend for Agile project managers to overwork their team to get projects into production more quickly. This traditional “Death March” approach was criticized by the industry legend Ed Yourdon in a 2003 book of the same name. Nicolette notes this management style is now being championed by younger PMs responsible for Agile project delivery.

It seems a book from 1987, Crunch Mode: Building Effective Systems on a Tight Schedule, is the current flavor of the month in some IT manager circles. As Nicolette sarcastically comments: “Reviewers [on Amazon] think it’s great that there’s a way to break every model of sustainable delivery, planning, and estimation, and force people to deliver on an arbitrarily short timeline regardless of the human cost.”

The Risks of the Death March Project

Death March projects happen when the scope of work and timeline don’t match the amount of human resources assigned to the project. In this case, project managers and software leads forego a standard estimation process and simply dive right into the work. Traditionally, this leads to a greater number of errors and the gradual siphoning of employee morale.

Whether or not the project actually met the accelerated schedule, the damage to the development team is notable, as illustrated by Nicolette: “The days immediately following the project are not normal work days. Some of the survivors decide to change jobs or change careers. Others take care of their new health problems or their divorces. Those who escape with most of their sanity intact swear that they will never again participate in a Death March project. They will not be available the next time management asks for volunteers.”

Working Smarter remains more Important than Working Harder

Agile projects, especially those within a company following the DevOps framework, focus on a sustainable process. The overall well-being of all technical resources simply matters more than faster project delivery. “There’s a common mischaracterization of Agile as ‘going faster.’ If all you really want to do is ‘go faster,’ you’re looking for the Death March approach, not the Agile approach. Good luck with that,” comments Nicolette.

In a software development world where engineers desire a balanced life, simply working programmers to death is the worst approach. If you want the highest efficiency and top notch code out of your team, “Crunch Mode” needs to remain in the annals of history.

Thanks for checking out the Betica Blog. Keep returning for additional insights on the world of software development. As always, thanks for reading!

2018 Trends in Software Development

2018

Welcome to the New Year! We hope 2018 brings with it prosperity, great code, and bug-free applications. With an eye towards getting the year off on the right foot, here is our look at some of the most prevalent software development trends predicted for the upcoming 12 months.

Perhaps the insights within help trigger an idea or two for your own team’s development efforts. Good luck!

A Growing Need for Blockchain Programmers

Cryptocurrencies like Bitcoin aren’t the only thing built upon the principles of blockchain. Many technology pundits predict the revolutionary disruption of multiple industries over the next few years because of blockchain. In fact, enterprise-level blockchain platforms are now provided by the biggest players in the tech world, including IBM, Microsoft, and Amazon.

Because of this rapid growth, expect the demand for software engineers experienced in blockchain technology to go through the roof. Considering there were only 5,000 programmers in this area as of 2016, this offers a great opportunity for any developer interested in the skill. Expect a robust salary if you are experienced with writing blockchain and cryptocurrency applications.

Information Security continues to dominate the News

News about hacking incidents and other forms of cybercrime fill the news on a daily basis. Companies of all sizes remain interested in hiring software engineers experienced in information security. In the past year, we talked about  the emergence of DevSecOps which illustrates the emphasis on cybersecurity throughout the industry.

Jeff Williams, CTO of Contract Security, commented on the need to improve application security. “Major breaches like Equifax and Uber have shone a light on organizations that are not doing nearly enough to secure their software supply chain. Today, every organization has an Equifax problem and it has created room for even more budget towards improving all aspects of application security,” said Williams.

Adoption of AI and Machine Learning

The influx of artificial intelligence and machine learning algorithms in applications is predicted to become even more prevalent in 2018. AI allows companies to develop smart software better able to serve customers, find actionable information inside a huge data store, or even drive a car.

Expect companies without AI-enabled apps to find it more difficult to compete with those that do. In fact, one study notes that 75 percent of software development companies will embrace AI in their code by the end of this year.

A Backlash against the DevOps Tool Chain?

With DevOps becoming a standard for software development projects,  a backlash was inevitable. While we are looking at 2018 trends in Agile and DevOps next week, some development managers predict some pushback on the methodology’s software tool chain, thus its coverage in this article. Mark Pundsack, head of product at GitLab, comments.

“Developers will begin to demand a more integrated approach to the development process. In 2017, developers voiced frustrations around using multiple tools to complete an entire development life cycle. This frustration will turn to action in 2018 and both developers and enterprises will request an approach that is seamless and effective. As a result, vendors will begin offering integrated toolsets to help developers and enterprises move faster from idea to production,” said Pundsack.

That sounds like better tool integration helps companies properly reach a ROI on their DevOps expenditures. Keep an eye out for those new tools in the coming year.

Thanks for checking out our 2018 Software Development trends. As always, thanks for reading  the Betica Blog!