A demi-decade at Kobas

As of last Sunday, I’ve been working at Kobas for five years (a demi-decade 😅) , reading my post from a month in reminds me how much has changed and prompted me to provide an update.

Job Role

My job role has changed significantly throughout my time at Kobas. Initially, I was feature-focused and spent all my time programming. As time passed, I became more involved with bug fixes and technical product management: planning features, evaluating APIs and implementing technologies. We’ve also expanded our team along the way, so I’ve experienced our onboarding process from both sides. 😆

Issue Management

Previously we were using Pivotal Tracker for our issue management, while it did work great for planning features, it was lacking in terms of bug management. I worked on moving us over to YouTrack, which at the time required utilising both the Pivotal Tracker export API and the YouTrack API (a fun task 😁). YouTrack has worked great for us so far, we use their Agile Boards for sprints, project planning and issue triage.

Working Location

COVID-19 isn’t something I’ve posted about on here yet, which is strange considering that’s been the main subject of the past year. Before COVID-19, Kobas was hybrid-remote, having staff members working from home a certain % of the week, but still maintaining an office that could host all our staff members.

We’ve now transitioned to being completely remote, which I prefer. I’ve found GitLab guide on remote work fantastic for resources surrounding working remotely. Overall, I think our transition to remote work has gone smoothly as we already had a lot of technology in place to support remote work (like a VPN).

Features

We’ve made some impressive stuff for our clients since my last post, too much to really talk about without this becoming a changelog. The most recent thing that comes to mind is the Customer Interaction Centre, providing our clients with a way to support online ordering.

Other projects that come to mind when I think of my time here are: integrating PDQ terminals using socket connections (much fun), rewriting our stock system to support FIFO (not fun), and moving our API authentication over to OAuth 2.0 (easier to support third-party integrations).

Upgrades

We like to keep all our technology up to date in Kobas, and the last five years has seen a lot of upgrades.

Our back-end now runs on PHP 7.4 (currently working on upgrading to PHP 8) with CentOS 8 Stream as the OS. Our main framework is Symfony 5, after a lot of work migrating from Silex. 😬

On the front-end, we’ve added ReactJS into the mix, and new projects are now done in that. Lastly, on the automated testing front, we are still using Codeception but are moving our acceptance tests to Cypress.

Future

As evidenced by this year, it’s impossible to know what the future holds. But I hope to be able to post more about the work I’m doing at Kobas on here, as I’m aiming to add more open source projects. Stay tuned. 😉


Posted on June 08, 2021

Programmer Personality: 2020

While converting over my previous post of my Programmer Personality, I decided to do it again and see whats changed, as expected it has.

Your programmer personality type is:

DLSB

You’re a Planner..

You may be slow, but you’ll usually find the best solution. If something’s worth doing, it’s worth doing right.

You like coding at a High level.

The world is made up of objects and components, you should create your programs in the same way.

You work best in a Team.

A good group is better than the sum of it’s parts. The only thing better than a genius programmer is a cohesive group of genius programmers.

You are a liBeral programmer.

Programming is a complex task and you should use white space and comments as freely as possible to help simplify the task. We’re not writing on paper anymore so we can take up as much room as we need.

Find out what kind of programmer you are here !


Posted on August 09, 2020

My thoughts on management & time tracking

manager-time.jpg So I’ve talked about time tracking before , however that was much more a “Keep yourself on track / how to know what to bill per hour as a freelancer/contractor”. Today I’d like to share some thoughts on bigger companies and my feelings toward management and time tracking there.

I’ll preface all this with ”these are my opinions, I’m not saying I’m entirely correct here, this is just how I personally feel“.

As a programmer I love my craft, I spend hours playing around with new technologies, learning new languages and wrapping my head around computer science concepts. I’ve always known programming would be my career from a young age, finding it amazing that people would pay me to do what I love to do anyway.

What I never realised back then is how much of a programming role involves no programming at all. Meetings can be a daily occurrence, eating into your time, understandable though as things do need to be decided on/signed off. Managers need you to explain all sorts of stuff to them so that they can sound informed to whoever it is that they report to. Clients want you to explain why you can’t add five new features by next week. Customers want you to explain how to use things (and occasionally need you to fix things).. Priorities must be juggled.

All of the above I don’t really have an issue with, they are mildly annoying but to be fair, necessary evils.

What I do have an issue with however is time tracking on top of this in large organisations, usually so your manager can have some form of chart showing what their team have spent their time on the last few weeks. Of course this would all be possible without disturbing the programmers workflow at all (since we all have issue management systems) but the word “granularity” starts getting thrown around and the next thing you know you’re now in JIRA logging hours on tickets trying to justify where you spend every minute of your day.

I honestly don’t get it.

I feel as a developer getting told to do this makes you feel that you are not trusted to manage what little time you have to do programming yourself. That you’re possibly under performing and need to work harder. Or that your time isn’t as valuable as the managers time. All in the name of a granular report that probably gets a courtesy glance at and then binned. It definitely doesn’t create a happy team environment.

If you haven’t read Programmer Interrupted , I recommend that you do, but I’ll just include the results of their study here:

  • A programmer takes 10-15 minutes to start editing code after resuming work from an interruption.
  • When interrupted during an edit of a method, a programmer resumed work in less than a minute only 10 percent of the time.
  • A programmer is likely to get just one uninterrupted two-hour session in a day.

These are the problems that management should be trying to solve, not trying to interrupt a programmers time further by requiring that they log each and every hour that they’ve spent on each feature.

Another great article that discusses how programmers see time different to managers is the Makers Schedule.

