What is User Story Mapping?

What is User Story Mapping?

In large projects, collaboration and teamwork are often crucial to make iterative and incremental progress possible over time. The more complex the project, the more difficult it is to reach the final goal: connecting with the end-user.

For Software Development projects where a team must carry out complex Testing & QA processes to ensure the final product meets customer expectations, it is vital to have a simple mechanism that allows monitoring that development is directing its resources to meet the corresponding needs.

This is where techniques such as User Story Mapping become a reliable way to create engaging projects that combine the vision of users and developers in a balanced and functional way, creating representative prototypes that provide a glimpse into the final result, and promoting teamwork.

What is User Story Mapping?
User Story Mapping is a technique to set the requirements for a service or product, using inputs from users and developers, so that the essential functions can be determined. This  is called Minimum Viable Product or MVP.

In large-scale projects, the User Story Map can be broken down into two dimensions: the horizontal dimension –also known as Customer Journey– and the vertical dimension, which will help identify the actors involved in the project both directly (users) and indirectly (developers).

Main uses
Initially, the User Story Map can be difficult to implement and much more difficult to identify, especially when many steps are being taken in the development of a project. It generally helps us develop each area where the project has some type of direct or indirect interaction with users. During the development process, we seek to identify each of the variables that will come into contact with the user, such as activities, waiting times, minimum needs, information, interaction with visible content, login, etc.

It is also used to create a user archetype that helps identify different steps that the user will take when using the final product or service, as well as visual designs for each phase of the project, to provide a vision of what the user will experience at each stage.

Implementation process
Implementation can be done in two ways: by making an archetype of the user model (also known as Customer Journey) or by identifying the minimum characteristics of the product; these are also called horizontal dimension and vertical dimension, respectively.

 

Designing an archetype user model (Customer Journey)
A card is made with all the characteristics of a user, so that it can be identified as if it were a real person (for large projects, several cards representing different users are ideal to make testing easier).

This allows us to identify the parameters by which the project can be developed, having each of the users as participants. This phase can be applied as many times as necessary to identify all the existing user archetypes.

 

Setting the minimum characteristics for the product
The second type of implementation is not much different from the first, but in this case, the focus is on the user and type of Customer Journey. This allows us to set the steps that will be affecting the project or even those events that may be important in the final resolution.

 

For example, Huenei IT Services provides multiplatform UX/UI design services, so if a project changes in its final phase and the client requires a custom mobile application, we can provide seamless mobile development.

Benefits
Beyond optimizing resources by allocating all efforts to solving the real needs of users and the key development functionalities, we have found that:

  • User Story Mapping helps build a product from scratch, making it much easier to correct mistakes and evolve your processes in the future.
  • Threads can be detailed for the main processes that were hardly detailed at the beginning. These are vital for creating tailor-made solutions, improving decision-making in the future, knowing what to prioritize, etc.
  • It makes it easier to identify one or more versions of the product that you want to provide to the user before delivery, so the product’s features and functions can be defined more precisely.
  • It helps prioritize activities to avoid delays.
  • Analyze each of the activities performed by the user to create a completely level systemic structure.
  • Help control User Stories in different environments, so that each member of the team can keep track of every movement made in real time.
  • It controls delays or failures of all kinds in a general and structured way, so that it is much easier to foresee future events that may harm the user experience, such as system failures that can be identified by performing a Testing.

