Category Archives: Agile

7 Ways Technology is Changing the Face of Treatment Centers

application-3399516_1920

Technology has provided healthcare many breakthroughs in recent years and Salesforce has been at the forefront of that. So if this is the case why are most treatment centers still so far behind. Everyday people are scouring the internet trying to find a great place to recover from the diseases of Mental Health and Addiction. It’s estimated that over 20 million Americans over the age of 12 have an addiction. Many treatment centers lack the basic tools needed to be able to serve these patients with the care they need. As a consulting partner for Salesforce we have seen technology changing the face of Treatment Centers. Technology is providing treatment centers with the advanced tools needed to navigate the ever changing landscape. We’re going to outline 7 ways that technology is changing the face of treatment centers.

Request our free eBook to learn more

1. The addition of a CRM or Patient Relationship Management platform to the contact center is the number one way to better serving your patients. We have seen organizations taking notes on note pads or using excel to track patient calls. This is a major problem, in my experience working in a very busy Contact Center even your very best admissions representative will miss a follow up. Also in my experience, as a recovering alcoholic with almost 7 years of sobriety, I know that when I was ready to get help patience was not one of my strongest areas. So timely follow ups and the ability to take a call from beginning to end without hanging up the phone has resulted in a 35% increase in patient admissions based on case studies we have conducted.
Continue reading

Posted in Agile, Salesforce, salesforce administrator, Salesforce Challenges, Salesforce cloud Implementation, salesforce community implementation, salesforce consultant, salesforce customization, salesforce development, salesforce for healthcare, salesforce for medical clinics, salesforce for NonProfit, salesforce for small business, salesforce integration, Salesforce Support Packages, salesforce Tips & Tricks, Salesforce.com. Tagged with , , , , , , , .

Salesforce Implementation Using Agile Scrum Process

 

 

Agile SalesforceWith having being part of 5 Salesforce Sales and Service cloud implementation projects I have realized that customizing the platform to the client’s need is not challenging but the build up to the production release and approach that the integrator adopts to, makes all the difference to have delighted project sponsors and end users. The implementation that I am considering for the scope of this article can range anywhere between 6 to 16 weeks depending on the complexity of Salesforce lightning components, number of external interfaces involved for integration with Salesforce and the number of clouds being rolled out (most common are Sales Cloud, Service Cloud or Community Cloud).

