One of the tools that came out of my efforts to prototype in code was BFF.
Over the last several months, I've started to run into technical issues with BFF.
The BFF engine uses jQuery extensively to make the AJAX calls, and scan the HTML for
bff- classes to parse and interpret. I love jQuery but
it doesn't always work well with some frameworks like Angular. In addition, at my new job, I've been struggling to
create a coded prototype, as the code I'm using as a starting point is dependent on jQuery 1.9.x while BFF uses
jQuery 2 or higher.
I've also had problems with using BFF with Amazon's AWS S3. BFF uses AJAX to load shared components. My coded prototypes work great locally and on traditional static web hosting but on S3, all I get is a blank screen.
The dependency on third party libraries has been BFF's Achilles heel. The grunt plugins I use to launch the
web server, watch for changes, and compile my Sass files
have dependencies on an absolutely ridiculous amount of 3rd party libraries. And those libraries are dependent on
other 3rd party libraries. The last time I checked my
node_modules folder, there were over 20,000 files in nearly
2,500 folders with a total file size of 200MB! One of the challenges with using node packages is that when I install
and save them with
npm install [package] --save-dev, npm assumes I want to use that specific version of the package only,
and saves that information to package.json, instead of assuming I want the latest version. As 3rd party
dependencies go out of date, the packages that depend on them start to output errors and finally break.
This has been a major frustration with getting more widespread adoption of BFF. My goal with BFF was to make it easy enough for a UX designer with little experience with coding to pick up BFF and quickly start prototyping in code. Reality hasn't been as rosy. I've tried to install some of the projects that I originally developed with BFF and I can no longer run them locally with grunt and npm install.
I still believe that prototyping in code is the way of the future when it comes to web and app design. I love it because it keeps my designs grounded in the real world. I can simulate designs for edge cases and with realistic data, and It makes it easier to test for various states like no data or large quantities of data, something that I've noticed a lot of designers tend not to factor into their designs.
But, without the resources and experience to refactor BFF so I can fix these bugs and reduce the dependency on 3rd party plugins and libraries, it's going to get harder to continue prototyping in code. And that feels like a step backwards for my design workflow.
I'm going to look around and see if there are any other designer friendly tools for prototyping in code. Or, I might just have to knuckle down and just make updating BFF a priority for the next couple of months.