Share Your Project Painpoints’, Ask Me Anything with Ryan Dawson

Ryan Dawson will be our agony aunt for this AMA. He writes about software’s uncomfortable topics - failures, dysfunctional teams, politics, commercial tensions, hype and ethical concerns. Ryan treats these challenges as part of the joy as well as the pain of Software.

Ryan now works on tools for machine learning deployment at Seldon, narrowing the chasm between Data Science and DevOps. Seldon is an open source startup and the cultures and tensions of open source is one of Ryan’s favourite topics. Ryan also co-organises the Tech Ethics London meetup, which hosts discussions on AI ethics, tech and the environment, health tech etc.

Prior to Seldon, Ryan worked at Content Management company Alfresco and before that was a consultant at various big banks. He started as a Java developer and through Kubernetes has found himself mostly doing Golang, with bits of Python for Seldon’s MLOps tools. Ryan uses this varied experience to bring fresh perspectives to awkward software problems.

Check out some of Ryan’s recent apearance on the hackernoon podcast. Or some of Ryan’s articles:

Join the AMA on October 12th, 10 am EST.

6 Likes

Hi! Does Agile or Scrum help to better deal with dysfunctional teams? And what are some other ways of team management and project management in software development?

Hey! What is the software development challenge that brings you the most joy? :smiley:

What is the turning point when talking about the limits of AI ethics?

How to use Facebook data in a data science model creation if it’s not open sourced?

Hi! We’re thinking about whether it’s rational to create an open sourced startup. What are some of the pitfalls of open source startups?
Thanks!

Hey ! What’s the philosophy behind open source?

I think a lot of team dysfunction really comes down to unclear or misaligned goals. If the top objectives aren’t set clearly enough and shown to be backed by leadership then people can come to their own interpretations and fight for their way.

You can also get dysfunctional dynamics within teams. Sometimes you get people who just want to work in a particular way and don’t like being asked to be flexible. That situation is partly about people seeing the big picture and also about creating a safe space.

I don’t think choice of methodology is that important when it comes to team dysfunction. Unless it’s a situation where the methodology is ill-suited to the project and that is what’s causing negative conflicts e.g. a Waterfall project that isn’t able to define its requirements upfront. With dysfunction it’s more important to look clearly at where you’re trying to get to, how you’re hoping to get there and what skills you have in the team.

Hi! What strategies of monetization/business models would you recommend for open sourced startup?

It’s never fun to fail to meet a goal or for things to get dysfunctional. But we can see these things as part of the challenge as if we’re doing something hard or new then it might not go smoothly. It’s more interesting to fail doing something new and innovative than to succeed with something trivial. Failures can be big learning opportunities.

For me all the dysfunction in the software industry is part of what makes it especially interesting. If we had easy, repeatable, off-the-shelf solutions to all the problems of the software industry then it would be a much less colourful place.

That said, I do enjoy having a well-defined problem and being able to just code my way towards the solution for a while. It’s draining to be trying to be dealing with ambuiguity too much of the time.

How politics might influence on software development? Can you share some vital examples?

I actually hadn’t heard of this and had to search for it. Seems to be a recent book about AI Ethics titled ‘Turning Point’. At least all the results I found refer to it. Looks like my kind of book on the topic actually. I like people who take a grounded approach and are interested in the concrete questions that can really translate to action. Stuff like what industries are going to need what kinds of regulations. The singularity stuff is more in the world of philosophy than practicality.

How do Western and Eastern cultures view the technology development, if speaking in more abstract terms?

What can you recommend to someone only starting to learn Golang? Thank you

If you could change one thing in open source, what would it be?

I guess you mean getting data directly from facebook using its API (as opposed to data that that facebook has anonymized and made available for research). Here’s a couple of guides on that:

https://towardsdatascience.com/how-to-use-facebook-graph-api-and-extract-data-using-python-1839e19d6999

You normally need to find ways to add value on top of the open source package. Otherwise you might make something really successful in terms of users but find that you can’t convert that into revenue. How big that risk is for you depends on your particular idea.

Sometimes people also talk about a risk that a competitor could use your open source and monetise it better than you. That could happen but in practice you’ll probably know your open source better than anyone else and competitors are more likely to start from their own codebase. They might find it a bit easier to mine your ideas with open source.

Of course there’s upsides too, like contributions from users and the potential to build a user base quickly. So you have to evaluate whether the advantages outweigh the risks for your case.

There’s a mix of different ideas driving the development and use of open source software. Some people are idealists and believe in making software available for the world to use however it wishes. Others are making code available open source to drive adoption that can be a basis for selling related products or services. Those are most different extremes.

You also get projects appearing in open source because somebody built something for a one-off use that they had and realised it might be useful to others too. Or researchers trying to start a new project and looking to get help and feedback from others. There’s a whole jumble of different motivations out there.

We tend to think of open source in terms of an ideological belief in freedom to use software however you want. That picture comes from the early days of linux and I think the world of open source now has lots of different stuff happening. There are still ideals and aspirations to do something good but there are also commercial interests too and lots of open source projects mix a bit of both.

The top approaches I’d suggest to consider are:

  1. Make an open source version available for users to install on their own systems for free and charge only for a managed service that you host.
  2. Develop add-on features only available to paying customers.
  3. Charging only for support and/or integration or add-on services.

There’s trade-offs with each. A managed service provides a clean line of separation but then you might miss out on selling to customers who want to run on their own infrastructure. You might find some big companies want the security of a support contract and want to run on their own infrastructure.

Using the enterprise add-ons model can let you target which type of users you want to convert to paying customers. For example, you can pitch the add-on features at big companies by targeting security and permission features. But you have to be careful not to frustrate users or leave them feeling a bit tricked.

Charging for support and services is basically the model that Red Hat uses. It can certainly work but can make it harder to convert users into customers as the value-add is less tangible.

Basically politics comes in when direction isn’t fully clear and people fight for their own versions of the direction or their own view of what their part of the project should be doing.

One example would be if your system depends on another system, perhaps it makes an http call to get some data. But there’s a bug affecting a particular call you want to make to get a new feature out. So you need the other team to fix that. But that bug might not be high priority for them. That’s a priority alignment issue. It would become a politics issue if the other team gives all of your bugs low priority and doesn’t regard it as important to support integrations to your system well.

I’ve co-authored an article on this titled ‘Silos, Politics and Delivering Software Products’.