Professional Programmer is Professional

Professional programmer is professional

(The image above was the first result I got when searching Google Images for a CC-licensed image for “professional programmer”.)

Two weeks ago, I wrote about the SEO workshop I’m running on Tuesday morning just before The Perl Conference in Glasgow this August. Today, I’d like to give a few more details about the other workshop I’m running that day. After lunch, I’m running a workshop called “The Professional Programmer”. What’s that about?

I came into programming through what was a very traditional route. I did a degree in Computer Studies which I finished in 1988. And for the last thirty years I’ve been working as a programmer for a number of different companies from tiny start-ups to huge multi-nationals.

But more and more, I’m working with people who didn’t come through the same route. It’s very common that I’ll be working with people who don’t have a degree. And it’s rare that I’ll work with someone who’s been in the industry as long as I have (for I am an Old Man). I’m not saying for a second that those people aren’t just as capable of doing the job as I am. But I am saying that I know stuff that some of those people won’t have worked out yet.

This certainly isn’t going to be me telling you stuff that I learned on my degree. To be honest, I can’t think of much on my degree that I’ve used in my career. On my degree course, SQL was introduced as a cutting-edge technology (one lecturer even described it as a reporting tool that could be used by end-users!) We also did classes on COBOL and Assembler. No, there’s very little there that would be of much interest to people working in the modern software industry.

A few days ago, I started to sketch out some of the things I might want to talk about. I think the plan is going to be that we start with some of the technologies that sit alongside the programming that we all do every day and slowly move away from hard tech into the fluffier areas of the industry that we work in. Here are some of the topics I hope to cover.

Adjacent Technologies

Ok, we all have a programming language or two under our belts. But what else do we need to know?

How well do you know the operating systems that you work on? What, for example, is the most obscure Unix tool that you know? At what level do you understand the networking features that your code almost certainly makes use of? Can you debug network connectivity problems? To what level of detail do your really know the HTTP request-response cycle?

What data storage systems do you use? How well do you know SQL? Do you use No SQL systems as part of your technology stack? If not, could you? Do you cache things at the right level in your application? Should you be caching more things? Do you have a CDN? Do you know what a CDN is and what it does for you?

Are you an expert in the tools that you use every day? I don’t care if you prefer vi or emacs (or, I suppose, anything else), but are you an expert in using your editor? I’m happy to admit this is one area where I fall short. I bounce between many different editors and I’ve never really become an expert in any of them.

Are you the person in your team that people come to with git questions? Or do you just know half a dozen commands that seem to do approximately the right thing most of the time? Your source code control system is a vital part of your workflow. Get to know it well.

How well do you know your continuous integration environment? Do you know which buttons to press to get a release built? Or are you the person who is constantly tweaking and improving the Jenkins jobs that power the release process? And what underlies your release process? Are you building RPMs or some other type of package or do you build a new Docker container and deploy that in the cloud? How well do you know the cloud provider that you’re using? Are there new AWS features that could replace parts of your existing infrastructure? (The answer to that question is always yes.)

How good are your tests? What’s your unit test coverage? How many different types of automated testing does your system use? Do you know the difference between unit tests and integration tests? What tools are you using for automated testing? How well do you know how to use them? Is there something better out there?

Software Engineering & Architecture

What level are you involved in architectural decisions? How do you decide on a design for your application? Are you using largely procedural code or does your system make good use of classes? Is it possible for a system to be too object-oriented? How do you know when you’ve crossed that boundary?

How is your knowledge of design patterns? Do you know what a factory class is? Do you know why you would use one? Have you ever written one? Do you have an opinion on MVC designs? What is good and bad about the frameworks that you use? What would you like to do differently?

Are you maintaining a monolithic codebase from fifteen years ago? Do you have a plan to modernise your code? Have you implemented any microservices yet? How do you go about replacing small parts of a monolith with microservices? What are the advantages of a microservices architecture?

Is your team using an agile software development methodology? Is it Scrum, Kanban, XP or do you just cherry-pick bits from all of them? Is your team really agile or do you just pay lip service to agile techniques? Are you self-managing? How accurate are your estimates? Can you improve that? How well do you know the Agile Manifesto? To what extent do you agree with it?

