To understand this better, let us have a look at what Heroku exactly is?
Heroku is a PAAS, based on AWS(IAAS), which provides a ready runtime environment and servers which eventually benefit development and DevOps teams for seamless integration to different development tools.
When a user pushes the code to Heroku application, a virtual machine called slug is created and the instance launched from this virtual machine is called dyno. The Heroku App is totally built on dynos which are lightweight Linux containers. The high-level view of how Heroku host your application looks like this:
Hence, when you push your code to Heroku container, it converts it into a slug and autoruns all your migrations and scripts and your application is hosted.
Heroku provides support to Python, Ruby, Java, Kotlin, Go, Scala and many more languages. It also provides the facility to add a database to your application where Postgres is one of the free add-ons which you can directly add from Heroku dashboard.
Adding a Postgres database to your application is as easy as running this command in your Heroku CLI:
Or, you can directly add the Postgres from Heroku dashboard by clicking on ‘Configure Add-ons’ under your Heroku project overview.
And as we all know, there are some applications where database security is way too important, in that case, Heroku also provides the flexibility to point to the external database. You can directly point to your database from Heroku application.
The Heroku application only needs the resource URL of your service and the related addOns like Postgres for the database. And it works something like this :
Heroku also provides the facility to add config variables and change the way your app behaves.
Now, why hosting your application on Heroku is easiest of all?
First, Heroku provides a pre-installed operating system and servers hence, it eliminates the need to configure the infrastructure and therefore, even a person who is new to the Heroku cloud platform can easily get a hold on deployment without worrying about the hassles of infrastructure management.
Secondly, the user can easily select the subscription plan according to its own need, and Heroku is a pay-what-you-use, per the second basis, product. Hence, if your client needs to suddenly have a large amount of cached data, simply add Redis to your plan and you are good to go.
In one of the products of HashedIn, the end users of the application were from different domains hence, the project was supposed to be hosted in such a way that deliverables can be switched based on the user’s demand and with Heroku, it was an easy task. Since the application had a multi-tenant architecture, therefore for some of the users HTTP traffic was a concern and for others, app health and statistics was a major concern. With Heroku, we managed to deliver this with ease.
If the user is facing heavy HTTP Traffic in its application, simply scale the dynos in your application by executing the following command in your CLI and specify the number of instances and you are sorted.
$ heroku ps: scale web=3
This will scale your application to have 3 web dynos.
So, you must be wondering how to deploy your application. Well, deploying your application on Heroku is a 5 step task :
Create a personal app:
Login to Heroku
Under personal apps, click on create a new app
Choose personal app under team drop down and add app name
git remote -v This should have two remotes origin pointing to your git and Heroku pointing to your Heroku repository
5) To deploy your application
git push heroku master: this will deploy your code on Heroku
You can view the deployed application by running the command: Heroku open
Note: These commands are Ubuntu specific but you can find the steps for other operating systems on the internet easily.
Yes, this is it and hence you can put all your efforts into development and Heroku will take care of deployment. Most of the software requires you to set up infrastructure, provision them, configure them, but with Heroku, all this can be added with a click on Heroku dashboard or through Heroku CLI.
Some of the features which Heroku provide are capacity provisioning, database rollback, application rollback, manual vertical and horizontal scaling, app health monitoring, and full GitHub integration. Scaling your performance is just a matter of adding more of the so-called dynos.
Heroku provides Add-ons for all your needs. You name it, they have it. Some of my favorites add-ons are Redis Heroku Postgres and Redis Cloud for database storage, Heroku Connect for data store synchronization, StillAlive and AppDynamics for monitoring your web application and resolve performance issues , whereas followAnalytics for monitoring your mobile application to capture all the analytic metrics and user engagement, Sumo Logic to log real-time metrics, SendGrid and Mailgun for email services , RabbitMQ and IronWorker for messaging and queuing your tasks, AuthO for user management , Heroku private spaces for security, Heroku Scheduler for scheduling any task which you want to run on a regular basis and many more like this.
Heroku Postgres and dyno are some of the free add-ons whereas add-ons like Heroku Scheduler, SendGrid falls under free trial limit under billing account.
The typical dyno categories can be referred in this diagram :
How Heroku plays a major role in product delivery lifecycle :
Fast and easy deployment – Deliver the product from the first week by deploying early and hence, getting continuous feedback of both performance and look-n-feel of the product. With Github integration, deployment and early testing is a major benefit.
TeamManagement– It is easy to manage the team with Heroku’s app-level permissions and collaboration tools with centralized billing.
Great developer experience– With deployment on Heroku, it helps the developers to focus more on development without worrying about managing servers. For eg: if a new version is coming, the developer simply needs to push the code to Heroku and it will automatically restart its dynos. With Heroku, it is never a thing of concern about software installation and updates.
Visualization to stakeholders – With Heroku, business users and stakeholders are able to access the app metrics, analysis, and reports.
Easy client transition – if a client wants to take over the maintenance and evolution of their app, Heroku’s ease-of-use makes it simple to onboard and train their in-house team on the app’s Heroku environment, code, and operation processes.
Easy Salesforce integration – CRM integration is one of the major concerns today, but with Heroku Connect, we can easily connect with Salesforce using its simple interface which automatically synchronizes the Salesforce data to our Postgres database.
Now, you must be wondering if Heroku is this easy to use, why isn’t everyone using Heroku then? There are multiple reasons. One is cost. As you get all the platform and software as a service, you also pay for that. But then Heroku also has a range of services which falls under its free trier plan.
One other disadvantage is the read-only file system which makes it difficult to handle bulky file uploads such as videos or high-resolution images. But, that can be easily overcome using Amazon S3 or something similar. I would suggest you use Heroku if rapid application development is your highest priority.
I had published a blog a month ago “The 5 Elements of User Experience Design”. It talks about the elements as the 5S being Strategy, Scope, Skeleton, Structure, and Surface. This concept is an excerpt from the book written by Jesse James Garrett, co-founder of Adaptive Path (Strategy and Design Consulting firm). While Garrett’s elements can help solve complex problems into simple experiences, today’s world need inspirations so problem-solvers learn from others’ mistakes and try not to “reinvent the wheel”.
I wish to introduce the sixth element of User Experience Design. This 6th S is powerful enough to combine all of its 5 precursors and create an impact or great inspiration. This secret ingredient is called the “STORY”. A story the user experience designer creates and shares will have to celebrate his design journey. The story talks about his experience in crafting a solution for all the end-user’s problems.
Like all stories we hear from childhood, they have characters and a plot. And the story revolves around the experience the character goes through the script around certain stages called “scenes”. We as user experience designers should also see every product/project in this manner.
As experience designers, we have the luxury of acting both as “story-teller” and also as the “character” in the plot. We empathize with the pain-points of the “hero-of-the-story” (end user) when he goes through his journey (task) to find the happiness (completing the task).
Like every story has the usual suspects and characters depending on the genre, the User Experience (UX) Design Journey also goes through a well-curated Design Thinking process. At HashedIn User Experience (HUX), we follow a methodological Design Thinking process for any problem; big to small, critical to trivial.
Why share in the first place?
Designers need to share the story with other problem solvers in order to get inspirations and they start creating their own. Inspired minds learn from others’ mistakes and abstain from committing them. Effective communication and invigorating sharing experience happen when the story has a nice script. Like all good scripts, UX related stories should also follow industry-proven, time-tested patterns. These patterns include but not limited to the following:
The HashedIn Way
I wish to introduce how we (HUX Design Team) compose our design story in the form of a Case Study. We follow the “10-point rule” to convey the story.
Current UX / UI
The Design Philosophy
The New Experience
Return on Investment (ROI)
This section will give the reader a gist about the company for whom we tried to solve the problem. We make sure the reader understands the gravity of the problem through measures like the firm’s market share, top competitors, etc. We also introduce our client’s expectations from a 32000 feet level so that the reader at least gets a sense of the problem without glancing through the rest of the sections. Garrett calls this step Strategy.
This critical section usually summarizes the user experience issues arising from the product usage and/or end-user expectations. Occasionally it might also talk about:
The higher churn rate of a company’s product
The slower on-boarding procedures
The increased documentation and help-desk support
Clarity of the problem statement clearly defines the Scope. However there is less chances of having only one issue attributing to a major problem. So we classify the problems across multiple categories like:
Our Design Methodology
We @ HUX empathize with the pain points of the existing system/UI, define user experience issues and ideate on possible solutions. While designing, we make hypotheses, take “word-of-mouth” suggestions from stakeholders and move on. We later validate all our assumptions using Usability Testing, Stakeholder feedback and ROI analysis.
Typically our design journey goes through the following steps:
On the Empathy Map, we try to plot the user’s emotions like “thinking & feeling, hearing, seeing and doing”. This technique is a collaborative visualization used to articulate what we observe or study about a particular type of user. It becomes easy now to understand the major pain-points of the user and the gains the user gets when the problem is solved.
This section contains our findings regarding user demographic/ethnographic data, preferences, and mediums used. The activity to prepare this information is called User Profiling (Personas). User Research need not be “epic”. It could be lean and agile based on the project budget and timelines.
User Journey Map
User Journey Map will detail out all the touch-points the user goes through when using or willing to use the product/service. It is kind of a journal that the designer keeps recording the feeling, pain points and the moments of delight, all-on-one-go. User Journey can be full-fledged as below or sometimes lean based on the project’s constraints.
Courtesy – Adaptive Path
This section details out the experience issue the user face on the existing system. By keeping this in mind along with the valuable data we obtained through user research, we will be having a clear picture of the new experience we wish to create.
The Design Philosophy
This section talks about the Structure and Skeleton of the newly built experience. We detail out the design considerations/goals around Interaction Design, Information Architecture and the UI design principles followed to craft this experience. The 10 core principles for great UI design are:
Intuitiveness or Single-trial learning
Context & Relevance
Information Hierarchy, Scent & Depth
Conventions & Metaphors
Occam’s razor – The simplest solution usually tends to be the correct one
Hick’s Law – Every additional choice increases the time required to make a decision
The New Experience
Here we introduce the newly crafted experience by showing the Surface, which is the visual language for the design philosophy detailed out previously. We summarize the experience enhancement obtained through the new design. We use jumbo-text and exploded views to explain the concept.
Return on Investment (ROI)
ROI defines the benefits of the new design and how it is compatible with the long run of the product. We detail out multiple perspectives like “meeting the short term needs of the users’ to ‘future-proofing the system with more technology capabilities like Artificial Intelligence & Machine Learning”.
I feel this practice of story-telling UX case studies will be helpful for your organisation. If you wish to contribute your story, please write to us.
This meet up happens usually in Bangalore and Delhi NCR, once every quarter. In the coming months, the organizers have planned to add more cities to build a community of people driven by passion.
About the meetup
BeerUX meetups usually have the following – User Experience Design, Technology, Startup Concepts, and Beer. The difference between BeerUX w.r.t others is the fact that BeerUX breaks the traditional speaker-attendee hierarchy so conversations flow more naturally, there is diversity in opinions with more meaningful connections among people formed.
The mantra about this meetup is that Social media has made us anti-social and BeerUX meetup wanted to change that perspective. The group loves to meet new people, strike conversations on any topic they are passionate about, hear interesting stories and get inspired from them. The group feels this is an amazing concept which can lead to any of the attendees’ big startup idea.
As its previous sessions, the 9th BeerUX Meetup started with a casual introduction of the 25 participants. We had a good mix of people from enterprises and startups. While HashedIn dominated the crowd by numbers, there was good representations of designers from Google India, Microsoft, Gojek, etc.
This month being December, each one of us shared a short, interesting story that happened through 2018. While someone talked about being chased by a lone tusker in Bandipur, the other shared his recent online matrimonial search experience.I could see the barriers between people were becoming low and weak.
Hot discussions with cold beer
Beer and coke were served and discussions got deeper and focused on design and designers. One of the participants raised an open-ended question regarding the difference between user experience design and creating art-forms through design. A lot of discussions floated in the air and I am trying to summarise all of them here.
Most of the premier institutes in India diversify design education as material, form, function, object, space, and environment. The institute’s approach is to attain universality among graduates in the field of design and the long-term goal to focus on a design discipline as mainstream. But the designers hardly get this point correct. Eventually, they also get into the vicious state that is plaguing the design industry – the difference between User Experience Design versus User Interface Design, or the Science behind Design versus Design as an Art.
My two cents is that Design should be treated as an important aspect of elementary education as we treat Science, Social Studies and Mathematics. By doing this, everyone understands the value of design, the need to create, be innovative and try to put them to practice in any discipline he or she wishes to get into the mainstream, from engineering to medical science, law to community help.
The design being elemental in our education system
Though my idea to make design elemental to a kid’s education system got close to 60% support among the participants, almost everyone retrospected the same and felt it would have been good for themselves now if Design was taught to them right from their schools.
Almost 75% in the room said they became an accidental designer after completing engineering. While they agreed that this change was phenomenal for them, they also acknowledged that engineering hardly played any role in shaping them to be better designers. They all agreed that early design education would have helped them to take clear decisions towards their education and profession.
The air of silence went on for few moments when another participant tried to open another box of worms by asking
Do you all know the difference between the roles and responsibilities for designations like Design Lead versus Head of Design and Design Manager versus Design Practice Head?
Designer vs Design Manager
Many in the room tried to conclude the fact that there are no obvious differences in the above-mentioned roles since they are all designers at the end of the day. The participants also mentioned that these corporate designations are just to give one a sense of “moving up” their career ladder.
When it was time for me to debate on the above, I acclaimed that the major difference between these roles does not lie on the work each does but on the way each thinks about Design.
When designers start their professional career, everything around them feels “design” and seems “to be designed”. When time flies, the design takes a tangible model on their professional journey. Task completion, Error prevention, and User Satisfaction Index play an important part in this model. Later when they take up roles like Design Lead or Design Practice Head, it changes back to a more intangible, people-centric model where the Design Leader thinks of helping team’s long-term operating model while future-proofing the same as well.
While designing is an important trait for a design leader, he does not stop at that. He lets the team fail-fast, accelerates learning and promotes growth.
My personal take on the design leader’s experience should not be counted on the number of years he has been in the industry but attributed to the number of times he has had bad times professionally, unlearnt and learnt how to get up. This experience is the wealth a seasoned professional can give to his team. While this is true for many professional mainstreams, it becomes a little hazy for some streams (like Software Development) owing to their ever-changing competency models.
Since the world of Design is still grounded to traditional yet indisputable cognitive psychology principles like Human Computer Interaction (HCI) and User-Centered Design (UCD), Design as seen today is just a different form of the same old function (i.e., help users to perform a task at ease and be happy about completing it). While today many young designers design without considering its science but mostly on current trends, design leaders who have embraced design as science always try to find a balance and bring out the best of both worlds.
After networking sessions, we took group pictures and called it a day close to 10 pm. Thanks to all the participants who made it a great meetup.
According to Jesse James Garrett, co-founder of Adaptive Path (Strategy and Design Consulting firm), the following are the 5 elements of User Experience Design
While converting the user & business goals into great looking product visuals, a designer goes through a beautiful journey of transforming an abstract requirement into a concrete, working model. While strategizing the product, the designer ascertains its User Needs and Business Objectives. Scoping gets Functional Specifications and Content Requirements in place. The structure defines clearly on how the Interaction Design and Information Architecture are charted with the product. Skeleton is where the designer gets to define Interface Design, Navigation Design, and Information Design. Visual Design attributes like Typography, Layout, Branding start surfacing when the designer is almost complete with this journey.
It is important to note that the above-mentioned elements are interdependent, i.e., the choices a designer makes on one will impact the other. As a result of this dependency, it is also essential to start defining an element when the previous element is already Work In Progress. This will reduce issues like “changing design decisions very often, taking uninformed design decisions, etc”
Please remember the fact that Technology has to be appropriate. The right platform is critical in delivering great experiences. Technology extends User Experience Design across multiple OS, browsers, devices and form factors. So technology needs to be inherent in how we design.
During this phase, the experience designer ascertains the business and user goals by conducting Stakeholder Interviews, Competitor Reviews, User Research, and Existing Product Audit.
The following are some of the key questions he tries to get answers during this phase
What should the product accomplish for the business?
How does this product fit with the company’s business strategy?
How should this product be differentiated from the product line?
Why do customers use a product like this one?
What do customers complain about most often?
When building a B2B product, the designer asks the following questions to the stakeholders
Tell me about your background and role.
What makes a good workday for you?
What are the different groups and roles involved in the process? How do they work together?
What are the biggest problems and inefficiencies?
Tell me about other systems that work with this process.
When building a B2C product, the designer asks the following questions to the target audience
What makes a good experience to you (in the context of product usage)?
What things would you usually do first here? Why?
How often do you use this product?
What do you use it for most often?
What things do you use before, during and after this product?
“Scope and Trade-offs are essential to strategy. They create the need for choice and they purposefully limit what a company offers”
– Michael Porter, Harvard Business Review
Defining the scope forces all players to address potential conflicts – before time is invested in designing and building. Documenting scope provides a reference point for work to be done and a common way to describe that work. Documentation doesn’t have to be epic, but just a common understanding of features, schedules, and milestones. While trade-off is necessary to scope the work, in order to deliver continuous value (the long WOW), the designer needs to figure out how to systemically impress the customers over the life of their relationship with the product.
Follow these simple steps to make this happen
Pack in features upfront
Unfold new experiences over time
Continuously evolve and integrate
Interaction Design (IxD) and Information Architecture (IA) are the key components which define the structure of the product being designed.
IxD strives to create meaningful relationships between people and the products by the following
It effectively communicates interactivity and functionality
It reveals simple and complex workflows
It informs users about state changes
When done right, it prevents errors
IxD revolves around the following principles
Consistencyhelps people use what they know
Visibilityof opportunities can invite interaction
Learningis easier when predictions are accurate
IA helps organize, categorize and prioritize content. A good IA will help
Navigateefficiently and effectively
Discovernew content on repeat usage
Persuadeuser to perform the intended action
The following are the different types of Information Architectures
Hierarchical Tree– Standard structure with an index page and a series of sub-pages
Hub & Spoke– Central Index (Hub) and user navigate out from here
Nested List – Linear path for the user to navigate to more detailed content
Bento Box (Dashboard) – Displays portions of related content on the main screen
Filtered View – Allows a user to create an alternate view from a specific information set
To most people, UI is the system. A well-designed UI allows people to start using it immediately with little or no help. Building the UI equals performing Interface Design, Navigation Design, and Information Design.
With the help of the following, success in UI design comes from the balance between visual form and technical function
You have to give people the things they need or want
You have to give it to them when and where they want it
You have to deliver it in a visual format that ensures they can (and want to) access all of it
The 10 core principles for great UI design are
Intuitiveness or Single-trial learning
Context & Relevance
Information Hierarchy, Scent & Depth
Conventions & Metaphors
Occam’s razor – The simplest solution usually tends to be the correct one
Hick’s Law – Every additional choice increases the time required to make a decision
The visual language indicates context and conveys information through the following
The following are the basic principles of effective visual design
Organize– Provide the user with a clear and consistent conceptual structure
Economise – Do the most with least amount of visual cues
Communicate – Match the presentation to the expectations and capabilities of the user
I am going to detail out the above in the coming posts. So stay tuned.
Special thanks to Joe Natoli, Founder of GiveGoodUX.com, for inspiring me with his 26 years industry experience in User Experience Designing & Consulting.
Software as a Service (SaaS) is rapidly transforming the way organizations work. New cloud-based software solutions are making jobs easier at every level of a business from improving user experiences to empowering researchers with the data insights they need. Businesses, both small and large, are embracing Intelligent software-as-a-service (iSaaS) to meet their operational challenges, improve efficiency, and deliver better service.
What is Intelligent software-as-a-service (iSaaS)
Intelligent software-as-a-service (iSaaS) offers companies with intelligent software solutions on a pay-as-you-go basis. This eliminates the need to pay upfront purchase costs. Companies gain the flexibility and scale to customize a solution that is best suited to meet their business challenges. The technical components for Intelligent software-as-a-service (iSaaS) covers cloud, software architecture creation, product development, modern UI/UX design, multi-tenancy, micro-services, containerization, cyber-security, and software testing.
How Intelligent software-as-a-service (iSaaS) can transform your business
Through Intelligent software-as-a-service (iSaaS), businesses can bring in the value of Product design thinking, Agile delivery, Modern software engineering and DevOps best to conceptualize, launch and scale great SaaS products. Here are some of the key pillars of an iSaaS service offering:
iSaaS vendors provide enterprise-class cloud services that allow companies to create, manage, and optimize cloud environment at an affordable cost. Businesses can get full-fledged cloud services including Cloud Innovation, Cloud Migration, Cloud Security, Integration, Data Analytics, API Management, IoT, Machine Learning, Bots, and much more without any huge investments in resources.
Through sophisticated automation tools and DevOps, iSaaS companies help businesses meet integration goals by improving the quality of existing codes or help in building winning API first or microservice architecture.
3) Artificial Intelligence and Machine Learning
Companies use iSaaS to build advanced analytical capabilities to meet their business goals. Whether it is to meet a regulatory requirement or to engage customers, businesses can design and manage powerful data analytics solutions that are customized to meet specific business goals.
4) Data Analytics and Engineering
Companies can easily access a range of data analytics and engineering services like smart extraction, transformation, analysis and visualization to effectively manage business data.
5) UI/UX Modernization for Legacy Applications
Businesses can easily access the talent and expertise they need to “Re-invent” existing legacy software assets and achieve strategic goals. Companies can improve their technical agility to gain a competitive advantage. As per their needs, companies can go for DevOps automation, transform UI/UX, or rewrite application codes.
Things to look for in an Intelligent software-as-a-service (iSaaS) provider
Here are some key factors to consider while choosing an Intelligent software-as-a-service (iSaaS) provider:
1) Access to advanced product development capabilities
To drive innovation, iSaaS vendors must have access to the right technologies, framework and tools. While choosing a vendor, look at their Cloud capabilities, clientele, reputation, and technical expertise.
2) Speed and Agility
A responsive iSaaS vendor who is quick to resolve issues can accelerate innovation and speed up the project. Vendors who use reusable frameworks and product accelerators can help in quicker project delivery.
3) Tech partnerships for superior client engagement
A good iSaaS vendors would understand the business nuances of the project and bring in a solution-oriented approach. While choosing an iSaaS provider, find out if the team has the technical resources and tools to manage complex multi-cloud infrastructures. A vendor having strong partnerships with popular technologies like Redis, Heroku, and AWS would have the developmental capabilities to build winning SaaS applications.
4) Access to a reliable workforce
An iSaaS service provides must have a skilled, adaptive, team that has the expertise to work on multiple technologies. Find out if they offer remote and on-site support.
Intelligent software-as-a-service (iSaaS) thus offers organizations an affordable and scalable means to access the resources and technology required to build, scale and manage winning SaaS solutions.
Learn more about HashedIn’s iSaaS offering
You can check out these client stories to learn more about how HashedIn helped global companies transform their business with Intelligent software-as-a-service (iSaaS): https://hashedin.com/case-studies/
Big data and analytics have come a long way and are now on top of the corporate agenda. A large number of entrepreneurs are depending on it to transform their businesses. At present, data-driven strategies are becoming an increasingly crucial point of competitive differentiation.
To successfully exploit data and analytics, companies require 3 supportive capabilities. First, a company must be in a position to identify, collate and manage many sources of data. Next, they should have the capability to set up an advanced analytics model to predict and optimize outcomes, and then the management must have the capability to transform the company so that the data and models can yield better decisions.
Two critical features underpin these competencies. a) an effective strategy on how data and analytics can be used for competing and deploying the right technology architecture. More importantly, a proper vision of the expected business impact has to shape the approach to data sourcing and the transformation of the business. Entrepreneurs must invest a lot of time and effort in aligning managers across the organization in support of the mission.
1. Picking the right data
The way data modeling is carried out has changed over the years. The amount of information available is rapidly growing, while the potential to expand insights by bringing together data is accelerating. Large sets of data offer companies a granular view of the business environment. The ability to see what was previously unavailable helps in improving the operations and customer experiences. This also means that you are doing well in 2 areas.
Creative data sourcing
Most often, companies have all the data they need for tackling business challenges, however, managers just do not know the way they can put that into use effectively to make some serious business decisions. Companies must encourage their employees to understand data better by being specific about the business challenges and opportunities that they need to address.
Entrepreneurs must also get creative in exploring the external sources of data. The social media channels generate terabytes of unstructured data in various content forms. One way to bring in a broader thinking about the potential data is to find out if one can make business transforming decisions if all the information required is available at fingertips.
Seeking the required support
Legacy IT structures may hamper the new types of data sourcing and analysis. Existing IT architectures may not allow the integration of siloed information, and managing unstructured data often remains beyond traditional IT capabilities.
It will take many years to completely solve these issues, however, business leaders can address short-term needs by prioritizing the requirements. This will help in quickly identifying and connecting the most critical data for use in analytics and then setting up a cleanup operation to synchronize data and work around missing information.
2. A model to optimize the business outcomes
Although data is necessary, the performance improvements and the competitive advantage arise from the analytics models that help managers in predicting and optimizing the outcomes. More importantly, an effective approach to building a model generally begins with not just data but determining a business opportunity and how a business model can improve the performance.
Even though advanced statistical methods make for better models, experts at times design models that are way too complex to be practical and may even exhaust the organizational capabilities. Companies should look for the least complex model that can improve its performance.
3. Redefining the business capabilities
One of the major concerns of the top management teams is that they really do not understand big data models and thereby do not use them. These kinds of issues often pop up due to a mismatch between a company’s current culture and the emerging tactics to explore analytics.
The new strategies either do not sync well with how businesses arrive at decisions or completely fail in providing a blueprint for realizing business goals. In order to effectively use big data, your business has to go through a drastic change, and certain actions will lead you there.
Building business relevant analytics
A lot of companies fail in the implementation of big data and analytics because they are not in line with a firm’s day to day processes. Model designers will have to understand the kind of business judgments that managers make in order to align their actions with that of the company goals.
Interactions with top-level managers will ensure that the analytics and tools complement the current decision processes, so the companies can manage a range of trade-offs effectively.
Exploiting big data with better capabilities
A good number of companies must upgrade their analytical skills. In order to make analytics a part of day-to-day operations, managers will have to see it as central to sorting issues and also identifying good opportunities. The efforts put in will definitely vary based on a company’s goals.
Adjusting culture and the mindsets generally require a multifaceted approach, which includes regular training and role modeling by top-level managers or leaders. Usually, the forum/field approach works best, where the employees participate in the real-time analytics based workspace, where they get a real-time experience in learning more about analytics and its impact.
According to industry experts, this is the right time to invest in learning and implementation of big data and analytics. However, instead of taking a big step forward, the leadership should focus on targeted efforts to source data and transform the company culture. Such efforts can help in maintaining flexibility.
As more number of organizations master the key skills of using big data, building superior capabilities will become a decisive competitive asset.
It often happens that as a beginner, a java developer overestimates his ability. There is even a name for it – Dunning-Kruger Effect. Beginners don’t know what they don’t know. If you are a Java developer in early phases of your career, here are 18 concepts you should read about and learn to be an outstanding Java developer.
Whole books have been written about these concepts. We will just summarise them here and encourage you to find and read more about them.
1. Thread Safety
All web-applications are multi-threaded applications. If you didn’t know, read about how application containers e.g. Tomcat start a new thread or pick one from a thread pool, to render a new web request. Thread safety is about ensuring access to shared resources is serializable. The most common thread safety mistake? Declaring a private field on a singleton class in your application which is changed by multiple threads.
2. Functional Programming
This came late to Java, specifically in version 1.8. But you should learn and use Streams & Lambda functions in your programs. They make for readable, elegant & concise code, often with improved performance.
3. Thread Local variables
Thread safety was about accessing shared variables safely. Thread local allows you to do just that. Think of them as a HashMap of variables by thread id. However, handle their initialization and clean up with care, especially when using thread pools or you can get into thread safety issues and memory leaks.
4. Mapped Diagnostic Contexts in Logging
Underlying, this works as a thread local variable. But you don’t have to worry about it because most logging frameworks will support it out of the box. The idea is to start and end contexts when logging messages. For instance, at the entry of a request, you can log the API URL and user id, so the logs inside would always carry that context.
5. Understand Classpath
It seems easy. But can cause problems or be the reason for some weird effects such as – Why does this work on my local but not on production? It may be because of class-path ordering wherein a production application container loaders an older jar from a shared class-path.
6. Class-path & Class Loaders
Class loaders work as a hierarchy. Learn about class-loaders that come with running an application in tomcat. Find if the same class can be loaded twice in memory and how.
7. Hot Loading
Did you know JVM supports hot reloading of Java classes? You change the code and then don’t have to re-compile everything and restart the application. Just the class changed is recompiled and its in-memory byte-code is updated. Find which cases this can happen and configure it in your development environment if you haven’t already.
8. Dependency Injection
You don’t call me. I call you. That’s an inversion of control and the principle behind dependency injection, popularised by Spring Framework. You already knew it, but do you know the alternative to dependency injection? Learn and understand why dependency injection is better and leads to more extensible and testable code.
You know about properties files. But what are the principles to decide if something should be a system property, an environment variable or a command line argument? The hint is in runtime i.e. when does the property become available and is provided. Nevertheless, you should know how to accept and use each and override when needed e.g. in a test environment.
10. Fat Jar Deployment
Most application frameworks, spring boot comes to mind, have an embedded container deployment mode. That is a DevOps friendly way to deploy on the cloud, instead of tweaking application container settings. Even if there is an operations team managing deployment for you, learn it as its the way forward.
11. ORM & Persistence
ORM (JPA & Hibernate) give you convenience and power. And often people shoot themselves in their leg with it. Learn to use them responsibly and without performance impact. Transaction boundaries, Lazy vs Eager fetching, different types of caching and how to debug performance. But most importantly, when not to use an ORM and just write a SQL query. Hint – when the amount of data is large or is distributed in too many tables.
12. Fault Tolerance and Isolation
Let’s say one of your application API calls another rest API. If the other rest API becomes slow, will your application go down? It will. Because of the slow API, all threads will be consumed and your application will become unresponsive. So design it to be fault tolerant with proper timeouts. You can make it more robust by using Resilience4j that allows setting up retry & fallback, circuit breakers, rate limiters and more.
13. Deployment and run-time environment
Do you know how your application works in production? Whether its a Paas like Heroku or Iaas like AWS, you should know the memory available, available CPUs, disk latency, network latency within different components to design a performant application.
Will you know if some API in your application is slow? What are the key performance indicators you should monitor? You can use an APM provider like New Relic, or build your own health checks and metrics using spring boot actuator.
15. Build Lifecycle and Dependency Management
Can you configure a new java project by hand using Maven or Gradle? Setup development and production environment configuration, create build lifecycles tasks to run checkstyle or find bugs, create build commands to run test-cases and generate coverage and so on.
16. Debugging Setup
Many developers do not know how to set this up. This is a must when running test-cases, but JVM also allows remote debugging by opening up a port your IDE can connect to. Learn how to set it up and you will be finding bugs 10 times faster than your teammates who don’t have it set up.
17. Know your IDE
Whether its Eclipse or IntelliJ, shame on you if you can’t set up a new or existing project in your IDE. The ideas IDE setup will have static code analyzer, run and debug test environment, can connect to debug a running JVM with has libraries source code also downloaded. A good workman knows their tools.
18. Learn to Refactor Sensibly
Most code is not perfect. Learn to improve some of it as you go, but not all of it in one go. Unlike the others, this one will take time and experience to master. Start today.
Is that all? Its never all, but it should help you go from “I know all everything” to “There is more to it than I thought”. Best of luck on your journey, Padawan.
Firms embark upon revolutionary conversion strategies to keep pace with accelerated software development. Leaders are experimenting with design thinking and agile methodology to stay ahead of the competition and implement continuous improvement.
Design thinking and agile methodology are two different concepts. Yet they complement each other and work to amplify the innovation process. Agile methodology focusses on project execution. In agile, planning is usually done in nuggets. The time and quality are fixed while the scope of work changes. Design thinking focuses on creativity and innovation It is a people-centric approach that advocates understanding user needs and finding creative solutions to meet these needs.
What is Agile?
Agile is an iterative time boxed process where software is developed in small chunks. Development occurs in short cycles of about two weeks. In each cycle, a small portion(known as user stories) of the entire project is prioritized and developed.
Agile finds application even outside software development. Businesses have realized that the only way to survive in the increasingly customer-driven marketplace is to become agile. It enables organizations to thrive in an unstable, competitive and ambiguous environment.
What is Design Thinking?
Design Thinking is not new. It’s a label for problem-solving through a creative approach. This is also a repetitive process. Alternative solutions are identified b3y challenging assumptions and redefining the problem.
Design Thinking and Agile Methodology
30-35% of IT projects fail according to research by IDC. Other research shows a higher figure of 50%. Most firms turn to agile methodologies such as Scrum to solve this issue. Agile improves success rates by almost double by promoting better collaboration and communication. However, agile only provides a way to solve problems. How does one decide which the right problem to solve? This is where design thinking plays a vital role.
Combining design thinking and agile methodology is no easy task. It requires a culture shift. You have to get accustomed to a new way of thinking and doing. Once accustomed, teams experience improved productivity. Agile and Design thinking value people over processes. Organizations have to allocate the right people to projects. They must also ensure cultural compatibility between teams and the way design thinking and agile methodologies work.
Design thinking to zero in on the problem that needs to be solved.
Design thinking calls for empathy. Putting yourself in the end user’s shoe. Design thinking consists of five stages:
Empathize: This stage involves understanding why people behave in a certain way, what motivates them and what their needs are. It involves identifying behavioral patterns, asking questions and challenging assumptions.
Define: Create a problem statement that articulates the challenge. Understand needs that are to be met based on the organizational goals and the customer’s requirements.
Ideate: Use techniques like brainstorming mind mapping and paper prototyping to find alternative solutions to address the [problem statement.
Prototype: Create working prototypes. Users can then understand how the solution works and firms can gather insightful feedback.
Test: Learn from user’s feedback, repeat to create a Minimum Viable Product.
Agile to build solutions for the identified problems
Agile moves the product from MVP to pilot and then to production. It helps you create a product that is dynamic and evolves with user expectations. Regular user feedback makes the agile process effective. This involves the following steps:
Define the project goals
Create user stories
At the end of each sprint, demos are shown to the user to gather feedback and discover needs that may not have arisen before. Programmers often use low code platforms to collaborate on functionality, validate assumptions, make and preview changes instantly. Agile methodology is an iterative process where the product is continuously developed to align with business and user needs
Best Practices for combining Design Thinking and Agile Methodology
1. Invest in User Research
Involve the entire team in understanding the end user. If there is already some research data available, start by testing some ideas. Begin the design thinking process by creating a map of the user’s journey from initial research. This process helps team members empathize, discover new problems that need to be solved and develop out of the box solutions.
2. A Clearly Defined Problem Statement to Sprint Towards
Carry out design thinking in Sprint 0. This allows the entire team to understand the problem statement in its entirety and create a robust design framework. Even before the coding begins, design patterns for the most complex features can be tested. This allows some incubation time so that the project can scale effectively. A design vision is imperative for project success.
3. Build a productive team culture
Create a core team for design and development. This should include decision maker, UX researcher, and designer, visual designer, scrum master, developers and QA. Limit the core team to a maximum of 10 members and ensure everyone has an equal say. Create a culture that promotes collaboration across departments. Such a culture facilitates innovation, superior ideas and a successful design solution.
4. Optimal Use of Design Thinking
Use design thinking during the first stage of project development and then whenever an important feature has to be developed. This feature may require innovation, or it offers visibility or other cost benefits. You can also use Design thinking during the sprint when a particularly difficult problem arises.
5. Design Patterns
Design patterns enable delivery of a consistent user experience. It also reduces design and development times. These patterns must be created keeping in mind that they should work for everyone and can be easily implemented. Design patterns work as building blocks allowing teams to eliminate lower level design decisions.
6. Periodic Testing
You can set up a testing schedule according to the characteristics of the project. It can be once a week or once during the sprint. Whatever the schedule, test before the design is mature and coding is finished. Test simple prototypes to understand the viability of ideas, during the early stages. Test the working software in order to improve the design in later stages. It is also important to plan ahead and recruit B2B and B2C users for testing.
design thinking and agile methodology foster Innovation, productivity and profits. Every type of business benefits from this power combo, not just software development. Each concept brings unique advantages and the benefits are amplified when combined. The end result is a process that flows effortlessly from idea to production.
Technology has been evolving at a rapid pace in the past few decades. With remote devices and cloud computing now a standard in today’s business world, many firms are moving forward and embracing technologies like AI and IoT into their workflows.
Of course, the problem with adopting the new age technology supported tools is determining what can be done with those legacy systems that are not relevant or outdated. For a vast majority of companies, the answer to this is either modernizing the old technologies of completely dropping them off in favor of a modern solution.
Avoid rewriting, build your functionalities instead
The most cost-effective approach when it comes to modernization is to completely rebuild the functionalities in a new platform. People with an expertise in the older platform are going to be extremely expensive and will also be hard to find. Therefore, your primary focus should be on gaining a good understanding of the old system and its functionalities, then build it completely from scratch on a new platform.
Release prototypes for validation, then launch a phased migration
Companies will have to adopt a 2 pronged strategy. They should first release prototypes for validating the business case for the latest technology, then implement a phased migration to replace or augment the legacy technology. The phases migration will enable the enterprise to leverage the new technology with a seamless experience for customers during the transformation.
Disregard systems that cannot be supported
As a businessman, one needs to maintain all the business critical systems. All systems do have ongoing costs attached to it, whether it is technical maintenance or other recurring expenses. Keeping up with the maintenance brings down technical debt and makes those costs more obvious. You must decide if a system is really important enough to support the cost or if it can be completely eliminated. Never put yourself at a financial risk by maintaining unimportant systems.
Implementing the basic elements of a modern system
If you cannot overhaul legacy system all at once, then take a pragmatic approach, initially incorporating the elements such as the distributed workflows, Machine learning, and open protocols. These will serve as the basic foundation of a modern architecture that you can later augment with flexible frameworks and other emerging technologies like blockchain or IoT.
Customers come first
When your company is adopting new technology, the thing that really matters is how your customers will be impacted. Modernizing the tech stacks can be very detrimental to user experience early in the adoption cycle, however, they will certainly pay dividends in the future. This balance between short and long-term customer satisfaction is what agile teams always evaluate.
Opt for agile tools that support existing systems
When you are considering new technologies, look for how it can be integrated with other tools in your tech stack. It is not only critical that the software can do its job, but that it can also play well with others. Fragmented customer data will not just work in the current customer focused era, and any money that you would have spent in the maintenance of the legacy tool must go into integrating all the systems together.
Designing the rollout
It is a known fact that poor execution is what causes the death of technology adoption. Users have a distinct experience when migrating from one solution to another, or to technology from another medium. If the rollout is designed to be informative and easy, the adoption rate is way higher than something that is deployed poorly with no information. The ultimate decision maker is your workforce.
Migrate to cloud
Move all your data to the cloud if you have not already, after which you can take some time off to research on new technology. Find out what competitors are using and understand what tools are trending in your industry. Most of the technologies offer free demos or webinars for you to get more familiar with the tech before making any investment.
Question yourself on the business impact and other possibilities
All the current business leaders know that adopting new technologies will not put a company at risk. However, having a slow approach will. The bigger challenge is when companies fall behind security and remediation. You will have to ask yourself some serious questions such as Will the new technology add value to your business? Will it bring down the risk? Will it help the customers? if you feel that the change would benefit the business as a whole then your path is pretty clear.
Solve evidence-based problems
Most of the company owners are really excited about embracing the latest technology to whatever problems may be in front of them. However, this often results in over-engineering, spending time as well as money without a cost-effective benefit. With this in mind, it is best to start off with actual evidence-based problems. If there are none and your tech is already tech proof, focus elsewhere.
Cloud technology has penetrated every aspect of our lives, both personal and professional. Our music and TV shows are in the cloud. Everything on our phones from to-do lists to random notes is backed up and accessible on the cloud. It has transformed the way we work. It has changed the way businesses function, how teams communicate and collaborate. Before we list how cloud computing is changing the world, let’s see how the cloud works
How Cloud Technology Works?
Cloud isn’t new. It’s simply another term used to describe the internet. The cloud symbol is often used to represent the internet in diagrams. Cloud can be described as the sharing of resources, information, and software through a network of computers.
The hardware and software required locally decreases. The local computers just need to run the cloud computing system’s interface software. The rest of the work is taken care of by the network computers, servers and data storage systems.
Cloud Computing and Business
1. Ability to Scale
Cloud computing allows business to scale efficiently. As they grow, they can expand their infrastructure and capabilities. Firms don’t need to forecast server requirements or buy extra storage space. They just have to adjust their subscription with the cloud service provider. The service provider just allocates more space according to your requirements. This improves operational efficiencies.
Cloud also enables organizations to scale down. This promotes efficient utilization of existing resources. This opens up a plethora of opportunities for both small and large firms.
Toyota, for example, is using cloud technology to convert its cars into a connected platform. Apps that connect these cars to social media sites are hosted on Microsoft Azure. There are also apps that track reward point for using an electric vehicle. These apps enable Toyota to offer an enhanced customer experience. (Source: Business Insider)
Another example is that of Etsy, an e-commerce site for handmade products. Etsy uses cloud computing to analyze data from its monthly website views to offer personalized product recommendations. This analysis is performed at flexible costs. This enables Etsy to be agile and scale up with ease.
2. Improved Customer Support
Employees can now access information that can help them serve customers at any time of the day, from anywhere. Cloud connects employees to potential buyers via a number of devices-mobile, laptop or a desktop. Customers need high bandwidth information in the form of how-to videos. This capability is not just limited to larger firms. Smaller companies can also provide high Bandwidth by leveraging cloud technology.
Many firms now have a self-service portal. This enables faster and more effective resolution of customer concerns. Cloud Technology and Automation work in tandem to streamline the service desk. This reduces ticket response times and improves the overall customer experience. Tickets coming in from multiple channels can be managed through omnichannel support offered by the cloud. This offers greater visibility and easier ticket submission tracking.
InterContinental Hotels Group, is a giant in the hospitality space with over 600,000 hotel rooms under seven brands, including Holiday Inn and InterContinental, uses a hybrid cloud model. IHG speeds up responses to booking inquiries by distributing the room lookup systems to Web sites in data centers 3,000 miles apart, so content can come from the facility closer to the customer.
3. Flexible Work Environment
Cloud computing enables employees to work remotely. Hosted virtual desktops are used to access files from anywhere, at any time. Cloud enables organizations to provide secure remote access to all its remote employees. There is reduced risk of virus outbreaks and other security threats. Firms are no longer concerned about remote employees’ productivity as this can be monitored in real time.
Advances in cloud technology allow firms to hire talent from across the globe. Geographical barriers don’t limit a firm’s ability to acquire a talented workforce. Collaboration and communication tools are also available on the cloud. This improves flexibility and productivity of the remote workforce. An increasing number of firms are thus able to make remote teams work efficiently Buffer for example uses Zoom to run it’s All Hands Meet. Zoom enables the team, spread across 10 different time zones to connect, collaborate and get upto speed.
4. Lower Infrastructure Costs
Firms like Zapier have begun moving towards an entirely remote workforce. This saves the infrastructural costs of setting up an office space. The cost of starting a business is reduced remarkably. Firms don’t need to set up servers and computers. They just need to invest in a cloud service such as Azure or Amazon Web Services.
A study by Backspace reveals that 88 percent of cloud users reported cost savings and 56 percent of respondents said that cloud services have helped them increase their profit margins. Advanced technology is made available at an affordable cost, thus eliminating large upfront investment and maintenance costs. APIs provide seamless integration between apps. For example, accounting software can be integrated with CRMs. These integrations can also be scaled up or down based on business needs.
5. Veiled Complexity
In cloud computing, complexity is often hidden from the end user. Companies can enhance both product and service sophistication while keeping the required level of user knowledge constant. The customer doesn’t need to be concerned about upgrades or maintenance. This can all happen in the background.
Xerox offers CloudPrint solutions, which allows users to get files printed by using Xerox’s cloud to access printers outside their organization. Printing via cloud involves complex data management. This involves file storage, conversion to print ready format and distribution to printers. However, all of this is hidden from the user.
6. Increased Access to Different Customer Groups
Cloud empowers firms to increase market adaptability. They can serve diverse customer groups spread across different devices.
Active Video offers CloudTV. This service combines all video content-Web, TV, video-on-demand and social onto a video device such as set-top boxes or laptops. Content is stored in the cloud and distributed via a consistent user interface across different devices. This increases the reach of web-based user experience.
CloudTV’s functionality creates a seamless environment for pay-TV operators, online video providers, and consumers., It ensures immediate delivery to set-top boxes; streaming cloud-rendered UIs as uniform, no-compromise user experiences to every STB; and delivering online services with the unparalleled quality of service of pay-TV managed networks.
Cloud computing opens up avenues for innovation and disruption in all businesses. As businesses continue to expand and data stockpiles, the cloud will provide new ways to build fast and flexible systems. ideas will continue to emerge and change the way we communicate, shop, work and collaborate.