November 5, 2024

Involving Real Users To Design Best In Class Experiences. 

At DeveloperTown, we believe in validating our product assumptions and designs with users ensuring we are building what users want / need. Often times, product teams engage UX Research during discovery phases, at DeveloperTown we believe that UX Research should continue to be assessed throughout the design and development into when the feature or application has launched. This approach can be applied to both system replacement / modernization as well as blue sky products.  

So how should you get started with involving users in your design and development cycle? 

Look to build pipelines of users that can be engaged with user interviews and user testing sessions as well as larger groups that can be sent surveys and other quick touch by valuable information gathering.  

We like a tool called Maze to organize these groups and manage all correspondence and research gathered. Maze is a SaaS based UX Research tool that can be used to created user groups for products as well as conduct research right in the tool. We can create surveys to send to users or embed figma prototypes to get feedback on application interactions. This gives our team quick access to data that we use to validate our approach. 

Ideally, we would advocate for product teams to create two groups of users.

  1. Product Advocates - These are stakeholders, sales, customer support and users who are key influencers that help drive product roadmaps. We would expect this group to be the smaller of the two. This group could be as small as 3-5 and as large as 40-50 depending on the number of stakeholders
  2. General Research Pool - This group consist of users of the application and is a much larger group. This is a group that as we have questions, we could send surveys for their thoughts or send Figma prototypes for quick feedback on flows and interactions from boots on the ground.

So what happens if I can’t get access to actual end users of my product? 

We would start to look at services that can help identify individuals with advanced attributes to pair down and invite those users into our groups. This is a paid service that is pretty quick but also comes with a cost to get access to those hard to identify networks.  

October 18, 2023

The Role of Collaboration in Crafting Testable User Stories 

Effective collaboration is the cornerstone of successful software development, and when it comes to creating testable user stories, this collaborative spirit becomes even more critical. In this blog post, we'll explore how the synergy between developers, testers, and product owners plays a pivotal role in crafting user stories that are not only clear in their intent but also inherently testable. 

Bridging the Gap Between Developers and Testers 

Let’s start by calling out the traditional gap that often exists between developers and testers. Even the natural workflow of the work item keeps the testing team more naturally involved towards the end when work is ready to be reviewed. But the first step towards crafting testable user stories is just that – removing the distance. Make sure your QA team is involved in planning and refinement. Get the two disciplines talking earlier and your team will reap the rewards. 

The Product Owner's Perspective: Aligning Goals 

A significant component in a testable user story is a clear perspective of value from the product owner. A product owner's vision, when clearly communicated and understood, forms the basis for writing improved, comprehensive user stories. The alignment of goals between the product owner, developers, and testers is essential for creating user stories that meet both business objectives and testing requirements. 

Workshops and Joint Sessions for Clarity 

Are you noticing alignment on stories seems to slip mid sprint? Have no fear. A collaborative workshop or joint session where developers, testers, and product owners come together to discuss upcoming user stories can be the remedy. These sessions, when run efficiently, can serve to iron out details, clarify doubts, and foster shared understanding of what the purpose of the PBI is. 

Continuous Communication Throughout the Sprint 

Communication is not a one-time affair, but a continuous process and the scrum master and team must keep ongoing communication throughout the sprint. Regular stand-ups, updates, and a shared digital space for documentation can significantly enhance collaboration, ensuring that everyone is on the same page regarding the evolving user stories.  

Retrospectives are also critical in ensuring team members are sharing with one another and the business. The scrum master should be mindful that members feel safe sharing but also demonstrate that the feedback is received by acting on it. The team will pay attention to what is acted upon and are more likely to give feedback if they know they’re being taken seriously. 

Feedback Loops: Iterative Refinement 

Finally, it’s important to highlight the significance of feedback loops. By having iterative feedback loops between developers, testers, and the product owner, user stories can be refined, and any emerging issues can be addressed promptly. This continuous refinement process contributes to the creation of user stories that are inherently testable and aligned with the evolving needs of the project. 

Conclusion 

There’s no magic spell or pill for crafting testable user stories. By breaking down silos and encouraging ongoing communication among developers, testers, and product owners, teams can create a synergy that transcends the conventional barriers within the development lifecycle. User story creation is not a one-time task but an iterative process with continuous refinement. Regular reviews and adjustments contribute to the evolution of user stories that not only meet testing standards but also adapt seamlessly to the evolving needs of the project. 

Cultivate a culture of collaboration, uphold ongoing communication, and embrace iterative refinement to empower your teams to create robust, testable user stories that will leave your product owners and customers smiling.  

