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. 

June 10, 2021

What’s Driving the IT Talent Gap? (And What to do About It)

It’s no secret that our nation is facing a skills gap when it comes to trained carpenters, toolmakers, welders, and so on. But there’s also a massive tech talent vacuum leaving thousands of tech jobs unfilled globally.

Even with the national unemployment rate hovering around 7%, the technology unemployment rate was just 3% in December 2020. That means tech talent doesn’t have a hard time finding a job, even when other work sectors are suffering.

So what’s behind this tech talent desert?

For starters, finding candidates with all the right skills is a challenge. As emerging technologies continue to rapidly change and expand, exploding fields like artificial intelligence and automation are becoming more mainstream. IT companies are scrambling to create brand new job categories requiring special capabilities at a rate faster than businesses can fill them. No longer does a single skill set fit the bill. Now businesses need people with niche expertise who aren’t easy to find.

Perhaps the hardest hit tech companies forced to scrounge for qualified workers are those right here at home. Never-ending sunshine, beaches, and flip-flop work culture lure top talent to Silicon Valley. While snow shoveling and cicada infestations aren’t big draws, the Midwest does have some perks the West Coast simply can’t compete with like lower cost-of-living, less traffic, and a decreased crime rates for starters. These may not be the sexiest benefits, but don’t count them out when recruiting.

Also, as remote working has become more commonplace nationwide (thank you, COVID-19), CIOs face additional challenges wooing talent from Silicon Valley. While some tech geniuses are attracted to the California sunshine, not everyone is bewitched by beaches—and now they don’t have to be. Thanks to remote work capabilities, even those who don’t want the hassle of moving and high-cost West Coast expenses can get all the prestige of working for a tech behemoth while living anywhere they want. Talk about having your cake and eating it, too.

If CIOs want to snag talent before they get snatched up, they might want to steal a play from the Oakland A’s. Michael Lewis tells this story well in his book, Moneyball. The A’s were working on a shoestring budget up against baseball giants, and yet they went all the way to the playoffs. How? By using a unique, low-cost solution to identify the best players. Sounds unconventional, right? If Midwest tech companies want to find the right stuff, then CIOs need to lean into alternative strategies that can still compete with the big boys.

Here are some innovative ways to entice top IT talent:

