Tuesday, 23 November 2010

Scrum

Compiled based on the talk by Ken Schwaber at Google (http://www.youtube.com/watch?v=IyNPeTn8fpo)

Basic features of scrum:

Involves short sprints of durations ranging from 3 to 30 days.

At the end of each sprint the team has to deliver agreed functionality that is complete (coding standards followed, documentation produced, unit testing performed) and demonstrable (not abstract).

There are daily scrum meetings where the scrum master and product owners are observers only. The team members each say what they have done since the last meeting, what issues they are facing and what they plan to do next.

Roles involved:

Product Owner: Represents the customer, prioritises the requirements and gives feedback on delivered items.

Scrum Master (aka the Prick) who stands between the marketing and management people who believe that the deadlines can be met by working harder, and the dev team who tend to cut quality in order to meet the deadline. The Scrum Master's role is to ensure that the quality is maintained in all sprints, and not pass the sprint if the quality is not there (lack of documentation or unit testing or coding standards).

Team: Ideally cross-functional developers who are able to do each other's jobs.

Documents involved:

Product Backlog: List of requirements
Sprint Backlog: List of tasks being delivered in a given sprint, each task being worth one or two day's work.

Burn Down Chart: A chart with tasks on the Y axis and time on the X, showing how the outstanding tasks go down in time. The slope indicates the Sprint Velocity.

One big issue with old code is that such corner cutting has gone on for years and years and it slows down all development that depends on this core functionality that is not properly documented, tested and developed to standards.

QA people tend to make good scrum masters.

Thursday, 18 November 2010

External Tables

This is an alternative to using sql*Loader, .ctl files and batch files to load flat files into Oracle tables.

You define a directory on the database server:

create or replace directory external_dir as '/home/dev/tqi/data'

Give access to that folder to the oracle user, and then specify the structure of the flat file as follows, which then makes it look like a table you can select from!

create table x_emp
( empl_id varchar2(3),
last_name varchar2(50),
first_name varchar2(50)
)
organization external
( default directory external_dir
access parameters
( records delimited by newline
fields terminated by ','
)
location ('x_emp.csv')
);

Just put the file into this location and do this:

select * from x_emp