The Business

What does your company do? What does success look like? How does what you do contribute to that success? How well do you understand the business? Do you have suggestions for improving the business outside of your team?

Do you understand the environment that the company operates in? What do you know about the economic pressures on the company? Is the company publicly or privately owned? Do you have shares in the company? Do you know what they are worth?

Personal Development

What level are you currently at? Do you know what you need to do in order to progress in the company? Do you have a plan to achieve that? Do you have a mentor inside the company who can help you come up with that plan? Will the company give you budget for training and personal development?

Do you need to communicate with business people inside the company? How good is your written and spoken English? Do you know how to use apostrophes? Do you need to give presentations to people in the company? How comfortable are you with public speaking? Can you get better at that?

How well-known are you outside of the company? Can you blog about your technical expertise? (You probably need to be careful if you’re blogging about stuff you do at work.) Do you speak at conferences? Should you start speaking at conferences?

 

As you can see, when I start writing this stuff down, it can easily all get a bit “stream of consciousness”. Hopefully in the five weeks between now and the workshop, I can tie it down and impose a little more structure on it.

But not too much structure. I’d like to keep this pretty loose. I want the workshop to be very much a two-way discussion.

I hope that sounds interesting to some of you. The workshop will be in the afternoon of Tuesday 14th August. To attend any of the workshops, you’ll need to buy an extra ticket. Tickets for either of my half-day workshops are £75.

I hope to see some of you there. Please let me know in the comments if you have any questions about this workshop.

Web Site Tune-Up: A Case Study

TPC Workshops

I thought it might be interesting to talk about some of the topics I’ll be covering at my workshops at The Perl Conference in Glasgow in August. Today I’ll be talking about the Web Site Tune-Up workshop and in my next post, I’ll cover The Professional Programmer.

And I thought it would be most useful to show you a case study of where I’ve done some work to tune up a web site. So here’s the story of some work I’ve done on the web site for The Perl Conference in Glasgow itself.

When the site first went live, I noticed that it didn’t have any Open Graph tags. Open Graph tags are a series of HTML elements that you can add to the of a web page which tell sites like Facebook interesting things about the page. Most usefully, they can tell Facebook and Twitter which image and text to use when someone shares a link to your site. Obviously, we all want people to share our URLs as widely as possible and having a nice image and a useful description show up when the site is shared is a good way to encourage more sharing (and as I’ve been typing that, I’ve just realised that actually having obvious sharing buttons on the page is another good idea – more work to do there!)

So I needed to find the right place to add these tags. Most web sites are generated by a content management system. Most Perl conference sites us A Conference Toolkit, So I just needed to look through the conference repo to find the template that generates the header of the page and edit that.  Here’s the first commit I made, which just added hard-coded values for the tags. With this in place, the tags looked like this:

That was an improvement, but there were a few problems. Firstly, it was missing a couple of tags that Twitter likes to use, so I added those in this commit. Then I noticed I had forgotten the description (which prevented Twitter from parsing the data correctly). This commit fixed that.

And there it sat until quite recently. But last weekend I decided I needed to fix those hard-coded values. I noticed the problem when I shared a link to the workshops page on Facebook and my post contained information about the home page.

This took a bit more digging. I had to understand a little more about the internals of ACT. But over a series of small commits last weekend, I got it working as I wanted. Actually, not quite as I wanted – the Wiki URLs are still not working properly, I’ll get back to those later on. I also want to change the description on every page – but I’m not sure if that’s possible in ACT.

This weekend we published an initial version of the schedule for the conference – one that only covers the workshops (as those are the only talks with firm dates yet). Initially, it didn’t look very nice as the standard ACT template for the schedule page shows unscheduled talks before scheduled ones. That didn’t make much sense to me as there is a huge list of unscheduled talks and it seemed unlikely that anyone would ever scroll past that to find the scheduled talks. You should also bear in mind that Google is the most important visitor to your page and Google assumes that the most important content on your page comes first. So changing the order is likely to give us an SEO boost.

