Improved slides development
process - proposal

Current issues

Efficiency

  • front-end developer needs around 4 weeks to build a slide from scratch
  • we have 4 slide makers in the team, it equals to 4 new slides per month
  • with such efficiency level we can't deal with requests number predicted for near future

Stability

  • developer environment is far from that it can be called "stable" and "well organized"
  • spontaneous system crashes (backend & frontend)
  • unstable develop branch
  • pre-publish chaos
  • it just does not help when you are struggling for finishing work before the deadline

Competency

  • making a slide is not as easy as a pie
  • slide maker has to do much more than just create a view and interaction logic
  • average front-end developer can't handle this task (we have to look for people with special skills)

Complexity

  • we have far too small common library of reusable components and utilities - when making the slide, developer has to create basic things first; even if they have been made already, nobody knows about it
  • our internal front-end framework is not prepared for some slide-specific features and things which are coming - more and more workarounds everywhere

How slide development looks today

Front-end

Back-end

Parsing data

Creating view & interaction logic

Applying filters on data

Creating basic components

Fixing view for export

Fetching data from DB

Front-end developer has to

  • understand data
  • understand aggregation logic
  • know export abilities*
  • finally - know, how to
    create the view

* does anybody know it?

Improvement proposal

Front-end

Back-end

Fetching data from DB

Creating view & interaction logic

Creating view-friendly data

Providing filtered data

Improving export

Slide makers

Creating common components

Core team?

  • backend developers has to actively participate in the process of creating slide (preparing data, improving export); that work has to be planned, not ad hoc
  • core team does not have to be separated team, just a people with time given for building components for everybody else, not just themselves

Make people responsible for what they can do well

Stop making people irreplacable 

  • the view cannot be private property of single developer anymore - consider work splitting
  • architecture design have to be consulted with the team, then documented
  • structure as well as code style have to be standarized
  • documentation at least for crucial parts of the code, like modules and data flow, also for not obvious or unclear concepts
  • code reviews and refactors are the only way to make and keep code quality high

Plan the work

  • estimate new slides not right before starting development - give a time for thinking
  • decide, what parts may become common components, then split tasks between slide maker and core team
  • set deadlines and synchronization points
  • track progress to have a point of reference in the future
  • describe each task on bugtracker

Use GitFlow truly

  • feature and bugfix branches always, for everything?
  • develop branch has to be stable and well-tested always (make tester's life harder? start using Pull Requests?)
  • clear and commonly-known releases flow

It's happening today

  • we are trying to estimate slides as a whole team
  • we split work on slide between multiple developers
  • we have a developer dedicated for export feature
  • we are trying to create components with next slides in mind (menu, footnotes)
  • we are trying to work with feature and release branches

We still do not

  • plan tasks in advance, including frontend and backend  job
  • make code reviews
  • write documentation
  • stabilize infrastructure and working with Git
  • plan a time for creating common components
  • keep an eye on Redmine

Questions?

Statements?

Suggestions?

Slides development

By Eryk Napierała

Slides development

  • 1,585