September 26, 2023

JavaScript Framework Comparison

In the rapidly evolving landscape of web development, choosing the right JavaScript framework is crucial for building efficient, maintainable, and user-friendly applications. With a multitude of options available, developers often find themselves in a dilemma about which framework to choose. In this post, we'll take an in-depth look at six popular JavaScript frameworks: React, Solid, Vue, Svelte, Angular, and Qwik. We'll explore their key features, pros, and cons to help you make an informed decision on which is right for you. 

We’ll also include some code showing what a simple select component might look like in each framework, a few stats about the built project, and thoughts while building out the component. All code is available on github.com. Let's get into it. 

React 

React is developed and maintained by Facebook and has become a cornerstone of modern web development. It's a component-based library that focuses on building user interfaces and allows developers to create reusable UI components. 

Building out a simple Select component is straightforward, though that could be because React is our preferred framework and the one we use the most. React is sometimes criticized because you have to explicitly handle setting the value and handling the change events, where some frameworks like Vue add some syntactic sugar to make setting this up easier. A project consisting of only this component had a build size of 143kB which is not terrible, but hardly great compared to some of the newer frameworks. 

Link to code 

Pros: 

- Virtual DOM: React's Virtual DOM efficiently updates only the necessary parts of the actual DOM, leading to better performance. 

- Large Community: React has a massive community, resulting in extensive documentation, tutorials, and third-party packages. 

- Component Reusability: React's component-centric approach promotes code reusability and maintainability. 

- Strong Ecosystem: The ecosystem includes tools like Jotai, Zustand, and Redux for state management and Next.js for server-side rendering. 

Cons: 

- Learning Curve: The component-based paradigm and JSX syntax might have a steeper learning curve for newcomers. That being said once you learn JSX it can be used in other frameworks like Solid, Qwik, Astro with only minor differences. 

- Performance Optimization: Understanding when and how to use “useMemo” and “useCallback” are essential to getting the best performance but are also easy to mess up.  

- Boilerplate: Complex applications may require additional libraries, potentially leading to more boilerplate code. 

Solid 

Solid is a relatively newer framework that aims to provide a highly efficient reactivity system. It focuses on minimalism and optimal performance by reducing unnecessary re-renders. 

One thing you might notice when looking at this Solid component is how similar it is to React’s implementation! The only differences are the <For/> component to loop over the options. Technically you can actually write the loop exactly like React’s, but for best performance Solid recommends using the <For/> helper to iterate. One thing to be careful of in Solid though is that when you destructure props like we are here, you could run into issues where you make a reactive prop non-reactive. It's not an issue here but it is an issue that is easy to make if you are coming from React. 

The size of this project when built is only 14kB, which is tiny, making Solid a great choice if you need a tiny JS footprint and excellent performance, especially if you already know React. 

Link to code 

Pros: 

- Reactive System: Solid's fine-grained reactivity system ensures efficient updates without unnecessary re-renders. 

- Small Bundle Size: Solid's runtime is lightweight, resulting in smaller bundle sizes and faster load times. 

- JavaScript Syntax: Solid's syntax is similar to Reacts, making it accessible to developers already familiar with that. 

Cons: 

- Smaller Community: Compared to older frameworks like React and Vue, Solid has a smaller community and fewer third-party packages. 

- Limited Ecosystem: While Solid's core is robust, it may lack some of the extensive tools and libraries available in other frameworks. 

Vue 

Vue.js has gained popularity for its simplicity and ease of integration. It offers a flexible and progressive framework for building user interfaces. Recently it has released a new API called the Composition API, which can help organize your code and make your code easier to reason about. Supporting two APIs has muddied the water when it comes to finding guides/references online. 

Vue diverges from React quite a bit with its default template syntax, though it is possible to use Vue with JSX. For the most part Vue wants you to feel like you're just writing HTML, with a few extra directives to extend it. Vue is a bit more magic than React and can get more complicated when writing highly reusable components, but the more complex components can potentially lead to easier implementation when using the components.  

The build size of this project came out to be 51kB which is firmly middle of the pack, but definitely not bad at all.  

Link to code 

Pros: 

- Approachable Syntax: Vue's templating syntax is easy to understand for both newcomers and experienced developers. 

- Versatile: Vue can be used for building small components or full-fledged single-page applications. 

- Comprehensive Documentation: Vue boasts clear and comprehensive documentation, aiding developers of all levels. 

