Apprenticeship Day 2
Day 2 began with a look at the commercial side of the business. Howard explained that endjin's philosophy is to make sure that everyone – whatever their level or role - understands how the business operates, and applies this knowledge to their every day activities. We talked about the importance of accurate project scoping, time estimation and time logging – the people who will actually do the work are always involved in estimating how long it'll take.
We moved on to discuss how we work with clients, and Howard described the standard agreements used at endjin – Master Service Agreements which defined the overall relationship between us and the client, and Statements of Work relating to individual client projects, which break down into a series of work packages.
Afterwards I saw part of this process in action, as I sat in on the creation of a Statement of Work. Howard & the Project Lead worked together to estimate each task, checking with other members of the team who would be doing other tasks where necessary, and clarifying points we were uncertain about with the client. This all happened quickly and efficiently with a minimum of fuss – the benefits of working in a relatively small team unburdened by layers of bureaucracy.
The final step was to translate this Statement of Work into trackable items and associate them a sprint in YouTrack. Senior developer Pascal helped me do this and showed me some keyboard shortcut wizardry to speed up the process. A few selected ones below (many more can be found on the documentation):
- F2 to quickly edit a card in YouTrack
- CTRL + Enter to save a new issue in YouTrack
- And the classic Windows shortcut ALT + TAB, to navigate through open applications.
We also used the Command Dialogue which lets you make changes to multiple items quickly.
It was interesting comparing YouTrack to the issue tracking software I'd used before, particularly the way in which items could be mapped into the Agile development process.
The day involved a lightbulb moment as Howard talked me through systems and deployment, and shared his recent findings about automating YouTrack status updates based on TeamCity activities.
I must admit, when I started, although I knew the names of the systems used by endjin, I was pretty puzzled about how they worked together. For example:
- How does a source repository communicate with a continuous integration server?
- For that matter, what does a continuous integration server actually do? (Discussions with old school linuxy friends had yielded a blank on this one – surely you just use Git for source control, and build, test and deploy as usual, job done?).
- How was all this connected to NuGet, the .NET package library? Obviously it could store compiled packages, but how, and at what stage did they get here?
- Finally, how did tracking systems such as YouTrack fit in?
There seemed to be multiple systems talking to each other in an automated way – I was confused about how they could possibly do this without tripping over each other, and complicating the development, testing and deployment process. The answer is – they can and do.
Each of these tools is designed to work with the others, in a straightforward version of the usual workflow which takes out the repetitive human tasks.
I'll leave you with the questions for now, and share my findings in a blog about 'GitHub, TeamCity, NuGet, Azure and YouTrack integration for newbies' soon. Howard's also writing a White Paper about YouTrack and TeamCity integration, for those wanting more.
Day 2 rounded off with some more reading, looking at some recent workshop write ups for a company looking at virtualising their environment. After this morning's talk, I could see how the workshops followed endjin's cloud strategy process of Envisioning, Solution Design and Proof of Concept Planning.
Looking back on the day, it provided some very useful perspective to the systems and technical lessons of Monday. More to follow on Day 3.