Many Pies

Many Pies

Wednesday, September 16, 2026

Outlook UX - one good thing, one bad

"Save all attachments". Below that "Attachments". below that "260915 campaign test" twice

This is the bad thing. Can you see the problem here? No scrollbars, no full filename on hover. This is the latest version of Outlook (Classic). Still not fixed after many years.

Here's the good thing:

When you have a bunch of notifications you can snooze them for 5, 10, 15 minutes, 1, 2 hours etc. If you snooze a single item for, say 15 minutes, then when it pops up again 15 minutes is the default. If you multi-select them all and then snooze for, say 1 hour, then when they are displayed again it doesn't default them all to 1 hour, but 10 minutes again. I think this is a good thing, because it makes you think about how long to snooze each one, rather than constantly pushing them into the future. You may not think it's a good thing.

 

Tuesday, August 18, 2026

When web based businesses outgrow the single user paradigm

 

A menu saying Account settings, Billing, Manage team, My templates

What I'm thinking of here is when someone develops a web based service, and you have a login so you can do your whatever on the website. Then they get bigger and introduce multiple users, but there are still signs that the architecture still has the concept of a single founding user.

PayPal

PayPal is an example of this. It started off as a payment service alongside eBay so people could pay for their auction wins. As such there was just one user - you - for your account. Then PayPal for Business came along and of course you need multiple users for a given business. However it still has a single all-powerful user who can do everything. That's fair enough in some ways, but if that person leaves the company you can't transfer the powers to another user, you have to just rename the main user and change their password.

Campaign Monitor

This is where the screenshot above comes from. "My" templates contains all the templates associated with our account, not just the ones I created. I can only guess that when it started off it was intended as a tool for a single person to send out an email newsletter.

FormAssembly

When we first signed up with this they said to use a non-personal integration-type user as your login. Then they insisted on separate users, citing security reasons (which is fair enough), but with quite a price hike at the same time.

No billing user

This is another sign of small beginnings. If you're the person who set up the account to do the thing, but you don't have the power to approve invoices then some small sites just email the invoices to you. There's no option to have a separate user (or even just an email address) for sending the invoices to. 

Counterexamples: Stripe, Facebook and Adobe

All of these have the concept of a single user that can access different setups (Stripe) or keep their personal and work personas separate (Facebook and Adobe). 

Monday, August 10, 2026

Praise where I can - Google docs sensible toolbar hiding

Diagram of Google docs toolbar showing justification, line height, bullets etc. all in one popout menu

I've recently come across Marcin Wichary's Unsung blog, and I'm enjoying it a lot. It's about "software craft and quality", and I find pretty much everything he posts really interesting. Some of it is about retrocomputing, which often piques my interest. I plan to blog about some of those things at some point. I thought I'd take inspiration from the blog and post about some good UI work rather than just moaning about ^h^h^h^h^h^h^h^h^h^h^h^h^h highlighting failures^h^h^h^h^h^h^h^h areas for improvement. (Of which, there will be several I suspect, once I get started.)

I use Chrome's vertical tab feature, and it's very useful. However, at the width my screen is the full Google docs toolbar can't be seen. Rather than just show as much as it can, and hide the rest behind a "3 dots" menu, it hides all the related icons and displays them all in one go. This means that I don't have to hunt along the toolbar to see if the one I want to use is visible or not - I know that everything to do with paragraph formatting is behind the three dots. 


Wednesday, February 18, 2026

Salesforce DevOps - knowing a bit of git helps

The DevOps Center logo with the git logo behind it

Nearly two and a half years ago I wrote Salesforce DevOps - can you get away without knowing git? I could give you the answer to the question without you reading it, but that's a bit boring.

After having used it for all that time I've found out that knowing a bit of git helps.

Here's what I've found by digging around behind the scenes about how DevOps uses git.

DevOps/git doesn't store all your metadata

I'm assuming you know what metadata is. If you don't, roughly it's the way that all that stuff in setup - (custom objects, fields, flows etc.) is stored - in text files, in XML format. However when you hook up an org to your DevOps project it doesn't suck all that out. Instead, when you make a change in a WorkItem, for something that isn't in Git then at that point it takes the whole file for the change you made and puts it in git.

