I was on the Salesforce developer podcast talking about speed versus quality (https://developer.salesforce.com/podcast/2023/03/episode-167-move-fast-dont-break-things-with-james-simone) a few weeks ago, and I'd encourage you to give that conversation a listen if you haven't already because it sets the stage nicely for this article. The theory that baking quality in from the get-go begets speed was the basic premise, but I've seen the opposite of that play out over and over again in software e...| www.jamessimone.net
Want to improve yourself as an engineer? Looking for tips & tricks to empower yourself as a teammate or individual contributor? There are a few things that you can do at any point in your career that will help. There's a reason that professional athletes frequently preach the importance of fundamentals - while it may seem like common sense, now, it's only been recently through the application of science to sports that experts have begun to understand how practice quite literally makes perfect...| www.jamessimone.net
There are a few limitations when it comes to the History records created by default when Field Level History is enabled for an object, not the least of which is history records not being created in tests. This can make testing logic out that employs History records difficult to approach, especially from a Test Driven Development standpoint - but it doesn't need to be so hard. Join me as we walk through how to setup an easily reuseable implementation for mocking History records and retrieving ...| www.jamessimone.net
We owe our ability to understand abstractions in programming to philosophy; much as we owe a debt to mathematics for putting the theorems responsible for our code -- and computers -- to work into words. Consider the immortal words present in the Tao: A well-shut door will stay closed without a latch. Skillful fastening will stay tied without knots. One does not simply (walk into Mordor) build a door that works well. A factory for doors cannot provide you with the quality of worksmanship and p...| www.jamessimone.net
Don't prematurely optimize. It hurts, sometimes, to look at code that we know could be refactored to read better -- and you should clean up such code whenever you can. Learn about the XY Problem and why sometimes, the issue that you're looking to solve goes deeper than just an ugly piece of code.| www.jamessimone.net
Identifying areas for potential code reuse is not always obvious. People learn and remember things in different ways; on a large team, and in a large project, keeping the entirety of a code base in your head is frequently an improbable proposition. Some manage. Some find themselves rewriting functions monotonously, either on a tight sprint deadline or simply because it’s easier to copy paste than it is to generalize. Refactoring is, ultimately, a luxury - but one that is worthwhile to inves...| www.jamessimone.net
Our team has had an insanely productive past three months. We've consistently cruised past goals, exceeded expectations, delivered new functionality, and had fun doing so. How did we do it? How can we keep the momentum going? Here's what it comes down to: teams perform well when successes are shared and failures are owned.| www.jamessimone.net