So I wanted to find a way to fix that. And that turned out to be harder than expected. It turns out that ACT is built on layers of templates. If your ACT instance doesn’t have a particular template, then the default one is used. And it looks like most people just use the default schedule template. But once I had copied that template into our repository, I was free to edit it any way I wanted. I started by doing the re-ordering that I mentioned above. Then I started to consider other options.

Firstly, the default formatting of the schedule on a ACT site is a little ugly. But I knew that the TPC Glasgow site was built using Bootstrap.  So I knew that I could use Bootstrap’s table classes to make the schedule table look a little nicer. That was just a case of adding some classes to the template that generates the table (and, actually, removing quite a lot of unnecessary classes and presentation mark-up – removing presentation mark-up is another good tip for SEO).

Finally, I wanted to change the order of the data in each cell of the presentation table. Remember when I said above that the most important data should come first? Well, if you’re presenting data about a conference talk, what’s the most important piece of information? The default template showed the speaker’s name before the title of the talk. I wanted to reverse that (I also wanted to split the data across several lines). It turned out that this mark-up was in another template which contained a number of “utility” macros that I had to copy into our repo. But once I had done that, it was simple to make the changes I wanted. The current version of the schedule layout is in the image at the top of this post. I hope you agree it looks nicer that the old version.

So that’s where I’ve got to. There are a few other fixes I’d like to make:

  • Fix the Open Graph tags for the Wiki (they’re broken currently because the URL includes parameters)
  • Add variable descriptions to the Open Graph tags (if ACT can be made to support it)
  • Add more prominent (and more varied) sharing buttons to the pages
  • Add structured data to the schedule pages, so that Google has a better chance of knowing what the pages are about.

But that’s a pretty good example of the kinds of things I’ll be talking about in my Web Site Tune-Up workshop. To summarise what I’ve done:

  • Added OpenGraph tags to all pages
  • Restructured the schedule pages so the most important information comes first
  • Moved towards using more semantic mark-up and removed presentation mark-up
  • Reordered the data for each talk so readers (including Google) know what the most important data item is

This only touches on the kind of information I’ll be covering in the workshop. There will be dozens more practical tips you can use to improve Google’s understanding of your web site.

The half-day workshop takes place on Tuesday 14th August from 09:30-13:00. Tickets are available when you book your ticket for the main conference and cost £75.

Hope to see you there.

London Perl Workshop Report

Lightning Talks Preparation at the LPW 2017

(Photo above by Chris Jack)

Last Saturday was the annual London Perl Workshop. I should write up what happened before I forget it all.

I arrived at about 8:30 in the morning and was able to check in quickly – collecting a bit of swag which included a free t-shirt as I was a speaker. I then made my way up to the main lecture theatre in order to see Katherine Spice welcoming people to the day on behalf of the new team of organisers. After that headed off to the smaller lecture theatre to set up for my tutorial. There were a few differences from previous years. Firstly, I was giving a completely Perl-free tutorial (about on-page SEO techniques) and secondly, I had been moved out of the tutorial track and into one of the main talk tracks. As a side effect of that second change, I was also asked to trim my talk from my usual two hours to a more “talk-like” eighty minutes.

The talk seemed to go well. I got some interesting questions and a few people came up to me later in the day to tell me they had found it interesting useful (sometimes both!) The slides to the talk are available on SlideShare: Web Site Tune-Up – Improve Your Googlejuice.

Following that, I had time to see one talk before the coffee break and I chose Why learning a bit of Crypto is good for you‎ by Colin Newell. Colin gave a good (if, necessarily rather shallow) explanation of how learning a small amount of cryptography can help you improve the security of your systems.

Then it was was the morning coffee break. For the past few years, this break has traditionally included cakes which were supplied by a sponsor. When that didn’t look like happening this year, organiser Neil Bowers (with a gentle nudge from Leon Timmermans) came up with the idea of a community bake. And that’s what happened. A number of attendees baked cakes for us all. I had one of Neil’s blueberry muffins and it was lovely.