So for example, each field has it's own file. Say you created an imaginary field on contact called Unicorn. The metadata for that will live in a file in the code tree: force-app/main/default/objects/Contact/fields/Unicorn__c.field-meta.xml
It looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
    <fullName>Unicorn__c</fullName>
    <description>How many unicorns this contact owns</description>
    <externalId>false</externalId>
    <label>No. of unicorns</label>
    <precision>3</precision>
    <required>false</required>
    <scale>0</scale>
    <trackFeedHistory>false</trackFeedHistory>
    <trackHistory>false</trackHistory>
    <type>Number</type>
    <unique>false</unique>
</CustomField>

As the Work Item (WI) moves through the lifecycle, say, being promoted from a dev sandbox to a testing one, and then to production, that file will move through git - more on that later.

If you make a change to that field, say you wanted to change the label from "No. of unicorns" to "Number of unicorns", then that change will move through git as a single line change to that file:

- <label>No. of unicorns</label>
+ <label>Number of unicorns</label>

When git gets out of step with the metadata

If you don't do everything through DevOps then all this stuff behind the scenes is worth knowing, as it explains the errors you get. Say you edit a picklist in production, and then refresh a dev sandbox from production. If you then edit the picklist in the dev Sandbox and try and promote it to a testing sandbox you may get an error. Here's what's going on:

Say the picklist had 3 values
1
2
3

Then in production you add 4 to the bottom. When you refresh the dev sandbox to production, the metadata in the sandbox has this
1
2
3
4

However git only has
1
2
3

Say in the sandbox you added 5 to the list. When taking the change and putting it in a commit it compares the metadata in the sandbox to git and concludes there are two new lines: 4 and 5.

Then when you promote the WI to a testing sandbox git wants to add two lines to the picklist in the sandbox, 4 and 5, but the testing sandbox already has 5 in the list, so it looks like a duplicate, and fails to deploy.

Branches and work items

The way that Work Items move through git is fairly straightforward.
Each Work Item is a branch. Each sandbox to the right of the dev sandboxes is a branch, for example, Integration or UAT sandboxes. Production is the branch main.
Promoting a WI from a dev sandbox to a testing sandbox is a pull request, e.g. Merge WI-000344 to UAT. The final promotion to production is just a merge to main.

Combining Work Items

Sometimes DevOps will want to combine two or more work items which involve the same areas (e.g. the Contact layout). I find that this generally works OK, and the combined work item deploys without any problems. Knowing about git though helps you understand what's going on. If two WIs which are ready to promote to production involve the same file then DevOps will want to combine them at this point into a single WI. Behind the scenes it puts the commits from the WI that's being merged from into the WI that's being combined to. Then you can promote the combined WI to production.

Questions?

Do you have any questions about how git and DevOps are working together? I can answer in future posts.

Friday, November 21, 2025

What gardening and IT projects have in common

tall grasses backlit by the sun

I reckon I have one good blog post in me, and one good comedy sketch. I'll do the sketch another time, but this is the blog post. I've retrieved it from Medium as I like to own my own content.

I’ve been thinking about the way people adopt new IT systems and I think a good analogy is gardening. There’s no one right way to do gardening and it’s the same with rolling out IT systems. Here are four approaches that I’ve noticed:

Landscape gardening

This is the classic approach. You draw up a plan, you involve the stakeholders, you survey the land, and then you start the doing. You clear the land, maybe retaining some existing features. You mark the boundaries, move the rubbish, and then start planting. After a period of time you hand over the garden to the owners, maybe with some instructions on future care.

Cultivating a plot

This is on a smaller scale than a whole garden. You define strict boundaries, and you may only be growing one thing. It only involves a limited number of resources and shouldn’t take you that long.

Survival of the fittest

You scatter some seeds where you think they might grow. They may not, but if that’s how it is then you don’t really mind. There is the chance that it takes off and if so you’ll be judged a success (so long as people know you did the work).

Guerilla gardening

You aren’t part of the mainstream, but you like to see things growing. You introduce strong young plants that will grow quickly and expect to see them do well. They may not, but you will have moved on by then.

Tortured analogy?

In case my analogy is too abstract, here’s how I see examples of these. A CRM implementation is landscape gardening. Everyone needs to be on board, it all needs to change at an appropriate pace, even if it’s not all at once. You can’t have a CRM that’s only used by one department and others do their own thing.