- Great Supporting Packages: Vue maintains some great support packages for some common things that most apps need. For routing, most people are going to reach for vue-router. For state management, most will be using Pinia, which are both excellent.  

Cons: 

- Scaling Challenges: While Vue is great for smaller projects, it might face scalability issues in larger applications compared to other frameworks like React, though one might argue the Composition API helps with this. 

- API Confusion: There are a lot of ways to write Vue. There is the Options API, the Composition API, and the Composition API using the setup script. If that all sounds confusing, well it is! This is mostly an issue with learning the language, and discovering what works best for you, but can definitely be confusing. 

- Smaller Ecosystem: Vue's ecosystem, though growing, might have fewer options when compared to React's ecosystem. 

Svelte 

Svelte is unique in that it shifts a significant portion of its work from runtime to compile-time, resulting in highly optimized applications. Svelte, while new, has been battle tested in large applications like the New York Times. Svelte can be run as an SPA, though for SSR there is Svelte Kit. 

Working with Svelte is very easy, and a lot of thought has been put into DX. The templating engine is essentially just HTML with some directives for control flow.  

This project’s build size is a paltry 8kB. This is because Svelte isn’t really a framework, it’s a compiler. That’s why some people call it the disappearing framework.  

Link to code 

Pros: 

- Zero-runtime Approach: Svelte compiles components into efficient JavaScript at build time, resulting in faster runtime performance. 

- Declarative Syntax: Svelte's declarative syntax makes it easy to learn and understand. 

- Automatic Optimizations: Svelte's compiler optimizes code automatically, reducing the need for developers to manually optimize. 

Cons: 

- Smaller Community: While Svelte's community is growing, it might not be as extensive as some older frameworks. 

- Learning Curve: Developers accustomed to other frameworks might need time to adjust to Svelte's paradigm. 

- Typescript Support: Because it has its templating system, the Svelte team also has to support its own LSP (Language Server Protocol) for TS support, and it doesn’t always work as well as JSX implementations. 

Angular 

Angular, developed and maintained by Google, is a full-fledged framework that offers a comprehensive set of tools for building dynamic web applications. Angular has a long history, and while it is one of the oldest, it still has a fairly large base of support, especially amongst bigger enterprise companies. 

Of all the Select components, this one is the most complex in my opinion. Angular has a much different paradigm from any of the other modern frameworks. Angular still holds firm to the separation of concerns and thus you will typically have 3 files per component; HTML, JS, and CSS. 

The build size of this Angular project clocked in at a hefty 179kB. That is a pretty large starting point, and the more modern frameworks have definitely made big strides in reducing bundle sizes. This is probably not a big deal for most web apps, but if you are targeting low mobile devices this could be an issue to consider. 

Link to code 

Pros: 

- Complete Solution: Angular provides everything needed for building complex applications, including routing, state management, and more. 

- Strong Typing: Angular is built with TypeScript, which offers strong typing and enhanced code quality. 

- CLI Tooling: Angular CLI streamlines project setup, testing, and deployment processes. 

Cons: 

- Complexity: Angular's extensive features and concepts can lead to a steep learning curve, especially for beginners. 

- Heavier Bundle: Angular applications might have larger bundle sizes compared to some other frameworks. 

Qwik 

Qwik is the new kid on the block and is probably not production ready for anything mission critical, but it is a very promising framework. What makes Qwik so exciting is that it ships only tiny amounts of JS to the client and the rest of the needed JS is lazy loaded.  

The first thing you’ll notice about the below Select component is how similar it is to React and Solid. This makes getting up to speed easier, though learning all the new paradigms of how Qwik functions can take a while. For instance, any JS you put in the body of your component will never execute on the client. Instead, it will run on the server, and then resume on the client. This resumability means that your props all need to be serializable, or passed as a QRL.  

Getting a build size for Qwik doesn’t make a ton of sense because Qwik doesn’t function as a SPA and requires that you have a JS server to host the app. In general, on first load, you can expect around 6kB or so of JS. It will never load JS that isn’t needed which is a huge shift in how most frameworks handle JS. Qwik is definitely a framework to keep an eye on. 

Link to code 

Pros: 

- Server-Side Rendering (SSR): Qwik is designed for optimal server-side rendering, leading to improved initial load times. 

- Component-Centric: Qwik follows a component-centric model, similar to other popular frameworks like React and also uses JSX. 

- Emphasis on Performance: Qwik places strong emphasis on rendering performance and optimization. 

Cons: 

- Experimental Nature: As of now, Qwik is still in its early stages and might lack the stability and ecosystem of more mature frameworks. 

