Hi! I'm Tim Woodruff. I write most of the articles SN Pro Tips, and I’m the author of a few books on ServiceNow development, including Learning ServiceNow, and The ServiceNow Development Handbook. I've put together this quick-start guide to learning ServiceNow development, to give you a quick intro to the things that I personally think are important to know, when beginning a career as a ServiceNow developer.
This article is not meant to actually teach you to be a ServiceNow developer (it’s far too short for that). Instead, it's meant to be something you can reference when you feel like "Okay, what next?" on your journey to becoming an excellent ServiceNow developer.
In each section, I outline a few key points that you should look for, and pay special attention to. These are tidbits of knowledge that will help you out in your ServiceNow development career, or help you understand some concept about how SN works more deeply and intuitively. I don't recommend skipping around to learn those specific topics, but once you've done a bit of research (such as reading a book) on one of the topics mentioned, go back and review the list of concepts for anything you may have missed, and then research those points specifically.
Understanding the basics of relational databases fully is not necessary to get started (it's not too tough to pick up along the way), but it is strongly recommended that you acquire a solid understanding of the basic data-structures and types of relationships and data-types you'll run into in relational databases. This will help you understand how ServiceNow stores and correlates data. Having a vague understanding of the SQL query language syntax under your belt would also be very helpful in understanding some of the high-level and low-level functionality in ServiceNow, since it is - at its core - largely a big relational database with functional sugar on top.
What to know
Here are some basic concepts that would be helpful to be aware of:
What is the difference between a field or table label, and a field/table name
What is a primary key (PK)
In ServiceNow, the PK for all records in all tables, is a column (or a "field") labeled Sys ID with the column name "sys_id"
What is a foreign key (FK)
Foreign key fields in ServiceNow, are usually called Reference fields - though there are other "types" of fields (aside from reference fields) which can hold one or multiple FKs
How are records related to one another
(hint: Using an FK is one way to relate records to one another, but not the only way!)
(This typically uses an FK column)
Understand what constitutes "parent" versus "child" in these relationship types
Using an m2m table, versus using a FK field which supports multiple FKs on two tables (or on the same table - records can reference other records in the same table)
(How can these be enforced?)
(Note: These are not easy to enforce without some kind of logical underpinning, but it's a good idea to think about them and how they could be maintained.)
When are one-to-one relationships necessary?
(Hint: rarely. Often if you have a static 1-to-1 relationship, the data from both records in the relationship should be in a single record rather than split across two - but not always.)
Queries (Don't worry too much about syntax, but think about how they work.)
Dot-walking - querying based on data in an FK (reference) field
Query efficiency - If querying a table with a few million records, what are some basic things you can do to make your queries not make the database cry?
"AND" vs "OR" and logical operators (=, !=, IN, LIKE, etc.)
"Join" queries (though you can pick this up later)
Note: ITIL stands for “Information Technology Infrastructure Library”
First, you’ll want to learn basic ITIL terminology. Maybe take an "ITIL Foundations" course.
The ITIL Foundations certification isn't always necessary but it's good to be able to say that you have it. Lots of (especially entry-level) job will require it, and it's a pretty cheap cert to get.
I've worked with too many developers who, when asked to solve a problem, build really off-the-wall solutions because they don't understand the context they're working in (specifically, ITIL). It's difficult to explain how important it is to understand ITIL when you're building functionality that equates or relates to IT processes. ITIL is very important to understand. It's also very dry, especially if you don't have a lot of context for what you're learning (such as prior IT experience). Don't let this discourage you, and don't be afraid to learn only the basics about ITIL at first - but do come back to it, and make sure you understand it early-on in your career!
What to know
What is the difference between a "problem" and an "incident"?
What is a "CI"?
What is a "service catalog" and "catalog item"?
What is a "Change request"?
If you want to work closely with change, also learn about the different types of change (normal, standard, emergency) - but you don't need to
You can find loads of ~100 to 150-page books on Amazon, but make sure you get one with more than 10 reviews and a 4-star minimum rating.
Short + high rating = information dense and won't waste your time.
You can even find them on audiobook, if you're able to learn that way. I personally love them, but it requires a lot of focus to learn something completely new from an audiobook.
What to know
Next, I recommend studying JS until you understand the following concepts:
JSON formatting, objects, reference types, and primitives (and the differences between them)
Pass-by-reference (and how cool and annoying it can be)
Truthiness, falsiness, and strict vs. coercive/loose boolean expressions
Understand JS's coercive loosely-typed nature, and how to use and avoid it
(I recommend avoiding it using strict expressions because I think coercion leads to lazy and error-prone programming personally, but the important thing is to understand it)
Asynchronicity, and higher-order/callback functions
(You can probably move on and pick this one up later, but make sure it's in your toolkit eventually)
Without studying SPECIFICALLY those topics (as in, not just skipping over everything else to get to specifically those), once you know enough JS that you've incorporated those topics into your knowledgebase by osmosis, you'll be ready to start focusing on the ServiceNow platform.
Focus on ES5 (ES6 is unsupported on the Java-based JS implementation used by the platform back-end (Mozilla Rhino))
You don't need to be a JS super-pro before you jump into ServiceNow, but it's important to be able to read and write simple 10-20 line scripts in basic syntax without getting confused.
For learning JS, I recommend the "You Don't Know JS" book series for this; specifically Up and Going, Types and Grammar, and this & Object Prototypes. The whole series appears to be available for free as a Github repository, here.
This is a great resource if you’re the sort of person who can easily learn by the sort of “read about it, then try it” methodology, and is the first place I tell people to check out when they’re thinking about learning JS, just to get the super-basics. More advanced concepts are more difficult to learn from a site like
A lot of people also find codecademy to be useful as a bit more of a "hands-on", almost bootcamp-style guide to the very basics - though I’m not personally fond of their recent changes. Just remember that you should focus on ES5, not ES6 (even though codecademy will teach you some ES6 concepts, it's important to try to sort of compartmentalize them).
My biggest bit of advice for learning JS… do not pay for a “boot camp”. Boot camps, for most people, are just not a good way to learn and retain a large amount of information long-term.
Note: Keywords like let, const and class are all unsupported in ES5, and therefore in ServiceNow's server-side scripts. You can use them in client-scripts, but it's best to focus mainly on ES5, especially at first, to avoid confusion.
Set up your Personal Development Instance (PDI).
Read Learning ServiceNow (second edition).
After reading LSN and following the examples therein, do you feel like you're missing anything?
Now is the time to study JS in the context of ServiceNow.
Use ServiceNow for a while. Read the community forums and try to answer questions yourself, even if they've already been answered. Researching these answers will help you learn, and reinforce what you've already learned.
At this point, you're ready to start looking for an entry-level “Jr. ServiceNow developer” job!
Don't stop studying though, just cause you're looking for a job! Keep your skills sharp, and read on!
Note: You may want to get the ServiceNow Administrator certification, but having a job as a junior ServiceNow developer will help expose you to more knowledge more quickly than anything else.
Don’t forget to check out my other article on ServiceNow as a career, including choosing a career path, how to build a “ServiceNow resume”, interviewing for a ServiceNow job, negotiating your salary, and so on.
Read The ServiceNow Development Handbook, and keep it around. You may want to reference it often to make sure that you're writing robust, best-practice code, building future-mindful functionality, tables, and so on.
Read Mastering ServiceNow. It contains a lot of module-specific and deeper info that can definitely be helpful as you look to move your career forward into a more lucrative salary range.
Read the handbook again. 😛
Congrats! Once you've got through all of the above, and with a couple of years of hands-on experience, you're likely to be a really solid, perhaps even senior-level developer or architect!
Never stop learning. 🙂
- Apr 21, 2019 Understanding Attachments in ServiceNow
- Apr 10, 2019 Using Custom Search Engines in Chrome to Quickly Navigate ServiceNow
- Apr 4, 2019 Set Catalog Variables from URL Params (Free tool)
- Apr 1, 2019 Outlook for Android Breaks Email Approvals (+Solution)
- March 2019
- Feb 27, 2019 Making Update Sets Smarter - Free Tool
- November 2018
- October 2018
- September 2018
- Jul 23, 2018 Admin Duty Separation with a Single Account
- Jun 19, 2018 Improving Performance on Older Instances with Table Rotation
- Jun 4, 2018 New Free Tool: Login Link Generator
- May 29, 2018 Learning ServiceNow: Second Edition!
- April 2018
- March 2018
- Feb 11, 2018 We have a new book!
- November 2017
- Sep 12, 2017 Handling TimeZones in ServiceNow (TimeZoneUtil)
- July 2017
- June 2017
- May 2017
- April 2017
- Mar 12, 2017 reCAPTCHA in ServiceNow CMS/Service Portal
- Dec 20, 2016 Pro Tip: Use updateMultiple() for Maximum Efficiency!
- Dec 2, 2016 We're Writing a Book!
- Nov 10, 2016 Chrome Extension: Load in ServiceNow Frame
- September 2016
- Jul 17, 2016 Granting Temporary Roles/Groups in ServiceNow
- Jul 15, 2016 Scripted REST APIs & Retrieving RITM Variables via SRAPI
- May 17, 2016 What's New in Helsinki?
- Apr 27, 2016 Customizing UI16 Through CSS and System Properties
- Apr 5, 2016 ServiceNow Versions: Express Vs. Enterprise
- March 2016
- Feb 22, 2016 Reference Field Auto-Complete Attributes
- Feb 6, 2016 GlideRecord & GlideAjax: Client-Side Vs. Server-Side
- Feb 1, 2016 Make Your Log Entries Easier to Find
- Jan 29, 2016 A Better, One-Click Approval
- Jan 25, 2016 Quickly Move Changes Between Update Sets
- Jan 20, 2016 Customize the Reference Icon Pop-up
- Jan 7, 2016 ServiceNow: Geneva & UI16 - What's new
- Jan 4, 2016 Detect/Prevent Update Set Conflicts Before They Happen
- Dec 28, 2015 SN101: Boolean logic and ServiceNow's Condition Builder
- Dec 17, 2015 Locate any record in any table, by sys_id in ServiceNow
- Dec 16, 2015 Detecting Duplicate Records with GlideAggregate
- Dec 11, 2015 Array.indexOf() not working in ServiceNow - Solution!
- Dec 2, 2015 Understanding Dynamic Filters & Checking a Record Against a Filter Using GlideFilter
- October 2015
- Aug 27, 2015 Easily Clone One User's Access to Another User