There was a slight change in the schedule after the coffee break. Matt Trout was unable to be at the workshop so, at the last minute, JJ Allen stepped in and gave his talk To delete or not to delete, that is the question‎, which was about some impending data protection laws which will affect all businesses. I stayed in the same room to see Neil Bowers explain The PAUSE Operating Model‎ and then JJ returned to talk about something completely different – Perl and Docker, sitting in a tree‎.  JJ’s company, Opus VL, have released some of their Docker infrastructure code to CPAN and I’m sure many people will find it useful.

Then it was lunchtime. I bought a sandwich from the university’s cafe and sat in the foyer talking to various friends who walked past.

I started the afternoon watching Paul Evans on ‎Devel::MAT updated‎. Devel::MAT is a development tool which aims to do for memory analysis what Devel::NYTProf does for profiling. It looks very useful. That was followed by Julien Fieggehenn’s talk Turning humans into developers with Perl‎. Julien doesn’t just train people in Perl, he acts as a mentor for them for a couple of months when they join his company, so he was able to talk in some detail about much wider issues than just choosing which topics to cover in a training course.

Talking about wider issues, I then saw Tom Hukins’ talk Development: More than Writing Code?‎ Tom is, of course, right that there’s more to being a good developer than just writing good code. This is a topic that I’m thinking of developing a training course on. Tom was followed by Paul Johnson giving good advice on Modernising A Legacy Perl Application.

The afternoon coffee break included some professionally baked pastries. They were also lovely, but don’t think they were appreciated quite as much as the morning’s community versions.

After the coffee break, we all gathered in the main lecture theatre for the plenary session. Ann Barcomb spoke about Fifteen Years of Contributing Casually‎. Ann was once a Perl developer. I first met her at the first YAPC::Europe in London in 2000 and she was then part of the organising team for the second YAPC::Europe in Amsterdam in 2001. But since then she has become a researcher into the sociology of the open source movement. You can read a lot of her research on her web site. Her talk illustrated her findings with some personal anecdotes about her own casual contributions to the Perl community. Everyone seemed to find it fascinating and the Q&A at the end of the talk showed every signs of turning into a full-scale discussion. On a personal level, it was great to catch up with Ann again about fifteen years after we had been in the same room together.

And then there were the lightning talks. They were their usual mixture of intriguing and entertaining. Mark Keating (enjoying his first LPW that he wasn’t organising) implored us to get involved in the Enlightened Perl Organisation. I announced a plan to publish more Perl books (of which, more later). I was particularly impressed by Kenichi Ishigaki who flew in from Japan just to give a lightning talk about his module Perl::PrereqScanner::NotQuiteLite.

After that, there were a few closing words from Neil Bowers and, in another innovation brought in by the new organisers, drinks were served on site rather than in a local pub. Of course, some people went off to a local pub after that as well.

As always, it was a great day. The new organising team seem to have hit the ground running and produced an impressive workshop. My thanks to the organisers, the volunteers, the speakers, the sponsors and all of the attendees.

I’m already looking forward to next year’s workshop.

London Perl Workshop Klaxon

The London Perl Workshop is looking frighteningly imminent. It’s on November 25th – that’s less than three weeks away. All across the capital (and even further afield) if you listen hard you will hear the sounds of speakers frantically trying to get their talks ready.

That, at least, is how I have spent my weekend. I’m presenting a new training course at the workshop and I’ve been working hard on the slides for the last couple of days.

This new course is a bit of an experiment for me. It’s a completely Perl-free session. For most of this year, I’ve been working for a well-known property portal and the work I’ve been doing for them has concentrated on search engine optimisation and I’m going to take this opportunity to share some of my new-found knowledge with a room full of people.

I know what you’re thinking. SEO is either a) really dull keyword research or b) snake-oil. To be fair, I’ve seen both of those things, but that’s not what I’m going to be covering. I’d hate to be seen as either boring or a snake-oil salesman!

No, I’m going to be covering something that I think is far more interesting. The course will be all about making your web site more attractive to Google. And if Google likes your web site, they will crawl your site more often, extract more useful information from it and (hopefully) show your site in response to more user search queries. Getting your site to appear in more search results means more visitors and more visitors means a more successful web site.