For something smaller, such as getting people to use Google Docs, or Slack, you work with a small team. You may not ask them to do everything the new way, there may be a place for Microsoft Word, but for some teams and some processes Google Docs is the way to go.

For an even more small scale approach you might start using Doodle to arrange meetings. Some people may not like it. Who cares? If it doesn’t catch on then it’s not worth trying too hard, it should just be left to die.

Sometimes technology gets implemented without IT being involved. A courageous few go ahead and try something out. This is the riskiest of all. It may create yet another place where data lives on its own, unconnected to the rest of the organisation. It may be illegal, or insecure. However it’s worth asking why it had to be done without involving IT.

Technology first?

You could argue that this is a adopting a technology first, solution-led approach, rather than using a problem led approach. Sometimes this may be what you’re presented with. “I’d like to use technology X”, says the boss. “Let’s try it on a small scale”, you say, “maybe just involving you and the other bosses at your level”. Or “let’s just put it out there and see if it takes off”.

It’s also an approach to use once the problem is defined. Rather than “let’s improve collaboration across the organisation by using Slack”, why not, “let’s try Slack with this particular team to see if it fits our culture”. That team could become enthusiastic promoters if you decide to use the Landscape Gardening approach.

Friday, November 07, 2025

J-Cuts and presentations - using a film technique

I don't know. I do one presentation and all of a sudden I'm an expert.

A J-cut is a film technique where the sound from the next shot starts before the picture does. You can find more about this at Adobe's website.

It's also a technique that you can use when doing presentations. I find myself (probably like many people) going to the next slide without really knowing for sure what it contains, and then start talking about it when it comes up. Doing a J-cut style transition would mean that you start talking about the next slide and then move ahead to it. This can be effective because the attention will be on what you're saying (as it's moved on from what the slide on display is about) and then the slide reinforces it. The danger with going to the next slide and then talking is that the attention goes to the new information on the slide (particularly if it's got lots of words), and not what you're saying.

In order to do it well you either need to remember what the next slide is, have good notes, or be using presenter view.

Why not give it a go and let me know how it goes?

Thursday, November 06, 2025

I did a presentation and I liked it

 

Stastics for marketers [that word crossed out] people
Last night I did a presentation at Russell Davies' inaugural presentation club. 

You can attend just to see what it's like, in case you might like to try presenting one day. Or just to be supportive. Or to learn from other people doing presentations. We definitely need an audience so please come along. You will be invited to offer feedback to the presenters but your feedback must start with the words "what I really liked about your presentation was...". In my experience people are hugely aware of their failings, they don't need them pointing out, we are there to point out their successings.

It was a 5 minute talk, a cut down and revamped version of a presentation I did to some of our marketing team. I'd recommend anyone who ever does presentations to give it a go next time (7pm GMT 3 December 2025) because:

  • It only needs to be 5 to 10 minutes
  • You can talk about what you like
  • You get positive feedback at the end
  • You can focus on just doing a good job and not just pursuading/educating/impressing people or whatever's going on with other presentations
Russell Davies literally wrote the book on Powerpoint but don't let that put you off. Here's what he said about last night.

Thursday, October 30, 2025

Vibe coding with Gemini - and a childhood dream fulfilled

A red triangle with several coloured blocks inside it

As a followup to my post on vibe coding in Salesforce, here's what happened with Gemini.

First let me take you back to my ZX80/81/Spectrum programming days. I created a little game where you would drop blocks into a 2d pyramid shape. If a block fell outside that shape then it was Game Over. The graphics on those machines were addressable in 8 pixel squares so it wasn't very realistic. I thought it would be a lot better if the blocks had proper physics. I didn't have the words for it at the time, but what I needed to do was create a physics engine. That seemed like a full time job, and programming was just a hobby in those days.

I gave Gemini this prompt to create the game I'd imagined in my childhood:

Create a browser game where there's a block at the top which regularly moves from left to right. When you press the space bar that block should drop another blog down to the ground below. The blocks should have proper physics and collision and tumble over each other.

It understood what I meant pretty well. I didn't give it a Game Over condition, but it invented one of its own - if the blocks filled up to the top of the screen then that was it. As it was, that was pretty much a good starting point. I spent a few iterations trying to get it to not trigger game over as soon as a block fell (because it was at the top of the screen).

At this point my impression switched from "this is amazing - look how complete a thing it can generate with a few words" to "why doesn't it understand what I'm saying?". 

