5 min read

6 Things To Consider When Building Salesforce Apps

By Praecipio Consulting on Jul 18, 2022 10:01:00 AM

To keep up with the fast-paced digital landscape, businesses depend on software for carrying out day-to-day business operations, connecting teams, and simplifying workflows. This probably explains why the global application development software market is anticipated to reach $733.5 billion by 2028.

After helping some of the world’s leading brands drive business innovation with our custom software solutions, we've learned a thing or two (or six!) along the way about building custom software that keeps teams and their tools connected. Specifically with Salesforce, our applications and integrations (whether those be specific customer use cases or general ones via the Atlassian Marketplace) have brought systems together, increased productivity, and empowered sales teams to win more deals

Through our experience with developing custom solutions for the world's leading CRM platform, we've identified some key things to consider to help get you started when building Salesforce apps.

#1 – Hit the Trail(head)

Salesforce is a big, well-established environment. There’s a lot you need to know about the REST API, the development process, and packaging and distributing your applications. The Salesforce Developer Training available at https://trailhead.salesforce.com provides free training courses along with sandbox environments to do the exercises. It’s a great way to quickly come up to speed on the topics you need to know more about.

The courses are not limited to development topics. If you need to learn more about using Salesforce or just want to understand the ins and outs of the Partner program, the Trailhead is the place to go.

#2 – The REST API is nice

The Praecipio Consulting development team does a lot of integration work, helping our customers improve their workflows by connecting different systems together. We work with many platforms, and have seen many APIs that are REST in name only. Often these are thin wrappers over an older XML API, or they don’t handle relationships in a RESTful fashion. Salesforce gets it right. The API is clean, consistent, and easy to use.

The API also provides a lot of useful metadata, which can help you make your software exceptional. When working with any object, you can get a list of all of the object’s fields, the labels for those fields (which may have been customized or localized), each field’s type, and whether a field is required or not. For any field whose value is selected from a list, there is an API call to return the list of valid values for the field.

#3 – Leverage a library for your stack

While the API is well-designed, it is large and feature-rich. Starting from scratch can be daunting, and you might not even be aware of some of its features. Instead of rolling your own code, take advantage of open source projects that wrap the API in your language. To achieve this, we use the Restforce Ruby GemSimple Salesforce is a well-regarded Python customer, and jsforce is available for JavaScript developers.

#4 – Deploy with the force (CLI)

Books, tutorials, and Trailhead courses on Salesforce development typically have you developing in the Salesforce GUI. There are times when that is valuable. The Developer Console provides a REPL that is handy for testing out ideas and debugging problems.

However, if you are like most developers, you have invested a lot of time getting your development environment just the way you like it. Fortunately, it is possible to integrate the Salesforce development process into just about any workflow. The folks at Heroku, a Salesforce company, have developed a Command Line Interface called Force, that allows you to interact with Salesforce using an API, instead of the GUI. You can upload and download templates and code, test snippets, view logs, inspect and change settings, plus much more. You can do just about anything you could do in the Salesforce GUI and while doing it in a scriptable, repeatable way.

#5 – Not all Salesforce instances have API access

Salesforce offers a number of editions, each with different pricing and features. One of the features that is not available on the lower cost plans is API access. Trying to access the API of an organization with the Contact Edition, Group Edition, or Professional Edition will raise an error. It’s also possible for the administrator of other Editions to turn off API access. Full details can be found in this article.

However, it is possible for a developer to get API access in these editions, which bring us to our final expert tip.

#6 – Managed packages and unmanaged packages. Choose wisely.

One of the topics that can be confusing for new Salesforce developers is Packages. It’s an important topic to understand because your choice can limit who can use your application and how.

Packages are ultimately bundles of customizations created by you that other Salesforce users can install into their organization. You customize a Salesforce instance and then, using a Salesforce-provided tool, you package up those customizations and publish them.

Once you have created a package, you can simply share a link to it. This is then considered an Unmanaged Package. Alternatively, you can submit that package to Salesforce for review, after which it will be published as a Managed Package, available in the Salesforce AppExchange.

Pros of Unmanaged Packages

  • Free to create.
  • Can be released at any time.
  • You can sell them directly to your customers.

Cons of Unmanaged Packages

  • Not in the AppExchange, you have to market directly to your potential customers.
  • Some companies will not install Unmanaged Packages, preferring only Salesforce approved applications from the AppExchange.
  • As noted above, API access is unavailable in some Salesforce Editions.
  • No automatic upgrades. If you make changes, your customers will have to manually install the new version.

Pros of Managed Packages

  • Customers can find you in the AppExchange.
  • Automatic upgrades are available.
  • Salesforce manages payments and licensing.
  • Full API access for all Editions. Editions of Salesforce that are not normally allowed to use the API are granted access for Managed Packages.

