Modern Software Development - Why Less Code is More

StarCIO Less Code is More
Last week I participated in a panel, "The Future of Software" at the Northeast Javascript conference and was asked a question about code quality. "Are you seeing better or worse code coming from developers today?"

"I am seeing less code today."

I'm not just talking about low code platforms that can enable software developers and citizen developers to build entire applications with relatively little or even no code. I'm speaking about applications where you have to develop proprietary code but can accomplish your objectives with minimal coding effort. How? By leveraging programming environments, frameworks, and libraries that do most of the heavy lifting for you.

Stories from the trenches on too much code

Let me share a couple of stories with you. First, about an application that I reviewed about fifteen years ago that had over one million lines of PERL code. Now the code base leveraged frameworks and libraries and was very well structured into modules and functions. I don't think very many people would call it "bad" code, but it was big and complex. When it came time to update the code to add functionality or improve performance, the development team struggled to understand dependencies and perform end to end tests. That code base ended up getting rewritten largely to address performance issues, but the secondary objective was to put it into an application framework and better enable a larger development team.

Here' another story at a different job. About five years ago I was week one in a new CIO role and was asked to go and review a new product that was under development. It was May, the product was due in August, and the team was following "agile" so I asked to see a demo. As I recall, the demo was of a single screen, a dashboard with a handful of charts that let's just say looked less than impressive. More precisely, it looked like something out of a 1980's version of Lotus 123. I then asked to see the code that generated the dashboard, so the developer proceeded to walk me through several hundred lines of code it required to generate it. That product had to get a restart, first because the project wasn't anything close to being agile, but more importantly, because we needed to switch platforms. While the underlying BI framework was powerful, it required way too much programming to perform even basic data visualizations.

Why Less Code is More

With today's software development frameworks, code quality should partially be judged by the "less is more" metaphor. With all of today's technology, you should be seeking out frameworks that meet operational, security and other criteria that enable the productivity of a team of developers, not just your star developer that has enough talent to get things done without a lot of help.

Why is this so important? Because application development isn't just about getting 1.0 out with a superior customer experience on time and on budget. If you're agile, 1.0 is just the MVP and the organization should be planning to do enhancements, fixes and other upgrades. With less code, you have less to maintain. In general, you have fewer dependencies and complexities for new developers to understand before they implement changes. You have fewer places that you control that can negatively influence performance, scalability, or security.

It's not the only code quality metric. I also look for modularity, evidence of reusability, the presence of naming convention, and the existence of unit testing. But if it's a large code base I know I have an uphill battle.

continue reading "Modern Software Development - Why Less Code is More"

Understanding the difference between Low Code, Citizen Development, and Sales Bull

Lying salesman
I started with low code development environments over a decade ago. We were a ~10 year "startup" with multiple businesses and limited technology resources to support them all sufficiently. One of our emerging business required some automation to enable an internal and customer facing workflow. They were an early form of an ad network essentially selling banner ads to US national advertisers and buying placements across a number of local websites. They needed a system that would track the proposal terms, the inventory acquisitions they were making across websites, and have the ability to ensure profitability. They also needed the ability to invoice websites and to capture ad inventory from them.

We built the entire workflow in Quickbase. It included a back-office process that used platform's native interfaces and a customer facing extranet that was developed using their APIs.

That's how I got started with low code platforms, but that's not where I stopped. I've used low code platforms across several organizations and have several posts covering the best line of code you didn't have to write, four reasons why citizen development may be the next big thing, and what IT it takes to be successful on low code platforms.

What are low code platforms?

Low code platforms enable the development of applications without a lot of formal coding. In the '80s and '90s, we called them 4GLs to differentiate these languages from more native, lower level 3GL programming environments like C++ and Java. The idea of 4GL was to eliminate a lot of the coding expressions that enable an application to function and free the developer to focus on the business logic and presentation. The goal was to enable developer productivity and platforms like PowerBuider, FoxPRO, even Microsoft Access and others enabled rapid application development within a specialized scope of application.

There were a few fundamental issues with 4Gs. First, they were highly proprietary so if you built apps on them, you were stuck with their dialect and code base. Second, even though they offered some productivity improvement over 3GLs, they still required a lot of coding performed by a developer that was trained and had experience working with the development environment. In other words, you had to hunt for a specialized skill set. Third, the productivity improvement was possible on a class of applications that the software vendor targeted, so until you experimented with the platform, it was hard to know its true capabilities and deficiencies. Finally, many of these programming languages emerged pre-web, pre-mobile, and pre-digital and are ill suited to today's device, data, and integration requirements.