Recommendations

  • Implement post-its or any other similar tool (such as billboards) to make the process of writing ideas much easier and more dynamic.
  • Hold constant collaborative brainstorming sessions where you can discuss topics and come up with creative ideas.
  • Keep a record of everything that is discussed during the meetings. This will help you keep a digital record of the topics to discard them in the future.

    Summary
    Developing projects focused on iterative progress is often a challenge for anyone, especially when the project’s main objectives and purpose are unclear. Teamwork is, without a doubt, the basis of everything, and that implementing User Story Mapping is so convenient and easy.

    Huenei IT Services knows that no matter how far you want to go in a project, sometimes choosing a simple technique is the best way to achieve your goals. Software Development Projects, Mobile Development, QA (Quality Assurance) and even outsourcing in IT projects could require a flexible and dynamic technique such as User Story Mapping. It is a fairly intuitive method focused on collaboration where each member of the development team is encouraged to participate and come up with ideas that can bring the project closer to its final resolution.

    The impact of story mapping on a team’s work dynamics is definitely positive, and aside from facilitating an understanding between developers and users, it promotes communication within and outside the team, a factor that can make a difference in any project.

    Key elements of DevOps

    Key elements of DevOps

    What is DevOps?
    The combination of “development” and “operations” known as DevOps has brought about a cultural change closing the gap between two major teams that had historically functioned separately. This relationship reflects a culture that fosters collaboration between both teams to automate and integrate processes between software development and IT teams in order to build, experiment and project software in the shortest possible time.

    Thanks to this, the capacity of a company or institution to provide almost immediate applications and services is also increased, allowing them to better serve their clients and compete more efficiently in the market. The teams can use innovative practices to automate processes that were previously carried out manually, always relying on tools that help them manage and optimize applications faster.

    DevOps can operate under a variety of models where even QA and Security teams can be integrated into the mix of development and operations teams, from development and testing to application deployment. This is especially common when security is a priority in a project.

    How do I know if I need DevOps?
    If your company or organization is going through any of these situations, it is quite likely that you will need to implement a dynamic DevOps:

    • The development team is having trouble optimizing old code, creating new code, or preparing new product features.
    • Disparities between development and production teams have caused errors and compatibility failures.
    • The improvements that were implemented (related to the software deployment) are currently obsolete.
    • Your company is experiencing a slow time-to-market, that is, the process that goes from code development to production is too slow and inefficient.

    How to carry out a DevOps implementation process

    Adopt a DevOps mindset
    Identify areas where your company’s current delivery process is ineffective and needs to be optimized. This will be a great opportunity to bring about real change in your organization, so you must be open to experimentation. Learn from possible short-term failures, they will help you improve; do not get used to accepting inefficient dynamics solely based on “tradition”.

    Take advantage of the metrics
    It is important to choose the correct metrics to verify and monitor the project. Do not be afraid to measure what might not look good at first, since this is what will help you notice real progress, as well as real commercial benefits.

    Accept that there is no single path
    Each organization must go through different DevOps circumstances linked to its business and culture, where the way they should do things will depend more on how patterns and habits within teams can be changed than the actual tools used to enable automation.

    Don’t leave QA aside
    Companies that implement DevOps often focus on automating deployments, leaving QA needs aside. Although we know that not all tests can be automated, it is essential to automate at least the tests that are run as part of the continuous integration process, such as unit tests or static code analysis.

    Learn to look at automation from a smarter perspective
    You can’t really speed up delivery processes without automating. The infrastructure, environment, configuration, platform and tests are written in code. Therefore, if something begins to fail or becomes ineffective, it is probably time to automate it. This will bring various benefits such as reducing delivery times, increasing repetitions and eliminating drift from the configuration.

    Main benefits
    There are several reasons why DevOps is useful for development teams, below we will examine the most important ones:

    • Due to its high predictability, the DevOps failure rate is quite low
    • This dynamic allows you to reproduce everything, in case you want to restore the previous version without problems
    • If the current system is disabled or some new version fails, DevOps offers a quick and easy recovery process
    • Time-to-market reduced to 50% through optimized software delivery. Good news for digital and mobile applications
    • Infrastructure issues are built into DevOps, so teams can deliver higher quality in app development
    • Security is also incorporated into the software life cycle, also helping to reduce defects
    • DevOps leads to a more secure, resilient, stable and 100% auditable change operating system
    • Cost efficiency during development is possible when implementing DevOps tools and models
    • It is based on agile programming methods, allowing it to divide the base of the largest code into smaller and more adaptable snippets

    Summary
    Before DevOps arrived, development teams and operations teams worked in isolation, resulting in much longer times than it typically takes for a real build. This model was quite inefficient as testing and implementation was carried out after design and build, plus manual code deployment gave way to multiple human errors in production, further slowing down any project.

    With the implementation of DevOps, the speed of development has been increased resulting in fast deliveries and higher quality updates; security has also been increased, making it one of the most reliable systems. Today’s digital transformation has increased the demands for software development, and DevOps has shown that it can cover all needs quite well and meet market expectations.

    Definition of Done in Project Management

    Definition of Done in Project Management

    Project management in the technological field is a key element for the success of any operation, since it lays the foundations and general structure of the project to be carried out. Management is important because other elements are built on this structure, such as interface design, user experience, concept validation, quality tests, among others.

    For these projects to progress, we must first understand their purpose, as well as the current, future, explicit and implicit needs of our clients, their end-users, and the respective stakeholders. Subsequently, and considering the scope of the solution, we split the project into phases that we are able to carry it out in an agile and efficient way.

    This is where the difficulty comes in, since we must strategically allocate each activity, understanding that we must complete one to continue with the next. Therefore a question constantly arises: is this task/activity Done? Is it not related to another future task that may affect its state?

    These and other questions are highly recurring, being the main discussion that both the client (Product Owner) and the project leaders should have on the part of the software development companies.

    Defining the meaning of Done
    Definition of Done (DoD) is the understanding that all conditions, or acceptance criteria, that a software product must satisfy have been fulfilled, so that its functionally meets the requirements of a user, client, team, or is available for use by another system, complying with the set quality standards. This prevents any incomplete feature/functionality from being put into production, generating errors and the need for rework, as well as dissatisfaction among customers and/or end-users.

    This definition is set at the beginning of each project, usually during meetings held by the Product Owner and development leaders. However, as the project progresses, the definition usually needs to be modified several times so that expectations match practice, quality standards, work processes, etc.

    Understanding when a feature/functionality is Done helps us get a better idea of where a project is at, allowing us to make more accurate and clear decisions about how much is to be completed and when the respective resources should be included in the project.
    A key element, which helps us enormously in this definition, consists of the so-called User stories. These could be defined as the path that users follow within our development to carry out the desired tasks.

    One of the biggest risks of not having a clear definition and understanding of the parts can arise precisely when presenting all the requirements completed during the project, at the end of each iteration, if requirements are not fully met at the time of the final revision. This would give way to discussions around the real progress of the project.

    The importance of agreeing on the terms
    When a user story or an increment (set of stories) is Done, everyone on the team should understand the same thing: this functionality/increment can now go into production. Although this understanding is the result of transparency and trust between the parties, the most evident stage is when we move on to the next phase of the project, for example: when the Scrum team finishes a sprint.

    Another important aspect to define is how to complete a feature, functionality, story, or increment to move to the next stage. If this is of vital importance for the entire project, then it should be considered as a minimum criterion. Otherwise, misunderstandings may occur again.

    However, the definition of Done may evolve. As the relationship between the Product Owner and the Scrum team matures and develops positively, the old definition of Done may be expanded during the Retrospective and feedback meetings, including new criteria of higher quality, based on more practical parameters.

    Relationship between Done and Acceptance Criteria
    An important element to determine the status of some features, functionality, etc. is the so-called Acceptance Critera. Basically, it involves all the minimum requirements necessary to move on to production, on a technical, functional and operational level, among others.

    The acceptance criteria are important for:

    • Managing expectations, both for the Product Owner and for the Scrum team.
    • Defining scope and reducing ambiguity.
    • Setting test criteria for quality control.
    • Avoiding scope changes in the middle of the Sprint, which would directly affect planning.

      Use of the Definition of Done in the phases of a project
      Once this definition and the minimum Acceptance Criteria are understood, those responsible for planning the project will be able to prepare the appropriate sheet/roadmap for the development of the product/service, as well as a global estimate for the efforts to be invested in order to comply effectively with User Stories.

      This process also sets the amount of work to be defined in each Sprint, since this will be used as a guide to meet the criteria set during the planning meeting and the subsequent follow-up and retrospective meetings. This results in better evidence upon completion of each phase of the project and the start of the next.

      Impacts of the lack or misapplication of the Definition of Done
      One of the main effects of an incomplete or misapplication of the Definition of Done is Technical Debt, which refers to the additional work produced by the implementation of a functionality or feature that was not completed, or that did not comply with all the minimum criteria, such as the appropriate quality tests, or documentation.

      As a main consequence, teams must rework to finalize the minimum requirements in the previously approved function/characteristic, which creates delays and loss of resources.

      Tips to keep in mind when writing the Definition of Done

      • Engage the team: include the largest number of responsible team members during the planning stage; this will allow everyone to provide their point of view and bring topics to the table that otherwise would be seen later in the project. This improves the vision of the project and sets when one phase would end and another would begin.
      • Create user stories: This valuable resource allows us to identify needs from the user’s point of view. The better defined they are, the easier it will be to determine when development is Done.
      • Meeting all technical requirements: all functional and technical requirements must be met so that the development matches the accepted quality parameters, thus ensuring the expected performance of the application.
      • Compliance with requirements: all the functionalities and requirements must be met at a technical level so that the development has the accepted quality parameters, thus ensuring the expected performance of the application.
      • Functional and non-functional testing: validating the quality and properly testing all technical requirements is key. No development of any kind should be considered Done without having gone through the Testing & QA process.
      • Contemplate the Epics:where Done at this level can refer to a strategic priority of the organization, an objective of the business plan, or some set of requirements that satisfy a market need.

      Summary
      The art of managing a project goes beyond dividing it into phases and allocating resources and delivery dates. The most important aspects are understanding the client’s requirements and having the technical expertise necessary to allocate resources correctly.

      Huenei’s Agile Services Proposal includes agreeing with its clients on the Definition of Done, allowing transparency in the results and confidence in the work progress.

      Likewise and as part of the commitment in the application of our Customer Orientation and Efficiency values, we monitor and carry out performance effectiveness metrics for our teams by measuring the level of rework due to deficiencies in the application of the Definition of Done and the acceptance criteria.

      In terms of tasks, the entire team (both internal and on behalf of the client) must be in tune and understand what is needed for software development, feature, and functionality to be fully completed, allowing for the progress of the project, just like raising a flag to indicate that something is missing.

      Key concepts about acceleration with FPGA

      Key concepts about acceleration with FPGA

      In our previous article “Hardware Acceleration with FPGAs“, we learned about what programmable logic devices are called FPGAs (Field-Programmable Gate Array), discussed their use as a companion to CPUs to achieve this acceleration, and named some advantages of use versus GPUs (Graphics Processing Unit).

      To get a better idea, we will delve into the technical aspects to understand how they generally work, from how acceleration is achieved or how technology is accessed, to some considerations for its use with a software solution.

      Key concepts
      The two main reasons why FPGAs have higher performance than CPUs would be the possibility of using custom hardware and its great parallelism power.
      Let’s take as an example to perform a sum of 1,000 values, in the case of CPUs, which are made up of fixed general-purpose hardware, the process would begin with the storage of the values ​​in RAM memory, then they pass to the internal memory of quick accesses (memory Cache) where they will be taken to load two registers.

      After configuring the Logical Arithmetic Unit (ALU) to achieve the desired operation, a partial sum of these 1,000 values ​​is performed and the result is stored in a third register. Then, a new value is taken, the partial result obtained in the previous point is loaded and the operation is performed again.

      After the last iteration, the final result is saved in the Caché memory where the information will be accessible in case it is required later, being stored in the system RAM to be a consolidated value of the running program. In the case of an FPGA, the entire previous cycle is reduced to 1,000 registers, where their values ​​are directly added at the same time.

      We must bear in mind that, sometimes, the FPGA will have to read values ​​from a system RAM memory, finding itself in a situation similar to that of the CPU. However, the advantage over CPUs is that it does not have 1,000 general-purpose registers that can be given the exclusive use of storing values ​​for a sum. In contrast, a CPU has few registers available to be shared in performing different operations.

      An example to understand the power and acceleration of FPGAs would be to visualize that we have a loop of five instructions in the CPU’s program memory, it takes data from memory, processes it and returns it. This execution would be sequential, an instruction per time-lapse, forcing them to get to the last one in order to start the process again.
      In an FPGA, the equivalent of each of the CPU instructions can be executed in a parallel block, feeding each input with the previous output.

      As we can see in the image, we see that the time elapsed until the first data is obtained is the same in both cases, however, the period in which 4 results are achieved in a CPU is achieved up to 16 in the FPGA.
      Although it is a didactic example, keep in mind that, thanks to the average hardware with which FPGAs can be configured, the acceleration could be up to hundreds or thousands of times in a real implementation.

      It should be noted that FPGAs used as accelerators that accompany a CPU has spread in recent years. On the one hand, thanks to the high transfer rates achieved by the PCI Express protocol (used on the PC to interconnect the two devices in question).

      On the other, given the speeds and storage capacity offered by DDR memories. For what accelerating makes sense, the amount of data involved has to be such that it is worth the entire process of moving it to the accelerator. On the other hand, we must be in the presence of a complex mathematical algorithm, where each step requires the results of the previous step, capable of being divided and parallelizable.

      The Hardware Needed for Acceleration
      The two main manufacturers of FPGAs, Xilinx, and Intel, offer a variety of accelerator cards, called Alveo and PAC respectively, that connect to the PCI Express buses of a server.
      When wanting to include them in our infrastructure, we must consider the specifications of the receiving server equipment, as well as the system configurations and licenses of the development software.

      There are services, such as Amazon, that offer ready-to-use development images elastically, as well as instances of Xilinx hardware. Keep in mind that there are also other services, such as Microsoft Azure whose instances are based on Intel devices, or in the case of Nimbix, with support from both platforms, to name a few.

      Using accelerators
      Accelerator development is a task associated with a circuit design that involves the use of a hardware description language (HDL), although you can alternatively High-Level Synthesis (HLS), a subset of the C / C ++ language. Finally, OpenCL can be used just like in developing GPU accelerators. Usually, this type of technology is binding on Electronic Engineering specialists such as programming experts.

      Fortunately, both technology providers and third-parties offer ready-to-use accelerators for known and widely used algorithms. Accelerated software applications are written in C / C ++, but there are APIs available for other languages, such as Python, Java, or Scala.

      In case you need to perform any additional optimization, you will need to convert C / C ++ applications on a client/server, create a plugin, or perform a binding. In addition, there are also frameworks and libraries ready to use without changes from the application, related to Machine Learning, image, and video processing, SQL and NoSQL databases, among others.

      Summary
      From Huenei, we can accompany you through the adoption of this technology. After analyzing your application, we can offer you the infrastructure that best suits your processes. One option is advice on the use of available frameworks, libraries, and accelerated solutions, which do not require changes to the source code.

      Another alternative is refactoring using a special API with custom accelerators, or directly initiating developments with a view to using these solutions. In any case, you will have the guide of specialists who are up to date with the latest trends in this area, which are so necessary in order to face the challenges of data with exponential growth and the use of computationally complex algorithms.

      Tools to make an Interactive Prototype

      Tools to make an Interactive Prototype

      The creative process to design an efficient interface and user experience is crucial in a Mobile Application Development project, since important variables depend on it, such as the adoption rate of end-users, as well as the general satisfaction index.

      For this reason, software development companies place a lot of emphasis on optimizing the design and approval process, validating all proposals before starting the development phase, which is the one that consumes the most resources; resorting then to the use of tools such as the Interactive Prototype.

      Today, there are many tools that provide the opportunity to review all phases of a project, stimulate feedback among team members, and not least: it gives us a fairly clear idea of what the project experience will be like. user.
      Taking into account the importance of this phase in a development project, we have compiled the best tools to make an interactive prototype:

      Flinto
      It is an application produced for MacOS, widely recognized and used by the most demanding designers to create interactive and animated prototypes in software development. Among its main functionalities, we could name the following:

      • Animated transitions:Flinto has an excellent transition designer that allows you to create your own animated transitions in a very simple way. You do not need to schedule, or schedule, the transition designer is quite intuitive, you just have to place any element where you want and it will be ready.
      • Various behaviors: With the behavior designer you can create micro-interactions within the screens, a perfect function if you want to add loop animations, buttons, scrolling animations or switches.
      • Scrolling feature: You can add scrollable areas with just one click and also create amazing animations based on the scrolling found in the behavior designer.
      • Drawing Resources: excellent drawing tools that will allow you to design simple models to your liking or edit texts and shapes inserted from Sketch. You can even make animations of vector curves.

      Learn more about Flinto on their website.

      JustInMind:
      It is a fairly intuitive and dynamic tool for creating prototypes “all in one” recommended for applications and web pages, with it you can review from wireframes to highly interactive prototypes.
      JustInMind will allow you to start a project from the beginning, for example, go from clickable wireframes to 100% interactive prototypes in order to have a very broad idea of mobile gestures, online interactions, making the UX / UI work easier. Among its main functionalities are:

      • Efficient design: with this tool you can choose the size, style and distribution of all kinds of elements in the user interface in order to adjust it to the appearance of your screens.
      • Online interactions: You have the possibility to design web experiences through a wide catalog of interactions and animations, ranging from simple links to increasingly complex interactions.
      • Infinity of mobile gestures: You can choose from a wide variety of gestures that will allow you to slide, move, touch, rotate and even pinch the prototype of your mobile application.
      • Liquid design: defines liquid containers thanks to which the elements of a page will be able to adapt without problems to the different screen sizes, aspect ratios and orientations.
      • Automatic size adjustment: It will allow you to instinctively change the size of the groups of elements on each page, saving multiple changes in the software design and giving a real space for creation.
      • Featured Object Attachment: This feature enables object retention in containers or displays, a feature that combined with free movement provides more responsive experiences.

      Want to know more about JustInMind? Check their official site.

      InVision
      This tool gives you the facility to share and comment on a project live with the client, making it an excellent strategy to manage and streamline times and processes.
      You can also manage the versions of your projects by synchronizing Illustrator or Photoshop with the app, preventing you from getting lost in a maze of folders and layers of various files. Some of its features include:

      • Presence of click and over-click: You can choose between click or scroll access points to indicate what are the user flows in the prototype.
      • Access points to other windows: InVision enables you to configure links that link to other screens in your prototype, external URL style, anchor points, quick access and more.
      • Template design: thinking about those recurring elements such as menus, this function enables you to configure templates with access points for this type of need and apply them globally to the prototype through a click.
      • Gesture Inclusion and Transitions: Gestures like double tap and swipe can be added to show interactions in the prototype and enhance the user experience in real life.
      • Various interactions and animations: Introduce animations such as pulling down or to the right to reveal the interaction capacity of your prototype.

      Check Invision website to know more about their tool.

      Are you not clear about the benefits of making an Interactive Prototype? We let you know in our blog post “Benefits of making an interactive prototype“.
      Fluid UI
      Ideas can be prototyped in no time thanks to Fluid UI, and not only that, it is possible to share, collaborate and feed back with the opinion of your team, recommended for small applications.
      Design the layout of the primary views of your app linking each view to controls that connect with others, giving way to a more interactive, dynamic and representative demonstration of the final result. Its main characteristics are:

      • Effective prototyping: it has a fairly complete and pre-built user interface kit to design materials, Wireframing, iOS, among others.
      • Collaboration in real time: provides the possibility for the entire team to work simultaneously on the same prototype.
      • Dynamic previews: Adding interactions to your prototype will be more fun, efficient and productive thanks to the visual linking function.
      • High and low fidelity: Fluid UI is compatible with any style you require, regardless of whether it is a high or low fidelity prototype.
      • Access from any device: it is possible to access the prototypes in the desktop app or by logging on to the Internet, without any problem.
      • Mobile testing available: With Fluid UI you can test your prototypes on various mobile devices, such as phones or tablets, through free playback apps.

      For more information about Fluid UI, visit their website: https://www.fluidui.com/

      Proto.io:
      Perhaps its most outstanding feature is the inclusion of an engine that allows you to create animations for mobile applications through a timeline that will determine how long the animation will last. Other of its functionalities are:

      • Easy drag and drop action: Special for moving files from the desktop directly to the panel for quick loading, making it easier for you to find all your assets.
      • Masking Tool: Mask, crop, frame or create animations without leaving the Proto.io editor.
      • Various animations available: They include scale, move, rotate, resize and fade and can be applied to any element.
      • Actions: With an extensive series of actions, you can navigate, use logic, control emails, GIFs, audios, videos, switch screens, make a call, visit a URL and more.
      • Export as HTML: Ideal for previewing and storing the project even offline, as well as for downloading all Javascript, CCS, and HTML files plus all project assets.

      At https://proto.io/ you will have the opportunity to know all the details of this tool.

      Summary
      The good user experience is becoming an end rather than a means thanks to the weight it has on companies achieving their business objectives.
      A satisfied user is not only more likely to use our application more, increasing the possibilities of monetization, but also tends to recommend it more, allowing more users to be reached without investing so many resources in marketing and recommendation.
      If you want to know more about our development services, we invite you to visit our Mobile Development page.