- Limited Adoption: Due to its experimental status, Qwik might not be the best choice for large-scale production applications. 

Conclusion 

React, Solid, Vue, Svelte, Angular, and Qwik all offer unique features and trade-offs. So how do we pick the framework that is going to bring the most value now and in the long term for our project and org?  

Evaluate these frameworks based on your project's needs to make an informed decision that aligns with your development goals. Project requirements, developer familiarity, performance considerations, and community support should all come into play when thinking through the options. Bundle size, SEO optimization, and the skill sets of your existing dev team are also worth thinking through. 

With all these things to consider, how can you make sure you make the right choice? Well, that’s where we come in. At DeveloperTown, we’ve helped hundreds of clients make the right technology choices over the last 10 years. From picking the right tool sets to mentoring your existing development team, we’re here to help make sure your next project is a wild success.  

July 24, 2023

From Ambiguity to Clarity: The Power of Advanced Prototyping

As Product Designers at DeveloperTown, our job is a unique blend of creativity, problem-solving, and technical acumen. We transform abstract concepts into tangible design artifacts - from user journeys that map the user's interaction with the product, to wireframes that provide a skeletal layout of the product, pixel-perfect hi-fidelity interfaces that represent the exact visual and functional design of the product, and robust prototypes that breathe life into our designs. 

Prototyping, in particular, is a fundamental aspect of our design process. These dynamic, interactive blueprints serve as a critical bridge between design ideas and their implementation. In this article, we delve deeper into how we, at DeveloperTown, leverage advanced prototyping for developer handoffs, client sign-offs, user testing, and design critique. 

Stakeholder Collaboration 

Group of people collaborating around a table

Incorporating stakeholders into the design process from an early stage can leads to better aligned visions, efficient decision-making, and fewer revisions later on. Interactive prototypes allow stakeholders to experience the design in a way that static images or verbal descriptions simply cannot achieve. They can directly interact with the design, understand the user flow, and contribute their feedback based on this first-hand experience. 

At DeveloperTown, we use prototyping as a cornerstone of our stakeholder collaboration. Stakeholders can visualize the product, comprehend its functionality, and provide constructive feedback that enhances the design. Prototypes also facilitate dialogue about design choices and help explain why certain decisions have been made. 

Moreover, prototypes are incredibly useful for client sign-offs. Providing stakeholders with a clickable, easy-to-navigate prototype helps them visualize the final product better than static screens or wireframes. Experiencing the product firsthand assures stakeholders about the design decisions and makes them more likely to spot potential issues or areas for improvement. This interactive feedback loop allows us to refine and finalize the design collaboratively, ensuring that the end product aligns with everyone's expectations. 

In essence, prototypes foster a more transparent, iterative, and collaborative design process with stakeholders. They encourage active participation, mutual understanding, and constructive feedback, making them an indispensable tool in our design toolbox at DeveloperTown. 

User Testing 

User testing an app on a phone

At DeveloperTown, user testing is an integral part of our design process, and prototyping serves as a powerful instrument to maximize its effectiveness. With advanced prototyping, users get to interact with an approximation of the final product. This hands-on interaction elicits more accurate and valuable feedback, leading to more effective design revisions. 

Our approach to user testing with prototypes is multi-staged. Initially, we use low-fidelity wireframes to validate problems, workflows, and foundational interactions. This early-stage testing helps us to iterate quickly, adapt our designs to user needs, and establish a solid foundation for the product's design. 

As we progress further in the design process, we switch to high-fidelity, advanced prototypes that represent a near-accurate depiction of the product’s final implementation. This shift allows us to hone in on the finer details of the design, usability, and interaction. By this stage, we're not just validating the product's purpose and functionality but also refining the user experience to a level of polish necessary for the final product. This meticulous approach ensures we have addressed any potential issues before the project advances to the development stage. 

Advanced prototyping supports a wide variety of user tests, such as A/B testing, usability testing, and more. These methods offer vital insights into user behavior, preferences, and pain points. By integrating prototyping into our user testing processes, we're able to identify and address user problems early on, preventing costly and time-consuming revisions in later stages of the product development cycle. 

Design Critique

Two designers examining post-its on a wall

Design critique sessions are indispensable in our workflow at DeveloperTown. They provide a platform for constructive feedback and innovative solutions to design challenges. Prototyping amplifies the value of these sessions by providing an interactive representation of the design, as opposed to static images or descriptions. 

