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!

News from the World of Software Development – January 2018

devnews-januaryWelcome to our first news digest of the New Year. We offer a few interesting stories from the software development world from the previous month with a measure of our own analysis. Hopefully, you are able to wean some actionable information from the latest IT news to help inspire your own development efforts.

If you are interested in checking out last December’s digest, simply click on the following link.

Spectre and Meltdown Fallout continues Unabated

Obviously, the kerfuffle surrounding Spectre and Meltdown – and its mitigation – continues to dominate the tech news this month. We covered the story for the first time last week, and have more information to report in this digest. Let’s take a closer look.

Linux creator, Linus Torvalds offered some pointed criticism at Intel. He called a set of Intel’s patches for the chip flaw vulnerability “garbage.” Linus continues to be known for his outspoken nature, and this incident is no exception. His opinion was reported on in ZDNet as well as other tech media sources.

“They do literally insane things. They do things that do not make sense. And I really don’t want to see these garbage patches just mindlessly sent around,” added Torvalds. This latest outburst comes after a shot at Intel soon after the chip issue first became known.

“I think somebody inside of Intel needs to really take a long hard look at their CPU’s, and actually admit that they have issues instead of writing PR blurbs that say that everything works as designed,” said Torvalds.

Spectre and Meltdown caused a delay in the release of the new Linux version, 4.15. Torvalds expects another release candidate instead of the arrival of the final Linux build.

Intel responds to the Criticism

Earlier this Tuesday, Intel responded to Torvalds’ barb. “We take the feedback of industry partners seriously. We are actively engaging with the Linux community, including Linus, as we seek to work together on solutions,” the chipmaker commented.

In a sense, Intel’s attempts to fix their chip flaw are almost worse than the initial problem. This week, The Verge reported on the chipmaker advising users not to install patches released earlier this month. Users reported servers and PCs randomly rebooting after those patches were installed.

“We recommend that OEMs, cloud service providers, system manufacturers, software vendors, and end users stop deployment of current versions on specific platforms, as they may introduce higher than expected reboots and other unpredictable system behavior,” wrote Intel Executive Vice President, Navin Shenoy. Needless to say, pay attention to the news around Spectre and Meltdown to ensure minimal disruption to your company’s operations.

Making Application Design Faster

A new product from MEGA International offers the potential to speed up the software architecture process. HOPEX Application Design fosters a common approach to generating application requirements. It leverages a SOA approach while also using traditional modeling methods like UML.

The tool works seamlessly with both Agile and traditional software development methodologies. It promises to reduce the number of sprints while also delivering a more robust application in the end. If your organization is looking for a new app design tool, HOPEX is likely worth your attention.

That’s it for this edition of the Betica Software Development News Digest. We’ll see you next month. As always, thanks for reading!