It did work eventually though, so I moved onto Phase 2 - the pyramid shape. Again it took a few iterations before I could get the shape I wanted - at first it did it upside down. Once I got the shape I wanted I added a game over/high score screen at the end and that was my minimum viable product. 

It's got a cheery manner, as AIs seem to these days. 

Make it so that 1 in every 5 blocks is really bouncy Gemini: That sounds like a fun way to increase the challenge! Introducing a bouncy block every fifth drop will definitely keep you on your toes.  I've updated the game logic so that 1 in every 5 blocks has a high restitution (bounciness) and is colored cyan so you can easily identify it.

Here it is. Can you beat my high score of 26? Be warned - it's got a really annoying soundtrack and collision noises, but you can mute it.

Update: There's a sparkly option on the screen when creating these things, and I clicked on it. Straight away it decided to add an AI feature; specifically, a little autogenerated summary of your game on the game over screen. It would have been nice to have been asked, but I let it do its thing.



Monday, October 20, 2025

My first impressions of Salesforce Vibe Coding

The face of a bear with "Let's vibe" underneath

 I spotted a new icon on the Salesforce setup menu, so I decided to give it a go. It's a full web-based VS code IDE.


As it happened I had a specific Lightning Web Component that needed to be created, so I prompted with that. I have to say, it's very impressive. It doesn't just generate a load of code, it knows about how the whole deployment process works. It has a plan mode, so you can clarify things before you put it into "act" mode. It asked me clarification questions

Before finalising the plan I need a few specifics to ensure the data model and security model are correct

It asked me nine questions in all, so I answered one, expecting it to then say "what about the second question" but it went through the whole cycle again. So I gave it several answers in one go.

The process of identifying the target org it should deploy to wasn't obvious or straightforward, even though it was thinking out loud about how to get that information. I didn't know how to tell it though.

Get username. Intelligently determines the username  or alias for Salesforce operations

In the end I told it "set username to name@company.com" and then it put that into configuration as expected. When I later tried to get it to use a sandbox it default to login.salesforce.com

I got an error "provider context length exceeded". When I asked for help with solving it, I just got the same error. I gave up for the day, came back the next day, and it was OK. I guess it just needed a nice cup of tea and a sit down.

It asks permission nicely before it does things or creates files, so you can follow along, rather than just waiting until it's finished and you have to dig around to find out what it's actually done.

Bear in mind, I didn't look at any of the available help information, I was just ploughing on. 

I got as far as deploying the component, which then failed because of lack of org wide test coverage. It then offered me four different options. I went with running only tests related to the change. The deployment then failed because of 0% coverage on the test class. It suggested that it could write some code to cover that. I wouldn't have minded if it did that without asking, but I went ahead and asked nicely anyway. It churned away, trying deployments, adding code to set default values. All the while it was thinking out loud:

I see the issue now. The problem is that we're trying to create a User with a ContactId, but the org requires that users who are associated with contacts must be portal users. Let me modify the test class to handle this by creating a regular user without associating it to a contact, or by using a different approach for the test setup.

 In the end, after several iterations, it managed to deploy the component:

The tests now pass successfully with 100% pass rate. The test class properly deploys to the target org and executes without errors, providing confidence that the GauAllocationsExplorerController functionality works as expected in the target environment.  **


Conclusions

How you view this depends on what your knowledge is.

If you don't really know about Apex programming then there's probably too much that you need to know to get anywhere (e.g. test coverage, local vs org tests).

If, like me, you've dabbled a bit, you know about deployment and Salesforce dx, then it will get you a long way towards getting something that basically works. You can then actually read the help information and increase your skills.

If you do this sort of thing all the time I imagine that it will take a lot of the drudge work of setting up new projects and creating outline code which does most of what you want. You can then go in and use your l33t skillz to finish the code off.


Wednesday, May 14, 2025

Why I went for a #clicksnotcode Salesforce certification



When I started working for my recent Platform App Builder certification (have I mentioned that recently?) I initially was heading towards the Platform Developer cert, which includes writing Apex code. We don't have much Apex code in our current org, and have only modified it a couple of times in minor ways. So I wouldn't be using the code writing skills that I gained in order to get it, and they'd get rusty. Given my years of experience writing code in other languages (and the Apex I wrote in 2017 for our switch from Raiser's Edge to Salesforce) I think I could pick it up if required.

