Sunday, 25 June 2017

Building Bashfully - a brief background

The first guest post here on "Part of the Process" from Martyn Osborne as he explains the Infrastructure side of bashfully, a parallel concern to testing the vision.

Since we've recently publicly unveiled Bashfully, it seems prudent to run through the technology stack and why we chose it.  I’m hoping it may also at least partially explain why starting a side project was appealing to me!

Backend stack

Naturally, there were some elements I wanted to focus on when selecting the language:
  • Fun.  As it's a side project (in addition to a full-time development job), I wanted something interesting to play with in my free time.
  • Different.  During the day I spend most of my time in C#, F# and JavaScript in Windows-land.
  • Functional.  I love F# and the paradigm, so that was the direction I wanted to go.
  • Web sockets.  This project is a toy - and I wanted to play with them at some point (of course, when appropriate!)
  • Practical.  Yes, I wanted a toy.  I also wanted a project that will eventually materialise!

I had been keeping a close eye on Elixir for quite a while, and Bashfully seemed an excellent excuse to use it in anger!  Elixir also has an excellent web framework with Phoenix, and an exceptionally helpful community.

So far, Elixir genuinely makes me happy.  I personally think that’s high praise, and I may dive into more detail there in the future.

PostgreSQL suffices for persistence.  Elixir has good support with Ecto, it’s easy to run on my machine, and Heroku allows remote PSQL sessions.

Frontend stack

To be honest, I battled with the idea of making Bashfully an SPA for a while (and I have some expertise in that area).  However, I now believe that would have been overkill; especially at what is essentially a prototype phase.

Instead, we’re primarily using Phoenix to render pages on the server side with Vue sprinkled throughout where advantageous.  I’m not particularly attached to Vue yet, but it’s sufficient and I am eager to explore further.

Hosting
                                                        
On the hosting side of things, Heroku has been fantastic.  We’re using GitLab CI to build, test and immediately deploy Bashfully to our Heroku staging environment;  we can then promote that build to production with Heroku’s pipeline feature.  This was working well within an hour!

Even though this setup was primarily to make my own life easier, it also had the interesting effect of allowing Neil to easily make design, wording and content changes to the application (via GitLab’s excellent editing UI) and have them deploy to staging without any technical barriers.

Security

This bit is pretty important.  We have worked on a similar web application for a while and have learnt several lessons along the way; these lessons have been incorporated into Bashfully.

We decided from the very beginning to go passwordless and use third-party authentication providers (Google, Facebook, etc).  This was trivial to set up (we’re using Ueberauth) and means we don’t have to process or store credentials - very helpful in the age of data breaches!

Site-wide HTTPS has also been implemented courtesy of LetsEncrypt via Heroku.  

My advice

For anyone else attempting a side project (and with the intention of going live in a reasonable timeframe!), I would suggest:
  • Don’t pick any technologies too esoteric.  Make sure they’re fun, but also practical!
  • Do pick some technologies that you are familiar with.  Writing good quality idiomatic code when learning one technology is hard enough - don’t try it with too many.
  • Keep the infrastructure simple.  I toyed with the idea of building the infrastructure myself on AWS;  but not doing so let us concentrate on the mockups, journeys, and the application itself!
  • Define your vision early on.  Staying focused on building the right things is critical, and a vision helps (especially as a developer!).
  • Break the project up into smaller chunks.  Something like Trello is a great help.  I would argue that this is a critical skill for any developer and one that a side project can help with.

Thanks


If you made it this far - kudos!  I will probably be expanding on these topics in the future, so keep an eye on this blog!

To add to this, not only was I using the GitLab UI but I have created, merged and squashed feature branches. I have even wired up some page handlers unaided without knowing any Elixir or Phoneix!

Thursday, 22 June 2017

MEETUP: "A look into what every Product Manager forgets " at ProductTank Brighton

Three varied viewpoints and interesting talks at tonight's ProductTank, around what Product Managers usually forget. First up was Mark Rodgers sharing how they overlooked things in the first iteration of the new image search functionality at Brandwatch. I can completely relate the situation in my own work. That thing where when you see the product with real data and a real usage situation you suddenly notice something and think "how did I miss that?!", since it now seems so obvious. This made me feel a bit better that if someone, as experienced with Mark and with his team at Brandwatch, can make that mistake it's not surprising I do.

