JIRA Workflows from the Trenches @ NTT DATA EMEA Blog

Just published: JIRA Workflows from the Trenches @ NTT DATA EMEA Blog.

Atlassian’s JIRA (https://de.atlassian.com/software/jira) as a project management tool is actually an industry standard for the software projects. However the initial configuration of many aspect of JIRA leaves areas for improvements. This post focuses on the JIRA workflows, which define states for the issues, such as user stories and bug, and the transformations between them (also known as workflow or state machine).

All that based on my experience as a chief of development with real examples from my current project: quasi directly from the trenches.

Workflows from the Trenches


Are You a Programmer? Think Twice Before You Say "It Is Just a Trivial 'Hello World'" example!

It is Monday in Germany, and it is Easter Monday 2016.

I had finally chance to take my "pimped" Commodore Amiga 500 out of the shelf (yes "she" is pimped, with 2 MB RAM, with a Workbench-switch between versions 2.0 and 3.1, with a Gotek floppy emulator, and so on). And I had played with it. Hm, you know me, no games, just coding, just assembler, just pure system.

The ASM-One assembler together with a "very" old book "Amiga Assembler Buch" by Peter Wollschlaeger did their job perfectly. I wrote a "Hello World" for the Motorola 68000 and Amiga DOS. I was able to assemble it, to link it and to run it. And here is the result:

Running "Hello Word" written in assembler on Amiga 500
Bildunterschrift hinzuf├╝gen

Wow, what a result! It is tremendous!
I can see the "Hello World" printed on the command line of Amiga's Workbench! Ok, just kidding...

But wait a minute and just look at the code, the pure Motorola 68000 assembler code:

* Hello World using 68000 assembler
* based on example from Peter Wollschlaeger book 1987

SysBase:  equ 4  ;base of exec
LVOOpenLib:  equ -552 ;open lib
LVOCloseLib: equ -414 ;close lib
LVOOutput:  equ -60  ;dos.lib get output-handle
LVOWrite: e qu -48  ;dos.lib write

* open dos.lib

main: move.l #dosname,a1 ;name of dos.lib
  moveq #0,d0  ;version is not relevant
  move.l SysBase,a6 ;set base address of exec
  jsr LVOOpenLib(a6) ;call open lib
  tst.l d0   ;any errors?
  beq finish   ;on error goto finish
  move.l d0,DOSBase ;save pointer to lib

* find output handler

  move.l  DOSBase,a6 ;set base address of dos.lib
  jsr LVOOutput(a6) ;call function
  move.l d0,d4  ;save output handler

* print text
  move.l d4,d1  ;set output handler
  move.l #string,d2 ;set address of text
  moveq #12,d3  ;set length of text
  move.l DOSBase,a6 ;set base address of dos.lib
  jsr LVOWrite(a6) ;call function

* close libs
  move.l DOSBase,a1 ;set lib to close
  move.l SysBase,a6 ;set base address of exec
  jsr LVOCloseLib(a6) ;close the lib

finish:  rts

* data

DOSBase: dc.l 0
  cnop 0,2

dosname: dc.b 'dos.library',0
  cnop 0,2

string:  dc.b 'Hello world',10,0
  cnop 0,2 

To print a "Hello World" on the Amiga 500 using assembler, you have to first find the address of the DOS library, open it, set parameters for the method, call it and and finally close it carefully at the end... It is not a just one or three lines of code you suppose to write...

So think twice before you say "it is just a trivial 'Hello World' example". Our modern machines do pretty much similar stuff as wirten above.

And think again about it when you decide to use a plenty of high sophisticated libraries to access a database, create services or integrate security. Think about what is going on under the hood. Think about this "Hello World" example. Think about complexity you introduce. Just think about it because this is reality.