Cons of Managed Packages

  • Setup cost. The review process for a Managed Package includes a security review, which is expensive and time consuming. If your application will be free, this fee is waived, but you still must complete the security review.
  • Review time. The initial review process can take several months.
  • Salesforce takes a percentage of all sales through the AppExchange.

Ultimately, it’s a business decision. If you want to be in the AppExchange or have API access to all Editions of Salesforce, then you will need to have a Managed Package. However, if you want to move fast, sell directly, and avoid upfront costs, then an Unmanaged Package may be for you.

What's Next?

Still feel like you need some guidance on your custom development initiative? The award-winning team at Praecipio Consulting can bring our Salesforce expertise and software development best practices to your next project. Let us know how we can support your organization and help design innovative solutions that scale with speed of your business.

Topics: rest-api salesforce workflows integration software-development custom-development
4 min read

What Exactly is Agile Methodology?

By Courtney Pool on Aug 17, 2021 12:22:47 PM

2021-q4-blogpost-What is Agile Methodology?

Any person who's worked in or around software for any length of time has likely heard of Agile. Since the release of the Agile Manifesto in 2001, Agile has quickly spread through the industry, and even companies who aren't fully Agile sometimes claim to be, if only to check the box. Still, despite this popularity, we regularly receive confessions from people who admit that they don't fully "get" what Agile is, often from teams outside of software developers who want to know if Agile can help them too.

The Elevator Pitch

"Getting" Agile is a multi-step process, but knowing the elevator pitch is a great place to start. Agile is an iterative approach to software development and project management, with iterative being the keyword. Its primary focus is on delivering value incrementally, with those increments being faster, more frequent, and with fewer strings attached than some traditional approaches. Agile also acknowledges, accepts, and even encourages that risk and change are likely to pop up and need mole-whacking along the way, allowing for real-time course-correcting as needed.

This short description can help people navigate through many of the superficial conversations around Agile. If you want to impress though, knowing the details is the next step.

The Details

To really understand what Agile is, it helps to first understand why Agile is. Agile's origin is in software development, and its inception was a direct response to the rigidity of existing development methods like Waterfall. Despite this, its existence is not at all meant to be a critique of Waterfall, which is a valid methodology that still has uses in several scenarios; rather it's an answer to the "But what if...?" questions that plague so many projects, such as: 

  • What if I discover more requirements after development has started?
  • What if we don't catch a big problem because we waited too long to test?
  • What if we need to ship to market faster or more frequently?

Answering these questions is difficult in a Waterfall environment, and failure to answer them can be costly. This can be especially true in software, where conditions and criteria frequently change, and rapidity and innovation are critical factors in winning over users. Enter Agile, whose principles allow teams the flexibility needed to answer these questions as they arise while still meeting product and stakeholder needs.

While some interpret this flexibility as Agile having no rules, this could not be further from the truth! The Agile Manifesto itself includes both key pillars and guiding principles, which every organization purporting to be Agile should follow. Amongst the guiding principles are those that are arguably more nebulous, like "Working software is the primary measure of progress." Still, many are undeniably rules and not suggestions, such as the principle requiring the increments mentioned above: "Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. "

Beyond that, there are also rules associated with each particular Agile framework to adhere to as well.

You see, while "Agile" is the overarching methodology (or philosophy, some argue, an ongoing debate), the actual "doing" is often guided by the numerous frameworks within Agile, with more popular frameworks like Scrum, Kanban, eXtreme Programming, and the Crystal Method leading the charge. Of course, that's not to say that one can't simply follow the principles of Agile without needing a specific framework -- you absolutely can! -- but development teams may find it easier to work within a framework. Aiding this ease is that each framework has taken the Agile principles and hammered them into specific actions, ceremonies, and practices for teams to follow, reducing the need for teams to develop their own.

Knowing the pitch and the details is essential to understanding Agile, but "getting" Agile requires that you take it one step further and apply it outside the business.

The Real World Example

As mentioned, Agile is an iterative process that seeks to frequently deliver value while still allowing for the winds of change. One of the reasons Agile can work so well is, if you think about it in the simplest of terms, because most people do Agile every day.

No, seriously!

I recently moved and learned again how ever-present Agile is. I prepared for the move with a soft plan and a general goal in mind: get everything packed and ready by X date. I even took an incremental approach to it, regularly moving smaller and more manageable items over to the new house in the weeks leading up to the move. As is frequently the case, though, life had different plans, and I found myself scrambling to finish hours before the movers' arrival (see: winds of change). I could have chosen to stubbornly stick to my original plan, risking either an incomplete project or a financial blow from having to delay, but I instead chose the Agile approach. I reprioritized and adjusted my goal, focusing on readying the most vital components and shifting lower priority items to my next increment. 

And just like that, you're Agile!