Through prototyping, design critique becomes a more engaging and productive process. Team members can interact with the design, explore different user flows, and provide informed feedback based on their experience. It's not just about what looks good - it's about what works well and enhances the user experience. 

Advanced prototyping helps us visualize complex interactions, test alternative solutions, and assess the feasibility of design elements. The flexibility of prototypes allows us to iterate quickly based on the feedback received, leading to a more refined and effective design. 

Moreover, prototypes foster better communication during design critiques. They help bridge the gap between what's in the designer's mind and what the rest of the team perceives. This level of clarity streamlines discussions, mitigates misunderstandings, and ensures everyone is on the same page. 

In essence, prototypes have transformed our design critique sessions into dynamic, collaborative, and fruitful discussions. They help ensure our final designs are not just visually appealing, but also intuitive, user-friendly, and align with the project's objectives. 

Developer Handoffs

A group of engineers sitting around a table.

The design to development handoff is a pivotal juncture in any project. It's a phase where precision matters. Any misunderstanding or misinterpretation during this transition can lead to unnecessary rework, project delays, and ultimately, an increase in the cost of development. At DeveloperTown, we've honed our approach to ensure this handoff is as seamless and accurate as possible. 

Prototyping plays a starring role in this process. More than just a representation of design intent, it provides our developers with an interactive, tangible guide to the intended functionality and flow of the product. Advanced prototyping tools such as Figma, Sketch, Adobe XD, and InVision become our instruments of choice, enabling us to illustrate detailed insights into design elements, specifications, and animations. This vivid, visual communication aids our developers greatly during the implementation phase. 

To further solidify the efficiency of this process, we maintain our prototypes as a 'source of truth' throughout development. By using a rigorous change management system, we ensure our prototypes are always up-to-date and reflective of the latest approved designs. This constant reference removes ambiguity for both stakeholders and developers. Viewing a design as a prototype guarantees it's stable, vetted, and ready for implementation. 

In Conclusion

At DeveloperTown, we recognize that prototyping is much more than an intermediate step in the design process. It's an essential tool that fosters effective communication, enhances collaboration, ensures design accuracy, and drives user-centric design decisions. 

From facilitating seamless developer handoffs and thorough user testing, to fostering meaningful stakeholder collaboration and constructive design critique sessions, advanced prototyping is deeply ingrained in our design methodology. It's this emphasis on interactive, dynamic design representation that allows us to deliver products that are not only aesthetically pleasing but also functional, user-friendly, and in line with our clients' vision. 

May 31, 2023

Reducing Human Risk in Software Security

In today's world, the security of software systems is of paramount importance. Organizations invest heavily in sophisticated technologies and complex algorithms to safeguard their applications, yet one often overlooked aspect remains a significant vulnerability: the human factor. Humans, whether developers, administrators, or even end-users, can inadvertently introduce security weaknesses, leaving software systems vulnerable to exploitation. To mitigate these risks, it is crucial to adopt a proactive approach that limits human factors in security throughout the software development lifecycle.  

This blog post explores key strategies for building stronger digital fortresses by minimizing human-induced security threats. 

  1. Cultivate a Security-First Mindset: 

The first step towards limiting human factors in security is to foster a culture of security awareness and responsibility among all stakeholders involved in the software development process. From developers and testers to project managers and executives, everyone should understand the importance of security and prioritize it throughout the development lifecycle. Regular training sessions, workshops, and awareness campaigns can help educate individuals about potential vulnerabilities and instill best practices for secure coding and system administration.  

  1. Implement Secure Development Practices: 

Secure development practices are essential for minimizing human-induced security risks. Embrace frameworks like the Open Web Application Security Project (OWASP) or National Institute of Standards and Technology (NIST) and leverage their resources, such as the OWASP Top Ten, which outlines the most critical security vulnerabilities to address. Integrate secure coding guidelines and Static Application Security Testing (SAST) and Dynamic Application Security Testing (DAST)  tools into the development process to identify and remediate vulnerabilities early on when they are cheapest to fix. SAST tools can be used to scan for a wide range of vulnerabilities, including SQL injection, cross-site scripting, buffer overflows, and insecure coding practices.  DAST tools serve a similar purpose to SAST but have the advantage that these tools can find vulnerabilities that are introduced by runtime behavior and vulnerabilities that are already deployed.  Developing a culture where all code is reviewed before it goes into the main branch can also help catch potential security flaws along with ensuring adherence to secure coding practices.  

  1. Role-Based Access Control and Privilege Management: 

