DevFest Florida 2016 Recap

Another conference I was accepted into this year, was DevFest Florida. This was my second speaking engagement for the year, after my debut at DevFest DC.

Although I was editing and rehearsing right until the last minute, I had the opportunity to attend several of the talks:

Innovating Is Not About Technology, But Psychology

Alyssa Nicoll (@alyssanicoll) gave the keynote on the topic of motivation for developers, and how to get into the mindset to achieve personal growth.

There were a lot of notable questions and suggestions I jotted down in the first part of her talk:
  • Many developers strive to be well-read, perhaps as a goal in itself
  • Why are we here? To be a life-long learner? To be around other developers?
  • When asked "What do you struggle with?", responses typically included "fear of learning something new", "fear of getting stuck", "fear of looking dumb"
  • It's OK to be afraid, but don't let that fear crush you. You can't do everything alone.
  • Try to surround yourself with "winners": passionate, not complacent, people. Not people who sit around, wait around, wish for something to happen.

Alyssa gave three steps to help you get beyond sitting, waiting and wishing:

  • Ask Why More: This is an important mindset for developers. It helps you learn new things, challenge yourself, and grow.
  • Teach: Influential developers are innately sharing with others, but also learn to be self-taught.
  • Want More: Are you growing and being challenged? Do you recognize what you are worth and what your potential is?

An essay that Alyssa shared was The Sad, Beautiful Fact That We're All Going To Miss Almost Everything by Linda Holmes. One memorable sentence from it is "You will die having missed almost everything." The key observation is that with the number of books, TV shows, social media, and other sources of information, you will never see the vast majority of them in your lifetime. Culling, or being more selective, is not enough. Learning to surrender to this "sad, beautiful fact" allows us to be well-read via "making a genuine effort to explore thoughtfully", rather than trying to keep up.

The keynote was quite short, maybe 20 minutes, but Alyssa engaged us in a group discussion for the remainder of the time. We talked about the imposter syndrome diagram and a few other things, and she took notes to use for future iterations of her talk.

Here's Alyssa giving an Ignite! version of this talk at another conference:

Staying Relevant for All Your Years

(Slides)

Christi Kapp (@artinmotionllc) spoke about her personal journey of innovation and entrepreneurship.

She spoke about the importance of staying relevant throughout your career, and to keep up with the changing winds of technology. Like with animal or plant species, technology also goes extinct. Careers also have phases. Using her own trajectory as an example, Christi graphed her career along a time vs. satisfaction axes. It was interesting to note her satisfaction fluctuating when changing jobs, the correlation (both positive and negative) between satisfaction and money, and how she found retiring and travelling boring.

Her keys to successfully thriving were to:

  • Be open to non-tech related career directions
  • Listen and pay attention to patterns in data (e.g. exponential curves signalling breakout technologies, money being invested in certain areas)
  • Being friendly and collaborative, making positive and productive connections with people
  • Surf the waves of technology and trends: be ready to jump to the next wave when the current one is about to crash

Multi-Window and Your App

(Slides)

Mark Murphy (@commonsguy) spoke about multi-window support in Android 7.0

This talk was right before mine, so I was feeling nervous and didn't take any notes at all.

Playing with Fire(base)

(Slides)

Because I enjoy creating extra work for myself, I didn't repeat my previous talk about Firebase Notifications, but created a new talk to cover a few more Firebase technologies:

Designing as a Developer

Justin Mitchell (@itsthisjustin) spoke about how developers can become better at design.

Right off the bat, Justin spoke about the products that developers create, whether they had a UI or not. He emphasized the importance of solving problems for users, not just fulfilling a set of requirements. Here are tools and ideas organized under four areas that Justin shared:

User Testing

  • Don't overlook putting your app/product/website in front of people who haven't seen it before
  • A service that provides audio/video feedback on your website or mobile app is https://usertesting.com. You select the target audience criteria, and they match you up from their panel of a million testers.
  • The subreddit /r/beermoney can be used to solicit feedback on your upcoming product launch in exchange for a few bucks.
  • https://lookback.io/ is a user research tool for Mac desktop, iOS and Android that records users playing with your app, and their feedback. Not only is their face and voice captured, but what they saw and where they touched.
  • https://usabilityhub.com/ helps you run design tests in the form of quick surveys (e.g. what do you recall after 5 seconds, do you prefer A or B, where would you click to do this)

Prototyping

  • Don't discount quick sketches on paper or napkins
  • Two website and mobile app prototyping tools I hadn't heard of were Marvel and Proto.io
  • A very powerful and sophisticated UX prototyping tool (with poor UX itself!) is Axure
  • Someone in the audience mentioned his company's product, Briefs, which makes rich prototypes on Mac and iOS (unfortunately, not Android).

"Stealing"

  • There are a lot of free or low-cost, high quality icons out there, so developers have no excuse
  • The Noun Project is a paid service ($10/mo) with a desktop app that lets you drag-and-drop from 500,000 vector icons. They also offer a free tier, with attribution.
  • Lingo is a visual asset library that helps ensure consistency among teams
  • Over 9000 templates and assets are available from Envato Elements. A yearly subscription gives you unlimited downloads.

Utilities

  • Yoink ($10) is a Mac drag-and-drop utility that acts like a virtual shelf to simplify moving things around. It provides a section of invisible screen that acts like a cut-and-paste buffer.
  • If you've ever been annoyed by your menubar icons being hidden by your application menu, you need Bartender 2 ($20). It organizes your menu bar apps, and lets you navigate by keyboard and search them too.
  • A free colour picker tool called Sip makes it dead easy to sample the colour of any on-screen pixel, and then output it in a variety of IDE-ready formats (e.g. if you specify Android ARGB it would copy Color.argb(255, 55, 111, 203) to the clipboard)
  • For file sharing, particularly for visual assets like screenshots or screen recordings, Jumpshare offers commenting, file previews, and more.
  • If you want to outsource user testing, feedback and research, Applause can handle everything from handling NDAs to signing apps, etc.

Writing Testable Apps

Matt Dupree (@philosohacker) gave an elegant talk about how to make Android code more testable.

He began with the obvious statement that "tested apps are better apps", and shared a few quotes from prominent developers like Dan North. I particularly enjoyed Matt's skewering of the Google I/O app for Android. But instead of just criticizing, he demonstrated how to refactor parts of the app to make it more testable.

Matt kept coming back to the concept of seams, which is from Michael Feathers' book,
Working Effectively with Legacy Code. A seam is a place to alter behaviour, without editing in that place. In the Android programming world, think of build variants (link seams), or dependency injection of mocks (object seams). Link seams can be used to swap out factory classes, so that you can use object seams. For example, for testing, you can swap in a factory class that returns a mocked version of a network service.

There were a lot of terms and concepts that I need to study more thoroughly, and patterns that I need to explore. Fortunately, Matt has been writing a lot about Android testing in his blog, Philosophical Hacker, which I've added to my reading list.

Eric Fung

Eric Fung