As a company we have very clear what we do and the value we provide to our clients. The type of service we deliver is completely related to software product development.
We have rejected opportunities for alternative revenue streams such as training, consultancy, reverse engineering analysis, among others. The reason behind rejecting those is be able to continuously improve our understanding of the main core of our company, and not focusing in other verticals until the right moment to develop a new and fresh business proposal.
Nevertheless, focusing on our main core demands adapting to change in a very fast way. During the last year we have seen both from clients and massive tech events (Collision, EmberConf, and others) new approaches to solve things and tendencies that are already part of modern software we see in production environments.
New AI and Engineering challenges for UI design
The last decade has been a great time to generate even more and more data. Hardware capabilities and more tracking sources and tools are helping to convert dark data into valuable information to the end user. Also, visual design and presentation of digital products differentiates the most capable teams and companies providing unique experiences.
The merge of both data and design starts to be a need but also a challenge. Designing interfaces, screens and a complete application demands caring about the data we have available and how to present it properly to the right user consuming it. Dashboards and Information Feeds need to present what the user cares about and let her take decisions properly but faster than before. This is what we are seeing as Personalization (P13N). This P13N helps to better understand the user, make predictions, discover patterns and enhance what the user is looking at the screen. Understanding the past from every user will help to predict better the future and show what they would care about.
Data < Information < Dashboards & Fees < P13N < Predictions and Patterns
As an Engineering challenge, there are new emerging opportunities for building typical static content sites, something incorporated by default in every company. Big companies are facing problems with high bounce rate numbers, low engagement or poor experience not regarding visual design, but because of technical elements affecting in their performance. Many tools that have existed throughout the new digital era such as Wordpress, Joomla or now website builders as Squarespace or Wix, help you to build an MVP or a site that won’t be accessed by many users. Once you reach a decent number of users, loading effectively every section and content, having decoupled modules, low dependencies, and providing the best experience will be reachable because of balancing design with engineering efforts. For example, building a complete mobile client-side application for a company web site would help to provide a better experience to load and organize in a better way the assets, load the information you need and provide an interaction very similar to what we see in mobile applications.
Continuos Delivery practices on steroids
Today, building a product from scratch demands from every developer basic knowledge of Development Operations (DevOps). Many companies providing solutions as PaaS and IaaS are helping technical teams to deliver software faster than ever before, so companies starting a new product adapt easily this type of solutions.
Maintaining a production platform demands different types of knowledge. There comes a point when the team needs to administer their infrastructure on their own, but that is much less of a pain now than it was before. Tools like Docker and the containers technology are offering a software framework to manage all hardware and forget about configuration every time you want to run the application in a new environment or server. For this type of applications we will see a particular team dedicated to development and a particular smaller team than past years dedicated to operations, both communicating better, performing efficiently and delivering value faster than before.
There can also be challenges with deploying technology on the client’s side. Regulations and companies bureaucracy can make implementing a continuous delivery process more complicated, in comparison to infrastructure completely working in the Internet. Even though, containers and platforms allowing to deploy services rather than the entire product, integrating tests and establishing a particular procedure for every organization is the best way to go in order to reduce the time to deliver a new feature or version of the product. A Continuous Delivery process needs to be imperative and can happen even you find a lot of constrains such as compliance or governance.
For the mobile world there are still many things to come, and particularly the web context needs to be a reference for all the new devices that will open marketplaces and software tools for the end user.
Every feature as a microservice
Software is easier to manage if you treat all features as services.
Features become isolated, thus software becomes decoupled and cohesive. Teams can work easily focused on features and be responsible for that particular piece; if something is broken, the feature-team can fix it easily. Deploying a product becomes healthier, because you can deploy asynchronously every section of your software not depending on the environment, but on the process and teams.
The microservices approach as a default way to build software product is important to reduce software erosion and technical debt in the long-term. We are seeing more and more teams adapting this mantra to manage and build their products.
Even though this is nothing new, it is now an important topic due to client-side technologies growth and also because we are going to see more and more new physical and virtual interfaces from IoT, self-driving cars and wearable devices. We can take as a reference, Jeff Bezos, who in 2002 exhorted from his team building everything inside amazon as a service, because of the benefit to administer the company in terms of technology and communication.
Tools for concurrency in production environments
Every day more and more people are having access to the internet for the first time. New services and products working on the internet provide more options and help the consumer to select the best to fit their needs.
With many more applications to come but also many more users to access any product working the Internet infrastructure, providing equal service and attention to every user is very important for every company, but also for the consumer. Even more, a world truly connected means having access to the right information you need in real-time. Combining the equal service for every user with real-time interaction demands the implementation of new tools helping to support both properly.
For databases we talk about tools that can generate and provide data very fast. For the back-end we are talking about streaming APIs and lean tools that can be easily maintained but also allowing multiple connections that don’t sacrifice the service provided for other users already connected; we will see more production applications with Go and Elixir because of the stability they provide but also due to the great handling of threads and processes. Finally, for the front-end engineering side we talk about tools allowing and simulating a complete real-time interaction as the mobile world has implicitly stablished in other technology contexts.
Consumerization of the Enterprise
Comparing enterprise software applications with any other type of applications, enterprise solutions are more frequently used due to the frequency and dependancy of any employee inside any company. A single employee in the Human Resources department will be using an application to arrange and organize all of her tasks, generate reports for the management tier or follow-up in every new candidate applying to a job offer opportunity. This is just an example, and at least 5 days a week will be the minimum use for this because it is the tool for the job to be done. Seeing and using an application with poor usability, bad interactions or worst, not considering the final user as part of the solution that was built is dangerous and impacts in motivation, productivity, and happiness on employees because of the performed work within an enterprise tool.
The way consumer-oriented organizations work is helping and inspiring big businesses to move rapidly and adapt more of their practices for the benefit of the business clients. Take as reference Adobe, Paypal or AOL, companies using today Slack for a lean and better communication approach and being alert to different platforms they use for customer attention.
B2B acquiring elements from B2C
B2B product areas such as Marketing, Sales and Customer Support are taking as reference B2C models.
For sales we are seeing more subscription models on robust platforms. No fees once you want to decline using the service, no licenses, no long-term contracts. Expecting a more organic sales procedure and investing for referrals from partners and from clients of the actual clients, nowadays the way businesses operate on the Internet are more similar to the way consumer products had been commercialized.
For marketing we are seeing businesses being advertised in social networks. Sharing content and doing inbound marketing as if it was a small company willing to build a startup culture.
Customer Support is also a very important area adapting from the B2C model. The fastest and directly the service can be, the better. A humanized relationship with every single client and keeping a lean communication channel, will help business providers to keep building a better tool in a frequent basis with higher value.
Software providers need to care about all these things in order to keep adding the value our clients are seeking for, reduce technical debt and deliver a quality service with great time-to-market and execution as a priority.
Do you see other tendencies already happening? I would be glad to start a conversation about alternative services being incorporated in the software industry by any provider. Send me an email or a tweet @edolopez.