We can have varied school of thoughts on how to plan for such small duration projects; should it be a complete roll out of all features or an Agile Development approach where even a 6-week project is divided into 3 sprints of 2 weeks each. With my experience, I can safely say that breaking into multiple sprints will allow everyone to gain a lot more value out of the project as the lightning components and interface integration will evolve with regular feedback from the client. My team scored an average CSAT rating of 9 for the projects we have delivered in the last 1 year. Now let’s take a closer look at the key processes and scrum ceremonies one needs to follow that make the process truly Agile. Please note that one consultant will play the role of PO, Scrum Master and Project Manager because that helps to have full visibility and control on the timelines for the cloud implementation.

  • Requirement Discovery Sessions – This is the foundation stone and often referred to as sprint 0 for the project and generally ranges anywhere from 3 to 5 days of dedicated meetings and workshop at the client side sitting, discussing and brain storming the needs of the end users. The consultant running the workshop as a pre-requisite should have basic knowledge of the CRM domain, good understanding of the Salesforce Sales cloud, Service cloud or Community cloud and basic idea about the client’s industry will be an added advantage. The sessions are facilitated with flip charts, white boards and process maps. The consultant should constantly ask the question ‘Why’ to the customer team to understand the pain point before advising and concluding any solution to the customer. This will be a good place to define if any REST/SOAP based Salesforce Integration will be needed or not.

 

  • Define Stories in Jira or tool of your choice- Immediately after the workshops are concluded the consultant should start to document the discussed features with peripheral details into any tool like Jira and define the narrative and acceptance criteria on these stories. Even if the name of the feature is only added, more details can be added later.

 

  • Point Sizing and Team Strength – The PO/Project Manager who facilitated the discovery session needs to competent enough on Salesforce platform to provide the points in a Fibonacci series (1, 2, 3, 5, 8, 13, 21) to each of the story put it into Jira. Based on the total points and agreed upon schedule with client the PO decides on the number of Engineers needed for the whole work. This is typically done by doing a mock/draft release planning with a technical lead and PO making a guess on how many points an engineer can deliver. This part of the project gets better only with practice and experience that you gain in at least two rollouts.

 

  • Backlog Grooming – This is an ongoing ceremony for the Agile team. We typically spend 60-90 minutes/week for a SCRUM team of 5 to 6 members including developer and quality assurance. The PM/BA   puts on the hat of a PO and interacts with the agile team and grooms into each requirement in detail and updates the story with acceptance criteria. The team agrees upon the scope of the stories and call them as ready for development. The grooming sessions are also used to decide on the technical solution to achieve the requirement the decision of configuration versus customization is decided now. It will be beneficial to have an Salesforce architect involved in the session so that the engineers don’t overkill the system with excess of apex coding like triggers, batch classes and rely on configurations as much as possible.

 

  • Sprint Planning – This again is an ongoing ceremony that happens at a cadence. Engineers pick up stories as per their understanding and add to the sprint. The assignment of stories should be done with everyone’s consensus considering the engineer’s experience and story complexity.

 

  • Sprint Demo and Retrospective – This phase utilizes the maximum benefit out of Agile Development for Salesforce clouds. The demo is organized by the PO to the stakeholders like the client’s functional users and project sponsor and get their feedback early and if needed changes can be implemented in the next sprint. This helps the client to have focus throughout the project and hedges the integrator’s risk towards any possible changes coming after all work is done.

 

I would like to summarize by saying that any process can be used to deliver the same set of things but keep in mind that you need to Adopt a process, Customize the process and finally accept and embrace the process so that you believe in it to ensure your client and team stand with you even if there are some challenges thrown your way in the implementation. Finally, don’t forget to have some fun in this journey.

Mirketa has been helping client’s ranging from small to Fortune 500 companies’ rollout Salesforce clouds with high customer satisfaction and user adoption rates. Get in touch with our Agile Salesforce champions to understand how we can help your sales business process achieve more with the powerful Salesforce platform.

Posted in Agile, Salesforce cloud Implementation, salesforce community implementation, salesforce consultant. Tagged with , , , , .

Sales and Marketing Automation for Addiction Treatment, Part 1

Mirketa AppExchange
Have you ever sat wondering if you had followed up with everyone you were supposed to talk to today? Or managed a team and wondered if they we’re following through? These questions plague most sales driven businesses daily, but to Addiction Treatment Centers this could mean that someone’s life is on the line.

Download our eBook “How to Leverage Salesforce for your Addiction Treatment Centers”

Continue reading

Posted in Agile, Learn Salesforce, Salesforce, salesforce administrator, Salesforce Challenges, salesforce consultant, salesforce customization, salesforce development, salesforce for healthcare, salesforce for medical clinics, salesforce for NonProfit, salesforce for small business, salesforce integration, Salesforce Support Packages, salesforce Tips & Tricks, Salesforce.com, Salesforce1 Mobile app development. Tagged with , , , , , , , , , , , , , , .

NLP – Natural Language Processing

Since a long time, engineers have been striving to make machines perform tasks that human beings do; which has led to birth of the field of machine learning. Understanding the language humans speak, constitutes a vital part of this field. This field of computer science which deals with human-machine interactions, especially concerned with computer programs which can process natural language efficiently, is known as Natural Language Processing, mostly referred to by the abbreviation NLP.

NLP sits at the intersection of computer science, artificial intelligence and computational linguistics. “By utilizing Natural Language Processing algorithms, developers can organize and structure textual data to perform tasks such as automatic summarization, translation, named entity recognition, relationship extraction, sentiment analysis, speech recognition, and topic segmentation.” (En.wikipedia.org, 2017)