Implementing role-based access control (RBAC) and privilege management mechanisms helps restrict unauthorized access and limit the potential damage caused by human errors or malicious activities. Define  security roles with appropriate access privileges based on job responsibilities. Continuously review security roles and update access rights as employees' responsibilities evolve or change within the organization. Implement the principle of least privilege (PoLP), where individuals are granted only the minimum permissions necessary to perform their tasks, reducing the overall attack surface. 

  1. Robust Authentication and Authorization Mechanisms: 

Human-induced security risks can be significantly reduced by implementing robust authentication and authorization mechanisms. Encourage the use of strong passwords and multi-factor authentication (MFA) to ensure the identities of users accessing the system. Implement granular authorization controls to enforce data access restrictions based on user roles and responsibilities. Regularly review user accounts, revoke unnecessary privileges, and promptly disable accounts for employees who leave the organization. Consider implementing a federated single sign-on service to centralize user management, which can both streamline the process of onboarding new users and ensure that offboarding users doesn’t mistakenly allow continued access to business systems. 

  1. Continuous Security Monitoring and Incident Response: 

Prevention is essential, but a comprehensive security strategy also involves continuous monitoring and robust incident response capabilities. Implement security monitoring tools and intrusion detection systems to detect and respond to potential threats. In the AWS ecosystem, some cost-effective solutions to enable exception reporting and threat detection include AWS CloudTrail to audit any interactions with an AWS account, AWS Guarduty to detect interaction anomalies. AWS CloudTrail and GuardDuty can be integrated with AWS Cloudwatch metrics to alarm when anomalies are detected. Outside of AWS, two other battle-tested tools for reviewing logs as part of continuous security monitoring or an incident response plan are DataDog and Splunk. Establish an incident response plan that outlines the steps to be taken in the event of a security incident, including communication protocols, containment measures, forensic analysis, and system recovery procedures. Regularly test and update the incident response plan to reflect changes in the threat landscape and organizational infrastructure. 

Software development organizations must recognize that human factors play a crucial role in software security. By cultivating a security-first mindset, implementing secure development practices, and embracing role-based access control, robust authentication, and authorization mechanisms, organizations can significantly reduce the risks posed by human-induced security vulnerabilities. Additionally, continuous security monitoring and a well-defined incident response plan are essential for promptly addressing security incidents and minimizing their impact. By adopting these strategies, organizations can build stronger digital fortresses and protect their software systems from the ever-evolving threat landscape, ensuring the security and trust of their applications and users. 

May 15, 2023

Designing for Accessibility

Designing for accessibility means creating products, services, and environments that are usable by individuals with disabilities. This can include people with physical, sensory, and cognitive impairments. Accessibility is not only important for individuals with disabilities, but it is also important for everyone, as it can improve usability and user experience for all users. In this blog post, we will discuss the importance of designing for accessibility and provide some tips for creating accessible designs. 

Why is designing for accessibility important? 

Designing for accessibility is important for several reasons. First, it is a matter of social responsibility. As designers, we have the responsibility to create products, services, and environments that are inclusive and accessible to everyone, regardless of their abilities. Second, designing for accessibility can improve usability for all users. For example, designing a website with clear and easy-to-read text can benefit users with visual impairments, but it can also benefit users who are in a hurry or are using a small screen device. Third, designing for accessibility can help organizations comply with laws and regulations related to accessibility. For example, in the United States, the Americans with Disabilities Act (ADA) requires that public accommodations be accessible to individuals with disabilities. 

Tips for designing for accessibility 

Here are some tips for designing for accessibility: 

  1. Consider accessibility from the beginning: Accessibility should be considered from the beginning of the design process. This means involving individuals with disabilities in the design process and considering their needs and preferences. 
  1. Follow accessibility guidelines: There are several accessibility guidelines that designers can follow, such as the Web Content Accessibility Guidelines (WCAG) and the Accessible Rich Internet Applications (ARIA) specification. These guidelines provide recommendations for making web content and applications more accessible. 
  1. Use clear and concise language: Use clear and concise language in your designs. Avoid jargon, acronyms, and complicated terminology. Use simple and straightforward language that is easy to understand. 
  1. Provide alternative text for images: Provide alternative text for images. This helps users with visual impairments understand the content of the image. The alternative text should describe the content and function of the image. 
  1. Use high contrast colors: Use high contrast colors for text and background. This helps users with visual impairments read the text more easily. 
  1. Provide captions and transcripts for videos: Provide captions and transcripts for videos. This helps users with hearing impairments understand the content of the video. 
  1. Use a logical and consistent layout: Use a logical and consistent layout for your designs. This helps users with cognitive impairments understand the content more easily. 