So now you can quickly explain Agile to someone any time it comes up, dazzle them with a few specific details, and even deliver an analogy or two to help set it in. The final step? Contact us to find out how Praecipio Consulting can help you make it work for your teams.

Topics: kanban process tips agile software-development waterfall
2 min read

Old Is New Again – Conversations Over Documentation

By David Stannard on Jun 18, 2021 11:43:00 AM

2021-q4-blogpost-Old is new again - Conversations over Documentation_1

Imagine a world where businesses can concurrently develop next generation manufacturing processes while designing products based upon the as-yet-non-existent implementation medium. Imagine that they can do this all while reducing time-to-market and allowing the continued benefit of exponential growth in complexity every 18 months. Add a twist of “design-anywhere-build-anywhere” – and serve shaken; not stirred. Perhaps in software, the analogy might be "
develop applications on a language being implemented and SDKs that will also be created concurrently – trust us, it will be fine." At the same time, many graduates from engineering colleges were learning that the soft skills of communication and collaboration had higher impact to their success than the hard earned technical skills.

In the early 1990s, an organization is asked by several of its clients to help them address time-to-market pressures. The result: in 1992 Don Carter published a book founded upon a transformational approach called Concurrent Engineering based on consulting experiences. One impact that I remember well was the increase in actual conversations amongst the various constituents - breaking down the barriers between the silos was a key component of this philosophy. Coincidentally, the quality of results increased too, along with client satisfaction.

Back to the future... Literally!

There is even more pressure on businesses to reduce time-to-market, and there are few signs that this will change or needs to change. No time for creating voluminous documentation in semi-isolation that can't capture all aspects and are often subject to interpretation by the reader. The division between hardware and software development has blurred. In fact, hardware designs are created, modeled, emulated, and the proposed implementations are verified using specialized high level languages prior to implementation. The abstracts are subsequently decomposed into manufacturable entities while continuously confirming no unintended loss of the design intent using specialized tools such as formal verification tools. 

Businesses are and must continue becoming Agile – businesses are greater than having Agile development organizations. So the adoption of Agile, Scrum, and other practices continues unabated. There are even early discussions of what’s beyond these Agile practices that are standing the test of time after several decades of adoption. 

Two important aspects of the Agile Manifesto are valuing “Individuals and interactions over processes and tools” and “Customer collaboration over contract negotiation”. It was increasingly common pre-COVID that these teams were distributed geographically and even culturally. So while tools are a part of the solution – the need to communicate well and often has never been more important. This practice is standing the test of time.

A closing note to Scrum Masters who help teams live the benefit of the cross-functionality objective: Your Scrum teacher and Agile coaches have provided you with lots of reference material about building teams and communications. Now is a good time to revisit those references; one of my favorites is “Crucial Conversations” by Kerry Patterson et al. The book addresses situations with perceived high stakes, diverse constituents, and possibly highly emotions.

Looking for more Scrum tips? Contact us, we love to help!

Topics: scrum collaboration documentation agile software-development
2 min read

Should Stories & Bugs Follow Different Workflows?

By Joseph Lane on Mar 31, 2021 10:07:00 AM

Blogpost-display-image_Should stories and bugs follow different workflows-The short answer: Not really. Stories and bugs are both software development items by different names. As such, the vast majority of activities and controls that we model for a story are applicable to bugs. The key distinction between stories and bugs often comes down to data. Bugs should include Affects Version/sSteps to Recreate, Expected Behavior, and Actual Behavior. How and when we require this data relies on what practices we're observing.

For teams using Kanban practices where there is a Backlog status and a Ready for Development status, the transition to Ready for Development can be used to capture required data based on issue type. In this simple case, we would have two transitions from Backlog, Ready for Dev and Ready for Dev - Bug. For each transition, include a transition-specific screen to capture the appropriate fields.  Example: SDLC Ready for Dev - Bug Transition Screen will include: Affects Version/sSteps to Recreate, Expected Behavior, and Actual Behavior in addition to any other fields needed in both cases. Then, leveraging your workflow conditions allow the Bug issue type to only use the Ready for Dev - Bug transition. All other issue types can default to the Ready for Development transition by explicitly checking that the current issue type is not a bug.

The considerations above work well in workflow cases where you have gated controls as a function of status change. This might apply to teams that include requirements definitions and design efforts within the story or bug life cycle (as might be the case with Waterfall). Additionally, this logical approach allows for workflow reuse which in turn decreases administrative burden and increases process consistency.

Scrum teams view Ready for Development a bit differently. Good Scrum practices dictate that product owners will refine their backlog as items are prioritized upward. Refinement provides all functional details necessary for the scrum team to be able to work the ticket including validation of bug reports and associated details. Once prioritized, the development team will review stories and bugs at the top of the backlog to make sure they understand the requirements. The work is considered Ready for Development at the moment it is accepted in to a sprint.