It strikes me though, that the whole development process with, say, a Flow is very much like the process if you're writing Apex. So typically you:

  1. Talk to the people who want the enhancement or bug fix (let's assume it's a fix)
  2. Work out how to fix it
  3. Work out how to test that fix
  4. Fix it
  5. Test it
  6. User acceptance testing
  7. Documentation/training
  8. Release
So step 4 is different between Flow writing and Apex coding, but everything else is very similar. Have I over-simplified everything, or is there something substantially different to coding compared to creating a Flow?

Wednesday, February 26, 2025

My experience of Salesforce Certification

 

Certified Platform App Builder badge

I've recently completed my first Salesforce certification - Platform App Builder and I thought I'd share some of my experience. I can't tell you much about the exam itself or the Salesforce hit squad will be round my house.

I'd recommend Focus on Force with their study guides and practice exams. It took me about 5 months doing an hour or so a week to work through the guides and the exams before I felt ready.

I'd recommend this video by Roy Moore or this article on test taking tips to help with exam technique. When it comes to the question of doing it at home or at a test centre, I chose the test centre because a) I didn't have to faff around with proving I wasn't cheating and b) an hour's bus journey felt like a good way of getting in the zone.

The Platform App Builder certification is a mixture of admin stuff and flows and app configuration. There's no Apex because #clicksnotcode. 

If you haven't done a certification yet, is there anything you'd like to know?

Monday, July 01, 2024

Applying Diátaxis to a specific project

Diátaxis is a really interesting approach to technical documentation. It's summarised well in this paragraph and diagram from the website.

"Diátaxis identifies four distinct needs, and four corresponding forms of documentation - tutorials, how-to guides, technical reference and explanation. It places them in a systematic relationship, and proposes that documentation should itself be organised around the structures of those needs."


I recommend digging through the site a bit before you carry on. Don't worry, I'll wait.


Glad you made it back.

I've been thinking of applying it to our existing technical documentation but never known where to start really. However an opportunity came along to apply it to a specific need.

The need: URLs for campaigns

We want to run campaign across print and digital, which direct people to pages on our website. We want to track how people respond to those campaigns, including on Salesforce where the information about people, signups and donations ends up. The knowledge about how to create URLs on and for our website, specifying Salesforce campaigns, and tracking results through Google Analytics is spread among various people. We had a meeting planned to share knowledge and ahead of time I wrote a document capturing my knowledge. I'm not going into the details of the information, as that's specific to this problem, but rather the process.

Here are the headings I used in that document:
  • Tutorials
  • How-to guides
    • Creating redirects in Wordpress
    • Tracking campaigns for web forms
    • Tracking campaign segments for web forms
    • Tracking social referrals in Google Analytics
  • Explanation
    • Redirects
    • The stuff after the question mark in a URL
  • Reference
    • Web forms in use and default campaigns
As you can see there is nothing at the second level for Tutorials, as at the moment I can't think of what a tutorial would cover. However I may come up with something after the meeting. It would be something useful to someone who knows nothing about the subject.

I may put more in this post after the meeting, but I thought this worked example of applying Diátaxis would be useful.

Friday, May 31, 2024

I was suspended on Twitter for no apparent reason

I try to avoid moaning too much on Twitter, but I've been suspended, so I'm going to moan about Twitter here. A few days ago I got a message that I'd been suspended. The last thing I tweeted was to retweet this picture:


It's not so straightforward though. As well as telling me I was suspended it also said I could subscribe. Sometimes I can see my old tweets, sometimes I can't. Sometimes I can see people I follow, even though it says I am following no-one, sometimes not.

What could I have done? I have several theories:

  • I liked a post I shouldn't have. As I can't get at my likes I can't check this.
  • My bio ("I ride tandem...") somehow breaks the rules.
  • I mentioned my mastodon id.
  • I called it Twitter and not X.
I've tried asking for a review, but as soon as I fill in the form I get a reply seconds later saying that they're not going to re-instate me. I do have a second twitter account that I set up, so I can still use that. It shows that it's probably worth creating a second account just in case you get banned in future.

Wednesday, May 01, 2024

Preventing duplicates from FormAssembly in Salesforce

Just a quick one.