Summing it all up 

Designing for accessibility is important for creating inclusive and usable products, services, and environments. By considering accessibility from the beginning of the design process, following accessibility guidelines, and using clear and concise language, designers can create designs that are accessible to everyone, regardless of their abilities. 

May 2, 2022

Microsoft Center of Excellence Starter Kit for Power Platform

DeveloperTown believes that the best decisions are made when informed with knowledge and transparency. The Microsoft Center of Excellence Starter Kit for Power Platforms brings both to the surface in a way that would manually not be capable. This centralized solution shines a light on all the efforts of developers and citizen developers across all of the environments of the Microsoft tenant.

Why?
Gaining insight and understanding of what exists today while tracking and governing the new builds

going forward.

The Center of Excellence Starter Kit package is an in depth way to jumpstart your understanding and transparency of how the Power Platform is used throughout your organization.

What?
At its core, CoE Starter Kit is a package of governance tools and metrics. This is a way to foster use and understanding of Power Platform. This centralized, and very thorough package, affords IT and Business leadership the ability to come together and have a full view into the efforts made by everyone in the organization from citizen developers to traditional IT developers.

The Microsoft Power Platform CoE Starter Kit is a collection of components and tools that are designed to help you get started with developing a strategy for adopting and supporting Microsoft Power Platform, with a focus on Power Apps, Power Automate, Power Virtual Agents and SharePoint.

Core. Governance. Nurture. Innovation Backlog.

Who?
A Center of Excellence (CoE) in an organization drives innovation and improvement and brings together like-minded people with similar business goals to share knowledge and success, while at the same time providing standards, consistency, and governance to the organization.

The Power Platform CoE Starter Kit is typically managed and utilized by IT as a starting point for conversation and decision making.

When?
Establishing a Center of Excellence of any kind takes time and attention. Starting early with the Power Platform CoE Starter Kit allows for the necessary stakeholders to better understand what to focus on now.

Where?
Starter Kit utilizes a set of solutions which will be installed to the Power Platform creating dozens of CoE Power Apps and Power BI reports. These dashboards surface all of the different aspects of the organization’s Power Platform journey.

How?
Monitor. Govern. Nurture.

These staples of the Starter Kit are designed to be the easiest and most robust way to get a full view of your environments and what is inside them. Several of the top features to accomplish this include:

  • Environment and environment security management
  • Data loss prevention (DLP) policy management
  • Data integration and gateway management
  • Admin analytics (to view capacity and activity on Microsoft Dataverse, Power Apps, and Power Automate)

April 4, 2022

Replace InfoPath with Microsoft Power Platform

Is your organization still relying on InfoPath to intake business data? If so, here are some important things to note:

  1. Microsoft InfoPath Announcement 2014 – Update on InfoPath and SharePoint Forms
  2. InfoPath is deprecated as of July 2021 – Products Ending Support in 2021
  3. SharePoint Server 2019 Deprecated Features – SharePoint Server 2019 What's New
  4. Only limited support for product through 2026 – MS Lifecycle Policy, InfoPath 2013

So, InfoPath is going away, is it really worth the time and effort to replace them? 

Absolutely! While this may seem like an overwhelming, daunting task, there are HUGE benefits to properly coordinating the replacements of your InfoPath. Let’s look at some of the key benefits:

  • Streamline and modernize older processes
  • Incorporate automation
  • Build in opportunities to leverage your data in a more meaningful way

Ok, so you have loads of InfoPath you need to replace, but where do you start?

Unsure how to start? Consider leveraging Microsoft Power Platform. While Power Platform is not a one-to-one replacement, it is the best option if you are already using Microsoft 365. 

Power Platform doesn’t just give you a means to replace antiquated InfoPath solutions but offers a whole host of new technologies to help you modernize your business process. 

Power Apps – Allows you to create customized, responsive, intake forms with a more modern user experience and standardize your business data. 

Go from this (InfoPath)

Graphical user interface, text, application

Description automatically generated

To this (Power Apps)

Graphical user interface

Description automatically generated Graphical user interface, website

Description automatically generated

Power Automate – Automate manual process with flows, create automated approvals, schedule automations, incorporate chat bots (Power Virtual Agents), leverage RPA (Robotic Process Automation) for your repetitive processes, and so much more!

Power BI – Enhance your business data by creating rich, interactive dashboards and reports, identify trends, transforming data, and more!
Graphical user interface, chart