Natural Language Processing is characterized as a hard problem in computer science since human language is rarely precise, or plainly spoken. To understand human language, one must not only understand the words but their meaning & context and how they interconnect to form meaning. The vagueness and ambiguous nature of human language makes it difficult to learn for computers while being easy to learn for humans.
 

Components of NLP

There are two components of NLP which are listed as follows:

    • Natural Language Understanding(NLU)
      This includes understanding the different aspects of the language and mapping the input text in natural language to useful representations. This is the harder of the two components since this section has to deal with the ambiguity & complexity of the language. There are mainly three levels of ambiguity which are as follows:

          1. Word-level or Lexical Ambiguity
          2. Syntax Level or Parsing Ambiguity
          3. Referential Ambiguity

 

    • Natural Language Generation(NLG)
      As evident from the name, NLG is the process of producing or generating meaningful phrases and sentences in the form of natural language. It involves text planning, sentence planning and text realization.

 

NLP Terminology

Syntax: It refers to arrangement of words which form a sentence. It also involves determination of structural role of each word in the sentence.

Phonology: It is the study of organizing sounds systematically.

Morphology: It is study of how words are constructed using primitive meaningful units.

Semantics: It deals with the meaning of words and how they can be joined/combined to form meaningful sentences.

Discourse: This determines how the immediately preceding sentence can affect the interpretation of the next sentence.

Pragmatics: This deals with how the interpretation of a sentence changes according to the situation.

 

What can developers use NLP algorithms for?

    • Summarizing blocks of text to extract the meaningful information from the given text, ignoring the remaining non-relevant text
    • Understanding the input and generating the output in Chatbots
    • Deriving the sentiment of a piece of text using Sentiment analysis
    • Break up large text into simpler tokens such as sentences or words

 

Some Open Source NLP Libraries

    • Apache OpenNLP
      It is a Java based machine learning toolkit provided by Apache, that supports the most common NLP tasks, such as tokenization, sentence segmentation, part-of-speech tagging, named entity extraction, chunking, parsing, language detection and coreference resolution. OpenNLP also includes maximum entropy and perceptron based machine learning. It provides built-in Java classes for each functionality as well a command line interface for testing the pre-built agents.

 

    • Natural Language Toolkit(NLTK)
      It is a platform for building Python programs to read and process human language data. It provides easy-to-use interfaces to over 50 corpora and lexical resources, along with a suite of text processing libraries for classification, tokenization, stemming, tagging, parsing, and semantic reasoning, wrappers for industrial-strength NLP libraries, and an active discussion forum.

 

    • Stanford CoreNLP
      Stanford CoreNLP provides a set of human language technology tools. It can give the base forms of words, their parts of speech, mark up the structure of sentences in terms of phrases and syntactic dependencies, indicate which noun phrases refer to the same entities, indicate sentiment, extract or open-class relations between entity mentions, get the quotes people said, etc.

 

    • MALLET
      MALLET is a Java-based package for statistical natural language processing, document classification, clustering, topic modeling, information extraction, and other machine learning applications to text. Apart from classification, MALLET includes tools for sequence tagging for applications such as named-entity extraction from text. Algorithms include Hidden Markov Models, Maximum Entropy Markov Models, and Conditional Random Fields.

 

These are few of the many open source libraries and toolkits available for development on Natural Language Processing which can be utilized by developers in their applications.

In conclusion, Natural Language Processing is an important part of the artificial intelligence field and needs to be given importance if someone wants to master the trade of Machine Learning or Artificial Intelligence.

 

References

 

Posted in Agile, Learn Salesforce. Tagged with , , .

Best Programming Practices

Any code when written in a clean, easy to understand and formatted way is easily readable and accepted by everyone.

It is essential for everyone to easily understand the code one writes as same projects can involve participation of multiple programmers. For easy identification and understanding of the code and code flow by everyone involved, it is essential that the code is structured, clean, and easily maintainable.

Explained below are some of the practices to write clean and understandable code.

 

Commenting and Documentation