Next was Ben Sauer from ClearLeft. His talk was a more abstract look at companies culture. For example, how it is all around us but that we don't notice it. And consequently (or maybe because of?) we don't discuss it enough. He recommended a couple of books to read Creativity, inc  by Ed Catmull and 
Nonviolent Communication: A Language of Life by Marshall Rosenberg that I am looking forward to reading. Especially as he said the lessons of applying NVC to his life had improved his relationships. One particular piece of advice that stuck with me was to use comedians for change. That is if you are using videoed user feedback to convince "higher ups" that something is a bad idea, get someone funny. He put forward the suggestion that it helps if people can laugh at themselves when admitting a coursed of action was wrong.
The final talk was Tim Stamp from Rakuten talking about security and how this can damage business reputation when done badly. I know that I have thought about user permissions a step too late in the design process before. One piece of advice he gave was to get someone in with a security focus when discussing the user journeys so that they can suggest how attackers could abuse the system. A related point that Ben made in the panel Q&A after, was that we don't have discussions about security/usability tradeoff enough. So get security in at the user journey mapping should help that happen as well.

It was also very satisfying listen to Tim talk about passwords, and if possible avoiding them by using single sign-on. Exactly the approach, and for exactly the same reasons, why we have avoided them on my side project!

Sunday, 18 June 2017

Introducing bashfully

So in my last post on the "untitled side project" I said that I would elaborate more on the idea. When we started the project we had a strong idea of the kind of project that we wanted to do. And after settling in the area I started doing some reading around and thinking about who we could help. What change were we looking to make in the world? How were we looking to alter behaviour? (a litmus test for innovation) 

The project is called Bashfully. Partially a play on the concept of being bashful and shy about talking about your achievements. Partially because the name could be part of the domain in the .ly TLD ;-) This project is to provide an online resume to help people shine in ways that the current sites do not. To help them be proud of what they have achieved. Finally, to allow them to see their career development as a journey and set their own narrative.

The Trello card entitled "what are we hoping to learn?" says:


MVP is to test the hypothesis that there is a market for a resume site and network for people in a creative role or within 3-4 years out of university. These people are not currently served by either LinkedIn because the format is quite restrictive/unispiring or Facebook because it is too informal and basic. Although both sites offer good networking and the target demographic are already somewhat established in at least one of these.
As the first step to sense check this I created a survey and shared on social media. Around the same time, we created a landing page. This had two purposes, 

  1. to share awareness of the project, including the survey 
  2. to build up the functionality iteratively
The first part of this functionality was the registration of interest. This is the foundation of the user authentication that the full site will use. It allowed us to explore the different APIs that we wanted to use and actually integrate with them.

The initial results from the survey were great. One idea suggested was almost word for word how I would describe it - with the caveat we need to be careful of confirmation bias! Another respondent gave us an idea that was brilliant and we hadn't thought of. 

The output of looking at these survey results also helped firm up the vision from the initial hypothesis.This was a vital thing to get in place. Any project and especially product needs to have a clear sense of:
  1. Who you are helping?
  2. Why you are helping them?
  3. How will this help them? What is the positive outcome for them?
Without this, any sense of prioritisation or ROI calculations that you will hope to do are likely to be a mirage at worst. At best you'll have a useful proxy, but that can change without you noticing. This is as true for a 2 person side project as it is for any commercial organisation. Probably more since we are doing this for fun and not profit, and launching is part of the fun!

Thanks for reading. The next instalment is likely to be on crafting the user journeys and mockups to test with real people (aka "users").

Further reading


Friday, 16 June 2017

Is "addictive" app design ethical?

Many years ago I used to live with someone who commuted an hour longer than I did. This was way before smartphones, social media, or even cheap laptops. So I used to do the washing up as part of my evening ritual of winding down from work - luckily she was also as relaxed about leaving the washing up as I was.

Thinking back to this time the main method of communicating online was via forums around interests. So Eurogamer, Get Your Boot On, and North Stand Chat for example. Here the conversations are around topics. The nature of content on the sites is discoverable and predictable. I could easily see new information that I was interested in. I could also easily show someone else something interesting later.

Fast forward a decade with smartphones and pretty widespread internet connections I can get a notification ping up on my phone instantly alerting me that someone I know has posted something for the first time in a while. It will probably be a cup of coffee. Do I really need to be that connected?

Don't get me wrong, in my line of work at 15below creating alerts for people on the move, who need really timely information about their journey, can be the difference between missing or catching a flight. The ROI of the joy of making a flight you would otherwise have missed is hard to capture, but I'd certainly call it progress.

What I wonder about is the switch from the topic based forums I used to frequent, to people based "social networks" that are a virtual stream of consciousness. Sure they can be easily discoverable. They can put people in different countries who have never met in real friendships. However, they can also be unpredictable. Feeding that part of our lizard brain that feels rewards for novelty. 

The worst for this is LinkedIn. I almost feel like the second I see something I have to like it, read it or share it. Otherwise, I will never see that post again. This actually makes the experience stressful. If I see multiple items of interest when I open the app it's a race against time to complete them before I move on.