Description automatically generatedGraphical user interface

Description automatically generated

Get Started Today

Whether you have one or many InfoPath Forms today, getting started can feel overwhelming. With our guidance and experience, taking on this project in an agile way will produce meaningful results. We work with clients to manage this transformation through discovery, planning, development and implementation. 

August 17, 2021

Getting Started with Microsoft Power Platform

So, you’ve decided to give low-code process automation a try and start your journey into using Microsoft Power Platform...Great! But where do you start?

When I started down the path of all things MS Power Platform nearly 5 years ago, there were almost no resources, outside of Microsoft’s documentation. Needless to say, I got my experience through the school of hard knocks. Now, with abundant resources and multiple ways to accomplish the same task, it can be overwhelming to know where to start.

Fear not! Getting started is simpler than you think.

Here are the top 5 things to get any MS Power Platform newbie started:

1. Start small and selfish!

    With tons of potential use cases, it can be challenging to decide which one to tackle first. My recommendation - identify a small task you don’t like doing and automate it for yourself. The best way to launch a successful automation is to start with a familiar task.

    Automated Personal Productivity Task Ideas Using Power Automate:

    • Save all email attachments in OneDrive/Google Drive (beginner - There is even a template for this!).
    • Create calendar events, when email reminders are received, to block time for monthly/quarterly/yearly training or other recurring tasks (intermediate).
    • When accepting new meetings invitations, create a section/page in OneNote for easy note-taking at the ready (advanced).

    2. Research

      With an ever growing sea of resources out there - dive in! Don’t be afraid to go to the deepest parts either.

      Research Tips:

      • Bookmark the good ones, so you have a library of resources to refer back to.
      • Don’t settle on the first method you find because there is usually something easier/more efficient/etc.
      • If using a resource on youtube, don’t be afraid to ask questions in the comments.
      • Keep an eye on the Microsoft Roadmap for the schedule of all the new features/functionality they are working on.

      Some Of My Favorite Resources:

      3. Play!

        Don’t be afraid to roll up your sleeves and start trying out the different Power Platform applications. I recommend starting with the Microsoft App In A Day PowerApps Training. This hands-on experience is a great way to get started. Also remember, it’s ok to fail - Failure is the best teacher!

        “I have not failed. I've just found 10,000 ways that won't work.”

        - Thomas A. Edison

        4. Document, Document, Document!

          Have you ever inherited something (a spreadsheet, application, etc.) you were expected to maintain, with no background information?

          Make sure you write down what you do, preferably in a standardized format. The practice of documenting will not only help you if you need to replicate something, but it will also allow others to see what was done. Additionally, it is the first step in continuous improvement. After all, how can you improve if you don’t know what you did?

          For guidance on standards, there are White Papers for nearly every MS application - all you have to do is a web search for them. Here are a couple to get you started:

          5. Evolve

            Once you have successfully created a few personal productivity automations, volunteer to automate something small for your company (sign up for quarterly pitch-in, annual awards nominations, etc.). Keep pushing the limits of MS Power Platform. After almost 5 years, I still find new functionality to leverage almost weekly and even discovered some new things to try while writing this blog post!

            Happy automating, friends!

            June 14, 2021

            Process Automation: Let the Journey Begin

            There are countless routes explored on a company’s digital journey. 

            Build? Buy? Lease? In-house? Outsourced? On-prem? Cloud? While all of these questions should be asked, with process automation, starting with one use case and opening the feedback loops is the ultimate starting point. You've got to walk before you run, right?

            At DeveloperTown, we started the Process Automation practice in February and are learning so many lessons so quickly.

            Here are a few that we think are helpful:

            1. Use what you've got. You may already be paying for licenses that allow you to get started today. With so many companies on Microsoft’s Business or Enterprise licensing, access to Power Automate and Power Apps may be included in what you already pay for. Look to see what’s available to you before making a big purchase!

            2. Think big, start small. Identifying a use case runs the spectrum of being incredibly easy at times and daunting at others. Don’t believe that you have to solve the end-to-end process with automation in order to get started. Automating pieces of a process is a great place to start. And starting is always more important than perfecting.

            3. The human isn’t being replaced; the tasks are being automated. Automation is not a replacement for staff, rather an enhancer. If we can automate repetitive or menial tasks of someone’s role, they are able to be elevated, not replaced. And we’re all about moving people to areas that allow them to shine.

            Regardless of your company’s history with automation and low-code tools, we can meet you where you are and be a partner for productivity.