For any software project reliable documentation is crucial. Commenting and documentation helps one analyze what’s happening inside the code. This is very crucial for the one who is examining the code for the very first time. Writing comments for methods or functions is good for understanding its purpose. They can quickly show what a complex function is doing.

However, don’t write unnecessary comments as it would make your code messy. Obvious commenting does more harm than good. Comment should describe only what the method is doing or why it’s written. It can also describe the purpose of writing the program in a nutshell at the beginning of a class or module.

 

Naming Conventions

Adopting a consistent naming convention in your program is always a sensible and thoughtful practice.  It’s a set of rules for picking the character flow to be used for identifier, which signify variables, functions & methods. It makes it easier to understand the purpose of using that variable / function / method. If one’s a beginner, it’s a good practice to give meaningful names to your variables, methods, functions etc. instead of vague combinations of alphabets and numbers. Using camelCase and underscores is a widely popular approach. Use of camel case is to be preferred  as this does not create confusion between salesforce api names and variable names in case of apex code.

 

Consistent Indenting

There’s nothing worse than reading a piece of code that is poorly formatted. Indenting makes your code looks neat and clean. It is easy to understand the flow of program, the link between control flow constructs such as loops and codes written inside and outside of them.

 

Keeping it simple

One should keep their code as simple as possible. Avoid writing complex code for simple logic. Try breaking down your code in multiple methods if the logic is getting too complicated for a single module.

Ideally a method or a function should not have more than 40-50 lines of code, excluding comments.

Modules like servlets, triggers and callouts should not have any logic written in them. All the logical operations should be performed in a helper lass.

 

Portability

It is not advisable to use “hard-coded” values referring to environmental parameters, such as absolute file paths, file name, user name, host name, URLs etc. Else, the application might not run on a host with a different design. An efficient programmer should parametrize such variables and configure them as per the hosting environment outside of the application.

The best way to do it would be to maintain all the required constants in a single file which is easily configurable without making any code changes.

 

Loops and conditional statements

Beware of using loops and conditional statements in your code! Choose right loops at the right place in order to save code’s execution time.

Too many nested blocks of code can reduce code efficiency and readability drastically.

 

Omit unwanted code

It’s very common to find a block of code commented inside the program. It’s not going to do any harm to your program but bloats the code unnecessarily, so try not to keep such code. In addition, since this code is not going to be executed or compiled there is no difference between commenting out and deleting that code. Deleting commented codes makes your entire program looks cleaner.

In case of future necessity of the commented blocks, maintain additional backup along with the code repositories.

 

Do not just copy and paste code

If you have a snippet of, say, seven lines of code that do one thing, and you want to do it again for another module, don’t just copy and paste the code. Instead, make a function and to make it reusable. It’ll keep your code simple.

 

Code versioning

Code Versioning, popularly known as version control, is the management of the changes made to computer programs, documents and other collection of information.

In computer programming, it refers to the process of tracking & controlling the changes made to the source code.

Version control becomes very important especially when working in a big team as this saves additional time that one might require for code merging and also one can easily backtrack in case of errors.

 

Code versioning is to be done for every project using available resources like Gitlab, Github, Assembla, etc.

Posted in Agile, Apex Development, J2EE, JAVA, Organization Culture.

Will your Agile Transformation be an Epic Failure?

AgilePicture-2

Image credit: Miranda Kumar (at age 8)

For the last 20 years I have been in the business of helping companies get better at developing software products. I started my career believing that the highly structured processes like CMM Level 5 will magically take care of the software projects woes. After two disappointing years, I moved on to Rational Unified Process (aka RUP). After another 6-7 years of disappointments with RUP the natural progression in my thinking and (coincidently) software development process evolution took me down to the path to Agile. My success with Agile processes has made me a believer in the process.

Unfortunately, many of the teams that start their journey towards the Agile land don’t ever reach there. Across the board I have found some common traits in the teams that failed with their Agile transformation effort. In this article I have shared all of them. Feel free to add more from your experience in the comments below.
Continue reading