It's a similar story with Twitter or Facebook. Constantly refreshing or switching between searches to see what's "new". Sometimes I even fall into a zombie-like state, swiping and refreshing. When I stop I'm exhausted falling into a daze. This undoubtedly has an impact on real life relationships. With mental health. Is the disruptive nature of the curated timeline worth the ads it allows the platforms to push in our faces? Because social networks are becoming so interwoven into our lives that not being present there can be just as isolating.

My Sunday morning last weekend really brought it home to me. When I got up, instead of the usual coffee and social media routine, I did some housework. I unloaded the dishwasher. Washed up some fragile glasses. Put some washing on the line. When I had finished and sat down with my coffee, I felt much more awake. I was also more relaxed.

As product people do we have an ethical duty to consider the impact of our creations on people? I use the term "people" here deliberately rather than "users". This is probably an enabling term that allows us to distance our actions from the impact.

I will leave you with this thought from the Pope - and whether online or in real life keep your interactions meaningful.
Sorry for the rant. I know it's not overly original. But I feel it is important. We need to be more aware of the issues and avoid them.

Further reading


Friday, 9 June 2017

CONFERENCE: TTI Summer Forum 2017 – Getting to Grips with GDPR

This week I was at the Travel Technology Initiative's Summer Forum. The subject was the new EU (and UK!) data protection laws. These are due to come into force in May 2018. It's a large topic where the individual member state's laws and guidance are evolving.

There were three main points that I picked up from the presentations. First from Dai Davis, GDPR expert at Percy Crow Davis & Co. His lively presentation talked about how a large part of the change is in how rights communicated. Before this was by "fairness" through registration of usage with a central body. The shift is to transparency by informing individuals directly.

This means that the consumer mindset could then shift to match how legislation is framed. For example, with the repetition of many companies holding personally identifiable information now having to inform what they are collecting and how they are processing it. Currently, awareness isn't high and the compensation not high enough to make it worth pursuing.

The next salient point came from Steve Dobson, IT Security Director, ATCORE Technology. He talked about how the new regulations move more accountability to data processors. So as IT suppliers we need to care more about data controller behaviour as it can comprise us as data processors.

The final point I'd note was that consent is key. Additionally with the rights of subjects to knowing what data is held you need to check that the request is coming from the individual in question. Also that you have the consent from them. This can be an issue on travel bookings. For example, where multiple passengers could request data held on the same PNR.

As a Product Manager for an IT supplier in the travel industry I also picked up some product ideas, but those are for my backlog not my blog ;-)

Further Reading

Monday, 5 June 2017

BOOK REVIEW: Product Leadership By Richard Banfield, Martin Eriksson, Nate Walkingshaw

I've had this book on preview as each chapter came out and I've finally had a chance to read the full release version. So before it gets officially launch at MTPCon on June 13th here is my round-up...

Formats: Paperback, DAISY, ePub, Mobi, PDF

Where can I get it? From O'Reilly, Amazon or .... any good bookshop, although I think there are currently only 500 physical copies left world wide!
  
Who is it for? Anyone involved in a software product development team or a startup founder thinking about which roles to hire next. 

What's it about? Product management, product leadership, not just the overlap but also the differences. How to grow your career as you grow into product leadership and how to hire the role for senior management.

What's the book like? The book is divided into three sections:

  1. The Product Leader
  2. The Right Leader for the Right Time
  3. Working with Customers, Agencies, Partners, and External Stakeholders

The first section concentrates on the different areas of product management, the skills needed, artefacts and processes required, and what success looks like. It might be too "meta" for some, but I liked the way it applied treating the role as a product that needed managing. For some of the lessons of moving from practitioner to leader I wish I had this book a few years ago as I stopped coding being a tech lead on projects! But it was useful to relate my experience to how the book presented information, I felt this gave me a kick start to absorbing the later lessons. It really gives a good flavour of the many different hats that you need to wear as a PM and how that evolves as the role gets more senior.

The second section goes into more practical advice and anecdotes around the kind of leader needed for each stage of an organisation - from start-up to emerging organisation and finishing with enterprise organisations.  This is useful in being aware of which skills to develop as your organisation grows so that you aren't caught out by that growth.

The final section starts off with trust and value, before covering topics such as when to hire consultants. One bit of advice I found surprising was to hire for either short or long term engagements, so either give an injection of new skills/views or to implement a new strategy. Anything in-between is likely to lead to the partial implementation of any strategy. There is also a good discussion of the opportunity cost and value when looking at short-term vs long-term needs.


Further Reading


R for Product Management

Photo by  Štefan Štefančík  on  Unsplash Since my previous blog post I have made some progress on being able to replace most of what I...