Developer Experience

David Malcolm dmalcolm at redhat.com
Tue May 4 18:55:55 UTC 2010


On Tue, 2010-05-04 at 14:01 -0400, William Jon McCann wrote:
> Hey,
> 
> So one thing we talked about on IRC last week was the idea of driving
> the design of the OS from two different and complementary angles: user
> experience and developer experience.
> 
> We have a pretty strong and unfolding story for the evolution of the
> user experience but I don't yet see discussion and planning for the
> improvement of the developer experience.  I imagine this could involve
> things like OS platform and subsystem design, toolkit API and SDK
> design, development tools, deployment and management, feedback, etc.
> 
> Anyone want to take part in some discussions and/or brainstorm
> sessions on this?  We might be able to arrange a call in number if we
> want to try it live.  Though, first, maybe we should try to research
> and document things we like and dislike about existing systems.
> 
> Does this sound interesting to anyone?

Something I like to think about is "who is the developer", and "what is
the developer trying to develop?"

I posted some ideas on this here:
http://lists.fedoraproject.org/pipermail/devel/2010-February/130362.html

and I'll take the liberty of reposting that content here:

<quote>
"best linux distribution for developer" seems too vague to me to be
achievable.  I think there are different categories of developer.

Here's an attempt at a concrete and realistic (though fictitious)
persona:
  - Gillian is one of 6 employees at "stelthix.com", a startup based in
Cambridge MA.  She is a graduate of MIT.
  - The startup is in in "stealth" mode, building a web-based service
that will be the next Google, or at least, they hope, acquired by Google
(they're not yet saying what the service does).
  - They hope to launch the site in 3 months time; they are working
every waking hour building the site and the backend, talking to
investors, signing up service providers etc
  - All of the employees do at least some "development", even if it's
just editing HTML templates, and tweaking of Python scripts.
  - Their web site is implemented in Django, and they're heavily using
Python throughout the backend, though they have some optimized C code
which one of the other developers wrote for a compute-intensive task.
  - They have an internal Trac instance which they're using as a private
wiki, an issue tracker, and for SVN.  The SVN instance stores all of
their code (for both the web site, the scraping/data mining tool that
feeds the data, their custom scripts that leverage Google's APIs etc).
  - They're happy to use FLOSS, but their code is going to be
proprietary (alas).  They have written an API which customers of the
site can use for some purposes, but those customers will never see the
implementation.
  - They are renting time on Amazon EC2 for the compute-heavy parts of
the backend, and the beta instance of the site is hosted on Linux.
  - They have a buildbot that is running the full test suite after every
check-in; this is running on a Linux box somewhere.
  - Most of the team use Mac laptops running OS X (alas), but the
deployment environment is Linux, and some of the team have Linux boxes
which they use for development as well.
  - They try to stick to the standard Python libraries plus Django
because it's fiddly tracking additional dependencies in their (mixture
of Mac + Linux) world.

I think this is a realistic story [1], and is more concrete than "best
linux distribution for developers".  It leads to these questions: why
will Gillian choose to use Fedora on her laptop?  Why will Gillian
choose to use Fedora on the backend servers?  Why will Gillian recommend
Fedora to the new hire after the company gets more VC funding?

I'm somewhat biased towards Python here; you could rewrite this somewhat
and change Python and Django to Ruby and Rails, and it's probably
important to do both cases well; we want a great Rails story as well as
a great Python story - "Ray was in the same class as Gillian, and now
works at wearemorepragmaticthanyou.com", perhaps.

Another developer persona might be:
  - Fred is a sysadmin and postdoc at example.ac.uk
  - he manages a variety of servers and workstations on the campus as a
job, whilst working towards finishing his thesis
  - in his spare time he is working directly on a re-implementation of
an encumbered piece of software
  - He cares deeply about software freedom, and needs a decent build of
the tools he needs (gcc, GNU make, gdb, perl).
  - He worries about software patents, and has tried to avoid MP3 for
some years, but doesn't always succeed.

I hope this is useful and realistic, and not too much of a caricature.

I believe we currently do a good job of appealing to Fred (though we
could always do better), but less so at appealing to Gillian or Ray.

This hits the "web 2.0 startup" cases and the "enthusiastic FLOSS
volunteer" case; there'd probably need to be a persona for a Java
developer within a large company too, and probably stuff I've not
thought of.

</quote>

That post was aimed at a high-level discussion of Fedora's goals, but
from the perspective of making Fedora a great fit for each of the
personae, we'd want:
  - good editors for Python, Ruby, HTML (and templates), JavaScript,
Java, C
  - good integration with EC2
  - good integration with databases (including this new-fangled NoSQL
stuff)
  - well-tuned language runtimes (Python and Ruby)
  - lots of good debugging hooks.  I did some work on this for Fedora 13
for Python; maybe we should do the same for Ruby.
  - a Django spin?  a RoR spin?  EC2 images of these?
  - etc

Hope this is helpful
Dave

[1] though the last time I worked at a company of that size was some
years ago; caveat lector



More information about the desktop mailing list