I won’t be covering anything complicated. There’s nothing that you won’t be able to implement in a couple of hours. Anyone could use these techniques – but the point is that most people don’t. That’s why they work.

The schedule hasn’t been published yet, so I don’t know when I’ll be giving the talk, but I expect to have that information in the next few days. I do know that my slot is 80 minutes – that’s because the organisers have received a large number of high-quality proposals, so we all have to squeeze up a bit to fit in as many of them as possible.

The London Perl Workshop is one of my favourite conferences. The range of talks is always great. And it seems that this year’s workshop (which has a new organising team) is going to be no exception.

Hope to see some of you on 25th November.

Feedback

During the week, Barbie sent out the results from the feedback survey that he ran after YAPC Europe. The general results will be published later, but all of the speakers will have received an email containing the feedback from their talks. That feedback is private, but I’m happy to share mine with the world.

The feedback survey takes the form of five questions. People are asked to answer these questions with a rating from 1 to 10. The questions are:

  • Q1: Your prior knowledge of subject?
  • Q2: Speaker’s knowledge of subject?
  • Q3: Speaker’s presentation of subject?
  • Q4: Quality of presentation materials?
  • Q5: Overall presentation rating?

There is also an opportunity for people to write in more detailed comments if they want.

I gave two talks at the conference. A lightning talk called “Medium Perl” which introduced the idea of the Cultured Perl blog and a longer talk called “Error(s) Free Programming” which talked about Damian Conway’s module Lingua::EN::Inflexion.

Eight people gave feedback on “Medium Perl”.

Qu 1 2 3 4 5 6 7 8 9 10 Avg
Q1 1 1 2 1 2 1 4.5
Q2 1 1 1 5 9.25
Q3 1 1 1 5 8.875
Q4 1 1 1 5 8.875
Q5 2 1 1 4 8.875

What aspects of the tutorial or presentation worked really well?

  • I always enjoyed Dave’s humor.
  • History and goal are clear
  • Excellent presentation, as you always do. Funny and surprising.

How could the tutorial or presentation be improved?

  • Make Medium use a readable font or have them stop forcing me to use serif fonts. As long as the articles are presented as they are, I won’t read them at all. Period. (let alone open the possibility that I would post any material myself)

I’m not really sure how I’m supposed to make Medium change their fonts. I suppose I could suggest that they make other fonts available as an option. But then, so could the person who made that comment.

Four people gave feedback on “Error(s) Free Programming”.

Qu 1 2 3 4 5 6 7 8 9 10 Avg
Q1 1 1 1 1 4
Q2 3 1 9.25
Q3 2 2 9.5
Q4 1 3 9.75
Q5 2 2 9.5

What aspects of the tutorial or presentation worked really well?

  • Just about everything, an excellent presentation. Congrats.
  • Damianware!

How could the tutorial or presentation be improved?

  • I misunderstood the topic, and I thought it was a talk about programming without errors instead of how to solve localization of messages.

I can only suggest that the last people reads the talk description, not just the title in future.

I also got feedback about the “Modern Web Programming with Perl and Dancer” course that I ran before the conference. The feedback here is in a slightly different format as it’s a form that I made up myself. I got feedback from 11 people.

1 2 3 4 5 6 7 8 9 10 Avg
On a scale of 1 to 10, how do you rate your Perl ability?
1 1 2 2 3 1 1  7.09
On a scale of 1 to 10, how useful did you find the course?
2 1 6 1 1  7.45
On a scale of 1 to 10, how much did you enjoy the course?
1 5 2 3  8.54
On a scale of 1 to 10, how do you rate the instructor’s knowledge of the subject?
2 1 6 2  8.72
On a scale of 1 to 10, how well did the instructor teach the subject matter?
1 2 2 4 2  8.36
On a scale of 1 to 10, please rate the amount of material covered
1 1 3 1 1 2 2  6.27

That last question is always tricky. The form is clear that if you think it was just right, to score 5. But I always get some people choosing 10 and I think I’d know if people thought I was covering stuff far too quickly. That 1 is a bit of a worry though.

So, all in all, not bad scores. And generally people saying nice things. Which is always nice to see.

Now I need to start thinking about the London Perl Workshop.