Posted in Agile, AGILE Tools, JIRA, JIRA on Demand. Tagged with , , , , .

Infographic: Connecting Products, Services and Operations to Company Vision

Recently we completed an engagement to redesign organizational structure for a mid size product company. The goal for this effort was create new structure to give autonomy to departments and subsidiaries while leveraging a set of shared processes and tools and to connect related products and services for the better customer experience. We have put together a visual of the framework for approaching this product rationalization, process modeling and organization redesign effort. The framework connects the company Vision to Customer Needs, Products/Services and Operational People, Processes and Tools.

This framework can be used for organizational restructuring and process redesign for rolling out new tools such as salesforce.com Sales Cloud, Service Cloud and other CRM products.

Following is the Infographic of the framework. Feel free to use it for your organizational and process modeling effort for initiatives like salesforce.com rollout. Ping me if you have any questions or comments.

 

Value based Business Architecture / Org Architecture

Infographic connecting the vision to customers to products, services and operational people, process and tools.

Posted in Agile, Organization Culture, Process Change Management, process engineering, Salesforce.com.

How To Create Your First Rest Web Service

What is web services?

mirketa-webservices1

 

web service is a piece of software that makes itself available over the internet and uses a standardized XML messaging system. XML is used to encode all communications to a web service. For example, a client invokes a web service by sending an XML message, then waits for the corresponding XML response.

There are mainly two types of web services.

    1. SOAP web services.
    2. RESTful web services.

 

Components of Web Services

    • SOAP (Simple Object Access Protocol)
    • UDDI (Universal Description, Discovery and Integration)
    • WSDL (Web Services Description Language)

 

Soap web services: – SOAP is XML based protocol. It is platform and language independent. By using SOAP, you will be able to interact with other applications designed in different programming languages.
Continue reading

Posted in Agile, AGILE Tools, HTML/CSS, HTTP, J2EE, JAVA, Java Script, REST API, WEB SERVICES, XML. Tagged with , , , , , , , , .

Programmatically Create Select Type Custom Field In Jira

In order to create a custom field type, you should be aware of basic plugin development.

Please follow the following steps to create an advanced custom field type in Jira.

    1. Create a basic Jira plugin skeleton. For creating Jira Plugin please refer to the given linkhttps://developer.atlassian.com/docs/getting-started/set-up-the-atlassian-plugin-sdk-and-build-a-project/create-a-helloworld-plugin-projectAfter creating a Basic plugin skeleton modify your atlassian-plugin.xml and add the following code in your atlassian-plugin.xml.
    2. After creating a Basic plugin skeleton modify your atlassian-plugin.xml and add the following code in your atlassian-plugin.xml. <customfield-type key=”Jira-Cf-Type-field” name=”Jira-Select CFType” class=”com.atlassian.jira.plugin.customfield.JiraCustomFieldType”><description>Create Your Own Advance Custom Field Type</description>                             <resource type=”velocity” name=”view” location=”templates/plugins/fields/view/view-basictext.vm”/><resource type=”velocity” name=”edit” location=”templates/edit- jiraselectcftype.vm”/><resource type=”velocity” name=”xml” location=”templates/plugins/fields/xml/xml-basictext.vm”/>

      </customfield-type>

                                          

      com.atlassian.jira.plugin.customfield.JiraCustomFieldType – class which extends an available CustomField Class to provide an entry point for the custom field.
      Continue reading

Posted in Agile, AGILE Tools, J2EE, JAVA, Java Script, JIRA, JIRA on Demand. Tagged with , , , .

Qualities of a Good Programmer

Programming is a very challenging domain as it requires a lots of patience and concentration. Before learning any programming language, one must have the attitude to not give up till one finds the solution. Programming language is just a way to solve a problem but logical skills and ability to solve the problem are the basic requirements of a good programmer.

Following are 7 essential qualities of a good programmer:
Continue reading

Posted in Agile, AGILE Tools, JAVA, salesforce administrator. Tagged with , , , .