Where I currently work (Kobas) actually deals with all of these things I’m complaining about very well. For a start there is no time tracking (making me very happy), we have a daily slack stand-up (i guess its more sit down?) where we give a few sentences of what we worked on yesterday and what we plan to do today. It’s very helpful for knowing what other people are up to without wasting time doing an actual stand-up.

Interruption wise at any point i feel I need to have an uninterrupted session I can pop in my headphones and unless something explodes I never get interrupted. Meetings for me are rare but when they occur they have an actual purpose. Developers != Support leading to less interruptions, of course I have to fix problems that come up from support but I’m not personally being interrupted by support requests.

So its certainly possible for companies to function well in these ways, why more big companies are not is beyond me.


Posted on August 29, 2016

First month at Kobas

Image of Kobas team meeting

So I’ve been working for roughly a month at Kobas now, I think things have been going very well and I wanted to highlight what I’ve been working on for the last couple of weeks.

For anyone that does not know what Kobas does, it is a hospitality management solution covering; stock control, rotas, HR, EPoS, customer loyalty and much more. It’s actually a very useful piece of software for clients, allowing them to gather lots of data from all areas of their business and providing a cloud interface that outputs that data in fancy reports. After seeing it in action I find it very surprising that not all businesses use this as it can really help you to increase your profits and avoid wasting money unnecessarily.

Anyway, on to what I’ve been doing, I’ve been mainly working on the EPoS (Electronic Point of Sale) side of things, which in layman’s terms are the Kobas tills.

To side-track just a little I think the Kobas tills are so nice to look at and use, here is an example screen from one:

Image of a Kobas EpoS

When you take that in comparison to a result from searching EPoS on Google Images (and what most places use):

Image of a generic EPoS

Bit of a difference there right. So unfortunately now I have been burdened with the curse of noticing every single EPoS system every place I go and thinking to myself, “how do they use this?“.

Anyway back to what I’m doing, basically I’ve been working on adding the functionality to accept deposits and other payment types to the EPoS. The EPoS accepted cash, card and voucher when I arrived, which was all you would really need basically.

But now with Christmas getting closer venues are going to be taking deposits for bookings and we wanted to be able to handle that within the EPoS itself.

Also with the rise of services like ‘Just Eat’ etc, venues are trying to figure out how to process payments from those services, as it’s not really a cash payment as you don’t have the money in your till and it’s not really a card payments as you haven’t put it through your card machine.

So with that in mind we also decided to create “Other payment types” which allow businesses to just tell us what other payments they want to accept and we are able to quickly add that functionality to the till and have it display in all relevant reports.

Our product manager Daisy Lang has wrote about it in much more detail over here.

Adding the ability to accept deposits and other payment types went well but I did encounter a few difficulties while doing it, for a starter constantly worrying about breaking the tax calculations (and having forgot how UK tax works).

Luckily I found a very edge case unit test wrote by Neil Mukerji (our CTO) and after converting it over to use the new version of the payment objects I was delighted to see it was still passing as expected.

Naturally I then decided to write a bunch more unit & functional tests, I’ve been on the Codeception train lately, after getting introduced to it at the end of my role at UBC and I’m determined to get it set up properly in Kobas so that moving forward refactoring and changing code is much easier (and less stressful). I’m hoping to get all our tests into Codeception shortly and add them into to the Jenkins build for automatic testing on deployment.

Also shockingly (due to not having it in my other roles) there is a whole QA team at Kobas, which has been a total life-saver for me. Actually having someone QA features you’ve added is unbelievably helpful as when you’ve been working on something for so long it’s easy to miss things.

Anyway that’s all I have to talk about for now, I know what I’m doing in the coming months but I’m not going to mention that here, but stay tuned, interesting stuff is coming!


Posted on July 03, 2016

Goodbye Vancouver, Hello London

vancouver.jpg

So I have left beautiful British Columbia and I’m back in Europe, in London of all places. I’ve gone full circle it seems!

I’m not going to bother going into the details of why I left Vancouver, but in short, you can’t extend a “two year working holiday” visa. Which totally sucks as after two years I had really set myself up over there.

ubc.jpg

So after many many goodbyes and cramming in as much touristy things as possible in the last couple of weeks I set sail back to London. Getting the cheapest possible flight which had two stopovers; Toronto (11 hours), Saint Johns (2 hours).

Eleven hours did not seem so bad to me when I was looking at the ticket however after my flight from Vancouver -> Toronto staying in the airport for anything over an hour did not seem appealing. So I got the train from the airport into the city. Unfortunately I hadn’t gotten any sleep during my flight at all so I was pretty exhausted and not so much in the mood to really explore Toronto. I spent about three hours just wandering about picking different places to sit down and rest, eventually giving up and going back to the airport to try sleep (no luck with that).

toronto.jpg

Saint Johns was uneventful, pretty much just had enough time to go and grab a cigarette outside and then re-do security before my flight. The flight from Saint Johns -> London seemed to take forever, again I got no sleep. I think I’m going to start drugging myself before long-haul flights in future, although I think that might make the stop-overs a bit more difficult 😛

But anyway, now I’m in London. Exchanging my money from CAD to GBP was very depressing, outside of that though re-exploring London has been a lot of fun!

I’ve got a double room in a flat for now, getting my own place initially just seemed like a terrible idea money wise. It’s nothing special but it will do for now.

camden.jpg

This week is going to be the CV and interview game, I have a couple of interviews lined up already and I’m going to apply to a bunch more jobs. I’m really not looking forward to going through the technical interview process all over again, it’s exhausting and very demoralizing at times. But it just unfortunately has to be done.

So if anyone reading this is in London and hiring do reach out to me, I can’t imagine it will take too long to find a job here however as there are many opportunities.

So that’s the personal update for now, there will likely be some more technical posts incoming in the near future.


Posted on May 26, 2016