1. Woo them with culture.
Today’s workers want more than just a punch-the-clock job. They want a company culture that promotes from within, respects the individual, and balances work and life commitments. As you recruit, don’t just talk about job tasks—speak to empowerment, growth, and how you value your employees.

    2. Invest in your technology.
    Tech talent gets excited about—you guessed it—technology, and they’re scrutinizing the digital goods at your company when deciding whether or not to accept a job. The money you put into internal tech says a lot to a candidate about you and how much you value staying current. At the very least, be prepared to offer them the same level of tech they’re using at home.

      3. Offer top-notch benefits.
      Perks aren’t just perks anymore. They’re mission critical for snagging and retaining top talent. Gone are the days where solid health insurance and PTO were enough to entice and satisfy new employees.

      Maintaining a work-life balance is a top priority, especially for candidates in their 30s and 40s raising families. Many workers are even willing to sacrifice some salary to get tailored work hours and other benefits that complement their lifestyle.

      Not sure what perks fit best? Ask your current employees and snoop around your competitors. Find out what people are looking for and then make it happen!

        4. Support growth.
        Gone are the days of linear career paths working for the same company. More so than most workers, tech employees tend to leapfrog from job to job and company to company chasing after the next provocative project. Don’t let your savvy tech gurus fly the nest so easily by creating a variety of exciting internal opportunities for them to grow their skills.

          Recruiting top IT expertise may feel like battle (they don’t call it a Talent War for nothing), but it’s important to stay focused. Lean into what makes your company great and don’t be afraid to cast a wide net. You never know what kind of fish you’ll land.

          June 2, 2021

          5 Groups That Need to Check Out Wearables

          What’s New in Wearable Health Technology

          Think monitoring your health through something you wear sounds a little sci-fi? Think again. Today, more than half of Americans (56% to be exact) own some kind of smart device tracking everything from pulse to sleep cycles and more. While current technology may not yet be able to, say, neurologically control a robotic arm (think Luke Skywalker or Marvel’s Bucky Barnes), wearable tech is rapidly advancing—especially in the healthcare space.

          So what’s trending with wearable health technology? For starters, wearables are no longer just for fitness nerds logging steps and recording heart rates after a Crossfit WOD. In fact, health tech has gone from simple hobby to medical-grade and FDA-approved in just a matter of a few years. The truth is there’s something for everybody when it comes to wearable health technology. Here’s a peek at just some of today’s tech changing how we do both fitness and healthcare.

          For the everyday Joe (and Jane)

          Debuting in 2008, Fitbit quickly rose in popularity and remains a household name in fitness trackers. While early Fitbits captured data on movement, sleep, and calories burned, the technology has quickly evolved to go beyond the basics. Now, Fitbits can measure breathing, pulse and altitude climbed, as well as logging glucose levels (more on that below), and giving feedback on how your body handles stress.

          Next up, smartwatches have taken fitness tracking to a whole new level. Sure, the first smartwatches were basically glorified pedometers, but as technology has boomed with new capabilities and ever shrinking components, these compact pieces of tech go way beyond counting steps.

          Now anyone can get in-depth health metrics without visiting the doctor’s office. In 2020, Apple released its latest Series 6 smartwatch that monitors blood oxygen saturation, sleep cycles, heart rhythms using FDA-approved electrocardiogram (ECG) sensors, and even more in-depth health monitoring.

          For heart health patients

          While Apple’s Series 6 smartwatch has heart monitoring functions, the Move ECG by Withings is an award-winning choice for heart health. Not only does this sleek analog-looking device collect your heart rhythm data, but the software analyzes the data and can communicate directly with your doctor.

          The Move ECG can also detect atrial fibrillation, a possibly life-threatening condition which can lead to stroke (frightening stat: almost 3 million Americans unknowingly suffer from afib). If you feel an irregular heartbeat or palpitation, you simply press and hold the side button for 30 seconds. Sensors on the back create a medical-grade ECG and can send the info to your doctor or store the data for later.

          Monitoring blood pressure outside the doctor’s office is a gamechanger for many heart-conscious patients. Omron’s HeartGuide wears like a wristwatch and allows users to track and monitor blood pressure and pulse fluctuations throughout the day. Inside the wristband, a tiny inflatable cuff fills with air to get the readings. The HeartGuide is also a fitness tracker so users can better understand how their everyday lifestyle affects their heart health.

          For the hospital or nursing home patient

          When you or a loved one are admitted to a hospital or nursing home, keeping tabs on vitals is a necessary part of healthcare management. But traditional vital monitoring is bulky and leaves patients physically tethered to machines by wires. No, thank you.

          Enter the Philips biosensor, an adhesive patch that sticks anywhere on the skin and sends data wirelessly to the healthcare team. Now nurses and doctors can monitor heart rate and respirations—and even be alerted if the patient has fallen or is having a heart attack—all while giving patients more freedom to move around and peace.

          Still in development, a Japanese professor has created a wearable biosensor called e-skin. Similar to the Philips biosensor, e-skin monitors heart rate, rhythms, and respirations. But what makes e-skin unique is its super thin application that resembles, well, skin. The “skin” is embedded with thin electrodes that wirelessly connect to a smartphone, computer, or the cloud so doctors can easily monitor patients no matter if they’re in a hospital bed or at home.

          For the athlete

          Fitness trackers and smartwatches can detect and analyze heart health, sleep, activity, and more. But what about the serious athlete needing to replenish fluids after a killer workout or competition? With any physical activity, dehydration is a real risk. And on the flip side, drinking too much water (called hyponatremia) can be a life-threatening situation and is more common than you might think with endurance athletes.

          That’s what led a group of researchers to team up with Epicore Biosystems to release the Gx Sweat Patch in March 2021. Sweat might seem like an unusual fluid to measure, but since perspiration contains sugar, salts, and even hormones, measuring sweat can give a real-time snapshot of overall health.

          To use the sensor, simply stick the small patch to the skin and let the sweat come as it may. Two microchannels capture perspiration where it interacts with chemicals that change the color of the patch. Users snap a photo of the sensor with their smartphone, then interface with the app to get recommendations for how much water and sodium to stay balanced and hydrated.

          For the cancer fighter

          In 2021, it’s estimated 1.9 million Americans will be diagnosed with cancer. Cancer treatment is complex, but often includes regular measurements of circulating tumor cells (CTCs), an important benchmark determining treatment plans. CTCs are usually collected at a routine laboratory visit, but unfortunately the results are often undiagnostic since the blood samples don’t always contain enough CTCs.

          That drove University of Michigan researchers to develop a prototype called the Cancer Cell Detector, a wrist-worn device that detects CTCs. Instead of taking a quick blood sample, this new device collects blood over the course of a few hours to ensure enough CTCs are captured to get a diagnostic reading. Still in development, the Cancer Cell Detector is undergoing clinical studies, but proves to be a welcomed piece of wearable health tech for cancer patients in the future.

          For the diabetic

          Did you know diabetes is the 7th leading cause of death in the US? And 1 in 3 Americans has prediabetes—a condition where blood sugar levels are elevated but not high enough to be considered diabetes—but 84% of them don’t even know it. Yikes. Unchecked blood sugar can cause all sorts of health problems like blindness, nerve damage, heart issues, skin conditions, hearing impairment, and even death.

          At DeveloperTown, we’re excited about changing the landscape of diabetic care and saving lives with wearable tech. One of our favorite products we’ve had a hand in developing is a diabetic tool for Fitbit integration. Some Fitbit users can now track their blood sugar levels over time, set personalized ranges, and since it's joined with a fitness tracker, see how lifestyle and exercise affect their blood glucose levels.

          For the [fill in the blank]

          The future of wearables is only limited by our imaginations. Have an idea for a health product or tech integration? We’re here to help. At DeveloperTown, we know the ins and outs of wearables, including healthcare technology. Contact us today and lets flex those creative problem solving muscles together.

          March 10, 2021

          Thriving in the Midst of Product Team Turnover

          There’s no way around it; turnover is a bear. We’ve likely all been a part of a team that experiences ill-timed or, at best, unexpected turnover. Even in writing this, I squirm at the thought of the scrambling to backfill, the difficult conversations with stakeholders, and the pressure that mounts while desperately working to get a new resource up to speed with an eye on dwindling velocity. Does any of this sound familiar?

          Why is that for so many organizations, developer turnover comes as a surprise? Just a quick look at the numbers shows the simple nature of the industry landscape of which we are all at least implicitly aware. According to the US Bureau of Labor Statistics, demand for software developers is on the rise, projected to grow by 22% by 2029—a staggering trajectory when compared to the average projected growth rate across all occupations, paling in comparison at a meager 4%. In terms of new jobs in the application development space, 310,000 are expected to be created in the same time period. Simply put, demand for developers is up and the sheer volume of employment options is far from gratuitous.

          Given the industry employment landscape, the question of whether or not turnover will happen is not a question worth asking. It will. And while a healthy focus of building employee retention is crucial, an equally crucial endeavor is positioning your product teams to handle turnover when it does happen.

          As with all businesses, emphasis on the balance sheet is crucial to bottomline health. An issue with this emphasis, however, often arises in the tension between business value add versus real value add. Put into context, the unchecked objective of eliminating as much time as possible spent on business value add objectives curtails any meaningful effort to focus development team capacity on adequate succession planning. This common scenario, played out to its logical end, can leave teams feeling debilitating pressure when someone on their team moves on to a new opportunity, and plagued by the questions of how much time will be spent helping a new team member get up to speed.

          “How quickly will a replacement be brought in?”

          “What additional slack will need to be picked up in the meantime to ensure objectives are still met?”

          “How long will it take to get back to our previous velocity?”

          Such questions not only distract the team and detract from their work, they can also be the precursors to subsequent burnout resulting in additional turnover.

          So what is one practical step that can be taken to help mitigate the negative effects of product team turnover?

          The concept of minimal viability, generally applied to Agile product development, just may be the cure for what ails you.

          Just as product teams seek to define and develop the minimum requirements necessary to deliver a testable piece of software and continue iterating from there, so too can succession planning be approached from the perspective of minimum viability. Think about it, or better yet, provide a bit of time for your product teams to think about it.

          What are the bare minimum requirements of a viable succession plan within the context of the team’s work?

          Focus in on the must-have features and lean on your Scrum Masters to compile the plan for their teams. From there, iterate. Take each instance of turnover (and hopefully there aren’t many!) as an opportunity to reflect on and improve the onboarding process, a perfect conversation for a sprint retrospective. And understand that the upfront costs associated with planning will yield dividends down the road.

          In doing so, not only will the members of the team feel better cared for—especially new members backfilling open positions—but should turnover occur, velocity will be better maintained in spite of it.

          And chances are you’ll see the value of that upfront investment in your teams jump across the balance sheet.

          February 22, 2021

          Healthcare Tech: Helping or Hurting?

          You’re sitting nervously in the cold, antiseptic-smelling room waiting for the doctor to show up. They finally rush in, only to spend the majority of their time staring at a screen. Their fingers fly, inputting as much data as they can, spending only a few minutes making eye contact and actually examining you. Then they rush off in a flurry of scrubs and screens.

          All too many of us can relate to this experience.

          It’s easy to blame the doctor for being so harried and impersonal. What a terrible bedside manner, we might mutter. But what if there’s more to it?

          42% of physicians struggle with burnout. Pandemic-related stressors, overworking, and lack of respect and autonomy are just a few factors doctors cite as causes of weariness and overwhelm. But surprisingly, some of the very tools created to ease healthcare burdens are also seriously contributing to the problem.

          As you know, around here we are tech fanatics. Building agile and creative tools to help businesses solve problems and capture opportunities gets us all kinds of giddy. But we know that sometimes tech gets in the way and actually makes things worse.

          When new tools are developed without the proper input, foresight, and strategy, it’s a recipe for disaster. And we’re watching this play out in the healthcare space in a big way right now.

          Physicians report “too many bureaucratic tasks” and “increased computerization of practice” as some of the leading causes for burnout. And today’s surge in telemedicine and our constant digital connection has blurred the line between work and home more than ever.

          Truth be told, most doctors just want to treat patients. They want to help and heal. And they want to have a life outside of work. But ever-changing data capture requirements, shifts in telemedicine, and other tech changes seem to take them further and further away from the heart of why they become physicians in the first place.

          The result? Doctors are exhausted, frustrated, discouraged, and even experiencing symptoms of despair, depression, and PTSD. The pandemic has shown us more than ever how much we desperately need our frontline health heroes. So it’s time we started paying attention to what they need from us.

          Healthcare tech tools are often created with one population primarily in mind: the patient. While patient experience obviously matters, the cost of minimizing or ignoring altogether a tool’s impact on the physician is great. Tech that isn’t doctor-friendly often creates more work, more frustration, and more burden than anything else.

          Business author and speaker Tom Peters shares this, “Put your customers first and your people before anyone else. If your employees are happy and you treat them right, it will naturally result in them treating your customers right. This is why your customers can never be happier than your employees.”

          In the same way, happy doctors equals happy patients. We can’t expect patient care to improve after handing over tech that makes life miserable for physicians. They don’t need one more thing in their already hectic lives. Clunky, disruptive tech just adds to the heavy loads they already carry.

          Our client and friends at Uppstroms get this issue more than most. Founded by a physician, this startup is creating a machine-learning app that proactively identifies patient need. And they’re going about it the right way—looking at how the tech will reduce physician workload and not add to it; examining ways to integrate the tool into natural workflows to minimize disruption.

          When it comes to developing new healthcare tech, we have to start listening to physicians and involving them heavily in the process. We owe it to them now more than ever.

          January 7, 2021

          When and How to Modernize Legacy Systems

          When and How to Modernize Legacy Systems

          Jack be nimble...

          Jack be quick …

          If 2020 taught us anything, it’s that being nimble is everything. And in today’s ever-fluctuating business climate, if you can’t be agile and change course quickly, you most definitely will get burned.

          But how can you pivot and adapt quickly when your systems are outdated? The answer is: you sometimes can, but it’s a heck of a lot slower and tougher. And in this state of constant flux we’re living in, inefficiency and lag can be the death of a business.

          But, we get it. Thinking about replacing existing systems or creating new integrations can feel overwhelming or even downright impossible. There’s disruption to consider, staff training, and budget, just to name a few concerns that go along with a big change like this. Often the pain of not evolving has to get worse than the pain of sticking with an outdated system for changes to be made. But waiting to the point of crisis often means bleeding time and money for way longer than necessary.

          Is it Time? Symptoms of a Legacy System

          One of the most common questions we get is whether a system overhaul is really needed. And even though we’re dev nerds who love building new things, we don’t hesitate to tell clients if the time’s not right for them to upgrade.

          If you find yourself stuck in the should-we-should-we-not rut, here are some common indicators a change might be needed:

          1. Are you seeing speed issues?
          2. Do security or compliance issues keep cropping up?
          3. Is your team disengaged due to system issues?
          4. Are you getting the metrics you need?
          5. Is your system functional but not scalable?
          6. What’s the key business value and is it being accomplished well?
          7. Are you finding your system to be more and more unpredictable or unreliable?
          8. Can it handle the needed data formats?
          9. Is output going down?
          10. Are frustrations going up?

          A Thoughtful Approach to System Upgrades

          Sometimes a good ol’ fashioned pro and con list can help make system replacement issues easier. While it’s not always that simplistic, we love sitting down with clients and wading through the good, the bad, and often the ugly related to system needs and how they fit into overall business goals.

          Here are a few topics we hash out with clients all the time as system decisions get made:

          Replacing vs Bandaiding

          You’ve probably sat in those meetings where the groans start as it’s decided the company needs to limp along further with an under-functioning system. Sure, from an immediate budget standpoint it might seem to make the most sense. And in some situations, you really can stick with an existing system and just make some process changes or add a few bandaid fixes to extend its life. But oftentimes, staying the course with an outdated system means way more trouble than it’s worth.

          Certainly making the decision to implement a new system or to create some integrations that will help isn’t easy. And it can be super helpful to have an outside source weigh in. Sometimes you’re just too “in it” to see the best course of action. And often the solution isn’t black and white. That’s where having a third party to guide you into asking the right questions and diving deep alongside you can help.

          Phased Implementation

          Doing an all-at-once system replacement might sound sexy, but it’s not always wise. New systems can often be built in parts and pieces over time and sometimes even off-the-shelf products can be incorporated to ease costs. We walk our clients through the pros and cons of going “big bang,” as we like to call it, and brainstorm different implementation scenarios to determine what’s best.

          Often a phased rollout makes the most sense. Not only can this be a budget-friendly option, but it allows you to swap out different parts of the system a bit at a time, allowing for testing and feedback from internal teams and users as things unfold.

          Testing Early and Often

          While it requires some upfront work, testing regularly (and with the right folks) can save you significant time and money in the long run. And it’s critical to get holistic feedback from different audiences, especially end users. So often development teams and others who are deep in the trenches miss glaring issues and opportunities that end users can spot in a moment. Thorough testing means not only catching potential problems but creating a better user experience, too.

          Maybe there’s a new feature your team hasn’t thought of but end users are craving. Or perhaps there’s a common user workaround going on (e.g. repurposing a field) that could trip up data migration. Gathering input from those who use your system day in and day out means fewer surprises and maximized ROI.

          Other things to consider:

          • How is the new system going to change your business processes? Or should it be built to accommodate current processes?
          • What’s the plan for reverting back if issues arise?
          • How do you maintain the highest system security?
          • What team training will need to happen?
          • How can disruption be minimized?
          • Will the new tech be easy for your developers to run with?
          • How will a new system play with the tech you’re keeping?
          • How do you teach customers to adopt new systems and features?
          • When you develop a new system, are you porting over every feature?
          • What can be done to ease the transition for everyone involved?

          These are the kinds of questions that keep our clients up at night. But they’re questions that get us all kinds of giddy when working through. Because at the end of the day, we don’t see ourselves as product-builders but problem solvers. Putting our heads together with clients—instead of just dictating what we think should happen—means an all-around better result (and a heck of a lot more fun).

          If we had to give you just one piece of advice on legacy systems, it would be this: the most seamless and successful transitions are a result of solid planning. Know what you’ve got. Understand thoroughly what’s working for you and your customers and what’s not. Engage experts to help you make good decisions if you can. Have a plan for where you want to go, while staying flexible as you test and tweak along the way.