I hope this explanation helps you avoid unnecessary workflows!

Topics: blog best-practices bugs kanban scrum workflows software-development custom-development
4 min read

Do testers need to be in sprint planning?

By Marcelo Garza on Mar 3, 2021 11:30:58 AM

Blogpost-display-image_Why do testers need to be in sprint planning-In today’s business environment, high-speed implementation is a must. This applies to all products and services. Suppose you were using an application and got stuck because of a bug: after reporting the bug, you expect the team to fix it as soon as possible. If not, your next move is probably going to be switching to another service.

Software companies want teams working together providing quick and on point solutions to save time and resources, which can only be accomplished by the involvement of all of the teams working on a project. That’s why companies are opting for testing with Agile teams, since it allows for a greater collaboration across teams on a project. 

Agile allows a key collaboration between testing teams and developers which can’t always be accomplished with traditional approaches. It enables testers to share their perspective from the start of the sprint planning; this leads to less bugs during testing and creates a better possibility for sprint delivery dates to be met on time.

Let’s dig a little deeper to understand what this means.

The objective of Agile/sprints/scrum 

Agile methodologies were born as an alternative to traditional software development approaches, like waterfall methodology. 

The following images show the big difference between agile and waterfall methodologies. (Source)

wCXkvvXwQxlBYxwzr_327Yp6iURV_I96Tp1aH_7sZ_o-nN_WgAHqwLsCGZhKraLYAj96nyay0z6VH3GqeZvv7HdSwF1OCGvp

On one hand we can see that the traditional approach (Waterfall) aims to understand user needs and develop a product. After development, testers test the product and report bugs before deployment. The development team then works on them and fixes any errors using the best possible solution. This is progress through phases, one starts only when the previous one ends; this does not create an opportunity for proper feedback or collaboration between testing, developers and users teams.

On the other hand, Agile is mainly focused on performing constant, small deliveries of the product in order for the customer to be able to see how the product advances through the lifecycle. This gives the opportunity for testing to take on a bigger role and to get involved at an early stage of product development and throughout all the lifecycle of the product.

Agile has four important values:

  1. The focus should be more on individuals and interactions instead of processes and tools

  2. Working software is more important than comprehensive documentation

  3. Customer collaboration is more vital than contract negotiation

  4. The process should respond to change rather than follow a plan

Testing in sprint planning: The goal of sprint planning

During sprint planning, the team discusses which stories they will focus on in the upcoming sprint based on aspects like priorities, time frame, feasibility, etc.

The whole team involved in the development of the product should be involved, and if additional expertise on specific backlog tasks is required, then stakeholders can also be part of it.

Sometimes, during this meeting, the testing team can take a secondary role since the main focus tends to be on the development of the stories; this is understandable since it will set the start of the sprint. However, the testing team's' perspective can lead to some serious benefits for developers.

Why testing should be involved

One flaw of working in traditional testing (i.e. Waterfall methodology) is that during the test case design phase, although testers receive the requirements, most of the time they don't get access to the software they will test until it is time to begin the test execution phase.  It is well known that there is usually a big gap between what a requirement specifies and the actual software developed. 

This leads to a huge time investment on the testing side to reach out to both developers and users to define how the product works and how it should work in order to define the correct test scenarios and test cases.

Agile methodologies give testers the opportunity to be involved in the development of the product from the get-go. Testers can be involved in the design of the software by working closely with developers to assess and advise on testability aspects.

An Agile tester should understand the relevance of technical skills. A tester is always prepared to contribute to the technical discussions of the team. Their contribution may extend up to code reviews, user stories grooming, and understanding requirements. The Agile Software Tester gets to work with the developers when they are performing unit testing and share the perspective of testing from a tester's point of view instead of a developer's. The tester can work collaboratively and productively with the product owner and the customer to form acceptance criteria from the sprint planning itself. 

Before any user story is sent for development, the tester and other team members can discuss the complete user story with the team members to find out what the customer wants. Having testers collaborate with developers from the very beginning of sprint planning helps to achieve more accurate estimations and to ensure that everyone has some testing tasks as part of their responsibilities

Great testing teams know they need to become an extension of the customer and end user. Testers need to understand the customer's needs: an Agile tester should be able to describe the feature as well as the customer.

Drop us a line for expert advice on testing and all things Agile, we'd love to help your teams achieve their true potential.

Topics: blog testing tracking collaboration agile software-development

Praecipio Consulting is an Atlassian Platinum Partner

This means that we have the most experience working with Atlassian tools and have insight into new products, features, and beta testing. Through our profound knowledge of Atlassian environments and their intricacies, we can guide your organization as you navigate these important changes.

Atlassian-Platinum-Solution-Partner

In need of professional assistance?

WE'VE GOT YOUR BACK

Contact Us