When using FormAssembly (FA) with Salesforce that if you had a duplicate rule set to alert, then that would cause an error message to appear on the form. FA would treat this as a failure and not proceed. 

I submitted a suggestion to them that they treat duplicate alerts as warnings and not display them to the user, but I couldn't get them to understand what I meant.

So we have to handle duplicates after the fact, with a daily check, using a Google sheet that we wrote that looks up email addresses.

Thursday, April 25, 2024

Syncing people data between systems - why is it so hard?

Although some people write weeknotes I've never done that because I think what I've got to write about is too internal, or not interesting. However I'm writing about a work problem, not because I've got solutions, but to help me step back and think about it, and maybe get answers from you, dear reader.

Over the years I've been involved in getting data about people in sync between the HR system and the CRM (specifically a donor management system). You might ask, "why are staff on the CRM?". Staff can be customers, or in our case, donors. In particular, we would track potential staff ("enquirers") because the HR system didn't.

Here are some of the challenges I've had with the process:

People data is messy

Names in particular are messy, so when checking to see if two records are for the same person then it may be hard to work out. Systems tend to have unique ids, so storing the id of the person that the other system uses on this system gets round that. Until the member of staff makes a donation and spells their name slightly differently...

Addresses are messy too. In the UK there are unique DPSs, but validating incomplete addresses is more of an art best done by people, than a science at times.

The HR system isn't always definitive

I created a sync process that would compare the HR and CRM systems and highlight differences. When I created it I suspected that it would be unwise to assume that the HR system was the definitive source of truth, even though it was in theory, so the sync process would only highlight differences, not automatically update the CRM to be the same as the HR system. This turned out to be correct, and the process ran for several years, once a week, and most weeks there was something for someone to change on one of the systems manually.

Different definitions of people

You would have thought that all systems have the same definition of a person, but that's not the case with the sync method I'm using that's driven me to write this blog post. We use Salesforce as our CRM, and send out bulk emails with Campaign Monitor. There's a Salesforce App from Beaufort12 that synchronises data between the two systems. We have some couples that share an email address and so what Campaign Monitor treats as a unique subscriber corresponds to two different people on the CRM.

One consequent of this is that when one member of the couple dies that email address will automatically be unsubscribed and the remaining spouse may want to continue getting emails.

Testing integrated systems at scale can be hard

We don't have a test Campaign Monitor setup, so we're working on the live system all the time. Of course, it is possible to create test integrations in some circumstances, but if you're working with a complex system you may not be able to mimic all its complexity in a test setup.

Conclusion

None of this is has particularly helped me with the Campaign Monitor syncing problem I've currently got, but I hope it helps you with some general advice.

Monday, January 22, 2024

Alice Bartlett - the journey of a byline, and agile comms

 If I'm emailing myself something to note for later then it probably needs to be a blog post. Here is a really interesting talk by Alice Bartlett about the journey of a byline in the FT and their publishing architecture.

I captured this slide though, because it's a good summary of how to do internal technical comms. It's from the agile comms handbook:

The lure - a tweet length summary of what is going on. The context - a blog post, and email, a little video. Tell people enough, but not so much they don't have time to read it all. The detail - stuff only people elbow deep are going to care about - the tables, the architecture diagram, the decision docs.


Thursday, October 19, 2023

Salesforce DevOps - can you get away without knowing git? - part 2


This is following on from yesterday when I got a work item to review stage. Today I've found that you can ignore the pull request in git and work entirely within the DevOps interface to move that work item to the next stage in the pipeline.

I hit a problem with the deployment initially as there was an error in the XML for a report layout (duplicate column*). I had to abandon that work item, as I couldn't find a way to move it back through the process, to uncommit the changes and then commit all the files, apart from the troublesome one.

I also made a rookie error - you have to deploy profiles in order for newly created fields to be visible on the profiles you want.

Concepts

Here are the concepts I think you need to be comfortable with in order to be able to work through this process.

The stuff in setup is metadata, which underneath it all is a tree structure of XML files. Without really understanding the ins and outs of XML you need to be able to spot things like - this file defines a new custom field.

The tree structure follows familar concepts like objects, report layout and profiles, as well as more obscure things.

The deployment process is essentially updating those metadata files by copying them from one environment (i.e. Salesforce org) to another.

The pipeline defines the order of environgments that work items move through.