Some answers emerged about a decade ago when "low code" platforms emerged. These platforms came out of the web 2.0 and mobile and rather than just target simplifying the coding dialect, their goal was to minimize or eliminate it. With platforms like Quickbase and others, you could eliminate a lot of coding entirely and instead, configure forms, reports, and workflows without having to write a lot of formal code.

What are Citizen Development Platforms? 

Forrester has 10+ platforms evaluated under low code and Gartner has 15+ under their Magic Quadrant for Enterprise Application Platform as a Service, Worldwide so you have a lot of research to do to evaluate and select one or more platforms nowadays. Some of these platforms will work successfully across a broad range of business applications, others are more niche. But what's the difference between low code platforms and citizen development?

The answer lies in who the vendor is targeting for the application development work. If the platform is designed to be operated by application developers and aims to make them more productive, then this is a low code platform. These platforms can be extremely powerful like enabling developers to connect to multiple data sources without a lot of heavy lifting, but at the potential cost of vendor lock in if their dialect is proprietary. Some of these platforms generate 3GL code (Java, C# etc.) and alleviate that risk.

To be a citizen development platform, it has the added criteria that they are designed from the ground up to be used by business users. Citizen development platforms maximize digital transformation because they empower individuals and business units to enable business process automation and even customer facing workflows without having to engage software developers until absolutely needed.

And sales bull?

Now there are a lot of platforms out there that look RAD, 4G, low code, or even citizen development to the untrained eye, but a seasoned CIO, CTO, application architect, or anyone who has skill to evaluate technology platforms can recognize where they fall short of delivering to any of these promises. The word is out and every organization has to develop more application, data capabilities, and algorithms faster than their competitors. So if you're a sales rep for any platform, you have to sell and demonstrate RAD capabilities to have a good chance at closing a sale. In addition, RAD is the music targeted by the untrained business decision maker looking to enable digital transformation.

It all looks good in concept until six months later when the business is hiring platform expertise at a premium and has yet to deliver a full functioning applications. Even if the application is delivered, can it be extended easily without a lot of rework? Can core business logic or user interfaces be reused in multiple applications? Do the applications require a lot of testing whenever the vendor updates their platform or APIs? What are the boundaries of performance, i.e., can it work with larger data sets, quantities of users, or multiple user roles or personas?

The simple answer to platform selection and implementation

When you're going to make an addition to your home, you hire an architect and a contractor to develop the plans. When you think about savings for your retirement, most people will work with a financial advisor or wealth manager to aid in financial decisions. If you have to draft or review a business critical contract, you're likely to seek advice from an attorney.

The same is true for platform selection and implementation. There's no shortcut because the type of platform benefiting one organization may be a complete miss for another business' opportunities and challenges. You need a CIO, a CTO, an application architect, or someone technical enough to guide selection, implementation and management of the platform.

I've been asked this question a lot. Hope this helps.
continue reading "Understanding the difference between Low Code, Citizen Development, and Sales Bull"

Five Key Investments to Drive Digital Transformation

StarCIO Smarter Faster
Heading back after summer breaks and most CIO are confronted with either developing, completing, and likely selling their 2017 budgets and plans. When it comes to digital transformation, many will think about plans for Big Data, IoT, AI, blockchain, and other business enabling technologies as core to 2017 plans. Some might be thinking about mobile payments, marketing automation, cloud migrations, digital customer experiences and other investments that improve products, services, capabilities, or efficiencies.

So let me suggest a few other digital transformation investments you may have overlooked. These are the less sexy investments that should underpin some of your more strategic initiatives.
  • Data quality and master data management - It's really hard to push Big Data, analytics, and BI programs when underlying data issues have limited attention or are not addressed. If you're trying to become a more data driven organization or leverage data in product development, investing in data stewardship practices which includes data quality and master data management is recommended.

  • Sales intelligence - If you're digital transformation includes delivering new products and strategic product enhancements (it should!), then you're going to want to track how existing sales channels, new sales channels, and changes in sales strategy impact selling new digital products versus incumbent products. Even if this can be accomplished with out of the box CRM reports (which is unlikely), you'll still want to put instituting sales intelligence on the strategic roadmap to drive training and process changing. 

  • Citizen development and citizen data science programs - Are your development resources stretched? Are you struggling to hire data scientists? Are you falling behind creating and updating enterprise applications in parallel to your strategic investments? Do you have millennials on staff that are capable of taking on more technically challenging work but need business and technical direction? If you answered yes to several of these questions, then you might want to look at sponsoring a citizen development program. See my previous right ups on practices for citizen development programs or how to kickoff a citizen data science program. Also, see InformationWeek's recent write up on my team on how one IT shop applies low code development practices.

  • Customer experience monitoring - As you're deploying more customer facing applications, you have to consider how to best monitor the end user experience and the health of the underlying systems. To best monitor systems for digital threats and issues, it's probably a good time to review technologies and approaches to threat monitoring, intrusion detection, and application level monitoring.

  • Workforce enablement - While many organizations have invested in tools for collaboration, enterprise mobility, unified communications, and agile project management there is still room to address other workforce enablement practices. Are you encouraging and measuring the shift off email to collaboration tools? Are you actively looking to reduce the number of hours in meetings? Are you measuring employee engagement in your innovation and portfolio management programs?

Another view through the Digital Lens to make your organization smarter and faster.

continue reading "Five Key Investments to Drive Digital Transformation"

Strategies Beyond "In House" to Address Digital Transformation

This recent EY study on the Digital Deal Economy caught my attention. The survey of 600 non-tech corporate executives shows that 74% believe that digital transformation has either substantial or transformative impact on business operations, 66% on customer relationships  and 59% on vendors and supply chain. The implications is that there are still a sizable number of executives that still "don't get" the disruption and opportunities stemming from digital. That's scary if you work for one of these executives or businesses.

But what really caught me was this question and answer on growth

EY Digital Transformation Strategies

possibly implying that organizations only have these options to invest in digital transformation. You can either develop in-house (organic), outsource, or acquire digital capabilities. This is a simple, broad classification and larger organizations are likely to leverage all three depending on need and circumstance.

But it got me thinking about the language EY used around "organic" options.

What does "develop in-house" mean in a Digital organization?

Developing "in house" is an outdated term coming from when organizations could either build or buy technology. Buying effectively meant you were purchasing software and developing the business needs around its capabilities. Many organizations buying software tended to leverage "out of the box" capabilities because of the cost and complexity configuring and customizing enterprise solutions. Of course this often proved harder to achieve than expected since you needed talent trained and experienced to develop off these platforms and have practices to maintain the customizations whenever the software was upgraded.

The alternative of course was to hire programmers and develop custom solutions. Business executives often drove for custom solutions whenever they demonstrated a competitive advantage versus off the shelf software options, but often failed to fund ongoing development efforts. The result is that many proprietary solutions evolved to "legacy applications" because of the lack of investment and attention.

But there are other categories that may still be "organic" but I would argue against classifying them as having the same issues as "in house". You can license platforms that enable citizen development where operations and development of platform capabilities are outsourced to the SaaS vendor, and application development can be done internally, by acquiring applications from an app store, or by outsourcing. These solutions offer greater flexibility and fewer complications to maintain versus what we commonly associate with "in house" solutions.

Another "digital" solution is enabled by integrating multiple capabilities into a proprietary implementation. You might develop a solution using an IFTTT product to move data between platforms, selected functionality from platforms that are API driven, and RAD mobile tools to configure front end user experiences. None of this may require actual "development" (as in coding) and require more knowledge of how to integrate solutions and configure tools.

Businesses in the midst of a digital transformation need to look at these and other organic options. It's also time to bury the "in house" context and realize that there are many innovative solutions that don't carry the same issues as the "build or buy" solutions of the past.

continue reading "Strategies Beyond "In House" to Address Digital Transformation"

Why Agile Data Science Practices Drive Big Data Impact

With the hot weather in the US northeast this weekend, I was able to catch up on some reading and research around big data, data science, and agile. In thinking about the culture required to leverage big data capabilities and data science programs, I found some interesting data worth sharing.

The first comes from Computing Big Data 2016 -

Data Science Succcess

This is showing that the collaboration between technologists, data scientists, and business leaders is a key success factor to make data scientists thrive in an organization. It also helps to have senior backing and either a strategy or set of priorities identified. This isn't exactly surprising, but to address the collaboration required I have suggested using agile practices to perform discovery work and aligning data science and IT responsibilities in data science programs.

An Accenture Report on The Team Solution to the Data Scientist Shortage also accents agile practices as a method for growing and retaining data science talent

In addition, the time-proven wisdom about managing teams bears repeating: Data scientist teams, like others, flourish best when there is effective leadership, a strong mandate from above and clear goals. They require a path for taking projects from design through implementation. Like many projects in the IT world, they benefit from working in rapid, iterative sprints of preparation, analysis and review.

If agile is the answer to enable collaboration, then what is the problem or challenge to getting senior membership buy in? McKinsey articulates this well in their report Getting Big Impact from Big Data

Management teams frequently don’t see enough immediate financial impact to justify additional investments. Frontline managers lack understanding and confidence in the analytics and hesitate to employ it. Existing organizational processes are unable to accommodate advancements in analytics and automation, often because protocols for decision making require multiple levels of approval.

Agile Iterative Analytics Drives Buy In

Bottom line is that big data capabilities and data science programs take time to mature, but they don't necessarily require extensive efforts to provide business value. These teams have to demonstrate quick wins to senior leaders so that they don't lose interest in the program. Data science teams also have to take on some responsibility to help frontline managers to leverage the analytics and become more data driven.

If you want big impact from data science and big data, then think of demonstrating wins incrementally. Agile software teams perform frequent releases to drive incremental impact, capture feedback, and promote the next set of priorities. Data science programs should adopt similar practices.
continue reading "Why Agile Data Science Practices Drive Big Data Impact"

Digital Leaders Must Embrace the Lion

Become the Lion
What does this picture make you think about?

My first thoughts veer to a post I made last year, Agile Culture - Are You Developing Solutions or Solving for Business Opportunities? In that post, I suggested that agile product owners first must study the market and understand what problems that they can solve for customer and sell profitably. However, here's what I hear from less experienced product owners, "Can you build me something that does A, B, and C for Users X and Y and have it completed within the next couple of weeks." Now some product owners today are technical enough to come up with solutions, but their job is to articulate the business problem, market opportunity, and priority.

It reminds me of several examples when leaders hold onto sacred cows because they are subject matter experts and are ill prepared to collaborate when digital transformation is a necessity. By definition, when we are trying to transform we have to be able to question everything, challenge assumptions, bring in new data and facts, and develop new innovative thinking. 

It also makes me think of the impact of transparency. When you produce KPIs, operational metrics, agile development metrics, quality scores and other measures, are you more likely to get supporters and champions? Or do you get detractors who pick at a metric without the underlying context, claim you're doing something wrong, and try to use the data to promote their own IT solutions or their own way of doing things?

That's why this quote resonates with many CIO, IT leaders, and digital leaders. Become the lion or be the wolf?

Truth is, transformation requires a balanced approach. A lion, a wolf, a dove, a dolphin. The hard part is deciding what to be when.

continue reading "Digital Leaders Must Embrace the Lion"

Leading Digital Transformation? Ask this question -> What is Everyone Working On?

What is Everyone Working On
The most simple of questions easily exposes the messiness of running IT organizations. The larger the organization, the more likely this simple question will lead to others that expose larger business, execution, talent, funding, process, governance and other issues.

It's the first question I ask as a new CIO and it's one that I repeat through monthly project portfolio reviews. It's particularly important to do in the months leading into budget season so you have the means to update roadmaps and promote new investments. It's a more critical discipline for organizations that are executing a digital transformation program, growing revenue rapidly, exploring strategic positions, or driving a business turnaround.

Why Portfolio Management is Important for Digital Transformation?

Portfolio management is a boring topic. Many CEOs loathe the bureaucracy and have a tainted view of the practice based on failures by the "Project Management Office", investments in management consultants, technology investments and other mechanisms to organize and prioritize initiatives.

So why is it critical for CEOs, CIOs, CFOs and CMOs to address this challenge? Here are a few reasons

  • Some of the best ideas come from employees and are not top down driven from strategic priorities.
  • Organizations need to pivot, speed up, slow down and stop initiatives with more frequency and agility as market conditions change, new customer opportunities are discovered, and competitive threats become disruptive.
  • Most strategic initiatives can no longer be executed well in silos and require staffing, expertise, and operational changes in multiple departments.
  • Improving customer experience is not just about front end customer interactions. Organizations also need to consider how to make operations more responsive, how to make data more accessible, how to address security or compliance requirements, and how to drive out costs in order to succeed at transformation.

So, if you have a portfolio practice are you updating it for the digital speed? If you don't have one, are you looking for a nimble way to implement it?

continue reading "Leading Digital Transformation? Ask this question -> What is Everyone Working On?"