I think the word pull used in the work item and in the pull request doesn't need to be fully understand, but you do need to get this: for the first it's the things that might have changed that you want to include in your work item. For the second, it's the things that have changed that you want to move through the pipeline.

* Surely this must be a bug in Salesforce? If a valid report layout can't be deployed then there must be something wrong with the way the XML is created.

Wednesday, October 18, 2023

Salesforce DevOps - can you get away without knowing git? - part 1

Here at Wycliffe we've started looking into Salesforce DevOps Center [sic] and I've been doing some investigations. If you're a dab hand at DevOps in general then this isn't for you. If you've heard of it and want to know more then read on.

This step by step tutorial is a good start. My observation is that, for whatever reason, in the past Salesforce didn't give much attention to the deployment process with Change Requests that were a bit faffy to use. So third parties developed their own tooling, and now Salesforce with their own DevOps Center are trying to catch up with those third parties.

One question I had as I actually started using DevOps Center was whether you needed to understand git, or could you just get by with mostly ignoring it. When you set up DevOps Center you need to associate it with a git repository, so you have to at least interact with github.com. After that though, you can carry on, even though you don't really know what a branch is.

However, when I wanted to put my work item up for review, there was no more escaping:








The rest of my team haven't used git, though one has worked through a tutorial. My challenge is to try and lead them through the process and see if we can get by with understanding just the bare minimum of how git works. I'll write more posts about that as I explore.

Update: Part 2

Bonus link via Julia Evans, why Git is hard.


Tuesday, July 11, 2023

How should you develop yourself as an IT professional?



Photo by Scott Graham on Unsplash

One of my colleagues was picking my brains recently as they were creating career development materials for a variety of jobs across our organisation. They specifically wanted to point to organisations that had good guides. For professions like accountancy and HR there were some very specific Chartered Institutes that had CPD materials. For IT though, I think it's very different.

I've been with Wycliffe for nearly 25 years, so I don't have a lot of wide experience. However we have recruited three people (developer, IT manager and a tech support role) in the past few months, so I've seen several CVs and what people are saying on them.

As far as Chartered Institutes go, I'm aware of the BCS and the IEEE in the UK. However, none of the CVs that I looked at mentioned either of them. From my perspective, when it comes to recruiting people experience counts for more than anything else (though specific qualifications in, e.g. Azure AD are of some use). 

Through the BCS and their SFIAplus I came across the SFIA skills framework. It does seem quite comprehensive. I'm open to debate, but I think IT is a much wider field than Finance or HR. 

I think SFIA will answer the question "in my particular area, where should I be putting my effort to gain skills" or progress in my career, or other ways of describing getting on. However, is there anything more generic. In fact my colleague had already come across the Research Development Framework. Although it is aimed at the research profession in fact I think the topics in the inner circle and the quadrants, with a bit of tweaking, could apply to IT - creativity, self-management, professional conduct - all good things.

So in the end we pointed people at that framework and the IEEE CPD materials. I hope you find them useful.

It would be interesting to get the perspective from both of my blog readers - does experience count for everything in IT? Is there any field in which being a Chartered Engineer is a distinct advantage?

Wednesday, April 26, 2023

Management lessons from powerboating

 

Ariel view of a powerboat driving away from a partly submerged rock formation
I recently filled in my quarterly review form. One of the questions was "Outside of your work context, what opportunities do you have to learn and to grow? How do these influence you when you are at work?" (OK two questions.)

I answered that I'd done a powerboating course, but this had no influence on my work. I've submitted my review now, but I realise that I was wrong.

One of the exercises we did was to go and retrieve a boat moored to a pontoon out in the lake where I was being trained. I was at the helm and we drove by it and the crew didn't take the action I'd expected. The fault was in my communication - I hadn't communicated clearly what I'd expected them to do, just suggested what could happen.

On a boat whoever is at the helm has the responsibility for steering it, but also getting the crew to do whatever is necessary to implement whatever manouvre is in progress. It's very much a positional responsibility - if you've got the steering wheel (or tiller) in your hand, then you're in charge at that time. During our training the instructors and my fellow trainees took in turn to take the helm. Experience or seniority didn't count for so much - though we were listening to the advice of the instructor!

In work, leadership and management isn't so flexible. There are roles, and organisation structure, and levels of authority. However, in any given situation it may be clear who is in charge, regardless of structures, and that person needs to take the helm and lead.