{"appState":{"pageLoadApiCallsStatus":true},"categoryState":{"relatedCategories":{"headers":{"timestamp":"2025-04-29T08:01:08+00:00"},"categoryId":33610,"data":{"title":"General Programming & Web Design","slug":"general-programming-web-design","image":{"src":null,"width":0,"height":0},"breadcrumbs":[{"name":"Technology","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33512"},"slug":"technology","categoryId":33512},{"name":"Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33592"},"slug":"programming-web-design","categoryId":33592},{"name":"General Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"},"slug":"general-programming-web-design","categoryId":33610}],"parentCategory":{"categoryId":33592,"title":"Programming & Web Design","slug":"programming-web-design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33592"}},"childCategories":[],"description":"How do you customize a PHP server? What is an integrated development environment? Find these and other scattered coding details here.","relatedArticles":{"self":"https://dummies-api.dummies.com/v2/articles?category=33610&offset=0&size=5"},"hasArticle":true,"hasBook":true,"articleCount":210,"bookCount":36},"_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"}},"relatedCategoriesLoadedStatus":"success"},"listState":{"list":{"count":10,"total":208,"items":[{"headers":{"creationTime":"2025-04-28T14:54:25+00:00","modifiedTime":"2025-04-28T14:54:25+00:00","timestamp":"2025-04-28T15:01:07+00:00"},"data":{"breadcrumbs":[{"name":"Technology","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33512"},"slug":"technology","categoryId":33512},{"name":"Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33592"},"slug":"programming-web-design","categoryId":33592},{"name":"General Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"},"slug":"general-programming-web-design","categoryId":33610}],"title":"Why Local Environments Hold Your Developers Back","strippedTitle":"why local environments hold your developers back","slug":"why-local-environments-hold-your-developers-back","canonicalUrl":"","seo":{"metaDescription":"Discover how local development environments hinder your developers. Learn why cloud development environments can boost innovation and efficiency.","noIndex":0,"noFollow":0},"content":"For enterprises whose growth depends on the innovation of their developers and data scientists, success moves at the speed of their development environments. Efficiency, effectiveness, and the ability to build without friction — that’s what sets the pace.\r\n\r\nThe question is simple enough: Do your developers and data scientists work their magic in cloud development environments (CDEs), or is their work bogged down by a legacy development environment? Read on to find out why local development environments and other traditional solutions may be holding back your developers, and how cloud development environments can set them free.\r\n<h2 id=\"tab1\" >How traditional development environments are lacking</h2>\r\nWhat are some of the ways the wrong development environment may be making your company’s progress sluggish?\r\n<ul>\r\n \t<li><strong>Local development environments:</strong> This was yesterday’s standard, with all developers managing their own environments on their own machines. All that local control gets in the way of getting ahead. It’s complicated and time-consuming to configure tools and dependencies on each individual environment. You wind up with inconsistencies that slow things down. And don’t even think about scaling this approach.</li>\r\n \t<li><strong>Virtual desktop infrastructures (VDIs):</strong> VDIs help to centralize environments, but they’re often not really workable for development. They’re expensive and complicated to maintain. They also tend to suffer from sluggish performance, and that’s no way to keep developers happy.</li>\r\n \t<li><strong>Shadow virtual machines (VMs):</strong> Developers may get around these issues with ad hoc VMs, but they end up creating different problems. “Shadow” solutions may be lacking in governance and are often overprovisioned. That makes them potential security risks, not to mention wasteful of resources.</li>\r\n</ul>\r\n<h2 id=\"tab2\" >How cloud development environments can help</h2>\r\nA fully managed environment is the answer to the challenges of these more disjointed solutions from yesteryear. The CDE may be hosted in the cloud or via on-premises infrastructure, and it brings together all the necessary tools, libraries, and infrastructure needed for efficient development.\r\n\r\nIt’s a development workspace that can be accessed from anywhere, not tied to a specific location or machine. It’s great for remote work, and because of its centralized infrastructure, it’s a lot more secure than storing code and data on developers’ laptops. Developers and data scientists can easily tap into it for coding applications and training machine learning (ML) models, getting up and running in minutes.\r\n\r\nProvisioning is automatic, so everything developers need is right there and ready to go. It can all be controlled from a centralized interface by authorized team members, ensuring only the right people can access code and data. And the compute and storage resources are easily scalable.\r\n<h2 id=\"tab3\" >How CDEs make developers more productive</h2>\r\nTraditional local development environments tend to be frustratingly slow when it comes to onboarding new developers or moving developers to new projects (and developers tend to take on new projects multiple times a year, of course). Provisioning environments can take days or even weeks, thanks to all the complexities of dependencies and the need for approvals.\r\n\r\nMeanwhile, if developers are off working in their own local environments, that also leads to problems requiring time-consuming troubleshooting. Mismatched environments are the enemy of success. What’s more, resource constraints can be a hangup in local development environments.\r\n\r\nCDEs, on the other hand, can be preconfigured, so developers just log in and get to work. Platform engineers can make global updates and ensure consistencies across the CDE. Configuration drift is no longer a problem.\r\n\r\nAs for resource constraints, the cloud can fix that with high-performance resources that scale as needed. Developers can set up resource-intensive tasks such as ML model training in the cloud, and use their local laptops to get other work done in the meantime.\r\n<h2 id=\"tab4\" >Why cloud development environments provide better security</h2>\r\nLocal development environments and various noncentralized alternatives can pose security threats, due to a lack of adequate governance and a hard-to-manage attack surface. Working with intellectual property and other sensitive data on developer laptops or unapproved VMs is risky. If developers need to pull sensitive data to their laptops for such things as ML model training, you’re tempting fate, because security problems don’t just hold developers back — they can set back the entire organization.\r\n\r\nCDEs, on the other hand, can live in a cloud environment or be centralized in on-premises infrastructure. They can be air-gapped if need be. Source code and data can stay in secure cloud or on-premise locations, along with any compute resources needed for dealing with them, so sensitive data never needs to leave the safety of home.\r\n\r\nCompliance teams aren’t fond of local environments because they’re tricky to monitor. CDEs, on the other hand, offer better monitoring and auditing capabilities, without getting in the way of the developers’ work.\r\n<h2 id=\"tab5\" >How CDEs save both money and time</h2>\r\nFace it — local development environments can be costly. Local hardware isn’t cheap, especially the high-end hardware needed for resource-intensive processes. But if your enterprise tries to trim those costs, developers are likely to be displeased.\r\n\r\nThe reality is, CDEs not only provide a better developer experience and greater security, they also save money and time. Developers can use most cost-effective machines that are less powerful and longer-lasting, because the heavy lifting is happening in the CDE, not on the local machine.\r\n\r\nWhat’s more, CDEs can tap into automation to optimize resource utilization. Auto-start and auto-stop features mean unused environments aren’t sitting there wasting money. Bin-packing multiple developer workspaces onto a single VM can reduce infrastructure costs, too.\r\n\r\nAnd once again, helping developers be more efficient — by easing onboarding and transitioning, while banishing sluggish equipment — saves money, too. Time is, after all, money. If you can save hours and days and weeks of wasted developer time, you’ll get a whole lot more out of the money you’re paying them.\r\n\r\nTo learn more about the benefits of CDEs, <a href=\"https://coder.com/ebooks-and-reports/ebooks/cloud-development-environments-for-dummies-coder-special-edition\" target=\"_blank\" rel=\"noopener\" data-testid=\"bookSponsorDownloadButton\">download your free <em>Cloud Development Environments For Dummies, </em>CoderTechnologies, Inc. Special Edition e-book</a>.","description":"For enterprises whose growth depends on the innovation of their developers and data scientists, success moves at the speed of their development environments. Efficiency, effectiveness, and the ability to build without friction — that’s what sets the pace.\r\n\r\nThe question is simple enough: Do your developers and data scientists work their magic in cloud development environments (CDEs), or is their work bogged down by a legacy development environment? Read on to find out why local development environments and other traditional solutions may be holding back your developers, and how cloud development environments can set them free.\r\n<h2 id=\"tab1\" >How traditional development environments are lacking</h2>\r\nWhat are some of the ways the wrong development environment may be making your company’s progress sluggish?\r\n<ul>\r\n \t<li><strong>Local development environments:</strong> This was yesterday’s standard, with all developers managing their own environments on their own machines. All that local control gets in the way of getting ahead. It’s complicated and time-consuming to configure tools and dependencies on each individual environment. You wind up with inconsistencies that slow things down. And don’t even think about scaling this approach.</li>\r\n \t<li><strong>Virtual desktop infrastructures (VDIs):</strong> VDIs help to centralize environments, but they’re often not really workable for development. They’re expensive and complicated to maintain. They also tend to suffer from sluggish performance, and that’s no way to keep developers happy.</li>\r\n \t<li><strong>Shadow virtual machines (VMs):</strong> Developers may get around these issues with ad hoc VMs, but they end up creating different problems. “Shadow” solutions may be lacking in governance and are often overprovisioned. That makes them potential security risks, not to mention wasteful of resources.</li>\r\n</ul>\r\n<h2 id=\"tab2\" >How cloud development environments can help</h2>\r\nA fully managed environment is the answer to the challenges of these more disjointed solutions from yesteryear. The CDE may be hosted in the cloud or via on-premises infrastructure, and it brings together all the necessary tools, libraries, and infrastructure needed for efficient development.\r\n\r\nIt’s a development workspace that can be accessed from anywhere, not tied to a specific location or machine. It’s great for remote work, and because of its centralized infrastructure, it’s a lot more secure than storing code and data on developers’ laptops. Developers and data scientists can easily tap into it for coding applications and training machine learning (ML) models, getting up and running in minutes.\r\n\r\nProvisioning is automatic, so everything developers need is right there and ready to go. It can all be controlled from a centralized interface by authorized team members, ensuring only the right people can access code and data. And the compute and storage resources are easily scalable.\r\n<h2 id=\"tab3\" >How CDEs make developers more productive</h2>\r\nTraditional local development environments tend to be frustratingly slow when it comes to onboarding new developers or moving developers to new projects (and developers tend to take on new projects multiple times a year, of course). Provisioning environments can take days or even weeks, thanks to all the complexities of dependencies and the need for approvals.\r\n\r\nMeanwhile, if developers are off working in their own local environments, that also leads to problems requiring time-consuming troubleshooting. Mismatched environments are the enemy of success. What’s more, resource constraints can be a hangup in local development environments.\r\n\r\nCDEs, on the other hand, can be preconfigured, so developers just log in and get to work. Platform engineers can make global updates and ensure consistencies across the CDE. Configuration drift is no longer a problem.\r\n\r\nAs for resource constraints, the cloud can fix that with high-performance resources that scale as needed. Developers can set up resource-intensive tasks such as ML model training in the cloud, and use their local laptops to get other work done in the meantime.\r\n<h2 id=\"tab4\" >Why cloud development environments provide better security</h2>\r\nLocal development environments and various noncentralized alternatives can pose security threats, due to a lack of adequate governance and a hard-to-manage attack surface. Working with intellectual property and other sensitive data on developer laptops or unapproved VMs is risky. If developers need to pull sensitive data to their laptops for such things as ML model training, you’re tempting fate, because security problems don’t just hold developers back — they can set back the entire organization.\r\n\r\nCDEs, on the other hand, can live in a cloud environment or be centralized in on-premises infrastructure. They can be air-gapped if need be. Source code and data can stay in secure cloud or on-premise locations, along with any compute resources needed for dealing with them, so sensitive data never needs to leave the safety of home.\r\n\r\nCompliance teams aren’t fond of local environments because they’re tricky to monitor. CDEs, on the other hand, offer better monitoring and auditing capabilities, without getting in the way of the developers’ work.\r\n<h2 id=\"tab5\" >How CDEs save both money and time</h2>\r\nFace it — local development environments can be costly. Local hardware isn’t cheap, especially the high-end hardware needed for resource-intensive processes. But if your enterprise tries to trim those costs, developers are likely to be displeased.\r\n\r\nThe reality is, CDEs not only provide a better developer experience and greater security, they also save money and time. Developers can use most cost-effective machines that are less powerful and longer-lasting, because the heavy lifting is happening in the CDE, not on the local machine.\r\n\r\nWhat’s more, CDEs can tap into automation to optimize resource utilization. Auto-start and auto-stop features mean unused environments aren’t sitting there wasting money. Bin-packing multiple developer workspaces onto a single VM can reduce infrastructure costs, too.\r\n\r\nAnd once again, helping developers be more efficient — by easing onboarding and transitioning, while banishing sluggish equipment — saves money, too. Time is, after all, money. If you can save hours and days and weeks of wasted developer time, you’ll get a whole lot more out of the money you’re paying them.\r\n\r\nTo learn more about the benefits of CDEs, <a href=\"https://coder.com/ebooks-and-reports/ebooks/cloud-development-environments-for-dummies-coder-special-edition\" target=\"_blank\" rel=\"noopener\" data-testid=\"bookSponsorDownloadButton\">download your free <em>Cloud Development Environments For Dummies, </em>CoderTechnologies, Inc. Special Edition e-book</a>.","blurb":"","authors":[],"primaryCategoryTaxonomy":{"categoryId":33610,"title":"General Programming & Web Design","slug":"general-programming-web-design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"}},"secondaryCategoryTaxonomy":{"categoryId":33584,"title":"Cloud Computing","slug":"cloud-computing","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33584"}},"tertiaryCategoryTaxonomy":{"categoryId":0,"title":null,"slug":null,"_links":null},"trendingArticles":[{"articleId":192609,"title":"How to Pray the Rosary: A Comprehensive Guide","slug":"how-to-pray-the-rosary","categoryList":["body-mind-spirit","religion-spirituality","christianity","catholicism"],"_links":{"self":"/articles/192609"}},{"articleId":284787,"title":"What Your Society Says About You","slug":"what-your-society-says-about-you","categoryList":["academics-the-arts","humanities"],"_links":{"self":"/articles/284787"}},{"articleId":230957,"title":"Nikon D3400 For Dummies Cheat Sheet","slug":"nikon-d3400-dummies-cheat-sheet","categoryList":["home-auto-hobbies","photography"],"_links":{"self":"/articles/230957"}},{"articleId":208741,"title":"Kabbalah For Dummies Cheat Sheet","slug":"kabbalah-for-dummies-cheat-sheet","categoryList":["body-mind-spirit","religion-spirituality","kabbalah"],"_links":{"self":"/articles/208741"}},{"articleId":299133,"title":"ChatGPT For Dummies Cheat Sheet","slug":"chatgpt-for-dummies-cheat-sheet","categoryList":["technology","information-technology","ai","general-ai"],"_links":{"self":"/articles/299133"}}],"inThisArticle":[{"label":"How traditional development environments are lacking","target":"#tab1"},{"label":"How cloud development environments can help","target":"#tab2"},{"label":"How CDEs make developers more productive","target":"#tab3"},{"label":"Why cloud development environments provide better security","target":"#tab4"},{"label":"How CDEs save both money and time","target":"#tab5"}],"relatedArticles":{"fromBook":[],"fromCategory":[{"articleId":301736,"title":"Building DIY Websites For Dummies Cheat Sheet","slug":"building-diy-websites-for-dummies-cheat-sheet","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/301736"}},{"articleId":299575,"title":"HTML, CSS, & JavaScript All-in-One For Dummies Cheat Sheet","slug":"html-css-javascript-all-in-one-for-dummies-cheat-sheet","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/299575"}},{"articleId":265680,"title":"Using DevOps To Improve Engineering","slug":"tips-for-improving-engineering-performance-with-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265680"}},{"articleId":265675,"title":"How To Automate DevOps in the Cloud","slug":"make-more-of-your-cloud-tools-automating-devops-in-the-cloud","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265675"}},{"articleId":265672,"title":"How To Choose a Cloud Service Provider for DevOps","slug":"choosing-the-best-cloud-service-provider-features-and-tools-for-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265672"}}]},"hasRelatedBookFromSearch":false,"relatedBook":{"bookId":0,"slug":null,"isbn":null,"categoryList":null,"amazon":null,"image":null,"title":null,"testBankPinActivationLink":null,"bookOutOfPrint":false,"authorsInfo":null,"authors":null,"_links":null},"collections":[],"articleAds":{"footerAd":"<div class=\"du-ad-region row\" id=\"article_page_adhesion_ad\"><div class=\"du-ad-unit col-md-12\" data-slot-id=\"article_page_adhesion_ad\" data-refreshed=\"false\" \r\n data-target = \"[{&quot;key&quot;:&quot;cat&quot;,&quot;values&quot;:[&quot;technology&quot;,&quot;programming-web-design&quot;,&quot;general-programming-web-design&quot;]},{&quot;key&quot;:&quot;isbn&quot;,&quot;values&quot;:[null]},{&quot;key&quot;:&quot;sponsored&quot;,&quot;values&quot;:[&quot;customsolutions&quot;]}]\" id=\"du-slot-680f98348d9fa\"></div></div>","rightAd":"<div class=\"du-ad-region row\" id=\"article_page_right_ad\"><div class=\"du-ad-unit col-md-12\" data-slot-id=\"article_page_right_ad\" data-refreshed=\"false\" \r\n data-target = \"[{&quot;key&quot;:&quot;cat&quot;,&quot;values&quot;:[&quot;technology&quot;,&quot;programming-web-design&quot;,&quot;general-programming-web-design&quot;]},{&quot;key&quot;:&quot;isbn&quot;,&quot;values&quot;:[null]},{&quot;key&quot;:&quot;sponsored&quot;,&quot;values&quot;:[&quot;customsolutions&quot;]}]\" id=\"du-slot-680f98348f157\"></div></div>"},"articleType":{"articleType":"Articles","articleList":null,"content":null,"videoInfo":{"videoId":null,"name":null,"accountId":null,"playerId":null,"thumbnailUrl":null,"description":null,"uploadDate":null}},"sponsorship":{"sponsorshipPage":true,"backgroundImage":{"src":null,"width":0,"height":0},"brandingLine":"Brought to you by Coder","brandingLink":"https://coder.com/","brandingLogo":{"src":"https://www.dummies.com/wp-content/uploads/coder-logo-transparent-strip-black.png","width":200,"height":44},"sponsorAd":"&nbsp;\r\n\r\n&nbsp;","sponsorEbookTitle":"Cloud Development Environments For Dummies, CoderTechnologies, Inc. Special Edition","sponsorEbookLink":"https://coder.com/ebooks-and-reports/ebooks/cloud-development-environments-for-dummies-coder-special-edition","sponsorEbookImage":{"src":"https://www.dummies.com/wp-content/uploads/cloud-development-environments-fd-coder-160x255.jpg","width":160,"height":255}},"primaryLearningPath":"Advance","lifeExpectancy":"One year","lifeExpectancySetFrom":"2025-04-29T00:00:00+00:00","dummiesForKids":"no","sponsoredContent":"no","adInfo":"","adPairKey":[{"adPairKey":"sponsored","adPairValue":"customsolutions"}]},"status":"publish","visibility":"public","articleId":302882},{"headers":{"creationTime":"2016-03-26T14:56:06+00:00","modifiedTime":"2024-05-30T18:40:14+00:00","timestamp":"2024-05-30T21:01:10+00:00"},"data":{"breadcrumbs":[{"name":"Technology","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33512"},"slug":"technology","categoryId":33512},{"name":"Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33592"},"slug":"programming-web-design","categoryId":33592},{"name":"General Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"},"slug":"general-programming-web-design","categoryId":33610}],"title":"How to Fix Noncompliant Code on Your Web Page","strippedTitle":"how to fix noncompliant code on your web page","slug":"how-to-fix-noncompliant-code-on-your-web-page","canonicalUrl":"","seo":{"metaDescription":"Easily fix web coding error mesages such as alt, tag, and more with these clear and useful solutions.","noIndex":0,"noFollow":0},"content":"For each web coding issue identified by a validator, you need to determine what course of action to take. Although some culprits that repeatedly crop up are easy to fix, such as missing <code>alt</code> text and <code>&lt;noscript&gt;</code> tags, you’re bound to find coding issues that completely baffle and stump you.\r\n\r\nFor instance, if you get an error message that reads <code>XML Parsing Error: Opening and ending tag mismatch: br line 52 and body</code>, it might be difficult to figure out what that means, let alone why it was caused and how you should fix it.\r\n\r\nAs a strategy then, try to fix the issues within the code from the top down, as they’re listed in the validation results, because sometimes fixing one issue resolves another. With the XML parsing error, that issue might disappear when you correct for an omitted closing element on a <code>&lt;br /&gt;</code> tag listed earlier in the error results.\r\n\r\nThe best way to find out how to code better and make fewer mistakes before validation testing is to make lots of honest mistakes and figure out how to correct them on your own. Most often, you can fix noncompliant code by hand or with the help of a good HTML editor.\r\n\r\nTo help you identify some of the more common coding mistakes, here several code issues along with suggestions about how to fix them.\r\n<table>\r\n<tbody>\r\n<tr>\r\n<th>Problem</th>\r\n<th>Solution</th>\r\n</tr>\r\n<tr>\r\n<td>\r\n<pre class=\"code\">alt</pre>\r\ntext attribute missing from\r\n<pre class=\"code\">&lt;img&gt;</pre>\r\ntag</td>\r\n<td>Add the alternative text attribute, either with or without a\r\ndescription, as in\r\n<pre class=\"code\">&lt;img\r\nsrc=\"images/logo.gif\" width=\"150\"\r\nheight=\"150\" alt=\"Pete’s Pizza\"&gt;\r\n&lt;img src=\"images/flourish.gif\" width=\"200\"\r\nheight=\"150\" alt=\"\"&gt;</pre>\r\n.</td>\r\n</tr>\r\n<tr>\r\n<td>\r\n<pre class=\"code\">&lt;noscript&gt;</pre>\r\ntags missing from\r\ncode</td>\r\n<td>Add\r\n<pre class=\"code\">&lt;noscript&gt;</pre>\r\ntags below each\r\ninstance when JavaScript is present in in-line JavaScript or at the\r\nend of the content before the closing body tag. Between the\r\n<pre class=\"code\">&lt;noscript&gt;</pre>\r\ntags, insert HTML content\r\n(text, graphics, media files, and so on) that describes the\r\nfunction of the JavaScript and, when appropriate, how visitors can\r\naccess the information revealed by it, as shown here:\r\n<pre class=\"code\">&lt;script language=\"JavaScript\"\r\nsrc=\"bookmark.js\"\r\ntype=\"text/javascript\"&gt;&lt;/script&gt;&lt;noscript&gt;The\r\nJavaScript used on this page provides a quick link that allows\r\nvisitors to automatically bookmark this page. As an alternative,\r\nplease use your browser’s Bookmark This Page feature.&lt;/noscript&gt;</pre>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td>Flashing or flickering element(s) detected, such as animated\r\nGIFs, Java applets, and other multimedia plug-ins</td>\r\n<td>Adjust the speed of any animations to avoid causing the screen\r\nto flicker with a frequency between 2 Hz and 55 Hz. Animations that\r\nexceed these two measures may cause seizures in visitors with\r\nphotosensitive epilepsy.</td>\r\n</tr>\r\n<tr>\r\n<td>No\r\n<pre class=\"code\">DOCTYPE</pre>\r\nspecified</td>\r\n<td>Add a valid\r\n<pre class=\"code\">DOCTYPE</pre>\r\nabove the opening\r\n<pre class=\"code\">&lt;head&gt;</pre>\r\ntag.</td>\r\n</tr>\r\n<tr>\r\n<td>No HTTP charset parameter specified</td>\r\n<td>This special meta tag specifies the character set used in the\r\nHTML code. Some HTML editors include it automatically when\r\ngenerating new blank web pages. If validation finds that this tag\r\nis missing from your HTML or XHTML code, insert the following code\r\nby hand:\r\n<pre class=\"code\">&lt;meta\r\nhttp-equiv=\"Content-Type\" content=\"text/html;\r\ncharset=utf-8\"&gt;</pre>\r\n. For HTML5, insert\r\n<pre class=\"code\">&lt;meta charset=\"utf-8\"&gt;</pre>\r\n.</td>\r\n</tr>\r\n<tr>\r\n<td>No\r\n<pre class=\"code\">&lt;title&gt;</pre>\r\ntag specified</td>\r\n<td>Add a unique title between\r\n<pre class=\"code\">&lt;title&gt;</pre>\r\ntags in the head area on each\r\npage.</td>\r\n</tr>\r\n<tr>\r\n<td>No\r\n<pre class=\"code\">&lt;meta&gt;</pre>\r\ntags specified</td>\r\n<td>Add meta keywords and meta description tags to the head of each\r\npage. These can be identical on every page on the site. If desired,\r\nyou may also add additional meta tags as needed.</td>\r\n</tr>\r\n<tr>\r\n<td>No Robots tags specified</td>\r\n<td>Add the\r\n<pre class=\"code\">Robots</pre>\r\n<pre class=\"code\">&lt;meta&gt;</pre>\r\ntag in the head of the page to\r\ninstruct web spiders and robots whether to index the page and\r\nfollow any hyperlinks, such as\r\n<pre class=\"code\">&lt;meta\r\nname=\"Robots\" content=\"All\"&gt;</pre>\r\n.</td>\r\n</tr>\r\n<tr>\r\n<td>Deprecated\r\n<pre class=\"code\">&lt;font&gt;</pre>\r\ntags\r\ndetected</td>\r\n<td>Move all the presentation markup of the HTML (page, fonts,\r\ntables, links, and so on) to an external CSS file and remove all\r\n<pre class=\"code\">&lt;font&gt;</pre>\r\ntags and HTML and inline\r\nformatting attributes.</td>\r\n</tr>\r\n<tr>\r\n<td>Deprecated table height attribute detected</td>\r\n<td>Control table cell heights, when necessary, with CSS\r\nstyles.</td>\r\n</tr>\r\n<tr>\r\n<td>Style attributes detected in the opening\r\n<pre class=\"code\">&lt;body&gt;</pre>\r\ntag</td>\r\n<td>Move <code>body</code> attributes, like margin\r\nattributes and background page color, to a BODY tag redefine style\r\nin an external CSS file.</td>\r\n</tr>\r\n<tr>\r\n<td>\r\n<pre class=\"code\">type</pre>\r\nattribute not specified for\r\nJavaScript or CSS</td>\r\n<td>Add the\r\n<pre class=\"code\">type=\"text/css\"</pre>\r\nattribute for\r\n<pre class=\"code\">&lt;style&gt;</pre>\r\ntags and the\r\n<pre class=\"code\">type=\"text/javascript\"</pre>\r\nattribute for\r\n<pre class=\"code\">&lt;script&gt;</pre>\r\ntags:\r\n<pre class=\"code\">&lt;style type=\"text/css\" &gt;&lt;script\r\ntype=\"text/javascript\"&gt;</pre>\r\n.</td>\r\n</tr>\r\n<tr>\r\n<td>Entity name used instead of entity number</td>\r\n<td>Change the entity name to an entity number, such as using\r\n<pre class=\"code\">$#169;</pre>\r\ninstead of\r\n<pre class=\"code\">&copy;</pre>\r\nto create the copyright symbol\r\n(c).</td>\r\n</tr>\r\n<tr>\r\n<td>No background color attribute was specified for a CSS style\r\nthat specifies text color</td>\r\n<td>Provide each style that contains a text\r\n<pre class=\"code\">color</pre>\r\nattribute with an attending background\r\n<pre class=\"code\">color</pre>\r\nattribute. The background color\r\nshould match, or closely match, the background color upon which the\r\ntext will display on.</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nWhen you’re finished identifying and adjusting all the noncompliant code identified by the validation tools, and have fixed everything that needed fixing, move on to the retesting and acceptable failure phase of the testing process.","description":"For each web coding issue identified by a validator, you need to determine what course of action to take. Although some culprits that repeatedly crop up are easy to fix, such as missing <code>alt</code> text and <code>&lt;noscript&gt;</code> tags, you’re bound to find coding issues that completely baffle and stump you.\r\n\r\nFor instance, if you get an error message that reads <code>XML Parsing Error: Opening and ending tag mismatch: br line 52 and body</code>, it might be difficult to figure out what that means, let alone why it was caused and how you should fix it.\r\n\r\nAs a strategy then, try to fix the issues within the code from the top down, as they’re listed in the validation results, because sometimes fixing one issue resolves another. With the XML parsing error, that issue might disappear when you correct for an omitted closing element on a <code>&lt;br /&gt;</code> tag listed earlier in the error results.\r\n\r\nThe best way to find out how to code better and make fewer mistakes before validation testing is to make lots of honest mistakes and figure out how to correct them on your own. Most often, you can fix noncompliant code by hand or with the help of a good HTML editor.\r\n\r\nTo help you identify some of the more common coding mistakes, here several code issues along with suggestions about how to fix them.\r\n<table>\r\n<tbody>\r\n<tr>\r\n<th>Problem</th>\r\n<th>Solution</th>\r\n</tr>\r\n<tr>\r\n<td>\r\n<pre class=\"code\">alt</pre>\r\ntext attribute missing from\r\n<pre class=\"code\">&lt;img&gt;</pre>\r\ntag</td>\r\n<td>Add the alternative text attribute, either with or without a\r\ndescription, as in\r\n<pre class=\"code\">&lt;img\r\nsrc=\"images/logo.gif\" width=\"150\"\r\nheight=\"150\" alt=\"Pete’s Pizza\"&gt;\r\n&lt;img src=\"images/flourish.gif\" width=\"200\"\r\nheight=\"150\" alt=\"\"&gt;</pre>\r\n.</td>\r\n</tr>\r\n<tr>\r\n<td>\r\n<pre class=\"code\">&lt;noscript&gt;</pre>\r\ntags missing from\r\ncode</td>\r\n<td>Add\r\n<pre class=\"code\">&lt;noscript&gt;</pre>\r\ntags below each\r\ninstance when JavaScript is present in in-line JavaScript or at the\r\nend of the content before the closing body tag. Between the\r\n<pre class=\"code\">&lt;noscript&gt;</pre>\r\ntags, insert HTML content\r\n(text, graphics, media files, and so on) that describes the\r\nfunction of the JavaScript and, when appropriate, how visitors can\r\naccess the information revealed by it, as shown here:\r\n<pre class=\"code\">&lt;script language=\"JavaScript\"\r\nsrc=\"bookmark.js\"\r\ntype=\"text/javascript\"&gt;&lt;/script&gt;&lt;noscript&gt;The\r\nJavaScript used on this page provides a quick link that allows\r\nvisitors to automatically bookmark this page. As an alternative,\r\nplease use your browser’s Bookmark This Page feature.&lt;/noscript&gt;</pre>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td>Flashing or flickering element(s) detected, such as animated\r\nGIFs, Java applets, and other multimedia plug-ins</td>\r\n<td>Adjust the speed of any animations to avoid causing the screen\r\nto flicker with a frequency between 2 Hz and 55 Hz. Animations that\r\nexceed these two measures may cause seizures in visitors with\r\nphotosensitive epilepsy.</td>\r\n</tr>\r\n<tr>\r\n<td>No\r\n<pre class=\"code\">DOCTYPE</pre>\r\nspecified</td>\r\n<td>Add a valid\r\n<pre class=\"code\">DOCTYPE</pre>\r\nabove the opening\r\n<pre class=\"code\">&lt;head&gt;</pre>\r\ntag.</td>\r\n</tr>\r\n<tr>\r\n<td>No HTTP charset parameter specified</td>\r\n<td>This special meta tag specifies the character set used in the\r\nHTML code. Some HTML editors include it automatically when\r\ngenerating new blank web pages. If validation finds that this tag\r\nis missing from your HTML or XHTML code, insert the following code\r\nby hand:\r\n<pre class=\"code\">&lt;meta\r\nhttp-equiv=\"Content-Type\" content=\"text/html;\r\ncharset=utf-8\"&gt;</pre>\r\n. For HTML5, insert\r\n<pre class=\"code\">&lt;meta charset=\"utf-8\"&gt;</pre>\r\n.</td>\r\n</tr>\r\n<tr>\r\n<td>No\r\n<pre class=\"code\">&lt;title&gt;</pre>\r\ntag specified</td>\r\n<td>Add a unique title between\r\n<pre class=\"code\">&lt;title&gt;</pre>\r\ntags in the head area on each\r\npage.</td>\r\n</tr>\r\n<tr>\r\n<td>No\r\n<pre class=\"code\">&lt;meta&gt;</pre>\r\ntags specified</td>\r\n<td>Add meta keywords and meta description tags to the head of each\r\npage. These can be identical on every page on the site. If desired,\r\nyou may also add additional meta tags as needed.</td>\r\n</tr>\r\n<tr>\r\n<td>No Robots tags specified</td>\r\n<td>Add the\r\n<pre class=\"code\">Robots</pre>\r\n<pre class=\"code\">&lt;meta&gt;</pre>\r\ntag in the head of the page to\r\ninstruct web spiders and robots whether to index the page and\r\nfollow any hyperlinks, such as\r\n<pre class=\"code\">&lt;meta\r\nname=\"Robots\" content=\"All\"&gt;</pre>\r\n.</td>\r\n</tr>\r\n<tr>\r\n<td>Deprecated\r\n<pre class=\"code\">&lt;font&gt;</pre>\r\ntags\r\ndetected</td>\r\n<td>Move all the presentation markup of the HTML (page, fonts,\r\ntables, links, and so on) to an external CSS file and remove all\r\n<pre class=\"code\">&lt;font&gt;</pre>\r\ntags and HTML and inline\r\nformatting attributes.</td>\r\n</tr>\r\n<tr>\r\n<td>Deprecated table height attribute detected</td>\r\n<td>Control table cell heights, when necessary, with CSS\r\nstyles.</td>\r\n</tr>\r\n<tr>\r\n<td>Style attributes detected in the opening\r\n<pre class=\"code\">&lt;body&gt;</pre>\r\ntag</td>\r\n<td>Move <code>body</code> attributes, like margin\r\nattributes and background page color, to a BODY tag redefine style\r\nin an external CSS file.</td>\r\n</tr>\r\n<tr>\r\n<td>\r\n<pre class=\"code\">type</pre>\r\nattribute not specified for\r\nJavaScript or CSS</td>\r\n<td>Add the\r\n<pre class=\"code\">type=\"text/css\"</pre>\r\nattribute for\r\n<pre class=\"code\">&lt;style&gt;</pre>\r\ntags and the\r\n<pre class=\"code\">type=\"text/javascript\"</pre>\r\nattribute for\r\n<pre class=\"code\">&lt;script&gt;</pre>\r\ntags:\r\n<pre class=\"code\">&lt;style type=\"text/css\" &gt;&lt;script\r\ntype=\"text/javascript\"&gt;</pre>\r\n.</td>\r\n</tr>\r\n<tr>\r\n<td>Entity name used instead of entity number</td>\r\n<td>Change the entity name to an entity number, such as using\r\n<pre class=\"code\">$#169;</pre>\r\ninstead of\r\n<pre class=\"code\">&copy;</pre>\r\nto create the copyright symbol\r\n(c).</td>\r\n</tr>\r\n<tr>\r\n<td>No background color attribute was specified for a CSS style\r\nthat specifies text color</td>\r\n<td>Provide each style that contains a text\r\n<pre class=\"code\">color</pre>\r\nattribute with an attending background\r\n<pre class=\"code\">color</pre>\r\nattribute. The background color\r\nshould match, or closely match, the background color upon which the\r\ntext will display on.</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nWhen you’re finished identifying and adjusting all the noncompliant code identified by the validation tools, and have fixed everything that needed fixing, move on to the retesting and acceptable failure phase of the testing process.","blurb":"","authors":[{"authorId":9719,"name":"Sue Jenkins","slug":"sue-jenkins","description":"Sue Jenkins is a working designer as well as a design trainer and author. Her design firm, Luckychair, provides design services for web, logo, and print. Jenkins has also created a series of courses on popular Adobe design tools including Photoshop and Illustrator.","hasArticle":false,"_links":{"self":"https://dummies-api.dummies.com/v2/authors/9719"}}],"primaryCategoryTaxonomy":{"categoryId":33610,"title":"General Programming & Web Design","slug":"general-programming-web-design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"}},"secondaryCategoryTaxonomy":{"categoryId":0,"title":null,"slug":null,"_links":null},"tertiaryCategoryTaxonomy":{"categoryId":0,"title":null,"slug":null,"_links":null},"trendingArticles":[{"articleId":192609,"title":"How to Pray the Rosary: A Comprehensive Guide","slug":"how-to-pray-the-rosary","categoryList":["body-mind-spirit","religion-spirituality","christianity","catholicism"],"_links":{"self":"/articles/192609"}},{"articleId":284787,"title":"What Your Society Says About You","slug":"what-your-society-says-about-you","categoryList":["academics-the-arts","humanities"],"_links":{"self":"/articles/284787"}},{"articleId":230957,"title":"Nikon D3400 For Dummies Cheat Sheet","slug":"nikon-d3400-dummies-cheat-sheet","categoryList":["home-auto-hobbies","photography"],"_links":{"self":"/articles/230957"}},{"articleId":208741,"title":"Kabbalah For Dummies Cheat Sheet","slug":"kabbalah-for-dummies-cheat-sheet","categoryList":["body-mind-spirit","religion-spirituality","kabbalah"],"_links":{"self":"/articles/208741"}},{"articleId":299133,"title":"ChatGPT For Dummies Cheat Sheet","slug":"chatgpt-for-dummies-cheat-sheet","categoryList":["technology","information-technology","ai","general-ai"],"_links":{"self":"/articles/299133"}}],"inThisArticle":[],"relatedArticles":{"fromBook":[{"articleId":208112,"title":"Web Design All-in-One For Dummies Cheat Sheet","slug":"web-design-all-in-one-for-dummies-cheat-sheet","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/208112"}},{"articleId":204470,"title":"How to Add a DOCTYPE in Dreamweaver","slug":"how-to-add-a-doctype-in-dreamweaver","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/204470"}},{"articleId":204469,"title":"How to Remove Unwanted Formatting from Your Website","slug":"how-to-remove-unwanted-formatting-from-your-website","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/204469"}},{"articleId":204468,"title":"How to Transfer Files to Your Website with Dreamweaver","slug":"how-to-transfer-files-to-your-website-with-dreamweaver","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/204468"}},{"articleId":171074,"title":"Nine Basic CSS Categories to Use in Web Design","slug":"nine-basic-css-categories-to-use-in-web-design","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/171074"}}],"fromCategory":[{"articleId":301736,"title":"Building DIY Websites For Dummies Cheat Sheet","slug":"building-diy-websites-for-dummies-cheat-sheet","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/301736"}},{"articleId":299575,"title":"HTML, CSS, & JavaScript All-in-One For Dummies Cheat Sheet","slug":"html-css-javascript-all-in-one-for-dummies-cheat-sheet","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/299575"}},{"articleId":265680,"title":"Using DevOps To Improve Engineering","slug":"tips-for-improving-engineering-performance-with-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265680"}},{"articleId":265675,"title":"How To Automate DevOps in the Cloud","slug":"make-more-of-your-cloud-tools-automating-devops-in-the-cloud","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265675"}},{"articleId":265672,"title":"How To Choose a Cloud Service Provider for DevOps","slug":"choosing-the-best-cloud-service-provider-features-and-tools-for-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265672"}}]},"hasRelatedBookFromSearch":false,"relatedBook":{"bookId":281890,"slug":"web-design-all-in-one-for-dummies-2nd-edition","isbn":"9781118404102","categoryList":["technology","programming-web-design","general-programming-web-design"],"amazon":{"default":"https://www.amazon.com/gp/product/1118404106/ref=as_li_tl?ie=UTF8&tag=wiley01-20","ca":"https://www.amazon.ca/gp/product/1118404106/ref=as_li_tl?ie=UTF8&tag=wiley01-20","indigo_ca":"http://www.tkqlhce.com/click-9208661-13710633?url=https://www.chapters.indigo.ca/en-ca/books/product/1118404106-item.html&cjsku=978111945484","gb":"https://www.amazon.co.uk/gp/product/1118404106/ref=as_li_tl?ie=UTF8&tag=wiley01-20","de":"https://www.amazon.de/gp/product/1118404106/ref=as_li_tl?ie=UTF8&tag=wiley01-20"},"image":{"src":"https://www.dummies.com/wp-content/uploads/web-design-all-in-one-for-dummies-2nd-edition-cover-9781118404102-203x255.jpg","width":203,"height":255},"title":"Web Design All-in-One For Dummies, 2nd Edition","testBankPinActivationLink":"","bookOutOfPrint":false,"authorsInfo":"<p><b data-author-id=\"9719\">Sue Jenkins</b> is a working designer as well as a design trainer and author. Her design firm, Luckychair, provides design services for web, logo, and print. Sue has also created a series of training DVDs on popular Adobe design tools including Photoshop, Dreamweaver, and Illustrator.</p>","authors":[{"authorId":9719,"name":"Sue Jenkins","slug":"sue-jenkins","description":"Sue Jenkins is a working designer as well as a design trainer and author. Her design firm, Luckychair, provides design services for web, logo, and print. Jenkins has also created a series of courses on popular Adobe design tools including Photoshop and Illustrator.","hasArticle":false,"_links":{"self":"https://dummies-api.dummies.com/v2/authors/9719"}}],"_links":{"self":"https://dummies-api.dummies.com/v2/books/"}},"collections":[],"articleAds":{"footerAd":"<div class=\"du-ad-region row\" id=\"article_page_adhesion_ad\"><div class=\"du-ad-unit col-md-12\" data-slot-id=\"article_page_adhesion_ad\" data-refreshed=\"false\" \r\n data-target = \"[{&quot;key&quot;:&quot;cat&quot;,&quot;values&quot;:[&quot;technology&quot;,&quot;programming-web-design&quot;,&quot;general-programming-web-design&quot;]},{&quot;key&quot;:&quot;isbn&quot;,&quot;values&quot;:[&quot;9781118404102&quot;]}]\" id=\"du-slot-6658e916d2e5b\"></div></div>","rightAd":"<div class=\"du-ad-region row\" id=\"article_page_right_ad\"><div class=\"du-ad-unit col-md-12\" data-slot-id=\"article_page_right_ad\" data-refreshed=\"false\" \r\n data-target = \"[{&quot;key&quot;:&quot;cat&quot;,&quot;values&quot;:[&quot;technology&quot;,&quot;programming-web-design&quot;,&quot;general-programming-web-design&quot;]},{&quot;key&quot;:&quot;isbn&quot;,&quot;values&quot;:[&quot;9781118404102&quot;]}]\" id=\"du-slot-6658e916d366b\"></div></div>"},"articleType":{"articleType":"Articles","articleList":null,"content":null,"videoInfo":{"videoId":null,"name":null,"accountId":null,"playerId":null,"thumbnailUrl":null,"description":null,"uploadDate":null}},"sponsorship":{"sponsorshipPage":false,"backgroundImage":{"src":null,"width":0,"height":0},"brandingLine":"","brandingLink":"","brandingLogo":{"src":null,"width":0,"height":0},"sponsorAd":"","sponsorEbookTitle":"","sponsorEbookLink":"","sponsorEbookImage":{"src":null,"width":0,"height":0}},"primaryLearningPath":"Advance","lifeExpectancy":"Two years","lifeExpectancySetFrom":"2022-05-31T00:00:00+00:00","dummiesForKids":"no","sponsoredContent":"no","adInfo":"","adPairKey":[]},"status":"publish","visibility":"public","articleId":166201},{"headers":{"creationTime":"2019-11-12T18:05:01+00:00","modifiedTime":"2024-05-30T18:15:24+00:00","timestamp":"2024-05-30T21:01:09+00:00"},"data":{"breadcrumbs":[{"name":"Technology","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33512"},"slug":"technology","categoryId":33512},{"name":"Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33592"},"slug":"programming-web-design","categoryId":33592},{"name":"General Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"},"slug":"general-programming-web-design","categoryId":33610}],"title":"How To Choose a Cloud Service Provider for DevOps","strippedTitle":"how to choose a cloud service provider for devops","slug":"choosing-the-best-cloud-service-provider-features-and-tools-for-devops","canonicalUrl":"","seo":{"metaDescription":"When implementing a DevOps initiative, you'll want to make sure you have the right cloud provider and tools. Use this guide to evaluate your DevOps options.","noIndex":0,"noFollow":0},"content":"The success of your DevOps initiative relies heavily on following the process, but it’s also important to use the right tools. Selecting a cloud service provider isn’t an easy choice, especially when DevOps is your driving motivation. GCP (Google Cloud Platform), AWS (Amazon Web Services), and Azure have more in common than they do apart.\r\n\r\nOften, your decision depends more on your DevOps team’s comfort level with a <a href=\"https://www.dummies.com/programming/cloud-computing/how-to-work-with-a-service-provider-in-cloud-computing/\">particular cloud provider</a> or your current stack more than the cloud provider itself. After you’ve decided to move to the cloud, the next decision is to decide on a cloud provider that fits your DevOps needs. Here are some things to consider when <a href=\"https://www.dummies.com/programming/cloud-computing/hybrid-cloud/questions-to-ask-a-possible-cloud-services-provider/\">evaluating cloud providers</a> with DevOps principles in mind:\r\n<ul>\r\n \t<li><strong>Solid track record.</strong> The cloud you choose should have a history of responsible financial decisions and enough capital to operate and expand large datacenters over decades.</li>\r\n \t<li><strong>Compliance and risk management. </strong><strong>Formal structure and established compliance policies are vital to ensure that your data is safe and secure. Ideally, review audits before you sign contracts.</strong></li>\r\n \t<li><strong>Positive reputation. </strong><strong>Customer trust is absolutely key. Do you trust that you can rely on this cloud provider to continue to grow and support your evolving DevOps needs?</strong></li>\r\n \t<li><strong>Service Level Agreements (SLAs).</strong> What level of service do you require? Typically cloud providers offer various levels of uptime reliability based on cost. For example, 99.9 percent uptime will be significantly cheaper than 99.999 percent uptime.</li>\r\n \t<li><strong>Metrics and monitoring.</strong> What types of application insights, monitoring, and telemetry does the vendor supply? Be sure that you can gain an appropriate level of insight into your systems in as close to real-time as possible.</li>\r\n</ul>\r\nFinally, ensure the cloud provider you choose has excellent technical capabilities that provide services that meet your specific <a href=\"https://www.dummies.com/business/operations-management/devops-for-dummies-cheat-sheet/\">DevOps</a> needs. Generally, look for\r\n<ul>\r\n \t<li>Compute capabilities</li>\r\n \t<li>Storage solutions</li>\r\n \t<li>Deployment features</li>\r\n \t<li>Logging and monitoring</li>\r\n \t<li>Friendly user interfaces</li>\r\n</ul>\r\nYou should also confirm the capability to implement a hybrid cloud solution in case you need to at some point, as well as to make HTTP calls to other APIs and services.\r\n\r\nThe three major cloud providers are Google Cloud Platform (GCP), Microsoft Azure, and Amazon web Services (AWS). You can also find smaller cloud providers and certainly a number of private cloud providers, but the bulk of what you need to know comes from comparing the public cloud providers.\r\n<h2 id=\"tab1\" >Amazon Web Services (AWS)</h2>\r\nAs do the other major public cloud providers, <a href=\"https://www.dummies.com/programming/cloud-computing/amazon-web-services/quick-overview-amazon-web-services/\">AWS</a> provides on-demand computing through a pay-as-you-go subscription. Users of AWS can subscribe to any number of services and computing resources. Amazon is the current market leader among cloud providers, holding the majority of cloud subscribers.\r\n\r\nIt offers a robust set of features and services in regions throughout the world. Two of the most well-known services are Amazon Elastic Compute Cloud (EC2) and Amazon Simple Storage Service (Amazon S3). As with other cloud providers, services are accessed and infrastructure is provisioned through APIs.\r\n<h2 id=\"tab2\" >Microsoft Azure</h2>\r\nBefore Microsoft launched this cloud provider as <a href=\"https://www.dummies.com/software/microsoft-office/can-microsoft-azure/\">Microsoft Azure</a>, it was called Windows Azure. Microsoft designed it to do just what the name implies — serve as a cloud provider for traditionally Windows IT organizations. But as the market became more competitive and Microsoft started to better understand the engineering landscape, Azure adapted, grew, and evolved.\r\n\r\nAlthough still arguably less robust than AWS, Azure is a well-rounded cloud provider focused on user experience. Through various product launches and acquisitions — notably GitHub — Microsoft has invested heavily in Linux infrastructure, which has enabled it to provide more robust services to a wider audience.\r\n<h2 id=\"tab3\" >Google Cloud Platform (GCP)</h2>\r\nThe <a href=\"https://www.dummies.com/web-design-development/other-web-software/work-google-cloud-platform-projects/\">Google Cloud Platform</a> (GCP) has the least market share of the three major public cloud providers but offers a substantial set of cloud services throughout nearly two dozen geographic regions.\r\n\r\nPerhaps the most appealing aspect of GCP is that it offers users the same infrastructure Google uses internally. This infrastructure includes extremely powerful computing, storage, analytics, and machine learning services. Depending on your specific product, GCP may have specialized tools that are lacking (or less mature) in AWS and Azure.\r\n<h2 id=\"tab4\" >Finding DevOps tools and services in the cloud</h2>\r\nLiterally hundreds of tools and services are at your disposal through the major cloud providers. Those tools and services are generally separated into the following categories:\r\n<ul>\r\n \t<li>Compute</li>\r\n \t<li>Storage</li>\r\n \t<li>Networking</li>\r\n \t<li>Resource management</li>\r\n \t<li>Cloud Artificial Intelligence (AI)</li>\r\n \t<li>Identity</li>\r\n \t<li>Security</li>\r\n \t<li>Serverless</li>\r\n \t<li>IoT</li>\r\n</ul>\r\nFollowing is a list of the most commonly used services across all three of the major cloud providers. These services include app deployment, virtual machine (VM) management, container orchestration, serverless functions, storage, and databases.\r\n\r\nAdditional services are included, such as identity management, block storage, private cloud, secrets storage, and more. It’s far from an exhaustive list but can serve as a solid foundation for you as you begin to research your options and get a feel for what differentiates the cloud providers.\r\n<ul>\r\n \t<li><strong>App deployment:</strong> Platform as a Service (PaaS) solution for deploying applications in a variety of languages including Java, .NET, Python, Node.js, C#, Ruby, and Go\r\n<ul>\r\n \t<li><strong>Azure:</strong> Azure Cloud Services</li>\r\n \t<li><strong>AWS:</strong> AWS Elastic Beanstalk</li>\r\n \t<li><strong>GCP:</strong> Google App Engine</li>\r\n</ul>\r\n</li>\r\n</ul>\r\n<ul>\r\n \t<li><strong>Virtual machine (VM) management:</strong> Infrastructure as a Service (IaaS) option for running virtual machines (VMs) with Linux or Windows\r\n<ul>\r\n \t<li><strong>Azure:</strong> Azure Virtual Machines</li>\r\n \t<li><strong>AWS:</strong> Amazon EC2</li>\r\n \t<li><strong>GCP:</strong> Google Compute Engine</li>\r\n</ul>\r\n</li>\r\n</ul>\r\n<ul>\r\n \t<li><strong>Managed Kubernetes:</strong> Enables better container management via the popular orchestrator Kubernetes\r\n<ul>\r\n \t<li><strong>Azure:</strong> Azure Kubernetes Service (AKS)</li>\r\n \t<li><strong>AWS:</strong> Amazon Elastic Container Service (ECS) for Kubernetes</li>\r\n \t<li><strong>GCP:</strong> Google Kubernetes Engine</li>\r\n</ul>\r\n</li>\r\n</ul>\r\n<ul>\r\n \t<li><strong>Serverless:</strong> Enables users to create logical workflows of serverless functions\r\n<ul>\r\n \t<li><strong>Azure:</strong> Azure Functions</li>\r\n \t<li><strong>AWS:</strong> AWS Lambda</li>\r\n \t<li><strong>GCP:</strong> Google Cloud Functions</li>\r\n</ul>\r\n</li>\r\n</ul>\r\n<ul>\r\n \t<li><strong>Cloud storage:</strong> Unstructured object storage with caching\r\n<ul>\r\n \t<li><strong>Azure:</strong> Azure Blob Storage</li>\r\n \t<li><strong>AWS:</strong> Amazon S3</li>\r\n \t<li><strong>GCP:</strong> Google Cloud Storage</li>\r\n</ul>\r\n</li>\r\n</ul>\r\n<ul>\r\n \t<li><strong>Databases:</strong> SQL and NoSQL databases, on demand\r\n<ul>\r\n \t<li><strong>Azure:</strong> Azure Cosmos DB</li>\r\n \t<li><strong>AWS:</strong> Amazon Relational Database Service (RDS) and Amazon DynamoDB (NoSQL)</li>\r\n \t<li><strong>GCP:</strong> Google Cloud SQL and Google Cloud BigTable (NoSQL)</li>\r\n</ul>\r\n</li>\r\n</ul>\r\nAs you explore the three major cloud providers, you notice a long list of services. You may feel overwhelmed by the hundreds of options at your disposal. If, by chance, you can’t find what you need, the marketplace will likely provide something similar. The marketplace is where independent developers offer services that plug into the cloud — hosted by Azure, AWS or GCP.\r\n\r\nThe table below lists additional services provided by most, if not all, cloud providers.\r\n<table><caption>Common Cloud Services</caption>\r\n<tbody>\r\n<tr>\r\n<td width=\"319\">Service Category</td>\r\n<td width=\"319\">Functionality</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Block storage</strong></td>\r\n<td width=\"319\">Data storage used in storage-area network (SAN) environments. Block storage is similar to storing data on a hard drive.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Virtual Private Cloud (VPC)</strong></td>\r\n<td width=\"319\">Logically isolated, shared computing resources.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Firewall</strong></td>\r\n<td width=\"319\">Network security that controls traffic.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Content Delivery Network (CDN)</strong></td>\r\n<td width=\"319\">Content delivery based on the location of the user. Typically utilizes caching, load balancing and analytics.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Domain Name System (DNS)</strong></td>\r\n<td width=\"319\">Translator of domain names to IP addresses for browsers.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Single Sign-On (SSO)</strong></td>\r\n<td width=\"319\">Access control to multiple systems or applications using the same credentials. If you’ve logged into an independent application with your Google, Twitter or GitHub credentials, you’ve used SSO.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Identity and Access Management (IAM)</strong></td>\r\n<td width=\"319\">Role-based user access management. Pre-determined roles have access to a set group of features; users are assigned roles.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Telemetry, monitoring and logging</strong></td>\r\n<td width=\"319\">Tools to provide application insights on performance, server load, memory consumption and more.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Deployments</strong></td>\r\n<td width=\"319\">Configuration, infrastructure and release pipeline management tools.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Cloud shell</strong></td>\r\n<td width=\"319\">Shell access from a command-line interface (CLI) within the browser.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Secrets storage</strong></td>\r\n<td width=\"319\">Secure storage of keys, tokens, passwords, certificates and other secrets.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Message Queues</strong></td>\r\n<td width=\"319\">Dynamically scaled message brokers.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Machine Learning (ML)</strong></td>\r\n<td width=\"319\">Deep learning frameworks and tools for data scientists.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>IoT</strong></td>\r\n<td width=\"319\">Device connection and management.</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<h1></h1>","description":"The success of your DevOps initiative relies heavily on following the process, but it’s also important to use the right tools. Selecting a cloud service provider isn’t an easy choice, especially when DevOps is your driving motivation. GCP (Google Cloud Platform), AWS (Amazon Web Services), and Azure have more in common than they do apart.\r\n\r\nOften, your decision depends more on your DevOps team’s comfort level with a <a href=\"https://www.dummies.com/programming/cloud-computing/how-to-work-with-a-service-provider-in-cloud-computing/\">particular cloud provider</a> or your current stack more than the cloud provider itself. After you’ve decided to move to the cloud, the next decision is to decide on a cloud provider that fits your DevOps needs. Here are some things to consider when <a href=\"https://www.dummies.com/programming/cloud-computing/hybrid-cloud/questions-to-ask-a-possible-cloud-services-provider/\">evaluating cloud providers</a> with DevOps principles in mind:\r\n<ul>\r\n \t<li><strong>Solid track record.</strong> The cloud you choose should have a history of responsible financial decisions and enough capital to operate and expand large datacenters over decades.</li>\r\n \t<li><strong>Compliance and risk management. </strong><strong>Formal structure and established compliance policies are vital to ensure that your data is safe and secure. Ideally, review audits before you sign contracts.</strong></li>\r\n \t<li><strong>Positive reputation. </strong><strong>Customer trust is absolutely key. Do you trust that you can rely on this cloud provider to continue to grow and support your evolving DevOps needs?</strong></li>\r\n \t<li><strong>Service Level Agreements (SLAs).</strong> What level of service do you require? Typically cloud providers offer various levels of uptime reliability based on cost. For example, 99.9 percent uptime will be significantly cheaper than 99.999 percent uptime.</li>\r\n \t<li><strong>Metrics and monitoring.</strong> What types of application insights, monitoring, and telemetry does the vendor supply? Be sure that you can gain an appropriate level of insight into your systems in as close to real-time as possible.</li>\r\n</ul>\r\nFinally, ensure the cloud provider you choose has excellent technical capabilities that provide services that meet your specific <a href=\"https://www.dummies.com/business/operations-management/devops-for-dummies-cheat-sheet/\">DevOps</a> needs. Generally, look for\r\n<ul>\r\n \t<li>Compute capabilities</li>\r\n \t<li>Storage solutions</li>\r\n \t<li>Deployment features</li>\r\n \t<li>Logging and monitoring</li>\r\n \t<li>Friendly user interfaces</li>\r\n</ul>\r\nYou should also confirm the capability to implement a hybrid cloud solution in case you need to at some point, as well as to make HTTP calls to other APIs and services.\r\n\r\nThe three major cloud providers are Google Cloud Platform (GCP), Microsoft Azure, and Amazon web Services (AWS). You can also find smaller cloud providers and certainly a number of private cloud providers, but the bulk of what you need to know comes from comparing the public cloud providers.\r\n<h2 id=\"tab1\" >Amazon Web Services (AWS)</h2>\r\nAs do the other major public cloud providers, <a href=\"https://www.dummies.com/programming/cloud-computing/amazon-web-services/quick-overview-amazon-web-services/\">AWS</a> provides on-demand computing through a pay-as-you-go subscription. Users of AWS can subscribe to any number of services and computing resources. Amazon is the current market leader among cloud providers, holding the majority of cloud subscribers.\r\n\r\nIt offers a robust set of features and services in regions throughout the world. Two of the most well-known services are Amazon Elastic Compute Cloud (EC2) and Amazon Simple Storage Service (Amazon S3). As with other cloud providers, services are accessed and infrastructure is provisioned through APIs.\r\n<h2 id=\"tab2\" >Microsoft Azure</h2>\r\nBefore Microsoft launched this cloud provider as <a href=\"https://www.dummies.com/software/microsoft-office/can-microsoft-azure/\">Microsoft Azure</a>, it was called Windows Azure. Microsoft designed it to do just what the name implies — serve as a cloud provider for traditionally Windows IT organizations. But as the market became more competitive and Microsoft started to better understand the engineering landscape, Azure adapted, grew, and evolved.\r\n\r\nAlthough still arguably less robust than AWS, Azure is a well-rounded cloud provider focused on user experience. Through various product launches and acquisitions — notably GitHub — Microsoft has invested heavily in Linux infrastructure, which has enabled it to provide more robust services to a wider audience.\r\n<h2 id=\"tab3\" >Google Cloud Platform (GCP)</h2>\r\nThe <a href=\"https://www.dummies.com/web-design-development/other-web-software/work-google-cloud-platform-projects/\">Google Cloud Platform</a> (GCP) has the least market share of the three major public cloud providers but offers a substantial set of cloud services throughout nearly two dozen geographic regions.\r\n\r\nPerhaps the most appealing aspect of GCP is that it offers users the same infrastructure Google uses internally. This infrastructure includes extremely powerful computing, storage, analytics, and machine learning services. Depending on your specific product, GCP may have specialized tools that are lacking (or less mature) in AWS and Azure.\r\n<h2 id=\"tab4\" >Finding DevOps tools and services in the cloud</h2>\r\nLiterally hundreds of tools and services are at your disposal through the major cloud providers. Those tools and services are generally separated into the following categories:\r\n<ul>\r\n \t<li>Compute</li>\r\n \t<li>Storage</li>\r\n \t<li>Networking</li>\r\n \t<li>Resource management</li>\r\n \t<li>Cloud Artificial Intelligence (AI)</li>\r\n \t<li>Identity</li>\r\n \t<li>Security</li>\r\n \t<li>Serverless</li>\r\n \t<li>IoT</li>\r\n</ul>\r\nFollowing is a list of the most commonly used services across all three of the major cloud providers. These services include app deployment, virtual machine (VM) management, container orchestration, serverless functions, storage, and databases.\r\n\r\nAdditional services are included, such as identity management, block storage, private cloud, secrets storage, and more. It’s far from an exhaustive list but can serve as a solid foundation for you as you begin to research your options and get a feel for what differentiates the cloud providers.\r\n<ul>\r\n \t<li><strong>App deployment:</strong> Platform as a Service (PaaS) solution for deploying applications in a variety of languages including Java, .NET, Python, Node.js, C#, Ruby, and Go\r\n<ul>\r\n \t<li><strong>Azure:</strong> Azure Cloud Services</li>\r\n \t<li><strong>AWS:</strong> AWS Elastic Beanstalk</li>\r\n \t<li><strong>GCP:</strong> Google App Engine</li>\r\n</ul>\r\n</li>\r\n</ul>\r\n<ul>\r\n \t<li><strong>Virtual machine (VM) management:</strong> Infrastructure as a Service (IaaS) option for running virtual machines (VMs) with Linux or Windows\r\n<ul>\r\n \t<li><strong>Azure:</strong> Azure Virtual Machines</li>\r\n \t<li><strong>AWS:</strong> Amazon EC2</li>\r\n \t<li><strong>GCP:</strong> Google Compute Engine</li>\r\n</ul>\r\n</li>\r\n</ul>\r\n<ul>\r\n \t<li><strong>Managed Kubernetes:</strong> Enables better container management via the popular orchestrator Kubernetes\r\n<ul>\r\n \t<li><strong>Azure:</strong> Azure Kubernetes Service (AKS)</li>\r\n \t<li><strong>AWS:</strong> Amazon Elastic Container Service (ECS) for Kubernetes</li>\r\n \t<li><strong>GCP:</strong> Google Kubernetes Engine</li>\r\n</ul>\r\n</li>\r\n</ul>\r\n<ul>\r\n \t<li><strong>Serverless:</strong> Enables users to create logical workflows of serverless functions\r\n<ul>\r\n \t<li><strong>Azure:</strong> Azure Functions</li>\r\n \t<li><strong>AWS:</strong> AWS Lambda</li>\r\n \t<li><strong>GCP:</strong> Google Cloud Functions</li>\r\n</ul>\r\n</li>\r\n</ul>\r\n<ul>\r\n \t<li><strong>Cloud storage:</strong> Unstructured object storage with caching\r\n<ul>\r\n \t<li><strong>Azure:</strong> Azure Blob Storage</li>\r\n \t<li><strong>AWS:</strong> Amazon S3</li>\r\n \t<li><strong>GCP:</strong> Google Cloud Storage</li>\r\n</ul>\r\n</li>\r\n</ul>\r\n<ul>\r\n \t<li><strong>Databases:</strong> SQL and NoSQL databases, on demand\r\n<ul>\r\n \t<li><strong>Azure:</strong> Azure Cosmos DB</li>\r\n \t<li><strong>AWS:</strong> Amazon Relational Database Service (RDS) and Amazon DynamoDB (NoSQL)</li>\r\n \t<li><strong>GCP:</strong> Google Cloud SQL and Google Cloud BigTable (NoSQL)</li>\r\n</ul>\r\n</li>\r\n</ul>\r\nAs you explore the three major cloud providers, you notice a long list of services. You may feel overwhelmed by the hundreds of options at your disposal. If, by chance, you can’t find what you need, the marketplace will likely provide something similar. The marketplace is where independent developers offer services that plug into the cloud — hosted by Azure, AWS or GCP.\r\n\r\nThe table below lists additional services provided by most, if not all, cloud providers.\r\n<table><caption>Common Cloud Services</caption>\r\n<tbody>\r\n<tr>\r\n<td width=\"319\">Service Category</td>\r\n<td width=\"319\">Functionality</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Block storage</strong></td>\r\n<td width=\"319\">Data storage used in storage-area network (SAN) environments. Block storage is similar to storing data on a hard drive.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Virtual Private Cloud (VPC)</strong></td>\r\n<td width=\"319\">Logically isolated, shared computing resources.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Firewall</strong></td>\r\n<td width=\"319\">Network security that controls traffic.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Content Delivery Network (CDN)</strong></td>\r\n<td width=\"319\">Content delivery based on the location of the user. Typically utilizes caching, load balancing and analytics.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Domain Name System (DNS)</strong></td>\r\n<td width=\"319\">Translator of domain names to IP addresses for browsers.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Single Sign-On (SSO)</strong></td>\r\n<td width=\"319\">Access control to multiple systems or applications using the same credentials. If you’ve logged into an independent application with your Google, Twitter or GitHub credentials, you’ve used SSO.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Identity and Access Management (IAM)</strong></td>\r\n<td width=\"319\">Role-based user access management. Pre-determined roles have access to a set group of features; users are assigned roles.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Telemetry, monitoring and logging</strong></td>\r\n<td width=\"319\">Tools to provide application insights on performance, server load, memory consumption and more.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Deployments</strong></td>\r\n<td width=\"319\">Configuration, infrastructure and release pipeline management tools.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Cloud shell</strong></td>\r\n<td width=\"319\">Shell access from a command-line interface (CLI) within the browser.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Secrets storage</strong></td>\r\n<td width=\"319\">Secure storage of keys, tokens, passwords, certificates and other secrets.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Message Queues</strong></td>\r\n<td width=\"319\">Dynamically scaled message brokers.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>Machine Learning (ML)</strong></td>\r\n<td width=\"319\">Deep learning frameworks and tools for data scientists.</td>\r\n</tr>\r\n<tr>\r\n<td width=\"319\"><strong>IoT</strong></td>\r\n<td width=\"319\">Device connection and management.</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<h1></h1>","blurb":"","authors":[{"authorId":30388,"name":"Emily Freeman","slug":"emily-freeman","description":" <p><b>Emily Freeman</b> is a technologist and storyteller who helps engineering teams improve their velocity. She believes the biggest challenges facing engineers aren&#39;t technical, but human. She&#39;s worked with both cutting&#45;edge startups and some of the largest technology providers in the world. Emily is currently a Senior Cloud Advocate at Microsoft and a frequent keynote speaker at technology events. ","hasArticle":false,"_links":{"self":"https://dummies-api.dummies.com/v2/authors/30388"}}],"primaryCategoryTaxonomy":{"categoryId":33610,"title":"General Programming & Web Design","slug":"general-programming-web-design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"}},"secondaryCategoryTaxonomy":{"categoryId":0,"title":null,"slug":null,"_links":null},"tertiaryCategoryTaxonomy":{"categoryId":0,"title":null,"slug":null,"_links":null},"trendingArticles":[{"articleId":192609,"title":"How to Pray the Rosary: A Comprehensive Guide","slug":"how-to-pray-the-rosary","categoryList":["body-mind-spirit","religion-spirituality","christianity","catholicism"],"_links":{"self":"/articles/192609"}},{"articleId":284787,"title":"What Your Society Says About You","slug":"what-your-society-says-about-you","categoryList":["academics-the-arts","humanities"],"_links":{"self":"/articles/284787"}},{"articleId":230957,"title":"Nikon D3400 For Dummies Cheat Sheet","slug":"nikon-d3400-dummies-cheat-sheet","categoryList":["home-auto-hobbies","photography"],"_links":{"self":"/articles/230957"}},{"articleId":208741,"title":"Kabbalah For Dummies Cheat Sheet","slug":"kabbalah-for-dummies-cheat-sheet","categoryList":["body-mind-spirit","religion-spirituality","kabbalah"],"_links":{"self":"/articles/208741"}},{"articleId":299133,"title":"ChatGPT For Dummies Cheat Sheet","slug":"chatgpt-for-dummies-cheat-sheet","categoryList":["technology","information-technology","ai","general-ai"],"_links":{"self":"/articles/299133"}}],"inThisArticle":[{"label":"Amazon Web Services (AWS)","target":"#tab1"},{"label":"Microsoft Azure","target":"#tab2"},{"label":"Google Cloud Platform (GCP)","target":"#tab3"},{"label":"Finding DevOps tools and services in the cloud","target":"#tab4"}],"relatedArticles":{"fromBook":[{"articleId":265680,"title":"Using DevOps To Improve Engineering","slug":"tips-for-improving-engineering-performance-with-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265680"}},{"articleId":265675,"title":"How To Automate DevOps in the Cloud","slug":"make-more-of-your-cloud-tools-automating-devops-in-the-cloud","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265675"}},{"articleId":265664,"title":"How to Form DevOps Teams in Your Organization","slug":"how-to-form-devops-teams-in-your-organization","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265664"}},{"articleId":265656,"title":"Moving to DevOps Processes: From a Line to a Circuit","slug":"moving-to-devops-processes-from-a-line-to-a-circuit","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265656"}},{"articleId":265651,"title":"Interview Techniques for Building a DevOps Team: Getting the Right Technical Skills","slug":"interview-techniques-for-building-a-devops-team-getting-the-right-technical-skills","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265651"}}],"fromCategory":[{"articleId":301736,"title":"Building DIY Websites For Dummies Cheat Sheet","slug":"building-diy-websites-for-dummies-cheat-sheet","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/301736"}},{"articleId":299575,"title":"HTML, CSS, & JavaScript All-in-One For Dummies Cheat Sheet","slug":"html-css-javascript-all-in-one-for-dummies-cheat-sheet","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/299575"}},{"articleId":265680,"title":"Using DevOps To Improve Engineering","slug":"tips-for-improving-engineering-performance-with-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265680"}},{"articleId":265675,"title":"How To Automate DevOps in the Cloud","slug":"make-more-of-your-cloud-tools-automating-devops-in-the-cloud","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265675"}},{"articleId":265664,"title":"How to Form DevOps Teams in Your Organization","slug":"how-to-form-devops-teams-in-your-organization","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265664"}}]},"hasRelatedBookFromSearch":false,"relatedBook":{"bookId":281681,"slug":"devops-for-dummies","isbn":"9781394159574","categoryList":["technology","programming-web-design","general-programming-web-design"],"amazon":{"default":"https://www.amazon.com/gp/product/1394159579/ref=as_li_tl?ie=UTF8&tag=wiley01-20","ca":"https://www.amazon.ca/gp/product/1394159579/ref=as_li_tl?ie=UTF8&tag=wiley01-20","indigo_ca":"http://www.tkqlhce.com/click-9208661-13710633?url=https://www.chapters.indigo.ca/en-ca/books/product/1394159579-item.html&cjsku=978111945484","gb":"https://www.amazon.co.uk/gp/product/1394159579/ref=as_li_tl?ie=UTF8&tag=wiley01-20","de":"https://www.amazon.de/gp/product/1394159579/ref=as_li_tl?ie=UTF8&tag=wiley01-20"},"image":{"src":"https://www.dummies.com/wp-content/uploads/devops-for-dummies-cover-9781119552222-203x255.jpg","width":203,"height":255},"title":"DevOps For Dummies","testBankPinActivationLink":"","bookOutOfPrint":true,"authorsInfo":"<p><p><b><b data-author-id=\"30388\">Emily Freeman</b></b> is a technologist and storyteller who helps engineering teams improve their velocity. She believes the biggest challenges facing engineers aren&#39;t technical, but human. She&#39;s worked with both cutting&#45;edge startups and some of the largest technology providers in the world. Emily is currently a Senior Cloud Advocate at Microsoft and a frequent keynote speaker at technology events.</p>","authors":[{"authorId":30388,"name":"Emily Freeman","slug":"emily-freeman","description":" <p><b>Emily Freeman</b> is a technologist and storyteller who helps engineering teams improve their velocity. She believes the biggest challenges facing engineers aren&#39;t technical, but human. She&#39;s worked with both cutting&#45;edge startups and some of the largest technology providers in the world. Emily is currently a Senior Cloud Advocate at Microsoft and a frequent keynote speaker at technology events. ","hasArticle":false,"_links":{"self":"https://dummies-api.dummies.com/v2/authors/30388"}}],"_links":{"self":"https://dummies-api.dummies.com/v2/books/"}},"collections":[],"articleAds":{"footerAd":"<div class=\"du-ad-region row\" id=\"article_page_adhesion_ad\"><div class=\"du-ad-unit col-md-12\" data-slot-id=\"article_page_adhesion_ad\" data-refreshed=\"false\" \r\n data-target = \"[{&quot;key&quot;:&quot;cat&quot;,&quot;values&quot;:[&quot;technology&quot;,&quot;programming-web-design&quot;,&quot;general-programming-web-design&quot;]},{&quot;key&quot;:&quot;isbn&quot;,&quot;values&quot;:[&quot;9781394159574&quot;]}]\" id=\"du-slot-6658e91630847\"></div></div>","rightAd":"<div class=\"du-ad-region row\" id=\"article_page_right_ad\"><div class=\"du-ad-unit col-md-12\" data-slot-id=\"article_page_right_ad\" data-refreshed=\"false\" \r\n data-target = \"[{&quot;key&quot;:&quot;cat&quot;,&quot;values&quot;:[&quot;technology&quot;,&quot;programming-web-design&quot;,&quot;general-programming-web-design&quot;]},{&quot;key&quot;:&quot;isbn&quot;,&quot;values&quot;:[&quot;9781394159574&quot;]}]\" id=\"du-slot-6658e91631107\"></div></div>"},"articleType":{"articleType":"Articles","articleList":null,"content":null,"videoInfo":{"videoId":null,"name":null,"accountId":null,"playerId":null,"thumbnailUrl":null,"description":null,"uploadDate":null}},"sponsorship":{"sponsorshipPage":false,"backgroundImage":{"src":null,"width":0,"height":0},"brandingLine":"","brandingLink":"","brandingLogo":{"src":null,"width":0,"height":0},"sponsorAd":"","sponsorEbookTitle":"","sponsorEbookLink":"","sponsorEbookImage":{"src":null,"width":0,"height":0}},"primaryLearningPath":"Advance","lifeExpectancy":"Two years","lifeExpectancySetFrom":"2023-07-10T00:00:00+00:00","dummiesForKids":"no","sponsoredContent":"no","adInfo":"","adPairKey":[]},"status":"publish","visibility":"public","articleId":265672},{"headers":{"creationTime":"2024-03-26T15:35:09+00:00","modifiedTime":"2024-03-26T15:35:09+00:00","timestamp":"2024-03-26T18:01:09+00:00"},"data":{"breadcrumbs":[{"name":"Technology","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33512"},"slug":"technology","categoryId":33512},{"name":"Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33592"},"slug":"programming-web-design","categoryId":33592},{"name":"General Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"},"slug":"general-programming-web-design","categoryId":33610}],"title":"Building DIY Websites For Dummies Cheat Sheet","strippedTitle":"building diy websites for dummies cheat sheet","slug":"building-diy-websites-for-dummies-cheat-sheet","canonicalUrl":"","seo":{"metaDescription":"Unlock the secrets and best practices that web developers know and implement when building any quality website with this cheat sheet.","noIndex":0,"noFollow":0},"content":"If you want to build your own website from start to finish, this book serves as a great resource. It includes many secrets and best practices that web developers know and implement when building any quality website. This cheat sheet includes bits and pieces of what you'll <a href=\"/book/technology/programming-web-design/general-programming-web-design/building-diy-websites-for-dummies-301663/\" target=\"_blank\" rel=\"noopener\">find in the book</a>.","description":"If you want to build your own website from start to finish, this book serves as a great resource. It includes many secrets and best practices that web developers know and implement when building any quality website. This cheat sheet includes bits and pieces of what you'll <a href=\"/book/technology/programming-web-design/general-programming-web-design/building-diy-websites-for-dummies-301663/\" target=\"_blank\" rel=\"noopener\">find in the book</a>.","blurb":"","authors":[{"authorId":35385,"name":"Jennifer DeRosa","slug":"jennifer-derosa","description":" <p> <b>Jennifer DeRosa</b> is the founder of Toto Coaching, which walks the DIY website builder through the process of building a website from start to finish. Jennifer has been building websites since 1994. She formed her web development agency in 2001, growing it into a successful website development agency over two decades. ","hasArticle":false,"_links":{"self":"https://dummies-api.dummies.com/v2/authors/35385"}}],"primaryCategoryTaxonomy":{"categoryId":33610,"title":"General Programming & Web Design","slug":"general-programming-web-design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"}},"secondaryCategoryTaxonomy":{"categoryId":0,"title":null,"slug":null,"_links":null},"tertiaryCategoryTaxonomy":{"categoryId":0,"title":null,"slug":null,"_links":null},"trendingArticles":[{"articleId":192609,"title":"How to Pray the Rosary: A Comprehensive Guide","slug":"how-to-pray-the-rosary","categoryList":["body-mind-spirit","religion-spirituality","christianity","catholicism"],"_links":{"self":"/articles/192609"}},{"articleId":284787,"title":"What Your Society Says About You","slug":"what-your-society-says-about-you","categoryList":["academics-the-arts","humanities"],"_links":{"self":"/articles/284787"}},{"articleId":230957,"title":"Nikon D3400 For Dummies Cheat Sheet","slug":"nikon-d3400-dummies-cheat-sheet","categoryList":["home-auto-hobbies","photography"],"_links":{"self":"/articles/230957"}},{"articleId":208741,"title":"Kabbalah For Dummies Cheat Sheet","slug":"kabbalah-for-dummies-cheat-sheet","categoryList":["body-mind-spirit","religion-spirituality","kabbalah"],"_links":{"self":"/articles/208741"}},{"articleId":299133,"title":"ChatGPT For Dummies Cheat Sheet","slug":"chatgpt-for-dummies-cheat-sheet","categoryList":["technology","information-technology","ai","general-ai"],"_links":{"self":"/articles/299133"}}],"inThisArticle":[],"relatedArticles":{"fromBook":[],"fromCategory":[{"articleId":299575,"title":"HTML, CSS, & JavaScript All-in-One For Dummies Cheat Sheet","slug":"html-css-javascript-all-in-one-for-dummies-cheat-sheet","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/299575"}},{"articleId":265680,"title":"Using DevOps To Improve Engineering","slug":"tips-for-improving-engineering-performance-with-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265680"}},{"articleId":265675,"title":"How To Automate DevOps in the Cloud","slug":"make-more-of-your-cloud-tools-automating-devops-in-the-cloud","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265675"}},{"articleId":265672,"title":"How To Choose a Cloud Service Provider for DevOps","slug":"choosing-the-best-cloud-service-provider-features-and-tools-for-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265672"}},{"articleId":265664,"title":"How to Form DevOps Teams in Your Organization","slug":"how-to-form-devops-teams-in-your-organization","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265664"}}]},"hasRelatedBookFromSearch":false,"relatedBook":{"bookId":301663,"slug":"building-diy-websites-for-dummies","isbn":"9781394232987","categoryList":["technology","programming-web-design","general-programming-web-design"],"amazon":{"default":"https://www.amazon.com/gp/product/1394232985/ref=as_li_tl?ie=UTF8&tag=wiley01-20","ca":"https://www.amazon.ca/gp/product/1394232985/ref=as_li_tl?ie=UTF8&tag=wiley01-20","indigo_ca":"http://www.tkqlhce.com/click-9208661-13710633?url=https://www.chapters.indigo.ca/en-ca/books/product/1394232985-item.html&cjsku=978111945484","gb":"https://www.amazon.co.uk/gp/product/1394232985/ref=as_li_tl?ie=UTF8&tag=wiley01-20","de":"https://www.amazon.de/gp/product/1394232985/ref=as_li_tl?ie=UTF8&tag=wiley01-20"},"image":{"src":"https://www.dummies.com/wp-content/uploads/building-diy-websites-for-dummies-cover-9781394232987-203x255.jpg","width":203,"height":255},"title":"Building DIY Websites For Dummies","testBankPinActivationLink":"","bookOutOfPrint":true,"authorsInfo":"<p><p> <b><b data-author-id=\"35385\">Jennifer DeRosa</b></b> is the founder of Toto Coaching, which walks the DIY website builder through the process of building a website from start to finish. Jennifer has been building websites since 1994. She formed her web development agency in 2001, growing it into a successful website development agency over two decades.</p>","authors":[{"authorId":35385,"name":"Jennifer DeRosa","slug":"jennifer-derosa","description":" <p> <b>Jennifer DeRosa</b> is the founder of Toto Coaching, which walks the DIY website builder through the process of building a website from start to finish. Jennifer has been building websites since 1994. She formed her web development agency in 2001, growing it into a successful website development agency over two decades. ","hasArticle":false,"_links":{"self":"https://dummies-api.dummies.com/v2/authors/35385"}}],"_links":{"self":"https://dummies-api.dummies.com/v2/books/"}},"collections":[],"articleAds":{"footerAd":"<div class=\"du-ad-region row\" id=\"article_page_adhesion_ad\"><div class=\"du-ad-unit col-md-12\" data-slot-id=\"article_page_adhesion_ad\" data-refreshed=\"false\" \r\n data-target = \"[{&quot;key&quot;:&quot;cat&quot;,&quot;values&quot;:[&quot;technology&quot;,&quot;programming-web-design&quot;,&quot;general-programming-web-design&quot;]},{&quot;key&quot;:&quot;isbn&quot;,&quot;values&quot;:[&quot;9781394232987&quot;]}]\" id=\"du-slot-66030d6670d0a\"></div></div>","rightAd":"<div class=\"du-ad-region row\" id=\"article_page_right_ad\"><div class=\"du-ad-unit col-md-12\" data-slot-id=\"article_page_right_ad\" data-refreshed=\"false\" \r\n data-target = \"[{&quot;key&quot;:&quot;cat&quot;,&quot;values&quot;:[&quot;technology&quot;,&quot;programming-web-design&quot;,&quot;general-programming-web-design&quot;]},{&quot;key&quot;:&quot;isbn&quot;,&quot;values&quot;:[&quot;9781394232987&quot;]}]\" id=\"du-slot-66030d6671483\"></div></div>"},"articleType":{"articleType":"Cheat Sheet","articleList":[{"articleId":0,"title":"","slug":null,"categoryList":[],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/"}}],"content":[{"title":"Building pages that work","thumb":null,"image":null,"content":"<p>There is a lot to consider as you build your site. However, as you organize your pages, keep in mind these five main ideas:</p>\n<ul>\n<li>Build trust with your visitors.</li>\n<li>Resonate with your visitors.</li>\n<li>Let your visitors know your offering.</li>\n<li>Give your visitors the same information in multiple places — in other words, reiterate topics on each page. No one is going to read your website like a book from start to finish, so you need to “catch” them in a few places.</li>\n<li>Build a website where visitors don’t need to think that much. If you provide the information that visitors would naturally want to know when they visit your service pages, you have done a good job. This is good UX.</li>\n</ul>\n"},{"title":"Designing your homepage","thumb":null,"image":null,"content":"<p>Your homepage could be the most important page on your website, so you want to make sure it’s doing its job! The homepage has a lot of jobs, but here are the four most important:</p>\n<ul>\n<li><strong>Lets visitors know they’re in the right place by showing the services or products you offer and, if applicable, your location.</strong> If you provide local services, let visitors know right away where you are located. For example, if you are a landscaper or doctor in Idaho, people in California or Arizona are probably not going to use your services. Many times, a business will have a similar name or the same name but they might be in different states&#8230; so you want to let visitors know right away that they are in the correct place!</li>\n<li><strong>Makes a great first impression and encourage the visitors to stick around and engage with you. </strong>You want the homepage to look gorgeous and bring the visitors in. You have three-five seconds to make this impression, so right up front you want to connect with the visitors.</li>\n<li><strong>Shows that your company is up to date with a modern website.</strong> If visitors see an outdated, old, shall I say “vintage” website, they will translate that feeling of being “out of touch” or “behind the times” to your company. You want to show through your modern website homepage that you are keeping up with modern technologies, services, and techniques.</li>\n<li><strong>Strategically drives people to content.</strong> You want visitors to take action toward your primary goals on your website.</li>\n</ul>\n<p>On modern websites, information is typically organized in rows down the page. The first row on your homepage is crucial, as it&#8217;s the initial area that visitors see. Therefore, you want to dedicate significant effort to perfecting this row.</p>\n"},{"title":"Finding good stock photography for your site","thumb":null,"image":null,"content":"<p>There is good stock photography and horrible stock photography. When you are on a website searching the photography, there are a few factors you want to keep in mind.</p>\n<p>High-quality, relevant images can draw in visitors, create an emotional connection, and convey your brand&#8217;s message effectively. On the other hand, poor quality or overused images can turn visitors away. Here are some tips for choosing good stock photography for your website:</p>\n<ul>\n<li><strong>Consider your audience:</strong> When selecting stock photography for your website, it is important to consider your target audience. Ask yourself what type of images will resonate most with your audience. Choose images that help communicate your message in a meaningful way.</li>\n<li><strong>Consider your brand&#8217;s tone and aesthetic:</strong> Images should align with your brand&#8217;s tone and aesthetic.</li>\n<li><strong>Choose the color palette:</strong> Choose images with colors that complement or match your brand&#8217;s color palette. This helps create a consistent and harmonious visual experience.</li>\n<li><strong>Make sure photos are authentic:</strong> Choose images that feel genuine and natural, as opposed to overly staged or unrealistic. Authentic images are more relatable and can help establish trust with your audience.</li>\n<li><strong>Pick</strong> <strong>creative commons/royalty free images:</strong> When searching for free stock photos, look for Royalty Free or Creative Commons labeled images on websites. Some software may offer different licensed images, which can become costly, so be cautious. Always read the terms of use. If you happen to use an image that you do not have the rights to, you can get fined significantly. Don’t get into this situation. Purchase them, or if they are free, make sure you are allowed to use them.</li>\n</ul>\n"},{"title":"Choosing file formats for images","thumb":null,"image":null,"content":"<p>Here is a quick summary of the image file formats:</p>\n<ul>\n<li>JPEG is a good choice for photographs and images with lots of colors.</li>\n<li>PNG is a good choice for graphics and images with transparent backgrounds.</li>\n<li>GIF is a good choice for simple graphics and animations.</li>\n<li>WebP is a good choice for graphics, photographs, and animation with reduced image file sizes.</li>\n<li>SVG is a good choice for graphics and images that need to be resized without losing quality, but most likely you will not use these.</li>\n<li>At this time, it&#8217;s best to convert any HEIC images to JPG images for best results.</li>\n</ul>\n"},{"title":"Following basic design rules","thumb":null,"image":null,"content":"<p>If you remember only one thing, remember to always strive for simplicity and consistency in your design:</p>\n<ul>\n<li>Use the same fonts in the same places.</li>\n<li>Use less color to begin and add tiny elements as you go along.</li>\n<li>Use the same types of borders across your site.</li>\n<li>Make sure all your buttons are consistent.</li>\n<li>Employ lots of whitespace.</li>\n<li>Choose crisp, clear images that support your content and do not look staged.</li>\n</ul>\n"},{"title":"Researching keywords","thumb":null,"image":null,"content":"<p>Keyword research helps you determine which keywords people are typing into search engines. You can literally “research” the keywords that people are using in searches and determine if those searches have grown or shrunk recently. These are powerful insights that will help you choose the perfect keywords and phrases to use on your website.</p>\n<p>The goal is to build a list of keywords and keyword phrases that you want to appear in the search results. The best keywords stand on actual data — they are keywords and phrases that people are actually typing in and searching, thousands of times a month.</p>\n<p>Follow these steps to begin building your seed keywords:</p>\n<ol>\n<li>\n<p class=\"first-para\"><strong>Open a web browser, head over to Google, and type some search terms that you think your customers will use or have used to find your website.</strong></p>\n<p class=\"child-para\">When you see the SERP, look closely at the websites that Google returns for your search and ask: Does this look like a list that your company should appear in?</p>\n</li>\n<li>\n<p class=\"first-para\"><strong>If list doesn&#8217;t match your business, refine your search terms and use long-tail keyword phrases. Find some specific phrases that, when searched, return a list of your competition.</strong></p>\n<p class=\"child-para\">These are the results you want to appear in, and hopefully appear on top of! These phrases are a great place to start your keyword research. Do this search for each term you can think of.</p>\n</li>\n<li>\n<p class=\"first-para\"><strong>Add these phrases to your initial keyword list.</strong></p>\n</li>\n<li>\n<p class=\"first-para\"><strong>For each keyword phrase you choose, scroll down the page.</strong> You will see “Related Searches” (at the time of the publishing of this book Google is calling it Related Searches. They used to call it “People Also Search For” and “People Also Ask”).</p>\n<p class=\"child-para\">This section can be a valuable strategy when it comes to generating search terms and enhancing your content strategy because it shows related search queries that you can use to expand your keyword list, inspire content ideas, reveal user intent, aid you in competitive analysis, and uncover long-tail keyword opportunities. Look at this list and add these words to your seed keyword list.</p>\n</li>\n<li>\n<p class=\"first-para\"><strong>You should now have a pretty long list of keywords. Take that list and put them into a tool of your choice to get some real data.</strong></p>\n<p class=\"child-para\">There are a ton of tools you can use, and I mention just a few here.</p>\n</li>\n</ol>\n"},{"title":"Obtaining backlinks","thumb":null,"image":null,"content":"<p>A <em>backlink</em> is simply a link to your website from another website. You might also hear backlinks also called “incoming links” or “inbound links” and the sites that link to your website are called “referring domains.”</p>\n<p>Other websites will link to your website if they view your website as important. You can think of a backlink to your website as a vote of confidence! Search engines use backlinks to determine the value of your website.</p>\n<p>There are some quick and easy ways you can get some backlinks — the rest is hard work. The process of getting links is called <em>link building.</em> You get backlinks by either outright asking for them or because your content is good enough that another site chooses to link to it.</p>\n<p>Here are some ways you can obtain backlinks to your website:</p>\n<ul>\n<li>Include links to your website from your social media channels. Set up social media profiles on all the platforms and then link back to your website.</li>\n<li>Many associations have a public online directory where they list a link to your website. Chambers, networking groups, clubs, and associations are good places to look.</li>\n<li>Ask blog owners of reputable, informative blogs in your industry if you can write a guest post. Then, write an amazing article with an author bio and ask for a follow link back to your website.</li>\n<li>Ask your local paper or better yet, a regional or national paper to do a story on your company or organization. This is a great way to obtain a backlink that is high authority.</li>\n<li>Write amazing, complete how-to guides or other content, and then ask other websites in your industry to link to your valuable content. This is sometimes called <em>reverse outreach</em>. This needs to be a comprehensive guide with great, valuable information. It is even better if there are not a lot of articles already online about this topic.</li>\n<li>Publish free guides or a free tool is great, as other websites might want to link to your free guide or tool to help their visitors.</li>\n<li>Check if there are unlinked mentions of your brand on the Internet, meaning your brand was mentioned but they did not link to your website. When you find these, ask the websites to include a link.</li>\n<li>Check with your suppliers or those you supply to. Will they link to your website? Do a bit of research on their websites and see if there is a natural spot where they could link or ask your rep.</li>\n<li>Many industries grant awards. Find those websites behind the awards and see what the application process is like. Determine if you can receive a follow backlink to your site.</li>\n<li>Some people use the broken link method and this can be effective but takes some time. If you install the Chrome extension called Check My Links and then visit websites in your industry, you can see using this tool to identify links that the website has provided that are broken. Then, write a great alternative to the broken link. Reach out to the webmaster that takes care of the site with the broken links. Tell them how much you love their content and that you found a broken link, but that you have created an alternative and they should link to your site.</li>\n<li>Local directories and citations are important. If you provide services or products to a local area or if you are a brick and mortar store, you are known as a local business. You should set up directories and citations. There are two ways to do this: you can create your own directory listings or you can pay a service to set these up for you. Either way, this is very important.</li>\n<li>HARO (Help a Reporter Out) is a website that matches experts and writers with journalists. Many journalists are looking for experts in fields to help them with their articles. You can create an account on the HARO system and you will be sent requests for articles.</li>\n<li>Find influencers who like what you have to offer and see if they will link to your website. This is becoming a completely new and vibrant industry. There are influencer brokers you can contact as well.</li>\n<li>Interview people, post the interview on your website, and then place a link to their website. They will most likely link back to this article.</li>\n</ul>\n<p>Want to learn more? Get the <em><a href=\"https://www.amazon.com/gp/product/1394232985/ref=as_li_tl?ie=UTF8&amp;tag=wiley01-20\" target=\"_blank\" rel=\"noopener\">Building DIY Websites For Dummies</a></em> book.</p>\n"}],"videoInfo":{"videoId":null,"name":null,"accountId":null,"playerId":null,"thumbnailUrl":null,"description":null,"uploadDate":null}},"sponsorship":{"sponsorshipPage":false,"backgroundImage":{"src":null,"width":0,"height":0},"brandingLine":"","brandingLink":"","brandingLogo":{"src":null,"width":0,"height":0},"sponsorAd":"","sponsorEbookTitle":"","sponsorEbookLink":"","sponsorEbookImage":{"src":null,"width":0,"height":0}},"primaryLearningPath":"Advance","lifeExpectancy":"One year","lifeExpectancySetFrom":"2024-03-26T00:00:00+00:00","dummiesForKids":"no","sponsoredContent":"no","adInfo":"","adPairKey":[]},"status":"publish","visibility":"public","articleId":301736},{"headers":{"creationTime":"2018-03-13T01:35:22+00:00","modifiedTime":"2024-01-05T20:44:23+00:00","timestamp":"2024-01-05T21:01:13+00:00"},"data":{"breadcrumbs":[{"name":"Technology","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33512"},"slug":"technology","categoryId":33512},{"name":"Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33592"},"slug":"programming-web-design","categoryId":33592},{"name":"General Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"},"slug":"general-programming-web-design","categoryId":33610}],"title":"Web Coding and Development All-in-One For Dummies Cheat Sheet","strippedTitle":"web coding and development all-in-one for dummies cheat sheet","slug":"web-coding-development-cheat-sheet","canonicalUrl":"","seo":{"metaDescription":"One of the handiest features of web coding and development is that once you’ve learned a few basics, you can apply those basics to any project. A good example i","noIndex":0,"noFollow":0},"content":"One of the handiest features of web coding and development is that once you’ve learned a few basics, you can apply those basics to any project. A good example is the underlying structure of a page, which uses the same set of standard HTML tags, no matter how large or small the project. It’s also worth your time to learn how selectors work, because you use them to save you time both when you’re writing CSS rules and when you’re writing JavaScript code. Errors, too, are a fact of web coding life, so understanding the most common errors can help you debug your code faster and get back to more creative pursuits.","description":"One of the handiest features of web coding and development is that once you’ve learned a few basics, you can apply those basics to any project. A good example is the underlying structure of a page, which uses the same set of standard HTML tags, no matter how large or small the project. It’s also worth your time to learn how selectors work, because you use them to save you time both when you’re writing CSS rules and when you’re writing JavaScript code. Errors, too, are a fact of web coding life, so understanding the most common errors can help you debug your code faster and get back to more creative pursuits.","blurb":"","authors":[{"authorId":11290,"name":"Paul McFedries","slug":"paul-mcfedries","description":" <p><b>Paul McFedries</b> is a technical writer who has been authoring computer books since 1991 and has over 100 books to his credit. These books include <i>Alexa For Dummies, Amazon Fire TV For Dummies</i>, and <i>Cord Cutting For Dummies</i>. You can visit Paul on the web at www.mcfedries.com.</p> ","hasArticle":false,"_links":{"self":"https://dummies-api.dummies.com/v2/authors/11290"}}],"primaryCategoryTaxonomy":{"categoryId":33610,"title":"General Programming & Web Design","slug":"general-programming-web-design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"}},"secondaryCategoryTaxonomy":{"categoryId":0,"title":null,"slug":null,"_links":null},"tertiaryCategoryTaxonomy":{"categoryId":0,"title":null,"slug":null,"_links":null},"trendingArticles":[{"articleId":192609,"title":"How to Pray the Rosary: A Comprehensive Guide","slug":"how-to-pray-the-rosary","categoryList":["body-mind-spirit","religion-spirituality","christianity","catholicism"],"_links":{"self":"/articles/192609"}},{"articleId":284787,"title":"What Your Society Says About You","slug":"what-your-society-says-about-you","categoryList":["academics-the-arts","humanities"],"_links":{"self":"/articles/284787"}},{"articleId":230957,"title":"Nikon D3400 For Dummies Cheat Sheet","slug":"nikon-d3400-dummies-cheat-sheet","categoryList":["home-auto-hobbies","photography"],"_links":{"self":"/articles/230957"}},{"articleId":208741,"title":"Kabbalah For Dummies Cheat Sheet","slug":"kabbalah-for-dummies-cheat-sheet","categoryList":["body-mind-spirit","religion-spirituality","kabbalah"],"_links":{"self":"/articles/208741"}},{"articleId":299133,"title":"ChatGPT For Dummies Cheat Sheet","slug":"chatgpt-for-dummies-cheat-sheet","categoryList":["technology","information-technology","ai","general-ai"],"_links":{"self":"/articles/299133"}}],"inThisArticle":[],"relatedArticles":{"fromBook":[{"articleId":254314,"title":"Working with Images in a Mobile App","slug":"working-images-mobile-app","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/254314"}},{"articleId":254311,"title":"Going Mobile Faster with jQuery Mobile","slug":"going-mobile-faster-jquery-mobile","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/254311"}},{"articleId":254308,"title":"What Is Mobile-First Web Development?","slug":"mobile-first-web-development","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/254308"}},{"articleId":254305,"title":"Setting Up the Back End to Handle Users","slug":"setting-back-end-handle-users","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/254305"}},{"articleId":254302,"title":"Creating the App Startup Files for Your Web App","slug":"creating-app-startup-files-web-app","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/254302"}}],"fromCategory":[{"articleId":299575,"title":"HTML, CSS, & JavaScript All-in-One For Dummies Cheat Sheet","slug":"html-css-javascript-all-in-one-for-dummies-cheat-sheet","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/299575"}},{"articleId":265680,"title":"Using DevOps To Improve Engineering","slug":"tips-for-improving-engineering-performance-with-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265680"}},{"articleId":265675,"title":"How To Automate DevOps in the Cloud","slug":"make-more-of-your-cloud-tools-automating-devops-in-the-cloud","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265675"}},{"articleId":265672,"title":"How To Choose a Cloud Service Provider for DevOps","slug":"choosing-the-best-cloud-service-provider-features-and-tools-for-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265672"}},{"articleId":265664,"title":"How to Form DevOps Teams in Your Organization","slug":"how-to-form-devops-teams-in-your-organization","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265664"}}]},"hasRelatedBookFromSearch":false,"relatedBook":{"bookId":281889,"slug":"web-coding-development-all-in-one-for-dummies","isbn":"9781394197026","categoryList":["technology","programming-web-design","general-programming-web-design"],"amazon":{"default":"https://www.amazon.com/gp/product/1394197020/ref=as_li_tl?ie=UTF8&tag=wiley01-20","ca":"https://www.amazon.ca/gp/product/1394197020/ref=as_li_tl?ie=UTF8&tag=wiley01-20","indigo_ca":"http://www.tkqlhce.com/click-9208661-13710633?url=https://www.chapters.indigo.ca/en-ca/books/product/1394197020-item.html&cjsku=978111945484","gb":"https://www.amazon.co.uk/gp/product/1394197020/ref=as_li_tl?ie=UTF8&tag=wiley01-20","de":"https://www.amazon.de/gp/product/1394197020/ref=as_li_tl?ie=UTF8&tag=wiley01-20"},"image":{"src":"https://www.dummies.com/wp-content/uploads/web-coding-and-development-all-in-one-for-dummies-cover-9781394197026-203x255.jpg","width":203,"height":255},"title":"Web Coding & Development All-in-One For Dummies","testBankPinActivationLink":"","bookOutOfPrint":true,"authorsInfo":"<p><b><b data-author-id=\"11290\">Paul McFedries</b></b> is a technical writer who has been authoring computer books since 1991 and has over 100 books to his credit. These books include <i>Alexa For Dummies, Amazon Fire TV For Dummies</i>, and <i>Cord Cutting For Dummies</i>. You can visit Paul on the web at www.mcfedries.com.</p>","authors":[{"authorId":11290,"name":"Paul McFedries","slug":"paul-mcfedries","description":" <p><b>Paul McFedries</b> is a technical writer who has been authoring computer books since 1991 and has over 100 books to his credit. These books include <i>Alexa For Dummies, Amazon Fire TV For Dummies</i>, and <i>Cord Cutting For Dummies</i>. You can visit Paul on the web at www.mcfedries.com.</p> ","hasArticle":false,"_links":{"self":"https://dummies-api.dummies.com/v2/authors/11290"}}],"_links":{"self":"https://dummies-api.dummies.com/v2/books/"}},"collections":[],"articleAds":{"footerAd":"<div class=\"du-ad-region row\" id=\"article_page_adhesion_ad\"><div class=\"du-ad-unit col-md-12\" data-slot-id=\"article_page_adhesion_ad\" data-refreshed=\"false\" \r\n data-target = \"[{&quot;key&quot;:&quot;cat&quot;,&quot;values&quot;:[&quot;technology&quot;,&quot;programming-web-design&quot;,&quot;general-programming-web-design&quot;]},{&quot;key&quot;:&quot;isbn&quot;,&quot;values&quot;:[&quot;9781394197026&quot;]}]\" id=\"du-slot-65986e19e535e\"></div></div>","rightAd":"<div class=\"du-ad-region row\" id=\"article_page_right_ad\"><div class=\"du-ad-unit col-md-12\" data-slot-id=\"article_page_right_ad\" data-refreshed=\"false\" \r\n data-target = \"[{&quot;key&quot;:&quot;cat&quot;,&quot;values&quot;:[&quot;technology&quot;,&quot;programming-web-design&quot;,&quot;general-programming-web-design&quot;]},{&quot;key&quot;:&quot;isbn&quot;,&quot;values&quot;:[&quot;9781394197026&quot;]}]\" id=\"du-slot-65986e19e5c25\"></div></div>"},"articleType":{"articleType":"Cheat Sheet","articleList":[{"articleId":250699,"title":"Your Web Development Template","slug":"web-development-template","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/250699"}},{"articleId":250696,"title":"4 Selectors in CSS and jQuery","slug":"4-selectors-css-jquery","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/250696"}},{"articleId":250693,"title":"Top 10 JavaScript Errors","slug":"top-10-javascript-errors","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/250693"}}],"content":[{"title":"Your Web Development Template","thumb":null,"image":null,"content":"<p>All web pages start out with the same basic HTML structure, so you can get any new web development project off on the right foot by first laying down that foundation. You can do this most easily by creating a template file that you can copy for each new web coding project. Here are the HTML tags to add to your template:</p>\n<pre class=\"code\">&lt;!DOCTYPE html&gt;\r\n&lt;html lang=\"en\"&gt;\r\n&lt;head&gt;\r\n &lt;meta charset=\"utf-8\"&gt;\r\n &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\r\n &lt;title&gt;&lt;/title&gt;\r\n &lt;link href=\"styles.css\" rel=\"stylesheet\"&gt;\r\n &lt;script src=\"code.js\" defer&gt;&lt;/script&gt;\r\n&lt;/head&gt;\r\n&lt;body&gt;\r\n &lt;header&gt;\r\n &lt;/header&gt;\r\n &lt;nav&gt;\r\n &lt;/nav&gt;\r\n &lt;main&gt;\r\n &lt;article&gt;\r\n &lt;/article&gt;\r\n &lt;aside&gt;\r\n &lt;/aside&gt;\r\n &lt;/main&gt;\r\n &lt;footer&gt;\r\n &lt;/footer&gt;\r\n&lt;/body&gt;\r\n&lt;/html&gt;\r\n</pre>\n<p class=\"article-tips remember\">For the <code>&lt;link&gt;</code> and <code>&lt;script&gt;</code> tags, be sure to adjust the filenames as needed, and be sure to add the path to each file if you’ve stored the files in subdirectories.</p>\n"},{"title":"Selectors in CSS and JavaScript","thumb":null,"image":null,"content":"<p>Both CSS and JavaScript save you oodles of time by making it easy to format and program page elements. These two technologies become even more powerful when you use selectors to specify which elements you want to work with:</p>\n<p>* <strong>The class selector:</strong> If you’ve use the <code>class</code> attribute to assign a class name to one or more page elements, you can target those elements by using a <em>class selector</em>:</p>\n<p>HTML:</p>\n<pre class=\"code\">&lt;<em>element</em> class=\"<em>class-name</em>\"&gt;</pre>\n<p>CSS:</p>\n<pre class=\"code\">.<em>class-name</em> {\r\n\r\n <em>property1</em>: <em>value1</em>;\r\n\r\n <em>property2</em>: <em>value2</em>;\r\n\r\n etc.\r\n\r\n}</pre>\n<p>JavaScript:</p>\n<pre class=\"code\">document.querySelector('.<em>class-name</em>')</pre>\n<p>or:</p>\n<pre class=\"code\">document.querySelectorAll('.<em>class-name</em>')</pre>\n<p>* <strong>The id selector:</strong> If you’ve use the <code>id</code> attribute to assign an ID to a page element, you can target that element by using an <em>id selector</em>:</p>\n<p>HTML:</p>\n<pre class=\"code\">&lt;<em>element</em> id=\"<em>id-name</em>\"&gt;</pre>\n<p>CSS:</p>\n<pre class=\"code\">#<em>id-name</em> {\r\n\r\n <em>property1</em>: <em>value1</em>;\r\n\r\n <em>property2</em>: <em>value2</em>;\r\n\r\n etc.\r\n\r\n}</pre>\n<p>JavaScript:</p>\n<pre class=\"code\">document.querySelector('#<em>id-name</em>')</pre>\n<p>* <strong>The descendant combinator:</strong> To target every element that is contained in (that is, is a descendant of) a specified ancestor element, use the <em>descendant combinator</em> (a space):</p>\n<p>CSS:</p>\n<pre class=\"code\"><em>ancestor</em> <em>descendant</em> {\r\n\r\n <em>property1</em>: <em>value1</em>;\r\n\r\n <em>property2</em>: <em>value2</em>;\r\n\r\n etc.\r\n\r\n}</pre>\n<p>JavaScript:</p>\n<pre class=\"code\">document.querySelector('<em>ancestor</em> <em>descendant</em>')</pre>\n<p>or:</p>\n<pre class=\"code\">document.querySelectorAll('<em>ancestor</em> <em>descendant</em>')</pre>\n<p>* <strong>The child combinator:</strong> To target every element that resides one level below (that is, is a child of) a specified parent element, use the <em>child combinator</em>:</p>\n<p>CSS:</p>\n<pre class=\"code\"><em>parent</em> &gt; <em>child</em> {\r\n\r\n <em>property1</em>: <em>value1</em>;\r\n\r\n <em>property2</em>: <em>value2</em>;\r\n\r\netc.\r\n\r\n}</pre>\n<p>JavaScript:</p>\n<pre class=\"code\">document.querySelector('<em>parent &gt; child</em>')</pre>\n<p>or:</p>\n<pre class=\"code\">document.querySelectorAll('<em>parent &gt; child</em>')</pre>\n<p>* <strong>The subsequent-sibling combinator:</strong> To target every element that appears in the HTML after a specified reference element and is a sibling of that element, use the <em>subsequent-sibling combinator</em>:</p>\n<p>CSS:</p>\n<pre class=\"code\"><em>reference </em>~<em> target</em> {\r\n\r\n <em>property1</em>: <em>value1</em>;\r\n\r\n <em>property2</em>: <em>value2</em>;\r\n\r\n etc.\r\n\r\n}</pre>\n<p>JavaScript:</p>\n<pre class=\"code\">document.querySelector('<em>reference ~ target</em>)</pre>\n<p>or:</p>\n<pre class=\"code\">document.querySelectorAll('<em>reference ~ target</em>')</pre>\n<p>* <strong>The next-sibling combinator:</strong> To target the next sibling that comes after a reference element, use the <em>next-sibling combinator</em>:</p>\n<p>CSS:</p>\n<pre class=\"code\"><em>reference </em>+<em> target</em> {\r\n\r\n <em>property1</em>: <em>value1</em>;\r\n\r\n <em>property2</em>: <em>value2</em>;\r\n\r\n etc.\r\n\r\n}</pre>\n<p>JavaScript:</p>\n<pre class=\"code\">document.querySelector('<em>reference </em>+<em> target</em>')</pre>\n<p>or:</p>\n<pre class=\"code\">document.querySelectorAll('<em>reference </em>+<em> target</em>')</pre>\n"},{"title":"Top 10 JavaScript Errors","thumb":null,"image":null,"content":"<p>When you encounter a script problem, the first thing you should do is examine your code for the most common errors. To help you do that, here’s a list of the 10 most common errors made by both beginning and experienced programmers:</p>\n<ul>\n<li><strong>JavaScript keywords as variable names:</strong> JavaScript has many reserved words and keywords built into the language, so it’s common to accidentally use one of these words as a variable or function name. Double-check your names to make sure you’re not using any reserved words or the names of any objects, properties, or methods.</li>\n<li><strong>Misspelled variables and other names:</strong> Check your variable and function names to make sure you spell them consistently throughout the script. Also, check the spelling of the objects, properties, and methods you use.</li>\n<li><strong>Misused uppercase and lowercase letters:</strong> JavaScript is a <em>case-sensitive</em> language, which means that it treats each letter differently depending on whether it’s uppercase or lowercase. For example, consider the following two statements:\n<pre class=\"code\">const firstName = \"Millicent\";\r\nconst message = \"Welcome \" + firstname;\r\n</pre>\n<p>The first statement declares a variable named <code>firstName</code>, but the second statement uses <code>firstname</code>. This code would generate the error <code>firstname is not defined</code> (or something similar, depending on the browser) because to JavaScript, <code>firstname</code> is a different (and uninitialized) variable.</li>\n<li><strong>Mismatched quotation marks:</strong> In any statement where you began a string literal with a quotation mark (<code>\"</code> or <code>'</code>), always check to make sure that you included the corresponding closing quotation mark at the end of the string. Also, check to see if you used one or more instances of the same quotation mark within the string. If so, edit the string to use the proper escape sequence (<code>\\\"</code> or <code>\\'</code>), instead:\n<pre class=\"code\">// Bad\r\nconst myString = \"There are no \"bad\" programs.\";\r\n\t\r\n// Better\r\nconst myString = \"There are no \\\"bad\\\" programs.\";\r\n\r\n// Best\r\nconst myString = `There are no \"bad\" programs.`;</pre>\n</li>\n<li><strong>Mismatched parentheses:</strong> Look for statements that contain a left parenthesis — <code>(</code> — and make sure there’s a corresponding right parentheses — <code>)</code>. This also applies to square brackets — <code>[</code> and <code>]</code>.\n<p class=\"article-tips tip\">For complex expressions that include three or more sets of parentheses, a quick match-up check is to count the number of left parentheses in the expression, and then count the number of right parentheses. If these numbers don’t match, then you know you have a mismatch somewhere in the expression.</p>\n</li>\n<li><strong>Missed parentheses after function names:</strong> Speaking of parentheses, if your script calls a function or method that doesn’t take any arguments, check that you included the parentheses — <code>( )</code> — after the name of the function or method:\n<pre class=\"code\">function tryThis() {\r\n alert(\"Parentheses travel in pairs!\");\r\n}\r\n\r\n// This won't work\r\ntryThis;\r\n\r\n// This will\r\ntryThis();</pre>\n</li>\n<li><strong>Improper use of braces:</strong> JavaScript uses braces to mark the start (<code>{</code>) and end (<code>}</code>) of statement blocks associated with functions, tests involving <code>if()</code> and <code>switch()</code>, and loops, including <code>for()</code>, <code>while()</code>, and <code>do...while()</code>. It’s very easy to miss one or both braces in a block, and it’s even easier to get the braces mixed up when nesting one test or loop inside another. Double-check your braces to make sure each block has both an opening and a closing brace.\n<p class=\"article-tips tip\">One way to ensure that you don’t miss any braces is to position them consistently throughout your script. For example, many people prefer to use the traditional style for brace positions:</p>\n<pre class=\"code\">keyword {\r\n statements\r\n}</pre>\n<p>(Here, <em><code>keyword</code> </em>means the statement — such as function or <code>if()</code> — that defines the block.) If you prefer this style, use it all through your script so that you know exactly where to look for each brace.</p>\n<p>An easy way to ensure that you never forget a closing brace is to enter it immediately after entering the opening brace. That is, you type <code>{</code>, press Enter twice, and then type <code>}</code>.</p>\n<p>Also, use indentation consistently for the statements within the block. This makes it much easier to see the braces, particularly when you have one block nested within another.</li>\n<li><strong>Using <code>=</code> or <code>==</code> instead of <code>===</code>:</strong> The identity operator (<code>===</code>) is one of the least intuitive JavaScript features because the assignment operator (<code>=</code>) feels so much more natural. The equality operator (<code>==</code>) can cause problems because it often converts the data types before making the comparison. Therefore, check all your comparison expressions to make sure you always use <code>===</code> instead of <code>=</code> or <code>==</code>.</li>\n<li><strong>Conflicts between local and global variables</strong><strong>:</strong> A global variable is available throughout the entire page, even within functions. So, within a function, make sure that you don’t declare and use a variable that has the same name as a global variable.</li>\n<li><strong>The use of a page element before it’s loaded</strong><strong>:</strong> JavaScript runs through a page’s HTML one line at a time and checks the syntax of each JavaScript statement as it comes to it. If your code refers to an element (such as a form field) that JavaScript hasn’t come to yet, it generates an error. Therefore, if your code deals with an element, always place the script after the element in the HTML file.</li>\n</ul>\n"}],"videoInfo":{"videoId":null,"name":null,"accountId":null,"playerId":null,"thumbnailUrl":null,"description":null,"uploadDate":null}},"sponsorship":{"sponsorshipPage":false,"backgroundImage":{"src":null,"width":0,"height":0},"brandingLine":"","brandingLink":"","brandingLogo":{"src":null,"width":0,"height":0},"sponsorAd":"","sponsorEbookTitle":"","sponsorEbookLink":"","sponsorEbookImage":{"src":null,"width":0,"height":0}},"primaryLearningPath":"Advance","lifeExpectancy":"Two years","lifeExpectancySetFrom":"2024-01-05T00:00:00+00:00","dummiesForKids":"no","sponsoredContent":"no","adInfo":"","adPairKey":[]},"status":"publish","visibility":"public","articleId":250703},{"headers":{"creationTime":"2016-03-27T16:51:46+00:00","modifiedTime":"2023-11-13T14:37:39+00:00","timestamp":"2023-11-13T15:01:10+00:00"},"data":{"breadcrumbs":[{"name":"Technology","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33512"},"slug":"technology","categoryId":33512},{"name":"Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33592"},"slug":"programming-web-design","categoryId":33592},{"name":"General Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"},"slug":"general-programming-web-design","categoryId":33610}],"title":"Building Websites All-in-One For Dummies Cheat Sheet","strippedTitle":"building websites all-in-one for dummies cheat sheet","slug":"building-websites-all-in-one-for-dummies-cheat-sheet","canonicalUrl":"","seo":{"metaDescription":"Note: The following cheat sheet is from Building Websites All-in-One For Dummies which published in 2012; therefore, this content may be outdated. For more curr","noIndex":1,"noFollow":0},"content":"Note: The following cheat sheet is from <em>Building Websites All-in-One For Dummies</em> which published in 2012; therefore, this content may be outdated. For more current information on website building, please see <a href=\"https://www.dummies.com/book/technology/programming-web-design/general-programming-web-design/html-css-javascript-all-in-one-for-dummies-299520/\">HTML, CSS, & JavaScript All-in-One For Dummies</a>.\r\n\r\nWhether complex or simple, websites require that you make decisions — such as color, theme, and tone — and that you juggle many pieces of the project — like code, style sheets, and graphics. Knowing which resources to turn to for help implementing HTML5, and a few key points about incorporating graphics and video, can help you.","description":"Note: The following cheat sheet is from <em>Building Websites All-in-One For Dummies</em> which published in 2012; therefore, this content may be outdated. For more current information on website building, please see <a href=\"https://www.dummies.com/book/technology/programming-web-design/general-programming-web-design/html-css-javascript-all-in-one-for-dummies-299520/\">HTML, CSS, & JavaScript All-in-One For Dummies</a>.\r\n\r\nWhether complex or simple, websites require that you make decisions — such as color, theme, and tone — and that you juggle many pieces of the project — like code, style sheets, and graphics. Knowing which resources to turn to for help implementing HTML5, and a few key points about incorporating graphics and video, can help you.","blurb":"","authors":[{"authorId":9574,"name":"David Karlins","slug":"david-karlins","description":" <p>David Karlins is a web design professional and author who's written over 50 books and created video training on top web design tools. Doug Sahlin is the coauthor of <i>Social Media Marketing All-in-One For Dummies</i> and author of <i>Digital Landscape &amp; Nature Photography For Dummies</i>.</p>","hasArticle":false,"_links":{"self":"https://dummies-api.dummies.com/v2/authors/9574"}},{"authorId":9229,"name":"Doug Sahlin","slug":"doug-sahlin","description":" <p><b>Joe Hutsko</b> has been writing about computers, gadgets, and video games for over 20 years. <b>Barbara Boyd</b> is coauthor with Joe of three editions of <i>iPhone All&#45;in&#45;One For Dummies</i>. <b>Jesse Feiler</b> writes apps and books about building and using apps. <b>Doug Sahlin</b> is the author of more than 20 how&#45;to books, many of them bestsellers. ","hasArticle":false,"_links":{"self":"https://dummies-api.dummies.com/v2/authors/9229"}}],"primaryCategoryTaxonomy":{"categoryId":33610,"title":"General Programming & Web Design","slug":"general-programming-web-design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"}},"secondaryCategoryTaxonomy":{"categoryId":0,"title":null,"slug":null,"_links":null},"tertiaryCategoryTaxonomy":{"categoryId":0,"title":null,"slug":null,"_links":null},"trendingArticles":[{"articleId":192609,"title":"How to Pray the Rosary: A Comprehensive Guide","slug":"how-to-pray-the-rosary","categoryList":["body-mind-spirit","religion-spirituality","christianity","catholicism"],"_links":{"self":"/articles/192609"}},{"articleId":284787,"title":"What Your Society Says About You","slug":"what-your-society-says-about-you","categoryList":["academics-the-arts","humanities"],"_links":{"self":"/articles/284787"}},{"articleId":230957,"title":"Nikon D3400 For Dummies Cheat Sheet","slug":"nikon-d3400-dummies-cheat-sheet","categoryList":["home-auto-hobbies","photography"],"_links":{"self":"/articles/230957"}},{"articleId":208741,"title":"Kabbalah For Dummies Cheat Sheet","slug":"kabbalah-for-dummies-cheat-sheet","categoryList":["body-mind-spirit","religion-spirituality","kabbalah"],"_links":{"self":"/articles/208741"}},{"articleId":299133,"title":"ChatGPT For Dummies Cheat Sheet","slug":"chatgpt-for-dummies-cheat-sheet","categoryList":["technology","information-technology","ai","general-ai"],"_links":{"self":"/articles/299133"}}],"inThisArticle":[],"relatedArticles":{"fromBook":[],"fromCategory":[{"articleId":299575,"title":"HTML, CSS, & JavaScript All-in-One For Dummies Cheat Sheet","slug":"html-css-javascript-all-in-one-for-dummies-cheat-sheet","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/299575"}},{"articleId":265680,"title":"Using DevOps To Improve Engineering","slug":"tips-for-improving-engineering-performance-with-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265680"}},{"articleId":265675,"title":"How To Automate DevOps in the Cloud","slug":"make-more-of-your-cloud-tools-automating-devops-in-the-cloud","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265675"}},{"articleId":265672,"title":"How To Choose a Cloud Service Provider for DevOps","slug":"choosing-the-best-cloud-service-provider-features-and-tools-for-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265672"}},{"articleId":265664,"title":"How to Form DevOps Teams in Your Organization","slug":"how-to-form-devops-teams-in-your-organization","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265664"}}]},"hasRelatedBookFromSearch":false,"relatedBook":{"bookId":292544,"slug":"building-websites-all-in-one-for-dummies","isbn":"9781118270035","categoryList":["technology","programming-web-design","general-programming-web-design"],"amazon":{"default":"https://www.amazon.com/gp/product/1118270037/ref=as_li_tl?ie=UTF8&tag=wiley01-20","ca":"https://www.amazon.ca/gp/product/1118270037/ref=as_li_tl?ie=UTF8&tag=wiley01-20","indigo_ca":"http://www.tkqlhce.com/click-9208661-13710633?url=https://www.chapters.indigo.ca/en-ca/books/product/1118270037-item.html&cjsku=978111945484","gb":"https://www.amazon.co.uk/gp/product/1118270037/ref=as_li_tl?ie=UTF8&tag=wiley01-20","de":"https://www.amazon.de/gp/product/1118270037/ref=as_li_tl?ie=UTF8&tag=wiley01-20"},"image":{"src":"https://www.dummies.com/wp-content/uploads/building-websites-all-in-one-for-dummies-book-cover-9781118270035-202x255.jpg","width":202,"height":255},"title":"Building Websites All-in-One For Dummies","testBankPinActivationLink":"","bookOutOfPrint":false,"authorsInfo":"<p>David Karlins is a web design professional and author who's written over 50 books and created video training on top web design tools. Doug Sahlin is the coauthor of <i>Social Media Marketing All-in-One For Dummies</i> and author of <i>Digital Landscape &amp; Nature Photography For Dummies</i>.</p>","authors":[{"authorId":9574,"name":"David Karlins","slug":"david-karlins","description":" <p>David Karlins is a web design professional and author who's written over 50 books and created video training on top web design tools. Doug Sahlin is the coauthor of <i>Social Media Marketing All-in-One For Dummies</i> and author of <i>Digital Landscape &amp; Nature Photography For Dummies</i>.</p>","hasArticle":false,"_links":{"self":"https://dummies-api.dummies.com/v2/authors/9574"}},{"authorId":9229,"name":"Doug Sahlin","slug":"doug-sahlin","description":" <p><b>Joe Hutsko</b> has been writing about computers, gadgets, and video games for over 20 years. <b>Barbara Boyd</b> is coauthor with Joe of three editions of <i>iPhone All&#45;in&#45;One For Dummies</i>. <b>Jesse Feiler</b> writes apps and books about building and using apps. <b>Doug Sahlin</b> is the author of more than 20 how&#45;to books, many of them bestsellers. ","hasArticle":false,"_links":{"self":"https://dummies-api.dummies.com/v2/authors/9229"}}],"_links":{"self":"https://dummies-api.dummies.com/v2/books/"}},"collections":[],"articleAds":{"footerAd":"<div class=\"du-ad-region row\" id=\"article_page_adhesion_ad\"><div class=\"du-ad-unit col-md-12\" data-slot-id=\"article_page_adhesion_ad\" data-refreshed=\"false\" \r\n data-target = \"[{&quot;key&quot;:&quot;cat&quot;,&quot;values&quot;:[&quot;technology&quot;,&quot;programming-web-design&quot;,&quot;general-programming-web-design&quot;]},{&quot;key&quot;:&quot;isbn&quot;,&quot;values&quot;:[&quot;9781118270035&quot;]}]\" id=\"du-slot-65523a3778476\"></div></div>","rightAd":"<div class=\"du-ad-region row\" id=\"article_page_right_ad\"><div class=\"du-ad-unit col-md-12\" data-slot-id=\"article_page_right_ad\" data-refreshed=\"false\" \r\n data-target = \"[{&quot;key&quot;:&quot;cat&quot;,&quot;values&quot;:[&quot;technology&quot;,&quot;programming-web-design&quot;,&quot;general-programming-web-design&quot;]},{&quot;key&quot;:&quot;isbn&quot;,&quot;values&quot;:[&quot;9781118270035&quot;]}]\" id=\"du-slot-65523a377a165\"></div></div>"},"articleType":{"articleType":"Cheat Sheet","articleList":[{"articleId":174684,"title":"Online Resources for Building Websites","slug":"online-resources-for-building-websites","categoryList":[],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/174684"}},{"articleId":174683,"title":"Reminders for Preparing Web Graphics and Video","slug":"reminders-for-preparing-web-graphics-and-video","categoryList":[],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/174683"}}],"content":[{"title":"Online Resources for Building Websites","thumb":null,"image":null,"content":"<p>Amidst all the clutter on the web lie valuable free online resources for building essential elements of an inviting and accessible website. So that you don’t have to sift through the clutter, here are some of the best.</p>\n<p><a href=\"https://www.w3schools.com/\">W3schools.com</a> provides the most extensive online library of code resources, but that library can be overwhelming. The following links take you to some useful landing points to get started:</p>\n<ul class=\"level-one\">\n<li>\n<p class=\"first-para\">Instructions on <a href=\"https://www.w3schools.com/html/\">creating a basic HTML page</a></p>\n</li>\n<li>\n<p class=\"first-para\">Tutorials on building <a href=\"https://www.w3schools.com/html/html_css.asp\">inline, internal, and external CSS</a></p>\n</li>\n<li>\n<p class=\"first-para\">Basic <a href=\"https://www.w3schools.com/css/css_howto.asp\">CSS parameters, syntax, and instructions</a> for adding CSS to web pages</p>\n</li>\n</ul>\n"},{"title":"Reminders for Preparing Web Graphics and Video","thumb":null,"image":null,"content":"<p>Websites without graphics are almost non-existent these days. When you create graphics, optimize images, or prepare video for a website, the results have to be sharp, detailed, and fast loading. Three popular forms of graphics you use on a website are photo-realistic images, images such as logos with large areas of solid color, and images that are a combination of images and text. Here are some friendly reminders for creating and optimizing graphics for websites:</p>\n<ul class=\"level-one\">\n<li>\n<p class=\"first-para\"><b></b>Optimize photo-realistic images using the JPEG format.</p>\n</li>\n<li>\n<p class=\"first-para\"><b></b>Optimize images with large areas of solid color using the GIF format.</p>\n</li>\n<li>\n<p class=\"first-para\"><b></b>When optimizing graphics that have text overlaid on a photorealistic image, create separate slices for the areas of the image that are photorealistic, and create additional slices for the areas of the image that contain text. Export the areas containing text using the GIF format, and export the photo-realistic areas of the image using the JPEG format.</p>\n</li>\n<li>\n<p class=\"first-para\"><b></b>For high quality JPEG images, use a quality setting of 70 when exporting. For smaller JPEG images, you can get by with a quality setting of 50.</p>\n</li>\n<li>\n<p class=\"first-para\"><b></b>If you’re creating a photo gallery for a product, or for a photographer, export the images in the JPEG format with a quality setting of 80.</p>\n</li>\n<li>\n<p class=\"first-para\"><b></b>When compressing images using the JPEG format, pay careful attention to the edges of objects in the image. When you begin to see pixels, or the edges lack definition, you’ve compressed the image too far.</p>\n</li>\n<li>\n<p class=\"first-para\"><b></b>When exporting images using the GIF file format, use the least number of colors that yields a crisp image and you’ll have a fast loading image.</p>\n</li>\n<li>\n<p class=\"first-para\"><b></b>When you resample images for websites, the maximum resolution you need is 72 pixels per inch.</p>\n</li>\n</ul>\n<p>Websites with no video are becoming rarer. Video is everywhere on the Internet: for entertainment, in ads, to promote rock stars and other artists. When video is well done, it’s a thing of beauty. However there are some things you need to consider when adding video to a web page:</p>\n<ul class=\"level-one\">\n<li>\n<p class=\"first-para\"><b>Video takes up lots of bandwith. </b>If the bandwidth for a website is exceeded, the charge can be rather costly. Instead of hosting video on a website, upload it to YouTube, and then embed the video in a webpage or blog.</p>\n</li>\n<li>\n<p class=\"first-para\"><b>Don’t violate copyright laws. </b>Don’t copy video from other websites, or other people’s YouTube videos and use them on your website.</p>\n</li>\n<li>\n<p class=\"first-para\"><b>Check the license: </b>If you do use a video from a supplier or manufacturer on a commercial website, make sure you are covered by the supplier or manufacturer’s license.</p>\n</li>\n<li>\n<p class=\"first-para\"><b>Use a high quality camcorder to record video: </b>No, an iPhone is not a high quality camcorder. If you encode poor quality video for the web, you get poor quality video. Remember the old axiom: Garbage in, garbage out.</p>\n</li>\n<li>\n<p class=\"first-para\"><b>Make sure the website viewers have the necessary plug-ins to view the video. </b></p>\n</li>\n<li>\n<p class=\"first-para\"><b>If you create HTML5 pages with video, make sure the intended audience for the site uses HTML5-compliant browsers.</b></p>\n</li>\n<li>\n<p class=\"first-para\"><b>Don’t use transitions when you edit multiple video clips to create a video for the web.</b> Video transitions look great on HD video, but don’t look good when you encode a video for the web.</p>\n</li>\n</ul>\n"}],"videoInfo":{"videoId":null,"name":null,"accountId":null,"playerId":null,"thumbnailUrl":null,"description":null,"uploadDate":null}},"sponsorship":{"sponsorshipPage":false,"backgroundImage":{"src":null,"width":0,"height":0},"brandingLine":"","brandingLink":"","brandingLogo":{"src":null,"width":0,"height":0},"sponsorAd":"","sponsorEbookTitle":"","sponsorEbookLink":"","sponsorEbookImage":{"src":null,"width":0,"height":0}},"primaryLearningPath":"Advance","lifeExpectancy":"Six months","lifeExpectancySetFrom":"2023-11-08T00:00:00+00:00","dummiesForKids":"no","sponsoredContent":"no","adInfo":"","adPairKey":[]},"status":"publish","visibility":"public","articleId":208262},{"headers":{"creationTime":"2023-07-05T17:09:19+00:00","modifiedTime":"2023-09-25T18:56:27+00:00","timestamp":"2023-09-25T21:01:03+00:00"},"data":{"breadcrumbs":[{"name":"Technology","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33512"},"slug":"technology","categoryId":33512},{"name":"Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33592"},"slug":"programming-web-design","categoryId":33592},{"name":"General Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"},"slug":"general-programming-web-design","categoryId":33610}],"title":"HTML, CSS, & JavaScript All-in-One For Dummies Cheat Sheet","strippedTitle":"html, css, & javascript all-in-one for dummies cheat sheet","slug":"html-css-javascript-all-in-one-for-dummies-cheat-sheet","canonicalUrl":"","seo":{"metaDescription":"This Cheat Sheet has handy info you can use when learning the basics of HTML, CSS, and JavaScript, including ready-to-go HTML templates.","noIndex":0,"noFollow":0},"content":"One of the bonuses you get when you tackle HTML, CSS, and JavaScript is that after you learn a few basics, you can apply those basics to any project. A good example is the underlying structure of a page, which uses the same set of standard HTML tags, no matter how large or small the project.\r\n\r\nIt’s also worth your time to learn the most powerful CSS selectors, because you use those selectors all the time to speed up your work when you’re writing rules.\r\n\r\nProgramming errors, too, are a fact of web coding life, so understanding the most useful JavaScript debugging strategies can help you fix your code faster and get back to more creative pursuits.","description":"One of the bonuses you get when you tackle HTML, CSS, and JavaScript is that after you learn a few basics, you can apply those basics to any project. A good example is the underlying structure of a page, which uses the same set of standard HTML tags, no matter how large or small the project.\r\n\r\nIt’s also worth your time to learn the most powerful CSS selectors, because you use those selectors all the time to speed up your work when you’re writing rules.\r\n\r\nProgramming errors, too, are a fact of web coding life, so understanding the most useful JavaScript debugging strategies can help you fix your code faster and get back to more creative pursuits.","blurb":"","authors":[{"authorId":11290,"name":"Paul McFedries","slug":"paul-mcfedries","description":" <p><b>Paul McFedries</b> is the owner of Logophilia Limited, a successful technical writing firm. He has 25 years&#8217; experience writing instructional computer books and is the author of over 100 books that have sold a combined 4 million copies worldwide.</p> ","hasArticle":false,"_links":{"self":"https://dummies-api.dummies.com/v2/authors/11290"}}],"primaryCategoryTaxonomy":{"categoryId":33610,"title":"General Programming & Web Design","slug":"general-programming-web-design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"}},"secondaryCategoryTaxonomy":{"categoryId":0,"title":null,"slug":null,"_links":null},"tertiaryCategoryTaxonomy":{"categoryId":0,"title":null,"slug":null,"_links":null},"trendingArticles":[{"articleId":192609,"title":"How to Pray the Rosary: A Comprehensive Guide","slug":"how-to-pray-the-rosary","categoryList":["body-mind-spirit","religion-spirituality","christianity","catholicism"],"_links":{"self":"/articles/192609"}},{"articleId":284787,"title":"What Your Society Says About You","slug":"what-your-society-says-about-you","categoryList":["academics-the-arts","humanities"],"_links":{"self":"/articles/284787"}},{"articleId":230957,"title":"Nikon D3400 For Dummies Cheat Sheet","slug":"nikon-d3400-dummies-cheat-sheet","categoryList":["home-auto-hobbies","photography"],"_links":{"self":"/articles/230957"}},{"articleId":208741,"title":"Kabbalah For Dummies Cheat Sheet","slug":"kabbalah-for-dummies-cheat-sheet","categoryList":["body-mind-spirit","religion-spirituality","kabbalah"],"_links":{"self":"/articles/208741"}},{"articleId":299133,"title":"ChatGPT For Dummies Cheat Sheet","slug":"chatgpt-for-dummies-cheat-sheet","categoryList":["technology","information-technology","ai","general-ai"],"_links":{"self":"/articles/299133"}}],"inThisArticle":[],"relatedArticles":{"fromBook":[],"fromCategory":[{"articleId":265680,"title":"Using DevOps To Improve Engineering","slug":"tips-for-improving-engineering-performance-with-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265680"}},{"articleId":265675,"title":"How To Automate DevOps in the Cloud","slug":"make-more-of-your-cloud-tools-automating-devops-in-the-cloud","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265675"}},{"articleId":265672,"title":"How To Choose a Cloud Service Provider for DevOps","slug":"choosing-the-best-cloud-service-provider-features-and-tools-for-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265672"}},{"articleId":265664,"title":"How to Form DevOps Teams in Your Organization","slug":"how-to-form-devops-teams-in-your-organization","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265664"}},{"articleId":265656,"title":"Moving to DevOps Processes: From a Line to a Circuit","slug":"moving-to-devops-processes-from-a-line-to-a-circuit","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265656"}}]},"hasRelatedBookFromSearch":false,"relatedBook":{"bookId":299520,"slug":"html-css-javascript-all-in-one-for-dummies","isbn":"9781394164684","categoryList":["technology","programming-web-design","general-programming-web-design"],"amazon":{"default":"https://www.amazon.com/gp/product/1394164688/ref=as_li_tl?ie=UTF8&tag=wiley01-20","ca":"https://www.amazon.ca/gp/product/1394164688/ref=as_li_tl?ie=UTF8&tag=wiley01-20","indigo_ca":"http://www.tkqlhce.com/click-9208661-13710633?url=https://www.chapters.indigo.ca/en-ca/books/product/1394164688-item.html&cjsku=978111945484","gb":"https://www.amazon.co.uk/gp/product/1394164688/ref=as_li_tl?ie=UTF8&tag=wiley01-20","de":"https://www.amazon.de/gp/product/1394164688/ref=as_li_tl?ie=UTF8&tag=wiley01-20"},"image":{"src":"https://www.dummies.com/wp-content/uploads/html-css-javascript-all-in-one-for-dummies-9781394164684-203x255.jpg","width":203,"height":255},"title":"HTML, CSS, & JavaScript All-in-One For Dummies","testBankPinActivationLink":"","bookOutOfPrint":true,"authorsInfo":"<p><b><b data-author-id=\"11290\">Paul McFedries</b></b> is the owner of Logophilia Limited, a successful technical writing firm. He has 25 years&#8217; experience writing instructional computer books and is the author of over 100 books that have sold a combined 4 million copies worldwide.</p>","authors":[{"authorId":11290,"name":"Paul McFedries","slug":"paul-mcfedries","description":" <p><b>Paul McFedries</b> is the owner of Logophilia Limited, a successful technical writing firm. He has 25 years&#8217; experience writing instructional computer books and is the author of over 100 books that have sold a combined 4 million copies worldwide.</p> ","hasArticle":false,"_links":{"self":"https://dummies-api.dummies.com/v2/authors/11290"}}],"_links":{"self":"https://dummies-api.dummies.com/v2/books/"}},"collections":[],"articleAds":{"footerAd":"<div class=\"du-ad-region row\" id=\"article_page_adhesion_ad\"><div class=\"du-ad-unit col-md-12\" data-slot-id=\"article_page_adhesion_ad\" data-refreshed=\"false\" \r\n data-target = \"[{&quot;key&quot;:&quot;cat&quot;,&quot;values&quot;:[&quot;technology&quot;,&quot;programming-web-design&quot;,&quot;general-programming-web-design&quot;]},{&quot;key&quot;:&quot;isbn&quot;,&quot;values&quot;:[&quot;9781394164684&quot;]}]\" id=\"du-slot-6511f50f42930\"></div></div>","rightAd":"<div class=\"du-ad-region row\" id=\"article_page_right_ad\"><div class=\"du-ad-unit col-md-12\" data-slot-id=\"article_page_right_ad\" data-refreshed=\"false\" \r\n data-target = \"[{&quot;key&quot;:&quot;cat&quot;,&quot;values&quot;:[&quot;technology&quot;,&quot;programming-web-design&quot;,&quot;general-programming-web-design&quot;]},{&quot;key&quot;:&quot;isbn&quot;,&quot;values&quot;:[&quot;9781394164684&quot;]}]\" id=\"du-slot-6511f50f42e7d\"></div></div>"},"articleType":{"articleType":"Cheat Sheet","articleList":[{"articleId":0,"title":"","slug":null,"categoryList":[],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/"}}],"content":[{"title":"Your ready-to-roll HTML template","thumb":null,"image":null,"content":"<p>All web pages use more or less the same basic HTML structure. This means you can get any new web project off on the right foot by first laying down a solid foundation that includes valid HTML and semantic page tags.</p>\n<p>Rather than create this foundation from scratch each time, you can save yourself some time along with wear and tear on your typing fingers by creating a template file that you can copy for each new project.</p>\n<p>To get you started, here are the HTML tags to add to your template:</p>\n<pre class=\"code\">&lt;!doctype html&gt;\r\n&lt;html lang=\"en\"&gt;\r\n &lt;head&gt;\r\n &lt;meta charset=\"utf-8\"&gt;\r\n &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\r\n &lt;title&gt;Barebones HTML Template&lt;/title&gt;\r\n &lt;style&gt;\r\n /*\r\n * Put your internal styles here or replace with\r\n * &lt;link href=\"filename.css\" rel=\"stylesheet\"&gt;\r\n */\r\n &lt;/style&gt;\r\n &lt;/head&gt;\r\n &lt;body&gt;\r\n &lt;header&gt;\r\n &lt;h1&gt;Site Title&lt;/h1&gt;\r\n &lt;/header&gt;\r\n &lt;nav&gt;\r\n Navigation links\r\n &lt;/nav&gt;\r\n &lt;main&gt;\r\n &lt;article&gt;\r\n &lt;h2&gt;Article Title&lt;/h2&gt;\r\n &lt;/article&gt;\r\n &lt;aside&gt;\r\n &lt;h3&gt;Aside Title&lt;/h3&gt;\r\n &lt;/aside&gt;\r\n &lt;/main&gt;\r\n &lt;footer&gt;\r\n Footer stuff\r\n &lt;/footer&gt;\r\n &lt;script&gt;\r\n /*\r\n * Your internal JavaScript goes here.\r\n * Alternatively, replace with\r\n * &lt;script src=\"filename.js\"&gt;&lt;/script&gt;\r\n */\r\n &lt;/script&gt; \r\n &lt;/body&gt;\r\n&lt;/html&gt;\r\n</pre>\n<p class=\"article-tips remember\">For the &lt;link&gt; and &lt;script&gt; tags, be sure to adjust the filenames as needed, and be sure to add the path to each file if you’ve stored them in subdirectories.</p>\n"},{"title":"15 must-know CSS selectors","thumb":null,"image":null,"content":"<p>CSS saves you oodles of time by making it easy to style page elements. CSS becomes even more powerful when you use selectors to specify which elements you want to work with.</p>\n<p>Here are the selectors you need to tape to your cat’s forehead so that they’re always handy:</p>\n<h3><strong>The class selector</strong></h3>\n<p>If you’ve used the <em>class</em> attribute to assign a class name to one or more page elements, you can target those elements by using a <em>class selector</em>:</p>\n<p>HTML:</p>\n<pre class=\"code\"> &lt;<em>element</em> class=\"<em>class-name</em>\"&gt;\r\n</pre>\n<p>CSS:</p>\n<pre class=\"code\"> .<em>class-name</em> {\r\n <em>property1</em>: <em>value1</em>;\r\n <em>property2</em>: <em>value2</em>;\r\n etc.\r\n }\r\n</pre>\n<h3><strong>The id selector</strong></h3>\n<p>If you’ve used the <em>id</em> attribute to assign an ID to a page element, you can target that element by using an <em>id selector:</em></p>\n<p>HTML:</p>\n<pre class=\"code\"> &lt;<em>element</em> id=\"<em>id-name</em>\"&gt;\r\n</pre>\n<p>CSS:</p>\n<pre class=\"code\"> #<em>id-name</em> {\r\n <em>property1</em>: <em>value1</em>;\r\n <em>property2</em>: <em>value2</em>;\r\n etc.\r\n }\r\n</pre>\n<h3><strong>The type selector</strong></h3>\n<p>To target every element that uses a particular element name (such as <em>header</em> or <em>div</em>), use the <em>type selector:</em></p>\n<pre class=\"code\"> <em>element</em> {\r\n <em>property1</em>: <em>value1</em>;\r\n <em>property2</em>: <em>value2</em>;\r\n etc.\r\n }\r\n</pre>\n<h3><strong>The attribute equals selector</strong></h3>\n<p>To target every instance of an element that uses an attribute with a specified value, use the <em>attribute equals selector:</em></p>\n<pre class=\"code\"> <em>element</em>[<em>attr</em>=\"<em>value</em>\"] {\r\n <em>property1</em>: <em>value1</em>;\r\n <em>property2</em>: <em>value2</em>;\r\n etc.\r\n }\r\n</pre>\n<h3><strong>The descendant combinator</strong></h3>\n<p>To target every element that’s contained within (that is, is a descendant of) a specified ancestor element, use the <em>descendant combinator</em> (a space):</p>\n<pre class=\"code\"> <em>ancestor</em> <em>descendant</em> {\r\n <em>property1</em>: <em>value1</em>;\r\n <em>property2</em>: <em>value2</em>;\r\n etc.\r\n }\r\n</pre>\n<h3><strong>The child combinator</strong></h3>\n<p>To target every element that resides one level below (that is, is a child of) a specified parent element, use the <em>child combinator</em> (&gt;):</p>\n<pre class=\"code\"> <em>parent</em> &gt; <em>child</em> {\r\n <em>property1</em>: <em>value1</em>;\r\n <em>property2</em>: <em>value2</em>;\r\n etc.\r\n }\r\n</pre>\n<h3><strong>The subsequent-sibling combinator</strong></h3>\n<p>To target every sibling element that follows a reference element, use the <em>subsequent-sibling combinator</em> (~):</p>\n<pre class=\"code\"> <em>reference </em>~<em> target</em> {\r\n <em>property1</em>: <em>value1</em>;\r\n <em>property2</em>: <em>value2</em>;\r\n etc.\r\n }\r\n</pre>\n<h3><strong>The next-sibling combinator</strong></h3>\n<p>To target the sibling element that comes immediately after a reference element, use the <em>next-sibling combinator</em> (+):</p>\n<pre class=\"code\"> <em>reference </em>+<em> target</em> {\r\n <em>property1</em>: <em>value1</em>;\r\n <em>property2</em>: <em>value2</em>;\r\n etc.\r\n }\r\n</pre>\n<h3><strong>The first-child or last-child pseudo-classes</strong></h3>\n<p>To target any child element that’s the first or last of a parent element’s children, use the <em>first-child </em>or <em>last-child pseudo-class</em>:</p>\n<pre class=\"code\"> <em>element</em>:first-child {\r\n <em>element</em>:last-child {\r\n <em>property1</em>: <em>value1</em>;\r\n <em>property2</em>: <em>value2</em>;\r\n etc.\r\n }\r\n</pre>\n<h3><strong>The nth-child or nth-last-child pseudo-class</strong></h3>\n<p>To target any child element that’s the nth or nth-last of a parent element’s children, use the <em>nth-child </em>or <em>nth-last-child pseudo-class</em>:</p>\n<pre class=\"code\"> <em>element</em>:nth-child(<em>n</em>) {\r\n <em>element</em>:nth-last-child(<em>n</em>) {\r\n <em>property1</em>: <em>value1</em>;\r\n <em>property2</em>: <em>value2</em>;\r\n etc.\r\n }\r\n</pre>\n<h3><strong>The </strong><strong>:is() </strong><strong>pseudo-class</strong></h3>\n<p>To target elements that match any of the selectors in a specified selector list and where the overall specificity of the selector is the highest weight of the items in the selector list, use the<strong> :is() </strong>pseudo-class:</p>\n<pre class=\"code\"> <em>element</em>:is(<em>selector-list</em>) {\r\n <em>property1</em>: <em>value1</em>;\r\n <em>property2</em>: <em>value2</em>;\r\n etc.\r\n }\r\n</pre>\n<h3><strong>The </strong><strong>:where() </strong><strong>pseudo-class </strong></h3>\n<p>To target elements that match any of the selectors in a specified selector list and where the overall specificity of the selector is 0, use the :where() pseudo-class:</p>\n<pre class=\"code\"> <em>element</em>:where(<em>selector-list</em>) {\r\n <em>property1</em>: <em>value1</em>;\r\n <em>property2</em>: <em>value2</em>;\r\n etc.\r\n }\r\n</pre>\n<h3><strong>The :not() pseudo-class </strong></h3>\n<p>To target elements that don’t match any of the selectors in a specified selector list, use the :not() pseudo-class:</p>\n<pre class=\"code\"> <em>element</em>:not(<em>selector-list</em>) {\r\n <em>property1</em>: <em>value1</em>;\r\n <em>property2</em>: <em>value2</em>;\r\n etc.\r\n }\r\n</pre>\n<h3><strong>The :has() pseudo-class </strong></h3>\n<p>To target an ancestor, parent, or previous sibling that has a descendant, child, or sibling (respectively) in a specified selector list, use the :has() pseudo-class:</p>\n<pre class=\"code\"> <em>element</em>:has(<em>selector-list</em>) {\r\n <em>property1</em>: <em>value1</em>;\r\n <em>property2</em>: <em>value2</em>;\r\n etc.\r\n }\r\n</pre>\n"},{"title":"Top 10 JavaScript debugging strategies","thumb":null,"image":null,"content":"<p>Given any nontrivial JavaScript code, it’s a rare (probably nonexistent!) script that runs perfectly the first (or even the tenth!) time.</p>\n<p>Script bugs happen to even the most experienced developers, so having errors in your code does not mean you’re a failure as a coder! All it means is that you’re a coder.</p>\n<p>But when bugs get into your code, you’ll want to exterminate them as quickly as you can. Here are ten debugging strategies that can help:</p>\n<ul>\n<li><strong>Get thee to your dev tools:</strong> All web page debugging begins with a visit to your web browser development tools. In every browser, the quickest way to open the dev tools is to right-click a page element and then click Inspect. You can also press Ctrl+Shift+I (Windows) or Option@@cmd+I (macOS).</li>\n<li><strong>The console is your best debugging friend:</strong> In your code, you can see the current value of a variable or object property by outputting that value to the dev tools Console tab:\n<pre class=\"code\">console.log(<em>output</em>);</pre>\n<ul>\n<li>output: The expression you want to print in the Console. The output expression can be a text string, a variable, an object property, a function result, or any combination of these.</li>\n</ul>\n</li>\n<li><strong>Give your code a break(point):</strong> Pausing your code enables you to see what’s going on and to run some commands in the console. You have two ways to pause your code mid-execution:\n<ul>\n<li><strong>Set a breakpoint:</strong> In the dev tools, open the file that contains the JavaScript code, locate the statement where you want to pause, and then click the line number to the left of that statement.</li>\n<li><strong>Add a</strong> <strong>debugger statement:</strong> In your JavaScript code, on the line just before the statement where you want to pause, add a debugger statement.</li>\n</ul>\n</li>\n<li><strong>Step through your code:</strong> Once you have some JavaScript code in break mode, use the dev tools execution controls to step through the code. You can step one statement at a time, step over functions, or step into functions.</li>\n<li><strong>Monitor variable and object property values:</strong> Either use console.log() statements to output values to the console or, when your code is in break mode, hover the mouse pointer over the variable or object to see its current value in a tooltip. You can also create watch expressions to monitor values.</li>\n<li><strong>Indent your code</strong><strong>.</strong> JavaScript code is immeasurably more readable when you indent the code within each statement block. Readable code is that much easier to trace and decipher, so your debugging efforts have one less hurdle to negotiate. Indenting each statement by two or four spaces is typical.</li>\n<li><strong>Break down complex tasks</strong><strong>.</strong> Don’t try to solve all your problems at once. If you have a large script or function that isn’t working right, test it in small chunks to try to narrow down the problem.</li>\n<li><strong>Break up long statements</strong><strong>.</strong> One of the most complicated aspects of script debugging is making sense out of long statements (especially expressions). The Console window can help (you can use it to print parts of the statement), but it’s usually best to keep your statements as short as possible. Once you get things working properly, you can often recombine statements for more efficient code.</li>\n<li><strong>Comment out problem statements</strong><strong>.</strong> If a particular statement is giving you problems, you can temporarily deactivate it by placing two slashes (//) at the beginning of the line. This tells JavaScript to treat the line as a comment. If you have a number of statements you want to skip, place/* at the beginning of the first statement and */ at the end of the last statement.</li>\n<li><strong>Use comments to document your scripts</strong><strong>.</strong> Speaking of comments, it’s a programming truism that you can never add enough explanatory comments to your code. The more comments you add, the easier your scripts will be to debug.</li>\n</ul>\n"}],"videoInfo":{"videoId":null,"name":null,"accountId":null,"playerId":null,"thumbnailUrl":null,"description":null,"uploadDate":null}},"sponsorship":{"sponsorshipPage":false,"backgroundImage":{"src":null,"width":0,"height":0},"brandingLine":"","brandingLink":"","brandingLogo":{"src":null,"width":0,"height":0},"sponsorAd":"","sponsorEbookTitle":"","sponsorEbookLink":"","sponsorEbookImage":{"src":null,"width":0,"height":0}},"primaryLearningPath":"Advance","lifeExpectancy":"Two years","lifeExpectancySetFrom":"2023-07-05T00:00:00+00:00","dummiesForKids":"no","sponsoredContent":"no","adInfo":"","adPairKey":[]},"status":"publish","visibility":"public","articleId":299575},{"headers":{"creationTime":"2019-11-07T15:28:05+00:00","modifiedTime":"2023-08-16T16:15:08+00:00","timestamp":"2023-08-16T18:01:22+00:00"},"data":{"breadcrumbs":[{"name":"Technology","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33512"},"slug":"technology","categoryId":33512},{"name":"Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33592"},"slug":"programming-web-design","categoryId":33592},{"name":"General Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"},"slug":"general-programming-web-design","categoryId":33610}],"title":"What Is DevOps?","strippedTitle":"what is devops?","slug":"what-is-devops","canonicalUrl":"","seo":{"metaDescription":"What is DevOps? DevOps is an agile-derived approach that helps guide software development to prioritize people over process. Find out more from Dummies.com.","noIndex":0,"noFollow":0},"content":"What is DevOps? It’s difficult to provide you with an exact DevOps prescription — because none exists. <strong>DevOps</strong> is a philosophy that guides software development, one that that prioritizes people over process and process over tooling. DevOps builds a culture of trust, collaboration, and continuous improvement.\r\n\r\n[caption id=\"attachment_265612\" align=\"aligncenter\" width=\"556\"]<img class=\"wp-image-265612 size-full\" src=\"https://www.dummies.com/wp-content/uploads/devops_cycle.jpg\" alt=\"DevOps cycle\" width=\"556\" height=\"312\" /> ©Shutterstock/Phakawan Wongpetanan[/caption]\r\n\r\nAs a culture, the DevOps philosophy views the development process in a holistic way, taking into account everyone involved: developers, testers, operations folks, security, and infrastructure engineers. DevOps doesn’t put any one of these groups above the others, nor does it rank the importance of their work. Instead, a DevOps company treats the entire team of engineers as critical to ensuring that the customer has the best experience possible.\r\n<h2 id=\"tab1\" >DevOps evolved from Agile</h2>\r\nIn 2001, 17 software engineers met and published the “<a href=\"https://agilemanifesto.org/\">Manifesto for Agile Software Development</a>,” which spelled out the 12 principles of Agile project management. This new workflow was a response to the frustration and inflexibility of teams working in a waterfall (linear) process.\r\n\r\nWorking within <a href=\"https://www.dummies.com/careers/project-management/the-12-agile-principles/\">Agile principles</a>, engineers aren’t required to adhere to original requirements or follow a linear development workflow in which each team hands off work to the next. Instead, they’re capable of adapting to the ever-changing needs of the business or the market, and sometimes even the changing technology and tools.\r\n\r\nAlthough Agile revolutionized software development in many ways, it failed to address the conflict between developers and operations specialists. Silos still developed around technical skill sets and specialties, and developers still handed off code to operations folks to deploy and support.\r\n\r\nIn 2008, Andrew Clay Shafer talked to Patrick Debois about his frustrations with the constant conflict between developers and operations folks. Together, they launched the first DevOpsDays event in Belgium to create a better — and more agile — way of approaching software development. This evolution of Agile took hold, and DevOps has since enabled companies around the globe to produce better software faster (and usually cheaper). DevOps is not a fad. It’s a widely accepted engineering philosophy.\r\n<h2 id=\"tab2\" >DevOps focuses on people</h2>\r\nAnyone who says that DevOps is all about tooling wants to sell you something. Above all else, DevOps is a philosophy that focuses on engineers and how they can better work together to produce great software. You could spend millions on every DevOps tool in the world and still be no closer to DevOps nirvana.\r\n\r\nInstead, focus on your most important engineering asset: engineers. Happy engineers make great software. How do you make happy engineers? Well, you create a collaborative work environment in which mutual respect, shared knowledge, and acknowledgement of hard work can thrive.\r\n<h2 id=\"tab3\" >Company culture is the foundation of DevOps</h2>\r\nYour company has a culture, even if it has been left to develop through inertia. That culture has more influence on your job satisfaction, productivity, and team velocity than you probably realize.\r\n\r\n<a href=\"https://www.dummies.com/business/management/pay-attention-to-invisible-forces-in-your-company-culture/\">Company culture</a> is best described as the unspoken expectations, behavior, and values of an organization. Culture is what tells your employees whether company leadership is open to new ideas. It’s what informs an employee’s decision as to whether to come forward with a problem or to sweep it under the rug.\r\n\r\nCulture is something to be designed and refined, not something to leave to chance. Though the actual definition varies from company to company and person to person, DevOps is a cultural approach to engineering at its core.\r\n\r\nA toxic company culture will kill your DevOps journey before it even starts. Even if your engineering team adopts a DevOps mindset, the attitudes and challenges of the larger company will bleed into your environment.\r\n\r\nWith DevOps, you avoid blame, grow trust, and focus on the customer. You give your engineers autonomy and empower them to do what they do best: engineer solutions. As you begin to implement DevOps, you give your engineers the time and space to adjust to it, allowing them the opportunities to get to know each other better and build rapport with engineers with different specialties.\r\n\r\nAlso, you measure progress and reward achievements. Never blame individuals for failures. Instead, the team should continuously improve together, and achievements should be celebrated and rewarded.\r\n<h2 id=\"tab4\" >You learn by observing your process and collecting data</h2>\r\nObserving your workflow without expectation is a powerful technique to use to see the successes and challenges of your workflow realistically. This observation is the only way to find the correct solution to the areas and issues that create bottlenecks in your processes.\r\n\r\nJust as with software, slapping some Kubernetes (or other new tool) on a problem doesn’t necessarily fix it. You have to know where the problems are before you go about fixing them. As you continue, you collect data — not to measure success or failure but to track the team’s performance. You determine what works, what doesn’t work, and what to try next time.\r\n<h2 id=\"tab5\" >Persuasion is key to DevOps adoption</h2>\r\nSelling the idea of DevOps to your leaders, peers, and employees isn’t easy. The process isn’t always intuitive to engineers, either. Shouldn’t a great idea simply sell itself? If only it were that easy. However, a key concept to always keep in mind as you implement DevOps is that it emphasizes people.\r\n\r\nhe so-called “soft skills” of communication and collaboration are central to your DevOps transformation. Persuading other folks on your team and within your company to adopt DevOps requires practicing <a href=\"https://www.dummies.com/business/human-resources/employee-engagement/how-good-communication-affects-employee-engagement/\">good communication skills</a>. Early conversations that you have with colleagues about DevOps can set you up for success down the road — especially when you hit an unexpected speed bump.\r\n<h2 id=\"tab6\" >Small, incremental changes are priceless in DevOps</h2>\r\nThe aspect of DevOps that emphasizes making changes in small, incremental ways has its roots in lean manufacturing, which embraces accelerated feedback, continuous improvement, and swifter time to market.\r\n\r\nWater is a good metaphor for DevOps transformations. Water is one of the world’s most powerful elements. Unless people are watching the flood waters rise in front of them, they think of it as relatively harmless. The Colorado River carved the Grand Canyon. Slowly, over millions of years, water cut through stone to expose nearly two billion years of soil and rock.\r\n\r\nYou can be like water. Be the slow, relentless change in your organization. Here’s that famous quote from a <a href=\"https://www.youtube.com/watch?v=cJMwBwFj5nQ\">Bruce Lee interview</a> to inspire you:\r\n\r\nBe formless, shapeless, like water. Now you put water into a cup, it becomes the cup. You put water into a bottle, it becomes the bottle. You put it in a teapot, it becomes the teapot. Now, water can flow or it can crash. Be water, my friend.\r\n\r\nMaking incremental changes means, for example, that you find a problem and you fix that problem. Then you fix the next one. You don’t take on too much too fast and you don’t pick every battle to fight. You understand that some fights aren’t worth the energy or social capital that they can cost you.\r\n\r\nUltimately, DevOps isn’t a list of steps you can take, but is rather an approach that should guide the decisions you make as you develop.","description":"What is DevOps? It’s difficult to provide you with an exact DevOps prescription — because none exists. <strong>DevOps</strong> is a philosophy that guides software development, one that that prioritizes people over process and process over tooling. DevOps builds a culture of trust, collaboration, and continuous improvement.\r\n\r\n[caption id=\"attachment_265612\" align=\"aligncenter\" width=\"556\"]<img class=\"wp-image-265612 size-full\" src=\"https://www.dummies.com/wp-content/uploads/devops_cycle.jpg\" alt=\"DevOps cycle\" width=\"556\" height=\"312\" /> ©Shutterstock/Phakawan Wongpetanan[/caption]\r\n\r\nAs a culture, the DevOps philosophy views the development process in a holistic way, taking into account everyone involved: developers, testers, operations folks, security, and infrastructure engineers. DevOps doesn’t put any one of these groups above the others, nor does it rank the importance of their work. Instead, a DevOps company treats the entire team of engineers as critical to ensuring that the customer has the best experience possible.\r\n<h2 id=\"tab1\" >DevOps evolved from Agile</h2>\r\nIn 2001, 17 software engineers met and published the “<a href=\"https://agilemanifesto.org/\">Manifesto for Agile Software Development</a>,” which spelled out the 12 principles of Agile project management. This new workflow was a response to the frustration and inflexibility of teams working in a waterfall (linear) process.\r\n\r\nWorking within <a href=\"https://www.dummies.com/careers/project-management/the-12-agile-principles/\">Agile principles</a>, engineers aren’t required to adhere to original requirements or follow a linear development workflow in which each team hands off work to the next. Instead, they’re capable of adapting to the ever-changing needs of the business or the market, and sometimes even the changing technology and tools.\r\n\r\nAlthough Agile revolutionized software development in many ways, it failed to address the conflict between developers and operations specialists. Silos still developed around technical skill sets and specialties, and developers still handed off code to operations folks to deploy and support.\r\n\r\nIn 2008, Andrew Clay Shafer talked to Patrick Debois about his frustrations with the constant conflict between developers and operations folks. Together, they launched the first DevOpsDays event in Belgium to create a better — and more agile — way of approaching software development. This evolution of Agile took hold, and DevOps has since enabled companies around the globe to produce better software faster (and usually cheaper). DevOps is not a fad. It’s a widely accepted engineering philosophy.\r\n<h2 id=\"tab2\" >DevOps focuses on people</h2>\r\nAnyone who says that DevOps is all about tooling wants to sell you something. Above all else, DevOps is a philosophy that focuses on engineers and how they can better work together to produce great software. You could spend millions on every DevOps tool in the world and still be no closer to DevOps nirvana.\r\n\r\nInstead, focus on your most important engineering asset: engineers. Happy engineers make great software. How do you make happy engineers? Well, you create a collaborative work environment in which mutual respect, shared knowledge, and acknowledgement of hard work can thrive.\r\n<h2 id=\"tab3\" >Company culture is the foundation of DevOps</h2>\r\nYour company has a culture, even if it has been left to develop through inertia. That culture has more influence on your job satisfaction, productivity, and team velocity than you probably realize.\r\n\r\n<a href=\"https://www.dummies.com/business/management/pay-attention-to-invisible-forces-in-your-company-culture/\">Company culture</a> is best described as the unspoken expectations, behavior, and values of an organization. Culture is what tells your employees whether company leadership is open to new ideas. It’s what informs an employee’s decision as to whether to come forward with a problem or to sweep it under the rug.\r\n\r\nCulture is something to be designed and refined, not something to leave to chance. Though the actual definition varies from company to company and person to person, DevOps is a cultural approach to engineering at its core.\r\n\r\nA toxic company culture will kill your DevOps journey before it even starts. Even if your engineering team adopts a DevOps mindset, the attitudes and challenges of the larger company will bleed into your environment.\r\n\r\nWith DevOps, you avoid blame, grow trust, and focus on the customer. You give your engineers autonomy and empower them to do what they do best: engineer solutions. As you begin to implement DevOps, you give your engineers the time and space to adjust to it, allowing them the opportunities to get to know each other better and build rapport with engineers with different specialties.\r\n\r\nAlso, you measure progress and reward achievements. Never blame individuals for failures. Instead, the team should continuously improve together, and achievements should be celebrated and rewarded.\r\n<h2 id=\"tab4\" >You learn by observing your process and collecting data</h2>\r\nObserving your workflow without expectation is a powerful technique to use to see the successes and challenges of your workflow realistically. This observation is the only way to find the correct solution to the areas and issues that create bottlenecks in your processes.\r\n\r\nJust as with software, slapping some Kubernetes (or other new tool) on a problem doesn’t necessarily fix it. You have to know where the problems are before you go about fixing them. As you continue, you collect data — not to measure success or failure but to track the team’s performance. You determine what works, what doesn’t work, and what to try next time.\r\n<h2 id=\"tab5\" >Persuasion is key to DevOps adoption</h2>\r\nSelling the idea of DevOps to your leaders, peers, and employees isn’t easy. The process isn’t always intuitive to engineers, either. Shouldn’t a great idea simply sell itself? If only it were that easy. However, a key concept to always keep in mind as you implement DevOps is that it emphasizes people.\r\n\r\nhe so-called “soft skills” of communication and collaboration are central to your DevOps transformation. Persuading other folks on your team and within your company to adopt DevOps requires practicing <a href=\"https://www.dummies.com/business/human-resources/employee-engagement/how-good-communication-affects-employee-engagement/\">good communication skills</a>. Early conversations that you have with colleagues about DevOps can set you up for success down the road — especially when you hit an unexpected speed bump.\r\n<h2 id=\"tab6\" >Small, incremental changes are priceless in DevOps</h2>\r\nThe aspect of DevOps that emphasizes making changes in small, incremental ways has its roots in lean manufacturing, which embraces accelerated feedback, continuous improvement, and swifter time to market.\r\n\r\nWater is a good metaphor for DevOps transformations. Water is one of the world’s most powerful elements. Unless people are watching the flood waters rise in front of them, they think of it as relatively harmless. The Colorado River carved the Grand Canyon. Slowly, over millions of years, water cut through stone to expose nearly two billion years of soil and rock.\r\n\r\nYou can be like water. Be the slow, relentless change in your organization. Here’s that famous quote from a <a href=\"https://www.youtube.com/watch?v=cJMwBwFj5nQ\">Bruce Lee interview</a> to inspire you:\r\n\r\nBe formless, shapeless, like water. Now you put water into a cup, it becomes the cup. You put water into a bottle, it becomes the bottle. You put it in a teapot, it becomes the teapot. Now, water can flow or it can crash. Be water, my friend.\r\n\r\nMaking incremental changes means, for example, that you find a problem and you fix that problem. Then you fix the next one. You don’t take on too much too fast and you don’t pick every battle to fight. You understand that some fights aren’t worth the energy or social capital that they can cost you.\r\n\r\nUltimately, DevOps isn’t a list of steps you can take, but is rather an approach that should guide the decisions you make as you develop.","blurb":"","authors":[{"authorId":30388,"name":"Emily Freeman","slug":"emily-freeman","description":" <p><b>Emily Freeman</b> is a technologist and storyteller who helps engineering teams improve their velocity. She believes the biggest challenges facing engineers aren&#39;t technical, but human. She&#39;s worked with both cutting&#45;edge startups and some of the largest technology providers in the world. Emily is currently a Senior Cloud Advocate at Microsoft and a frequent keynote speaker at technology events. ","hasArticle":false,"_links":{"self":"https://dummies-api.dummies.com/v2/authors/30388"}}],"primaryCategoryTaxonomy":{"categoryId":33610,"title":"General Programming & Web Design","slug":"general-programming-web-design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"}},"secondaryCategoryTaxonomy":{"categoryId":0,"title":null,"slug":null,"_links":null},"tertiaryCategoryTaxonomy":{"categoryId":0,"title":null,"slug":null,"_links":null},"trendingArticles":[{"articleId":192609,"title":"How to Pray the Rosary: A Comprehensive Guide","slug":"how-to-pray-the-rosary","categoryList":["body-mind-spirit","religion-spirituality","christianity","catholicism"],"_links":{"self":"/articles/192609"}},{"articleId":284787,"title":"What Your Society Says About You","slug":"what-your-society-says-about-you","categoryList":["academics-the-arts","humanities"],"_links":{"self":"/articles/284787"}},{"articleId":230957,"title":"Nikon D3400 For Dummies Cheat Sheet","slug":"nikon-d3400-dummies-cheat-sheet","categoryList":["home-auto-hobbies","photography"],"_links":{"self":"/articles/230957"}},{"articleId":208741,"title":"Kabbalah For Dummies Cheat Sheet","slug":"kabbalah-for-dummies-cheat-sheet","categoryList":["body-mind-spirit","religion-spirituality","kabbalah"],"_links":{"self":"/articles/208741"}},{"articleId":299133,"title":"ChatGPT For Dummies Cheat Sheet","slug":"chatgpt-for-dummies-cheat-sheet","categoryList":["technology","information-technology","ai","general-ai"],"_links":{"self":"/articles/299133"}}],"inThisArticle":[{"label":"DevOps evolved from Agile","target":"#tab1"},{"label":"DevOps focuses on people","target":"#tab2"},{"label":"Company culture is the foundation of DevOps","target":"#tab3"},{"label":"You learn by observing your process and collecting data","target":"#tab4"},{"label":"Persuasion is key to DevOps adoption","target":"#tab5"},{"label":"Small, incremental changes are priceless in DevOps","target":"#tab6"}],"relatedArticles":{"fromBook":[{"articleId":265680,"title":"Using DevOps To Improve Engineering","slug":"tips-for-improving-engineering-performance-with-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265680"}},{"articleId":265675,"title":"How To Automate DevOps in the Cloud","slug":"make-more-of-your-cloud-tools-automating-devops-in-the-cloud","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265675"}},{"articleId":265672,"title":"How To Choose a Cloud Service Provider for DevOps","slug":"choosing-the-best-cloud-service-provider-features-and-tools-for-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265672"}},{"articleId":265664,"title":"How to Form DevOps Teams in Your Organization","slug":"how-to-form-devops-teams-in-your-organization","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265664"}},{"articleId":265656,"title":"Moving to DevOps Processes: From a Line to a Circuit","slug":"moving-to-devops-processes-from-a-line-to-a-circuit","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265656"}}],"fromCategory":[{"articleId":299575,"title":"HTML, CSS, & JavaScript All-in-One For Dummies Cheat Sheet","slug":"html-css-javascript-all-in-one-for-dummies-cheat-sheet","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/299575"}},{"articleId":265680,"title":"Using DevOps To Improve Engineering","slug":"tips-for-improving-engineering-performance-with-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265680"}},{"articleId":265675,"title":"How To Automate DevOps in the Cloud","slug":"make-more-of-your-cloud-tools-automating-devops-in-the-cloud","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265675"}},{"articleId":265672,"title":"How To Choose a Cloud Service Provider for DevOps","slug":"choosing-the-best-cloud-service-provider-features-and-tools-for-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265672"}},{"articleId":265664,"title":"How to Form DevOps Teams in Your Organization","slug":"how-to-form-devops-teams-in-your-organization","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265664"}}]},"hasRelatedBookFromSearch":false,"relatedBook":{"bookId":281681,"slug":"devops-for-dummies","isbn":"9781119552222","categoryList":["technology","programming-web-design","general-programming-web-design"],"amazon":{"default":"https://www.amazon.com/gp/product/1119552222/ref=as_li_tl?ie=UTF8&tag=wiley01-20","ca":"https://www.amazon.ca/gp/product/1119552222/ref=as_li_tl?ie=UTF8&tag=wiley01-20","indigo_ca":"http://www.tkqlhce.com/click-9208661-13710633?url=https://www.chapters.indigo.ca/en-ca/books/product/1119552222-item.html&cjsku=978111945484","gb":"https://www.amazon.co.uk/gp/product/1119552222/ref=as_li_tl?ie=UTF8&tag=wiley01-20","de":"https://www.amazon.de/gp/product/1119552222/ref=as_li_tl?ie=UTF8&tag=wiley01-20"},"image":{"src":"https://www.dummies.com/wp-content/uploads/devops-for-dummies-cover-9781119552222-203x255.jpg","width":203,"height":255},"title":"DevOps For Dummies","testBankPinActivationLink":"","bookOutOfPrint":false,"authorsInfo":"<p><b data-author-id=\"30388\">Emily Freeman</b> is a technologist and storyteller who helps engineering teams improve their velocity. She believes the biggest challenges facing engineers aren't technical, but human. She's worked with both cutting-edge startups and some of the largest technology providers in the world. Emily is currently a Senior Cloud Advocate at Microsoft and a frequent keynote speaker at technology events. </p>","authors":[{"authorId":30388,"name":"Emily Freeman","slug":"emily-freeman","description":" <p><b>Emily Freeman</b> is a technologist and storyteller who helps engineering teams improve their velocity. She believes the biggest challenges facing engineers aren&#39;t technical, but human. She&#39;s worked with both cutting&#45;edge startups and some of the largest technology providers in the world. Emily is currently a Senior Cloud Advocate at Microsoft and a frequent keynote speaker at technology events. ","hasArticle":false,"_links":{"self":"https://dummies-api.dummies.com/v2/authors/30388"}}],"_links":{"self":"https://dummies-api.dummies.com/v2/books/"}},"collections":[],"articleAds":{"footerAd":"<div class=\"du-ad-region row\" id=\"article_page_adhesion_ad\"><div class=\"du-ad-unit col-md-12\" data-slot-id=\"article_page_adhesion_ad\" data-refreshed=\"false\" \r\n data-target = \"[{&quot;key&quot;:&quot;cat&quot;,&quot;values&quot;:[&quot;technology&quot;,&quot;programming-web-design&quot;,&quot;general-programming-web-design&quot;]},{&quot;key&quot;:&quot;isbn&quot;,&quot;values&quot;:[&quot;9781119552222&quot;]}]\" id=\"du-slot-64dd0ef2deea9\"></div></div>","rightAd":"<div class=\"du-ad-region row\" id=\"article_page_right_ad\"><div class=\"du-ad-unit col-md-12\" data-slot-id=\"article_page_right_ad\" data-refreshed=\"false\" \r\n data-target = \"[{&quot;key&quot;:&quot;cat&quot;,&quot;values&quot;:[&quot;technology&quot;,&quot;programming-web-design&quot;,&quot;general-programming-web-design&quot;]},{&quot;key&quot;:&quot;isbn&quot;,&quot;values&quot;:[&quot;9781119552222&quot;]}]\" id=\"du-slot-64dd0ef2df611\"></div></div>"},"articleType":{"articleType":"Articles","articleList":null,"content":null,"videoInfo":{"videoId":null,"name":null,"accountId":null,"playerId":null,"thumbnailUrl":null,"description":null,"uploadDate":null}},"sponsorship":{"sponsorshipPage":false,"backgroundImage":{"src":null,"width":0,"height":0},"brandingLine":"","brandingLink":"","brandingLogo":{"src":null,"width":0,"height":0},"sponsorAd":"","sponsorEbookTitle":"","sponsorEbookLink":"","sponsorEbookImage":{"src":null,"width":0,"height":0}},"primaryLearningPath":"Advance","lifeExpectancy":"Two years","lifeExpectancySetFrom":"2023-08-16T00:00:00+00:00","dummiesForKids":"no","sponsoredContent":"no","adInfo":"","adPairKey":[]},"status":"publish","visibility":"public","articleId":265584},{"headers":{"creationTime":"2019-11-12T17:48:55+00:00","modifiedTime":"2023-08-16T16:14:34+00:00","timestamp":"2023-08-16T18:01:22+00:00"},"data":{"breadcrumbs":[{"name":"Technology","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33512"},"slug":"technology","categoryId":33512},{"name":"Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33592"},"slug":"programming-web-design","categoryId":33592},{"name":"General Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"},"slug":"general-programming-web-design","categoryId":33610}],"title":"How to Form DevOps Teams in Your Organization","strippedTitle":"how to form devops teams in your organization","slug":"how-to-form-devops-teams-in-your-organization","canonicalUrl":"","seo":{"metaDescription":"Want to know how to structure teams in your organization to succeed with DevOps? FInd out with this guide from Dummies.com.","noIndex":0,"noFollow":0},"content":"<a href=\"https://www.dummies.com/article/technology/programming-web-design/general-programming-web-design/what-is-devops-265584/\">DevOps</a> has no ideal organizational structure. Like everything in tech, the “right” answer concerning your company’s structure depends on your unique situation: your current team, your plans for growth, your team’s size, your team’s available skill sets, your product, and on and on.\r\n\r\nAligning your DevOps team’s vision should be your first mission. Only after you’ve removed the low-hanging fruit of obvious friction between people should you begin rearranging teams. Even then, allow some flexibility.\r\n\r\nIf you approach a reorganization with openness and flexibility, you send the message that you’re willing to listen and give your team autonomy — a basic tenet of DevOps.\r\n\r\nYou may already have a Python or Go developer who’s passionate and curious about infrastructure and configuration management. Maybe that person can switch into a more ops-focused role in your new organization. Put yourself in that person’s shoes. Wouldn’t you be loyal to an organization that took a risk on you? Wouldn’t you be excited to work hard? And that excitement is contagious.\r\n\r\nHere, you learn how to align the teams you already have in place, dedicate a team to DevOps practices, and create cross-functional teams — all approaches from which you can choose to orient your teams toward DevOps.\r\n<p class=\"article-tips remember\">You can choose one approach and allow it to evolve from there. Don’t feel that this decision is permanent and unmovable. DevOps focuses on rapid iteration and continual improvement and that’s the <a href=\"https://www.dummies.com/article/technology/programming-web-design/general-programming-web-design/why-devops-matters-11-ways-devops-benefits-your-organization-265626/\">prime benefit of this methodology</a>. That philosophy applies to teams as well.</p>\r\n\r\n<h2 id=\"tab1\" >Aligning functional teams for DevOps</h2>\r\nIn this approach, you create strong collaboration between your traditional development and operations teams. The teams remain functional in nature — one focused on ops, one focused on code. But their incentives are aligned. They will grow to trust each other and work as two teams yoked together.\r\n\r\nFor smaller engineering organizations, aligning functional teams is a solid choice. Even as a first step, this alignment can reinforce the positive changes you’ve made so far. You typically start the alignment by taking the time to build rapport. Ensure that each person on both teams not only intellectually understands the other team’s role and constraints but also empathizes with the pain points.\r\n\r\nFor this approach, it’s a good idea to promote a policy of “You build it, you support it.” This policy means that everyone — developer and operations person alike —participates in your on-call rotation.\r\n\r\nThis participation allows developers to start understanding the frustrations of being called in the middle of the night and struggling while foggy-eyed and caffeine-deprived to fix a bug that’s impacting customers. Operations folks also begin to trust your developers’ commitment to their work. Even this small change builds an extraordinary amount of trust.\r\n<p class=\"article-tips remember\">A word of caution: If developers fight hard against being on call, a larger problem is at play in your organization. The pushback is not uncommon because being on call is wildly different from their normal day-to-day responsibilities. The pushback often comes from a place of discomfort and fear. You can help mitigate this reaction by addressing the fact that your developers may not know what to do the first few times they’re on call.</p>\r\nThey may not be familiar with the infrastructure, and that’s okay. Encourage them to escalate the incident and page someone with more experience. Finally, create a runbook with common alerts and what actions to take. Providing this resource will help to assuage some fear until they begin to get the hang of things.\r\n\r\nAnother tactic to help spur collaboration to form a more cohesive DevOps team is to introduce a day of shadowing, with each team “trading” a colleague. The traded person simply shadows someone else on the team, sits at their desk (or in their area), and assists in their day-to-day responsibilities. They may help with work, discuss problems as a team (pair programming), and learn more about the system from a different point of view. This style of teaching isn’t prescriptive.\r\n\r\nInstead, it lends itself to curiosity and building trust. Colleagues should feel free to ask questions — even the “stupid” variety — and learn freely. No performance expectations exist. The time should be spent simply getting to know each other and appreciating each other’s work. Any productive output is a bonus!\r\n\r\nIn this alignment approach, both teams absolutely must be involved in the planning, architecture, and development processes. They must share responsibilities and accountability throughout the entire development life cycle.\r\n<h2 id=\"tab2\" >Dedicating a DevOps team</h2>\r\nA dedicated DevOps team is more an evolution of the Sys Admin than a true DevOps team. It is an operations team with a mix of skill sets. Perhaps some engineers are familiar with configuration management, others IaC (infrastructure as code) and perhaps others are experts in containers or cloud native infrastructure or CI/CD (continuous integration and continuous delivery/development).\r\n<p class=\"article-tips warning\">If you think that putting a group of humans into an official team is enough to break down silos, you’re mistaken. Humans are more complex than spreadsheets. Hierarchy doesn’t mean anything if your silos have entered a phase in which they are unhealthy and tribal. In toxic cultures, a strongman style of leadership can emerge that is almost always followed by people taking sides. If you see this on your own team, you have work to do.</p>\r\nAlthough any approach may work for your team, this <a href=\"https://www.dummies.com/article/technology/programming-web-design/general-programming-web-design/top-10-devops-pitfalls-why-your-software-projects-fail-265616/\">dedicated team approach is the one you should think through the most.</a> The greatest disadvantage of a dedicated DevOps team is that it easily becomes a continuation of traditional engineering teams without acknowledging the need to align teams, reduce silos, and remove friction. The risks of continuing friction (or creating more) are high in this approach. Tread carefully to ensure you’re choosing this team organization for a specific reason.\r\n\r\nThe <a href=\"https://www.dummies.com/article/technology/programming-web-design/general-programming-web-design/why-devops-matters-11-ways-devops-benefits-your-organization-265626/\">benefits of this DevOps approach</a> is having a dedicated team to address major infrastructure changes or adjustments. If you’re struggling with operations-centered issues that are slowing down your deployments or causing site reliability concerns, this might be a good approach — even temporarily.\r\n\r\nA dedicated team if you’re planning on moving a legacy application to the cloud. But rather than calling this team a <a href=\"https://www.dummies.com/article/technology/programming-web-design/general-programming-web-design/interview-techniques-for-building-a-devops-team-getting-the-right-technical-skills-265651/\">DevOps team</a>, you might try labeling it an automation team.\r\n\r\nThis dedicated group of engineers can focus completely on ensuring that you’ve set up the correct infrastructure and automation tools. You can then proceed with confidence that your application will land in the cloud without major disruption. Still, this approach is temporary. If you keep the team isolated for too long, you risk going down a slippery slope from rapid growth to embedded silo.\r\n<h2 id=\"tab3\" >Creating cross-functional product teams for DevOps</h2>\r\nA <em>cross-functional team</em> is a team formed around a single product focus. Rather than have separate teams for development, user interface and user experience (UI/UX), quality assurance (QA), and operations, you combine people from each of these teams.\r\n\r\nA cross-functional team works best in medium to large organizations. You need enough developers and operations folks to fill in the positions of each product team. Each cross-functional team looks a bit different.\r\n\r\nIt’s a good idea to have, at a minimum, one operations person per team. Do not ask an operations person to split their responsibilities between two teams. This scenario is unfair to them and will quickly create friction between the two product teams. Give your engineers the privilege of being able to focus and dig deep into their work.\r\n<p class=\"article-tips remember\">If you’re organization is still small or in the startup phase, you can think of your entire engineering organization as a cross-functional team. Keep it small and focused. When you begin to approach having 10–12 people, start thinking about how you can reorganize engineers.</p>\r\nThe image below shows what your cross-functional teams could look like. But keep in mind that their composition varies from team to team and from organization to organization. Some products have a strong design focus, which means that you may have multiple designers in each team. Other products are technical ones designed for engineers who don’t care much for aesthetics. Teams for that kind of product may have one designer — or none at all.\r\n\r\n[caption id=\"attachment_265665\" align=\"aligncenter\" width=\"342\"]<img class=\"wp-image-265665 size-full\" src=\"https://www.dummies.com/wp-content/uploads/devops-product-team.png\" alt=\"DevOps product team\" width=\"342\" height=\"450\" /> Forming product teams.[/caption]\r\n\r\nIf your organization is large enough, you can certainly create multiple teams using different DevOps ideas and approaches. Remember that your organization is unique. Feel empowered to make decisions based on your current circumstances and adjust from there. Here are some possible combinations of various types of product teams.\r\n<ul>\r\n \t<li><strong>Legacy Product Team:</strong> Project Manager (PM), Front-end Developer, Back-end Developer, Back-end Developer, Site Reliability Engineer (SRE), Automation Engineer, QA Tester</li>\r\n \t<li><strong>Cloud Transformation Team:</strong> SRE, SRE, Operations Engineer, Automation Engineer, Back-end Developer</li>\r\n \t<li><strong>MVP Team:</strong> PM, Designer, UX Engineer, Front-end Developer, Backend Developer, Operations Engineer</li>\r\n</ul>\r\nThe downside of a cross-functional product team is that engineers lose the camaraderie of engineers with their same skill sets and passions. Having a group of like-minded individuals with whom you can socialize and from whom you can learn is an important aspect of job satisfaction. Check out a solution to this issue below.\r\n\r\nAs shown below, you can give your engineers dedicated work time to spend with their tribes. You can do something as generous as paying for lunch once every week so that they can get together and talk. Or you might provide 10–20 percent of work time for them to work on projects as a tribe. Either way, you need your engineers to stay sharp.\r\n\r\nTribes share industry knowledge, provide sound feedback, and support career growth. Provide time for your engineers to learn from people with whom they share education, experience, and goals. This time provides a safe place where they can relax and feel at home.\r\n\r\n[caption id=\"attachment_265666\" align=\"aligncenter\" width=\"494\"]<img class=\"wp-image-265666 size-full\" src=\"https://www.dummies.com/wp-content/uploads/devops-tribes.png\" alt=\"DevOps tribes\" width=\"494\" height=\"450\" /> Making space for tribes.[/caption]\r\n\r\nNo amount of perfect finagling will overcome the shortfalls of a bad <a href=\"https://www.dummies.com/article/business-careers-money/business/general-business/assess-your-companys-mindset-148007/\">organizational culture</a>. But if you’ve paid attention so far and made the appropriate strides, the next step is to form teams that reinforce the cultural ideals you’ve already put in place.","description":"<a href=\"https://www.dummies.com/article/technology/programming-web-design/general-programming-web-design/what-is-devops-265584/\">DevOps</a> has no ideal organizational structure. Like everything in tech, the “right” answer concerning your company’s structure depends on your unique situation: your current team, your plans for growth, your team’s size, your team’s available skill sets, your product, and on and on.\r\n\r\nAligning your DevOps team’s vision should be your first mission. Only after you’ve removed the low-hanging fruit of obvious friction between people should you begin rearranging teams. Even then, allow some flexibility.\r\n\r\nIf you approach a reorganization with openness and flexibility, you send the message that you’re willing to listen and give your team autonomy — a basic tenet of DevOps.\r\n\r\nYou may already have a Python or Go developer who’s passionate and curious about infrastructure and configuration management. Maybe that person can switch into a more ops-focused role in your new organization. Put yourself in that person’s shoes. Wouldn’t you be loyal to an organization that took a risk on you? Wouldn’t you be excited to work hard? And that excitement is contagious.\r\n\r\nHere, you learn how to align the teams you already have in place, dedicate a team to DevOps practices, and create cross-functional teams — all approaches from which you can choose to orient your teams toward DevOps.\r\n<p class=\"article-tips remember\">You can choose one approach and allow it to evolve from there. Don’t feel that this decision is permanent and unmovable. DevOps focuses on rapid iteration and continual improvement and that’s the <a href=\"https://www.dummies.com/article/technology/programming-web-design/general-programming-web-design/why-devops-matters-11-ways-devops-benefits-your-organization-265626/\">prime benefit of this methodology</a>. That philosophy applies to teams as well.</p>\r\n\r\n<h2 id=\"tab1\" >Aligning functional teams for DevOps</h2>\r\nIn this approach, you create strong collaboration between your traditional development and operations teams. The teams remain functional in nature — one focused on ops, one focused on code. But their incentives are aligned. They will grow to trust each other and work as two teams yoked together.\r\n\r\nFor smaller engineering organizations, aligning functional teams is a solid choice. Even as a first step, this alignment can reinforce the positive changes you’ve made so far. You typically start the alignment by taking the time to build rapport. Ensure that each person on both teams not only intellectually understands the other team’s role and constraints but also empathizes with the pain points.\r\n\r\nFor this approach, it’s a good idea to promote a policy of “You build it, you support it.” This policy means that everyone — developer and operations person alike —participates in your on-call rotation.\r\n\r\nThis participation allows developers to start understanding the frustrations of being called in the middle of the night and struggling while foggy-eyed and caffeine-deprived to fix a bug that’s impacting customers. Operations folks also begin to trust your developers’ commitment to their work. Even this small change builds an extraordinary amount of trust.\r\n<p class=\"article-tips remember\">A word of caution: If developers fight hard against being on call, a larger problem is at play in your organization. The pushback is not uncommon because being on call is wildly different from their normal day-to-day responsibilities. The pushback often comes from a place of discomfort and fear. You can help mitigate this reaction by addressing the fact that your developers may not know what to do the first few times they’re on call.</p>\r\nThey may not be familiar with the infrastructure, and that’s okay. Encourage them to escalate the incident and page someone with more experience. Finally, create a runbook with common alerts and what actions to take. Providing this resource will help to assuage some fear until they begin to get the hang of things.\r\n\r\nAnother tactic to help spur collaboration to form a more cohesive DevOps team is to introduce a day of shadowing, with each team “trading” a colleague. The traded person simply shadows someone else on the team, sits at their desk (or in their area), and assists in their day-to-day responsibilities. They may help with work, discuss problems as a team (pair programming), and learn more about the system from a different point of view. This style of teaching isn’t prescriptive.\r\n\r\nInstead, it lends itself to curiosity and building trust. Colleagues should feel free to ask questions — even the “stupid” variety — and learn freely. No performance expectations exist. The time should be spent simply getting to know each other and appreciating each other’s work. Any productive output is a bonus!\r\n\r\nIn this alignment approach, both teams absolutely must be involved in the planning, architecture, and development processes. They must share responsibilities and accountability throughout the entire development life cycle.\r\n<h2 id=\"tab2\" >Dedicating a DevOps team</h2>\r\nA dedicated DevOps team is more an evolution of the Sys Admin than a true DevOps team. It is an operations team with a mix of skill sets. Perhaps some engineers are familiar with configuration management, others IaC (infrastructure as code) and perhaps others are experts in containers or cloud native infrastructure or CI/CD (continuous integration and continuous delivery/development).\r\n<p class=\"article-tips warning\">If you think that putting a group of humans into an official team is enough to break down silos, you’re mistaken. Humans are more complex than spreadsheets. Hierarchy doesn’t mean anything if your silos have entered a phase in which they are unhealthy and tribal. In toxic cultures, a strongman style of leadership can emerge that is almost always followed by people taking sides. If you see this on your own team, you have work to do.</p>\r\nAlthough any approach may work for your team, this <a href=\"https://www.dummies.com/article/technology/programming-web-design/general-programming-web-design/top-10-devops-pitfalls-why-your-software-projects-fail-265616/\">dedicated team approach is the one you should think through the most.</a> The greatest disadvantage of a dedicated DevOps team is that it easily becomes a continuation of traditional engineering teams without acknowledging the need to align teams, reduce silos, and remove friction. The risks of continuing friction (or creating more) are high in this approach. Tread carefully to ensure you’re choosing this team organization for a specific reason.\r\n\r\nThe <a href=\"https://www.dummies.com/article/technology/programming-web-design/general-programming-web-design/why-devops-matters-11-ways-devops-benefits-your-organization-265626/\">benefits of this DevOps approach</a> is having a dedicated team to address major infrastructure changes or adjustments. If you’re struggling with operations-centered issues that are slowing down your deployments or causing site reliability concerns, this might be a good approach — even temporarily.\r\n\r\nA dedicated team if you’re planning on moving a legacy application to the cloud. But rather than calling this team a <a href=\"https://www.dummies.com/article/technology/programming-web-design/general-programming-web-design/interview-techniques-for-building-a-devops-team-getting-the-right-technical-skills-265651/\">DevOps team</a>, you might try labeling it an automation team.\r\n\r\nThis dedicated group of engineers can focus completely on ensuring that you’ve set up the correct infrastructure and automation tools. You can then proceed with confidence that your application will land in the cloud without major disruption. Still, this approach is temporary. If you keep the team isolated for too long, you risk going down a slippery slope from rapid growth to embedded silo.\r\n<h2 id=\"tab3\" >Creating cross-functional product teams for DevOps</h2>\r\nA <em>cross-functional team</em> is a team formed around a single product focus. Rather than have separate teams for development, user interface and user experience (UI/UX), quality assurance (QA), and operations, you combine people from each of these teams.\r\n\r\nA cross-functional team works best in medium to large organizations. You need enough developers and operations folks to fill in the positions of each product team. Each cross-functional team looks a bit different.\r\n\r\nIt’s a good idea to have, at a minimum, one operations person per team. Do not ask an operations person to split their responsibilities between two teams. This scenario is unfair to them and will quickly create friction between the two product teams. Give your engineers the privilege of being able to focus and dig deep into their work.\r\n<p class=\"article-tips remember\">If you’re organization is still small or in the startup phase, you can think of your entire engineering organization as a cross-functional team. Keep it small and focused. When you begin to approach having 10–12 people, start thinking about how you can reorganize engineers.</p>\r\nThe image below shows what your cross-functional teams could look like. But keep in mind that their composition varies from team to team and from organization to organization. Some products have a strong design focus, which means that you may have multiple designers in each team. Other products are technical ones designed for engineers who don’t care much for aesthetics. Teams for that kind of product may have one designer — or none at all.\r\n\r\n[caption id=\"attachment_265665\" align=\"aligncenter\" width=\"342\"]<img class=\"wp-image-265665 size-full\" src=\"https://www.dummies.com/wp-content/uploads/devops-product-team.png\" alt=\"DevOps product team\" width=\"342\" height=\"450\" /> Forming product teams.[/caption]\r\n\r\nIf your organization is large enough, you can certainly create multiple teams using different DevOps ideas and approaches. Remember that your organization is unique. Feel empowered to make decisions based on your current circumstances and adjust from there. Here are some possible combinations of various types of product teams.\r\n<ul>\r\n \t<li><strong>Legacy Product Team:</strong> Project Manager (PM), Front-end Developer, Back-end Developer, Back-end Developer, Site Reliability Engineer (SRE), Automation Engineer, QA Tester</li>\r\n \t<li><strong>Cloud Transformation Team:</strong> SRE, SRE, Operations Engineer, Automation Engineer, Back-end Developer</li>\r\n \t<li><strong>MVP Team:</strong> PM, Designer, UX Engineer, Front-end Developer, Backend Developer, Operations Engineer</li>\r\n</ul>\r\nThe downside of a cross-functional product team is that engineers lose the camaraderie of engineers with their same skill sets and passions. Having a group of like-minded individuals with whom you can socialize and from whom you can learn is an important aspect of job satisfaction. Check out a solution to this issue below.\r\n\r\nAs shown below, you can give your engineers dedicated work time to spend with their tribes. You can do something as generous as paying for lunch once every week so that they can get together and talk. Or you might provide 10–20 percent of work time for them to work on projects as a tribe. Either way, you need your engineers to stay sharp.\r\n\r\nTribes share industry knowledge, provide sound feedback, and support career growth. Provide time for your engineers to learn from people with whom they share education, experience, and goals. This time provides a safe place where they can relax and feel at home.\r\n\r\n[caption id=\"attachment_265666\" align=\"aligncenter\" width=\"494\"]<img class=\"wp-image-265666 size-full\" src=\"https://www.dummies.com/wp-content/uploads/devops-tribes.png\" alt=\"DevOps tribes\" width=\"494\" height=\"450\" /> Making space for tribes.[/caption]\r\n\r\nNo amount of perfect finagling will overcome the shortfalls of a bad <a href=\"https://www.dummies.com/article/business-careers-money/business/general-business/assess-your-companys-mindset-148007/\">organizational culture</a>. But if you’ve paid attention so far and made the appropriate strides, the next step is to form teams that reinforce the cultural ideals you’ve already put in place.","blurb":"","authors":[{"authorId":30388,"name":"Emily Freeman","slug":"emily-freeman","description":" <p><b>Emily Freeman</b> is a technologist and storyteller who helps engineering teams improve their velocity. She believes the biggest challenges facing engineers aren&#39;t technical, but human. She&#39;s worked with both cutting&#45;edge startups and some of the largest technology providers in the world. Emily is currently a Senior Cloud Advocate at Microsoft and a frequent keynote speaker at technology events. ","hasArticle":false,"_links":{"self":"https://dummies-api.dummies.com/v2/authors/30388"}}],"primaryCategoryTaxonomy":{"categoryId":33610,"title":"General Programming & Web Design","slug":"general-programming-web-design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"}},"secondaryCategoryTaxonomy":{"categoryId":0,"title":null,"slug":null,"_links":null},"tertiaryCategoryTaxonomy":{"categoryId":0,"title":null,"slug":null,"_links":null},"trendingArticles":[{"articleId":192609,"title":"How to Pray the Rosary: A Comprehensive Guide","slug":"how-to-pray-the-rosary","categoryList":["body-mind-spirit","religion-spirituality","christianity","catholicism"],"_links":{"self":"/articles/192609"}},{"articleId":284787,"title":"What Your Society Says About You","slug":"what-your-society-says-about-you","categoryList":["academics-the-arts","humanities"],"_links":{"self":"/articles/284787"}},{"articleId":230957,"title":"Nikon D3400 For Dummies Cheat Sheet","slug":"nikon-d3400-dummies-cheat-sheet","categoryList":["home-auto-hobbies","photography"],"_links":{"self":"/articles/230957"}},{"articleId":208741,"title":"Kabbalah For Dummies Cheat Sheet","slug":"kabbalah-for-dummies-cheat-sheet","categoryList":["body-mind-spirit","religion-spirituality","kabbalah"],"_links":{"self":"/articles/208741"}},{"articleId":299133,"title":"ChatGPT For Dummies Cheat Sheet","slug":"chatgpt-for-dummies-cheat-sheet","categoryList":["technology","information-technology","ai","general-ai"],"_links":{"self":"/articles/299133"}}],"inThisArticle":[{"label":"Aligning functional teams for DevOps","target":"#tab1"},{"label":"Dedicating a DevOps team","target":"#tab2"},{"label":"Creating cross-functional product teams for DevOps","target":"#tab3"}],"relatedArticles":{"fromBook":[{"articleId":265680,"title":"Using DevOps To Improve Engineering","slug":"tips-for-improving-engineering-performance-with-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265680"}},{"articleId":265675,"title":"How To Automate DevOps in the Cloud","slug":"make-more-of-your-cloud-tools-automating-devops-in-the-cloud","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265675"}},{"articleId":265672,"title":"How To Choose a Cloud Service Provider for DevOps","slug":"choosing-the-best-cloud-service-provider-features-and-tools-for-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265672"}},{"articleId":265656,"title":"Moving to DevOps Processes: From a Line to a Circuit","slug":"moving-to-devops-processes-from-a-line-to-a-circuit","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265656"}},{"articleId":265651,"title":"Interview Techniques for Building a DevOps Team: Getting the Right Technical Skills","slug":"interview-techniques-for-building-a-devops-team-getting-the-right-technical-skills","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265651"}}],"fromCategory":[{"articleId":299575,"title":"HTML, CSS, & JavaScript All-in-One For Dummies Cheat Sheet","slug":"html-css-javascript-all-in-one-for-dummies-cheat-sheet","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/299575"}},{"articleId":265680,"title":"Using DevOps To Improve Engineering","slug":"tips-for-improving-engineering-performance-with-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265680"}},{"articleId":265675,"title":"How To Automate DevOps in the Cloud","slug":"make-more-of-your-cloud-tools-automating-devops-in-the-cloud","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265675"}},{"articleId":265672,"title":"How To Choose a Cloud Service Provider for DevOps","slug":"choosing-the-best-cloud-service-provider-features-and-tools-for-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265672"}},{"articleId":265656,"title":"Moving to DevOps Processes: From a Line to a Circuit","slug":"moving-to-devops-processes-from-a-line-to-a-circuit","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265656"}}]},"hasRelatedBookFromSearch":false,"relatedBook":{"bookId":281681,"slug":"devops-for-dummies","isbn":"9781119552222","categoryList":["technology","programming-web-design","general-programming-web-design"],"amazon":{"default":"https://www.amazon.com/gp/product/1119552222/ref=as_li_tl?ie=UTF8&tag=wiley01-20","ca":"https://www.amazon.ca/gp/product/1119552222/ref=as_li_tl?ie=UTF8&tag=wiley01-20","indigo_ca":"http://www.tkqlhce.com/click-9208661-13710633?url=https://www.chapters.indigo.ca/en-ca/books/product/1119552222-item.html&cjsku=978111945484","gb":"https://www.amazon.co.uk/gp/product/1119552222/ref=as_li_tl?ie=UTF8&tag=wiley01-20","de":"https://www.amazon.de/gp/product/1119552222/ref=as_li_tl?ie=UTF8&tag=wiley01-20"},"image":{"src":"https://www.dummies.com/wp-content/uploads/devops-for-dummies-cover-9781119552222-203x255.jpg","width":203,"height":255},"title":"DevOps For Dummies","testBankPinActivationLink":"","bookOutOfPrint":false,"authorsInfo":"<p><b data-author-id=\"30388\">Emily Freeman</b> is a technologist and storyteller who helps engineering teams improve their velocity. She believes the biggest challenges facing engineers aren't technical, but human. She's worked with both cutting-edge startups and some of the largest technology providers in the world. Emily is currently a Senior Cloud Advocate at Microsoft and a frequent keynote speaker at technology events. </p>","authors":[{"authorId":30388,"name":"Emily Freeman","slug":"emily-freeman","description":" <p><b>Emily Freeman</b> is a technologist and storyteller who helps engineering teams improve their velocity. She believes the biggest challenges facing engineers aren&#39;t technical, but human. She&#39;s worked with both cutting&#45;edge startups and some of the largest technology providers in the world. Emily is currently a Senior Cloud Advocate at Microsoft and a frequent keynote speaker at technology events. ","hasArticle":false,"_links":{"self":"https://dummies-api.dummies.com/v2/authors/30388"}}],"_links":{"self":"https://dummies-api.dummies.com/v2/books/"}},"collections":[],"articleAds":{"footerAd":"<div class=\"du-ad-region row\" id=\"article_page_adhesion_ad\"><div class=\"du-ad-unit col-md-12\" data-slot-id=\"article_page_adhesion_ad\" data-refreshed=\"false\" \r\n data-target = \"[{&quot;key&quot;:&quot;cat&quot;,&quot;values&quot;:[&quot;technology&quot;,&quot;programming-web-design&quot;,&quot;general-programming-web-design&quot;]},{&quot;key&quot;:&quot;isbn&quot;,&quot;values&quot;:[&quot;9781119552222&quot;]}]\" id=\"du-slot-64dd0ef2d6485\"></div></div>","rightAd":"<div class=\"du-ad-region row\" id=\"article_page_right_ad\"><div class=\"du-ad-unit col-md-12\" data-slot-id=\"article_page_right_ad\" data-refreshed=\"false\" \r\n data-target = \"[{&quot;key&quot;:&quot;cat&quot;,&quot;values&quot;:[&quot;technology&quot;,&quot;programming-web-design&quot;,&quot;general-programming-web-design&quot;]},{&quot;key&quot;:&quot;isbn&quot;,&quot;values&quot;:[&quot;9781119552222&quot;]}]\" id=\"du-slot-64dd0ef2d6ba7\"></div></div>"},"articleType":{"articleType":"Articles","articleList":null,"content":null,"videoInfo":{"videoId":null,"name":null,"accountId":null,"playerId":null,"thumbnailUrl":null,"description":null,"uploadDate":null}},"sponsorship":{"sponsorshipPage":false,"backgroundImage":{"src":null,"width":0,"height":0},"brandingLine":"","brandingLink":"","brandingLogo":{"src":null,"width":0,"height":0},"sponsorAd":"","sponsorEbookTitle":"","sponsorEbookLink":"","sponsorEbookImage":{"src":null,"width":0,"height":0}},"primaryLearningPath":"Advance","lifeExpectancy":"Two years","lifeExpectancySetFrom":"2023-08-16T00:00:00+00:00","dummiesForKids":"no","sponsoredContent":"no","adInfo":"","adPairKey":[]},"status":"publish","visibility":"public","articleId":265664},{"headers":{"creationTime":"2018-06-14T17:52:16+00:00","modifiedTime":"2023-08-02T13:52:55+00:00","timestamp":"2023-08-02T15:01:02+00:00"},"data":{"breadcrumbs":[{"name":"Technology","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33512"},"slug":"technology","categoryId":33512},{"name":"Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33592"},"slug":"programming-web-design","categoryId":33592},{"name":"General Programming & Web Design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"},"slug":"general-programming-web-design","categoryId":33610}],"title":"Using XMLHttpRequest Class Properties","strippedTitle":"using xmlhttprequest class properties","slug":"using-xmlhttprequest-class-properties","canonicalUrl":"","seo":{"metaDescription":"The XMLHttpRequest object contains several class properties that you’ll need to know about to handle the HTTP response from the web server. The XMLHttpRequest C","noIndex":0,"noFollow":0},"content":"The <code>XMLHttpRequest</code> object contains several class properties that you’ll need to know about to handle the HTTP response from the web server.\r\n<h2 id=\"tab1\" >The XMLHttpRequest Class Properties</h2>\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td><code>Property</code></td>\r\n<td>Description</td>\r\n</tr>\r\n<tr>\r\n<td><code>onreadystatechange</code></td>\r\n<td>Defines a callback function that the browser triggers when the HTTP connection changes state</td>\r\n</tr>\r\n<tr>\r\n<td><code>readyState</code></td>\r\n<td>Contains the connection status of the HTTP connection</td>\r\n</tr>\r\n<tr>\r\n<td><code>responseText</code></td>\r\n<td>Contains the response sent by the web server in text format</td>\r\n</tr>\r\n<tr>\r\n<td><code>responseXML</code></td>\r\n<td>Contains the response sent by the web server in XML format</td>\r\n</tr>\r\n<tr>\r\n<td><code>status</code></td>\r\n<td>Contains the numeric HTTP response code from the web server</td>\r\n</tr>\r\n<tr>\r\n<td><code>statusText</code></td>\r\n<td>Contains the text HTTP response string from the web server</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nAfter you use the <code>send()</code> method to send a connection request to a web server, the HTTP connection process works through five connection states, as tracked by the <code>readyState</code> property:\r\n<ul>\r\n \t<li><strong>State 0:</strong> The connection has not been initialized.</li>\r\n \t<li><strong>State 1:</strong> The connection to the server has been established.</li>\r\n \t<li><strong>State 2:</strong> The server received the HTTP request message.</li>\r\n \t<li><strong>State 3:</strong> The server is processing the HTTP request.</li>\r\n \t<li><strong>State 4:</strong> The server sent the response.</li>\r\n</ul>\r\nAs the HTTP connection works through these five connection states, the value contained in the <code>readyState</code> property changes. This causes the function you define in the <code>onreadystatechange</code> property to trigger for each state change. When the <code>readyState</code> property contains a value of 4, the final result from the request is available for processing.\r\n\r\nWhen the <code>readyState</code> property value is 4, you know the communication is complete, but you don’t know how it turned out. To determine that, you check the HTTP response returned by the web server using the <code>status</code> property. If the <code>status</code> property contains the 200 numeric HTTP result code, that indicates the connection was successful, and any data returned by the web server is available in the <code>responseText</code> and <code>responseXML</code> properties. If the status property contains some other HTTP result code (such as 403 or 404), that indicates there was an error communicating with the web server.\r\n\r\nBecause these values are standard, it has become somewhat common practice to start out the <code>onreadystatechange</code> callback function code checking for them:\r\n<pre class=\"code\">con.onreadystatechange = function() {\r\n if (this.readyState == 4 && this.status == 200) {\r\n var result = this.responseText;\r\n }\r\n};</pre>\r\nThe function only retrieves the data when the connection is complete and has returned valid data. This method of defining the callback function inline is referred to as creating an <em>anonymous callback function, </em>because you don’t define a name for the function. It only exists inside the <code>onreadystatechange</code> property, so you can’t reference it anywhere else in your JavaScript code.\r\n<p class=\"article-tips tip\">Although using an anonymous function is a popular way of defining the callback function, you can define the function as a standard named JavaScript function and then reference that function name in the <code>onreadystatechange</code> property.</p>","description":"The <code>XMLHttpRequest</code> object contains several class properties that you’ll need to know about to handle the HTTP response from the web server.\r\n<h2 id=\"tab1\" >The XMLHttpRequest Class Properties</h2>\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td><code>Property</code></td>\r\n<td>Description</td>\r\n</tr>\r\n<tr>\r\n<td><code>onreadystatechange</code></td>\r\n<td>Defines a callback function that the browser triggers when the HTTP connection changes state</td>\r\n</tr>\r\n<tr>\r\n<td><code>readyState</code></td>\r\n<td>Contains the connection status of the HTTP connection</td>\r\n</tr>\r\n<tr>\r\n<td><code>responseText</code></td>\r\n<td>Contains the response sent by the web server in text format</td>\r\n</tr>\r\n<tr>\r\n<td><code>responseXML</code></td>\r\n<td>Contains the response sent by the web server in XML format</td>\r\n</tr>\r\n<tr>\r\n<td><code>status</code></td>\r\n<td>Contains the numeric HTTP response code from the web server</td>\r\n</tr>\r\n<tr>\r\n<td><code>statusText</code></td>\r\n<td>Contains the text HTTP response string from the web server</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nAfter you use the <code>send()</code> method to send a connection request to a web server, the HTTP connection process works through five connection states, as tracked by the <code>readyState</code> property:\r\n<ul>\r\n \t<li><strong>State 0:</strong> The connection has not been initialized.</li>\r\n \t<li><strong>State 1:</strong> The connection to the server has been established.</li>\r\n \t<li><strong>State 2:</strong> The server received the HTTP request message.</li>\r\n \t<li><strong>State 3:</strong> The server is processing the HTTP request.</li>\r\n \t<li><strong>State 4:</strong> The server sent the response.</li>\r\n</ul>\r\nAs the HTTP connection works through these five connection states, the value contained in the <code>readyState</code> property changes. This causes the function you define in the <code>onreadystatechange</code> property to trigger for each state change. When the <code>readyState</code> property contains a value of 4, the final result from the request is available for processing.\r\n\r\nWhen the <code>readyState</code> property value is 4, you know the communication is complete, but you don’t know how it turned out. To determine that, you check the HTTP response returned by the web server using the <code>status</code> property. If the <code>status</code> property contains the 200 numeric HTTP result code, that indicates the connection was successful, and any data returned by the web server is available in the <code>responseText</code> and <code>responseXML</code> properties. If the status property contains some other HTTP result code (such as 403 or 404), that indicates there was an error communicating with the web server.\r\n\r\nBecause these values are standard, it has become somewhat common practice to start out the <code>onreadystatechange</code> callback function code checking for them:\r\n<pre class=\"code\">con.onreadystatechange = function() {\r\n if (this.readyState == 4 && this.status == 200) {\r\n var result = this.responseText;\r\n }\r\n};</pre>\r\nThe function only retrieves the data when the connection is complete and has returned valid data. This method of defining the callback function inline is referred to as creating an <em>anonymous callback function, </em>because you don’t define a name for the function. It only exists inside the <code>onreadystatechange</code> property, so you can’t reference it anywhere else in your JavaScript code.\r\n<p class=\"article-tips tip\">Although using an anonymous function is a popular way of defining the callback function, you can define the function as a standard named JavaScript function and then reference that function name in the <code>onreadystatechange</code> property.</p>","blurb":"","authors":[{"authorId":10600,"name":"Richard Blum","slug":"richard-blum","description":" <p><b>Richard Blum</b> has more than 30 years of experience as a systems administrator and programmer. He teaches online courses in PHP, JavaScript, HTML5, and CSS3 programming, and authored the latest edition of <i>Linux For Dummies</i>. ","hasArticle":false,"_links":{"self":"https://dummies-api.dummies.com/v2/authors/10600"}}],"primaryCategoryTaxonomy":{"categoryId":33610,"title":"General Programming & Web Design","slug":"general-programming-web-design","_links":{"self":"https://dummies-api.dummies.com/v2/categories/33610"}},"secondaryCategoryTaxonomy":{"categoryId":0,"title":null,"slug":null,"_links":null},"tertiaryCategoryTaxonomy":{"categoryId":0,"title":null,"slug":null,"_links":null},"trendingArticles":[{"articleId":192609,"title":"How to Pray the Rosary: A Comprehensive Guide","slug":"how-to-pray-the-rosary","categoryList":["body-mind-spirit","religion-spirituality","christianity","catholicism"],"_links":{"self":"/articles/192609"}},{"articleId":284787,"title":"What Your Society Says About You","slug":"what-your-society-says-about-you","categoryList":["academics-the-arts","humanities"],"_links":{"self":"/articles/284787"}},{"articleId":230957,"title":"Nikon D3400 For Dummies Cheat Sheet","slug":"nikon-d3400-dummies-cheat-sheet","categoryList":["home-auto-hobbies","photography"],"_links":{"self":"/articles/230957"}},{"articleId":208741,"title":"Kabbalah For Dummies Cheat Sheet","slug":"kabbalah-for-dummies-cheat-sheet","categoryList":["body-mind-spirit","religion-spirituality","kabbalah"],"_links":{"self":"/articles/208741"}},{"articleId":299133,"title":"ChatGPT For Dummies Cheat Sheet","slug":"chatgpt-for-dummies-cheat-sheet","categoryList":["technology","information-technology","ai","general-ai"],"_links":{"self":"/articles/299133"}}],"inThisArticle":[{"label":"The XMLHttpRequest Class Properties","target":"#tab1"}],"relatedArticles":{"fromBook":[{"articleId":253378,"title":"Making Sure Your MySQL Database is ACID Compliant","slug":"making-sure-mysql-database-acid-compliant","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/253378"}},{"articleId":253374,"title":"MySQL Features","slug":"mysql-features","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/253374"}},{"articleId":253362,"title":"How to Set Cookies with PHP","slug":"set-cookies-php","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/253362"}},{"articleId":253250,"title":"What are Accessor Magic Methods in PHP?","slug":"accessor-magic-methods-php","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/253250"}},{"articleId":253246,"title":"What are Mutator Magic Methods in PHP?","slug":"mutator-magic-methods-php","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/253246"}}],"fromCategory":[{"articleId":299575,"title":"HTML, CSS, & JavaScript All-in-One For Dummies Cheat Sheet","slug":"html-css-javascript-all-in-one-for-dummies-cheat-sheet","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/299575"}},{"articleId":265680,"title":"Using DevOps To Improve Engineering","slug":"tips-for-improving-engineering-performance-with-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265680"}},{"articleId":265675,"title":"How To Automate DevOps in the Cloud","slug":"make-more-of-your-cloud-tools-automating-devops-in-the-cloud","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265675"}},{"articleId":265672,"title":"How To Choose a Cloud Service Provider for DevOps","slug":"choosing-the-best-cloud-service-provider-features-and-tools-for-devops","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265672"}},{"articleId":265664,"title":"How to Form DevOps Teams in Your Organization","slug":"how-to-form-devops-teams-in-your-organization","categoryList":["technology","programming-web-design","general-programming-web-design"],"_links":{"self":"https://dummies-api.dummies.com/v2/articles/265664"}}]},"hasRelatedBookFromSearch":false,"relatedBook":{"bookId":281821,"slug":"php-mysql-javascript-all-in-one-for-dummies","isbn":"9781119468387","categoryList":["technology","programming-web-design","general-programming-web-design"],"amazon":{"default":"https://www.amazon.com/gp/product/1119468388/ref=as_li_tl?ie=UTF8&tag=wiley01-20","ca":"https://www.amazon.ca/gp/product/1119468388/ref=as_li_tl?ie=UTF8&tag=wiley01-20","indigo_ca":"http://www.tkqlhce.com/click-9208661-13710633?url=https://www.chapters.indigo.ca/en-ca/books/product/1119468388-item.html&cjsku=978111945484","gb":"https://www.amazon.co.uk/gp/product/1119468388/ref=as_li_tl?ie=UTF8&tag=wiley01-20","de":"https://www.amazon.de/gp/product/1119468388/ref=as_li_tl?ie=UTF8&tag=wiley01-20"},"image":{"src":"https://www.dummies.com/wp-content/uploads/php-mysql-and-javascript-all-in-one-for-dummies-cover-9781119468387-203x255.jpg","width":203,"height":255},"title":"PHP, MySQL, & JavaScript All-in-One For Dummies","testBankPinActivationLink":"","bookOutOfPrint":false,"authorsInfo":"<p><b data-author-id=\"10600\">Richard Blum</b> has more than 30 years of experience as a systems administrator and programmer. He teaches online courses in PHP, JavaScript, HTML5, and CSS3 programming, and authored the latest edition of <i>Linux For Dummies</i>. </p>","authors":[{"authorId":10600,"name":"Richard Blum","slug":"richard-blum","description":" <p><b>Richard Blum</b> has more than 30 years of experience as a systems administrator and programmer. He teaches online courses in PHP, JavaScript, HTML5, and CSS3 programming, and authored the latest edition of <i>Linux For Dummies</i>. ","hasArticle":false,"_links":{"self":"https://dummies-api.dummies.com/v2/authors/10600"}}],"_links":{"self":"https://dummies-api.dummies.com/v2/books/"}},"collections":[],"articleAds":{"footerAd":"<div class=\"du-ad-region row\" id=\"article_page_adhesion_ad\"><div class=\"du-ad-unit col-md-12\" data-slot-id=\"article_page_adhesion_ad\" data-refreshed=\"false\" \r\n data-target = \"[{&quot;key&quot;:&quot;cat&quot;,&quot;values&quot;:[&quot;technology&quot;,&quot;programming-web-design&quot;,&quot;general-programming-web-design&quot;]},{&quot;key&quot;:&quot;isbn&quot;,&quot;values&quot;:[&quot;9781119468387&quot;]}]\" id=\"du-slot-64ca6faebfca3\"></div></div>","rightAd":"<div class=\"du-ad-region row\" id=\"article_page_right_ad\"><div class=\"du-ad-unit col-md-12\" data-slot-id=\"article_page_right_ad\" data-refreshed=\"false\" \r\n data-target = \"[{&quot;key&quot;:&quot;cat&quot;,&quot;values&quot;:[&quot;technology&quot;,&quot;programming-web-design&quot;,&quot;general-programming-web-design&quot;]},{&quot;key&quot;:&quot;isbn&quot;,&quot;values&quot;:[&quot;9781119468387&quot;]}]\" id=\"du-slot-64ca6faec0661\"></div></div>"},"articleType":{"articleType":"Articles","articleList":null,"content":null,"videoInfo":{"videoId":null,"name":null,"accountId":null,"playerId":null,"thumbnailUrl":null,"description":null,"uploadDate":null}},"sponsorship":{"sponsorshipPage":false,"backgroundImage":{"src":null,"width":0,"height":0},"brandingLine":"","brandingLink":"","brandingLogo":{"src":null,"width":0,"height":0},"sponsorAd":"","sponsorEbookTitle":"","sponsorEbookLink":"","sponsorEbookImage":{"src":null,"width":0,"height":0}},"primaryLearningPath":"Advance","lifeExpectancy":"Five years","lifeExpectancySetFrom":"2023-08-02T00:00:00+00:00","dummiesForKids":"no","sponsoredContent":"no","adInfo":"","adPairKey":[]},"status":"publish","visibility":"public","articleId":253381}],"_links":{"self":{"self":"https://dummies-api.dummies.com/v2/categories/33610/categoryArticles?sortField=time&sortOrder=1&size=10&offset=0"},"next":{"self":"https://dummies-api.dummies.com/v2/categories/33610/categoryArticles?sortField=time&sortOrder=1&size=10&offset=10"},"last":{"self":"https://dummies-api.dummies.com/v2/categories/33610/categoryArticles?sortField=time&sortOrder=1&size=10&offset=198"}}},"objectTitle":"","status":"success","pageType":"article-category","objectId":"33610","page":1,"sortField":"time","sortOrder":1,"categoriesIds":[],"articleTypes":[],"filterData":{"categoriesFilter":[{"itemId":0,"itemName":"All Categories","count":210}],"articleTypeFilter":[{"articleType":"All Types","count":210},{"articleType":"Articles","count":190},{"articleType":"Cheat Sheet","count":12},{"articleType":"Step by Step","count":8}]},"filterDataLoadedStatus":"success","pageSize":10},"adsState":{"pageScripts":{"headers":{"timestamp":"2025-04-29T05:50:01+00:00"},"adsId":0,"data":{"scripts":[{"pages":["all"],"location":"header","script":"<!--Optimizely Script-->\r\n<script src=\"https://cdn.optimizely.com/js/10563184655.js\"></script>","enabled":false},{"pages":["all"],"location":"header","script":"<!-- comScore Tag -->\r\n<script>var _comscore = _comscore || [];_comscore.push({ c1: \"2\", c2: \"15097263\" });(function() {var s = document.createElement(\"script\"), el = document.getElementsByTagName(\"script\")[0]; s.async = true;s.src = (document.location.protocol == \"https:\" ? \"https://sb\" : \"http://b\") + \".scorecardresearch.com/beacon.js\";el.parentNode.insertBefore(s, el);})();</script><noscript><img src=\"https://sb.scorecardresearch.com/p?c1=2&c2=15097263&cv=2.0&cj=1\" /></noscript>\r\n<!-- / comScore Tag -->","enabled":true},{"pages":["all"],"location":"footer","script":"<!--BEGIN QUALTRICS WEBSITE FEEDBACK SNIPPET-->\r\n<script type='text/javascript'>\r\n(function(){var g=function(e,h,f,g){\r\nthis.get=function(a){for(var a=a+\"=\",c=document.cookie.split(\";\"),b=0,e=c.length;b<e;b++){for(var d=c[b];\" \"==d.charAt(0);)d=d.substring(1,d.length);if(0==d.indexOf(a))return d.substring(a.length,d.length)}return null};\r\nthis.set=function(a,c){var b=\"\",b=new Date;b.setTime(b.getTime()+6048E5);b=\"; expires=\"+b.toGMTString();document.cookie=a+\"=\"+c+b+\"; path=/; \"};\r\nthis.check=function(){var a=this.get(f);if(a)a=a.split(\":\");else if(100!=e)\"v\"==h&&(e=Math.random()>=e/100?0:100),a=[h,e,0],this.set(f,a.join(\":\"));else return!0;var c=a[1];if(100==c)return!0;switch(a[0]){case \"v\":return!1;case \"r\":return c=a[2]%Math.floor(100/c),a[2]++,this.set(f,a.join(\":\")),!c}return!0};\r\nthis.go=function(){if(this.check()){var a=document.createElement(\"script\");a.type=\"text/javascript\";a.src=g;document.body&&document.body.appendChild(a)}};\r\nthis.start=function(){var t=this;\"complete\"!==document.readyState?window.addEventListener?window.addEventListener(\"load\",function(){t.go()},!1):window.attachEvent&&window.attachEvent(\"onload\",function(){t.go()}):t.go()};};\r\ntry{(new g(100,\"r\",\"QSI_S_ZN_5o5yqpvMVjgDOuN\",\"https://zn5o5yqpvmvjgdoun-wiley.siteintercept.qualtrics.com/SIE/?Q_ZID=ZN_5o5yqpvMVjgDOuN\")).start()}catch(i){}})();\r\n</script><div id='ZN_5o5yqpvMVjgDOuN'><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>\r\n<!--END WEBSITE FEEDBACK SNIPPET-->","enabled":false},{"pages":["all"],"location":"header","script":"<!-- Hotjar Tracking Code for http://www.dummies.com -->\r\n<script>\r\n (function(h,o,t,j,a,r){\r\n h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};\r\n h._hjSettings={hjid:257151,hjsv:6};\r\n a=o.getElementsByTagName('head')[0];\r\n r=o.createElement('script');r.async=1;\r\n r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;\r\n a.appendChild(r);\r\n })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');\r\n</script>","enabled":false},{"pages":["article"],"location":"header","script":"<!-- //Connect Container: dummies --> <script src=\"//get.s-onetag.com/bffe21a1-6bb8-4928-9449-7beadb468dae/tag.min.js\" async defer></script>","enabled":true},{"pages":["homepage"],"location":"header","script":"<meta name=\"facebook-domain-verification\" content=\"irk8y0irxf718trg3uwwuexg6xpva0\" />","enabled":true},{"pages":["homepage","article","category","search"],"location":"footer","script":"<!-- Facebook Pixel Code -->\r\n<noscript>\r\n<img height=\"1\" width=\"1\" src=\"https://www.facebook.com/tr?id=256338321977984&ev=PageView&noscript=1\"/>\r\n</noscript>\r\n<!-- End Facebook Pixel Code -->","enabled":true}]}},"pageScriptsLoadedStatus":"success"},"navigationState":{"navigationCollections":[{"collectionId":287568,"title":"BYOB (Be Your Own Boss)","hasSubCategories":false,"url":"/collection/for-the-entry-level-entrepreneur-287568"},{"collectionId":293237,"title":"Be a Rad Dad","hasSubCategories":false,"url":"/collection/be-the-best-dad-293237"},{"collectionId":295890,"title":"Career Shifting","hasSubCategories":false,"url":"/collection/career-shifting-295890"},{"collectionId":294090,"title":"Contemplating the Cosmos","hasSubCategories":false,"url":"/collection/theres-something-about-space-294090"},{"collectionId":287563,"title":"For Those Seeking Peace of Mind","hasSubCategories":false,"url":"/collection/for-those-seeking-peace-of-mind-287563"},{"collectionId":287570,"title":"For the Aspiring Aficionado","hasSubCategories":false,"url":"/collection/for-the-bougielicious-287570"},{"collectionId":291903,"title":"For the Budding Cannabis Enthusiast","hasSubCategories":false,"url":"/collection/for-the-budding-cannabis-enthusiast-291903"},{"collectionId":299891,"title":"For the College Bound","hasSubCategories":false,"url":"/collection/for-the-college-bound-299891"},{"collectionId":291934,"title":"For the Exam-Season Crammer","hasSubCategories":false,"url":"/collection/for-the-exam-season-crammer-291934"},{"collectionId":301547,"title":"For the Game Day Prepper","hasSubCategories":false,"url":"/collection/big-game-day-prep-made-easy-301547"}],"navigationCollectionsLoadedStatus":"success","navigationCategories":{"books":{"0":{"data":[{"categoryId":33512,"title":"Technology","hasSubCategories":true,"url":"/category/books/technology-33512"},{"categoryId":33662,"title":"Academics & The Arts","hasSubCategories":true,"url":"/category/books/academics-the-arts-33662"},{"categoryId":33809,"title":"Home, Auto, & Hobbies","hasSubCategories":true,"url":"/category/books/home-auto-hobbies-33809"},{"categoryId":34038,"title":"Body, Mind, & Spirit","hasSubCategories":true,"url":"/category/books/body-mind-spirit-34038"},{"categoryId":34224,"title":"Business, Careers, & Money","hasSubCategories":true,"url":"/category/books/business-careers-money-34224"}],"breadcrumbs":[],"categoryTitle":"Level 0 Category","mainCategoryUrl":"/category/books/level-0-category-0"}},"articles":{"0":{"data":[{"categoryId":33512,"title":"Technology","hasSubCategories":true,"url":"/category/articles/technology-33512"},{"categoryId":33662,"title":"Academics & The Arts","hasSubCategories":true,"url":"/category/articles/academics-the-arts-33662"},{"categoryId":33809,"title":"Home, Auto, & Hobbies","hasSubCategories":true,"url":"/category/articles/home-auto-hobbies-33809"},{"categoryId":34038,"title":"Body, Mind, & Spirit","hasSubCategories":true,"url":"/category/articles/body-mind-spirit-34038"},{"categoryId":34224,"title":"Business, Careers, & Money","hasSubCategories":true,"url":"/category/articles/business-careers-money-34224"}],"breadcrumbs":[],"categoryTitle":"Level 0 Category","mainCategoryUrl":"/category/articles/level-0-category-0"}}},"navigationCategoriesLoadedStatus":"success"},"searchState":{"searchList":[],"searchStatus":"initial","relatedArticlesList":[],"relatedArticlesStatus":"initial"},"routeState":{"name":"ArticleCategory","path":"/category/articles/general-programming-web-design-33610/","hash":"","query":{},"params":{"category":"general-programming-web-design-33610"},"fullPath":"/category/articles/general-programming-web-design-33610/","meta":{"routeType":"category","breadcrumbInfo":{"suffix":"Articles","baseRoute":"/category/articles"},"prerenderWithAsyncData":true},"from":{"name":null,"path":"/","hash":"","query":{},"params":{},"fullPath":"/","meta":{}}},"profileState":{"auth":{},"userOptions":{},"status":"success"}}
Logo
  • Articles Open Article Categories
  • Books Open Book Categories
  • Collections Open Collections list
  • Custom Solutions

Article Categories

Book Categories

Collections

Explore all collections
BYOB (Be Your Own Boss)
Be a Rad Dad
Career Shifting
Contemplating the Cosmos
For Those Seeking Peace of Mind
For the Aspiring Aficionado
For the Budding Cannabis Enthusiast
For the College Bound
For the Exam-Season Crammer
For the Game Day Prepper
Log In
  • Home
  • Technology Articles
  • Programming & Web Design Articles
  • General Programming & Web Design Articles

General Programming & Web Design Articles

How do you customize a PHP server? What is an integrated development environment? Find these and other scattered coding details here.

Articles From General Programming & Web Design

page 1
page 2
page 3
page 4
page 5
page 6
page 7
page 8
page 9
page 10
page 11
page 12
page 13
page 14
page 15
page 16
page 17
page 18
page 19
page 20
page 21

Filter Results

208 results
208 results
General Programming & Web Design Why Local Environments Hold Your Developers Back

Article / Updated 04-28-2025

For enterprises whose growth depends on the innovation of their developers and data scientists, success moves at the speed of their development environments. Efficiency, effectiveness, and the ability to build without friction — that’s what sets the pace. The question is simple enough: Do your developers and data scientists work their magic in cloud development environments (CDEs), or is their work bogged down by a legacy development environment? Read on to find out why local development environments and other traditional solutions may be holding back your developers, and how cloud development environments can set them free. How traditional development environments are lacking What are some of the ways the wrong development environment may be making your company’s progress sluggish? Local development environments: This was yesterday’s standard, with all developers managing their own environments on their own machines. All that local control gets in the way of getting ahead. It’s complicated and time-consuming to configure tools and dependencies on each individual environment. You wind up with inconsistencies that slow things down. And don’t even think about scaling this approach. Virtual desktop infrastructures (VDIs): VDIs help to centralize environments, but they’re often not really workable for development. They’re expensive and complicated to maintain. They also tend to suffer from sluggish performance, and that’s no way to keep developers happy. Shadow virtual machines (VMs): Developers may get around these issues with ad hoc VMs, but they end up creating different problems. “Shadow” solutions may be lacking in governance and are often overprovisioned. That makes them potential security risks, not to mention wasteful of resources. How cloud development environments can help A fully managed environment is the answer to the challenges of these more disjointed solutions from yesteryear. The CDE may be hosted in the cloud or via on-premises infrastructure, and it brings together all the necessary tools, libraries, and infrastructure needed for efficient development. It’s a development workspace that can be accessed from anywhere, not tied to a specific location or machine. It’s great for remote work, and because of its centralized infrastructure, it’s a lot more secure than storing code and data on developers’ laptops. Developers and data scientists can easily tap into it for coding applications and training machine learning (ML) models, getting up and running in minutes. Provisioning is automatic, so everything developers need is right there and ready to go. It can all be controlled from a centralized interface by authorized team members, ensuring only the right people can access code and data. And the compute and storage resources are easily scalable. How CDEs make developers more productive Traditional local development environments tend to be frustratingly slow when it comes to onboarding new developers or moving developers to new projects (and developers tend to take on new projects multiple times a year, of course). Provisioning environments can take days or even weeks, thanks to all the complexities of dependencies and the need for approvals. Meanwhile, if developers are off working in their own local environments, that also leads to problems requiring time-consuming troubleshooting. Mismatched environments are the enemy of success. What’s more, resource constraints can be a hangup in local development environments. CDEs, on the other hand, can be preconfigured, so developers just log in and get to work. Platform engineers can make global updates and ensure consistencies across the CDE. Configuration drift is no longer a problem. As for resource constraints, the cloud can fix that with high-performance resources that scale as needed. Developers can set up resource-intensive tasks such as ML model training in the cloud, and use their local laptops to get other work done in the meantime. Why cloud development environments provide better security Local development environments and various noncentralized alternatives can pose security threats, due to a lack of adequate governance and a hard-to-manage attack surface. Working with intellectual property and other sensitive data on developer laptops or unapproved VMs is risky. If developers need to pull sensitive data to their laptops for such things as ML model training, you’re tempting fate, because security problems don’t just hold developers back — they can set back the entire organization. CDEs, on the other hand, can live in a cloud environment or be centralized in on-premises infrastructure. They can be air-gapped if need be. Source code and data can stay in secure cloud or on-premise locations, along with any compute resources needed for dealing with them, so sensitive data never needs to leave the safety of home. Compliance teams aren’t fond of local environments because they’re tricky to monitor. CDEs, on the other hand, offer better monitoring and auditing capabilities, without getting in the way of the developers’ work. How CDEs save both money and time Face it — local development environments can be costly. Local hardware isn’t cheap, especially the high-end hardware needed for resource-intensive processes. But if your enterprise tries to trim those costs, developers are likely to be displeased. The reality is, CDEs not only provide a better developer experience and greater security, they also save money and time. Developers can use most cost-effective machines that are less powerful and longer-lasting, because the heavy lifting is happening in the CDE, not on the local machine. What’s more, CDEs can tap into automation to optimize resource utilization. Auto-start and auto-stop features mean unused environments aren’t sitting there wasting money. Bin-packing multiple developer workspaces onto a single VM can reduce infrastructure costs, too. And once again, helping developers be more efficient — by easing onboarding and transitioning, while banishing sluggish equipment — saves money, too. Time is, after all, money. If you can save hours and days and weeks of wasted developer time, you’ll get a whole lot more out of the money you’re paying them. To learn more about the benefits of CDEs, download your free Cloud Development Environments For Dummies, CoderTechnologies, Inc. Special Edition e-book.

View Article
General Programming & Web Design How to Fix Noncompliant Code on Your Web Page

Article / Updated 05-30-2024

For each web coding issue identified by a validator, you need to determine what course of action to take. Although some culprits that repeatedly crop up are easy to fix, such as missing alt text and <noscript> tags, you’re bound to find coding issues that completely baffle and stump you. For instance, if you get an error message that reads XML Parsing Error: Opening and ending tag mismatch: br line 52 and body, it might be difficult to figure out what that means, let alone why it was caused and how you should fix it. As a strategy then, try to fix the issues within the code from the top down, as they’re listed in the validation results, because sometimes fixing one issue resolves another. With the XML parsing error, that issue might disappear when you correct for an omitted closing element on a <br /> tag listed earlier in the error results. The best way to find out how to code better and make fewer mistakes before validation testing is to make lots of honest mistakes and figure out how to correct them on your own. Most often, you can fix noncompliant code by hand or with the help of a good HTML editor. To help you identify some of the more common coding mistakes, here several code issues along with suggestions about how to fix them. Problem Solution alt text attribute missing from <img> tag Add the alternative text attribute, either with or without a description, as in <img src="images/logo.gif" width="150" height="150" alt="Pete’s Pizza"> <img src="images/flourish.gif" width="200" height="150" alt=""> . <noscript> tags missing from code Add <noscript> tags below each instance when JavaScript is present in in-line JavaScript or at the end of the content before the closing body tag. Between the <noscript> tags, insert HTML content (text, graphics, media files, and so on) that describes the function of the JavaScript and, when appropriate, how visitors can access the information revealed by it, as shown here: <script language="JavaScript" src="bookmark.js" type="text/javascript"></script><noscript>The JavaScript used on this page provides a quick link that allows visitors to automatically bookmark this page. As an alternative, please use your browser’s Bookmark This Page feature.</noscript> Flashing or flickering element(s) detected, such as animated GIFs, Java applets, and other multimedia plug-ins Adjust the speed of any animations to avoid causing the screen to flicker with a frequency between 2 Hz and 55 Hz. Animations that exceed these two measures may cause seizures in visitors with photosensitive epilepsy. No DOCTYPE specified Add a valid DOCTYPE above the opening <head> tag. No HTTP charset parameter specified This special meta tag specifies the character set used in the HTML code. Some HTML editors include it automatically when generating new blank web pages. If validation finds that this tag is missing from your HTML or XHTML code, insert the following code by hand: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> . For HTML5, insert <meta charset="utf-8"> . No <title> tag specified Add a unique title between <title> tags in the head area on each page. No <meta> tags specified Add meta keywords and meta description tags to the head of each page. These can be identical on every page on the site. If desired, you may also add additional meta tags as needed. No Robots tags specified Add the Robots <meta> tag in the head of the page to instruct web spiders and robots whether to index the page and follow any hyperlinks, such as <meta name="Robots" content="All"> . Deprecated <font> tags detected Move all the presentation markup of the HTML (page, fonts, tables, links, and so on) to an external CSS file and remove all <font> tags and HTML and inline formatting attributes. Deprecated table height attribute detected Control table cell heights, when necessary, with CSS styles. Style attributes detected in the opening <body> tag Move body attributes, like margin attributes and background page color, to a BODY tag redefine style in an external CSS file. type attribute not specified for JavaScript or CSS Add the type="text/css" attribute for <style> tags and the type="text/javascript" attribute for <script> tags: <style type="text/css" ><script type="text/javascript"> . Entity name used instead of entity number Change the entity name to an entity number, such as using $#169; instead of © to create the copyright symbol (c). No background color attribute was specified for a CSS style that specifies text color Provide each style that contains a text color attribute with an attending background color attribute. The background color should match, or closely match, the background color upon which the text will display on. When you’re finished identifying and adjusting all the noncompliant code identified by the validation tools, and have fixed everything that needed fixing, move on to the retesting and acceptable failure phase of the testing process.

View Article
General Programming & Web Design How To Choose a Cloud Service Provider for DevOps

Article / Updated 05-30-2024

The success of your DevOps initiative relies heavily on following the process, but it’s also important to use the right tools. Selecting a cloud service provider isn’t an easy choice, especially when DevOps is your driving motivation. GCP (Google Cloud Platform), AWS (Amazon Web Services), and Azure have more in common than they do apart. Often, your decision depends more on your DevOps team’s comfort level with a particular cloud provider or your current stack more than the cloud provider itself. After you’ve decided to move to the cloud, the next decision is to decide on a cloud provider that fits your DevOps needs. Here are some things to consider when evaluating cloud providers with DevOps principles in mind: Solid track record. The cloud you choose should have a history of responsible financial decisions and enough capital to operate and expand large datacenters over decades. Compliance and risk management. Formal structure and established compliance policies are vital to ensure that your data is safe and secure. Ideally, review audits before you sign contracts. Positive reputation. Customer trust is absolutely key. Do you trust that you can rely on this cloud provider to continue to grow and support your evolving DevOps needs? Service Level Agreements (SLAs). What level of service do you require? Typically cloud providers offer various levels of uptime reliability based on cost. For example, 99.9 percent uptime will be significantly cheaper than 99.999 percent uptime. Metrics and monitoring. What types of application insights, monitoring, and telemetry does the vendor supply? Be sure that you can gain an appropriate level of insight into your systems in as close to real-time as possible. Finally, ensure the cloud provider you choose has excellent technical capabilities that provide services that meet your specific DevOps needs. Generally, look for Compute capabilities Storage solutions Deployment features Logging and monitoring Friendly user interfaces You should also confirm the capability to implement a hybrid cloud solution in case you need to at some point, as well as to make HTTP calls to other APIs and services. The three major cloud providers are Google Cloud Platform (GCP), Microsoft Azure, and Amazon web Services (AWS). You can also find smaller cloud providers and certainly a number of private cloud providers, but the bulk of what you need to know comes from comparing the public cloud providers. Amazon Web Services (AWS) As do the other major public cloud providers, AWS provides on-demand computing through a pay-as-you-go subscription. Users of AWS can subscribe to any number of services and computing resources. Amazon is the current market leader among cloud providers, holding the majority of cloud subscribers. It offers a robust set of features and services in regions throughout the world. Two of the most well-known services are Amazon Elastic Compute Cloud (EC2) and Amazon Simple Storage Service (Amazon S3). As with other cloud providers, services are accessed and infrastructure is provisioned through APIs. Microsoft Azure Before Microsoft launched this cloud provider as Microsoft Azure, it was called Windows Azure. Microsoft designed it to do just what the name implies — serve as a cloud provider for traditionally Windows IT organizations. But as the market became more competitive and Microsoft started to better understand the engineering landscape, Azure adapted, grew, and evolved. Although still arguably less robust than AWS, Azure is a well-rounded cloud provider focused on user experience. Through various product launches and acquisitions — notably GitHub — Microsoft has invested heavily in Linux infrastructure, which has enabled it to provide more robust services to a wider audience. Google Cloud Platform (GCP) The Google Cloud Platform (GCP) has the least market share of the three major public cloud providers but offers a substantial set of cloud services throughout nearly two dozen geographic regions. Perhaps the most appealing aspect of GCP is that it offers users the same infrastructure Google uses internally. This infrastructure includes extremely powerful computing, storage, analytics, and machine learning services. Depending on your specific product, GCP may have specialized tools that are lacking (or less mature) in AWS and Azure. Finding DevOps tools and services in the cloud Literally hundreds of tools and services are at your disposal through the major cloud providers. Those tools and services are generally separated into the following categories: Compute Storage Networking Resource management Cloud Artificial Intelligence (AI) Identity Security Serverless IoT Following is a list of the most commonly used services across all three of the major cloud providers. These services include app deployment, virtual machine (VM) management, container orchestration, serverless functions, storage, and databases. Additional services are included, such as identity management, block storage, private cloud, secrets storage, and more. It’s far from an exhaustive list but can serve as a solid foundation for you as you begin to research your options and get a feel for what differentiates the cloud providers. App deployment: Platform as a Service (PaaS) solution for deploying applications in a variety of languages including Java, .NET, Python, Node.js, C#, Ruby, and Go Azure: Azure Cloud Services AWS: AWS Elastic Beanstalk GCP: Google App Engine Virtual machine (VM) management: Infrastructure as a Service (IaaS) option for running virtual machines (VMs) with Linux or Windows Azure: Azure Virtual Machines AWS: Amazon EC2 GCP: Google Compute Engine Managed Kubernetes: Enables better container management via the popular orchestrator Kubernetes Azure: Azure Kubernetes Service (AKS) AWS: Amazon Elastic Container Service (ECS) for Kubernetes GCP: Google Kubernetes Engine Serverless: Enables users to create logical workflows of serverless functions Azure: Azure Functions AWS: AWS Lambda GCP: Google Cloud Functions Cloud storage: Unstructured object storage with caching Azure: Azure Blob Storage AWS: Amazon S3 GCP: Google Cloud Storage Databases: SQL and NoSQL databases, on demand Azure: Azure Cosmos DB AWS: Amazon Relational Database Service (RDS) and Amazon DynamoDB (NoSQL) GCP: Google Cloud SQL and Google Cloud BigTable (NoSQL) As you explore the three major cloud providers, you notice a long list of services. You may feel overwhelmed by the hundreds of options at your disposal. If, by chance, you can’t find what you need, the marketplace will likely provide something similar. The marketplace is where independent developers offer services that plug into the cloud — hosted by Azure, AWS or GCP. The table below lists additional services provided by most, if not all, cloud providers. Common Cloud Services Service Category Functionality Block storage Data storage used in storage-area network (SAN) environments. Block storage is similar to storing data on a hard drive. Virtual Private Cloud (VPC) Logically isolated, shared computing resources. Firewall Network security that controls traffic. Content Delivery Network (CDN) Content delivery based on the location of the user. Typically utilizes caching, load balancing and analytics. Domain Name System (DNS) Translator of domain names to IP addresses for browsers. Single Sign-On (SSO) Access control to multiple systems or applications using the same credentials. If you’ve logged into an independent application with your Google, Twitter or GitHub credentials, you’ve used SSO. Identity and Access Management (IAM) Role-based user access management. Pre-determined roles have access to a set group of features; users are assigned roles. Telemetry, monitoring and logging Tools to provide application insights on performance, server load, memory consumption and more. Deployments Configuration, infrastructure and release pipeline management tools. Cloud shell Shell access from a command-line interface (CLI) within the browser. Secrets storage Secure storage of keys, tokens, passwords, certificates and other secrets. Message Queues Dynamically scaled message brokers. Machine Learning (ML) Deep learning frameworks and tools for data scientists. IoT Device connection and management.

View Article
General Programming & Web Design Building DIY Websites For Dummies Cheat Sheet

Cheat Sheet / Updated 03-26-2024

If you want to build your own website from start to finish, this book serves as a great resource. It includes many secrets and best practices that web developers know and implement when building any quality website. This cheat sheet includes bits and pieces of what you'll find in the book.

View Cheat Sheet
General Programming & Web Design Web Coding and Development All-in-One For Dummies Cheat Sheet

Cheat Sheet / Updated 01-05-2024

One of the handiest features of web coding and development is that once you’ve learned a few basics, you can apply those basics to any project. A good example is the underlying structure of a page, which uses the same set of standard HTML tags, no matter how large or small the project. It’s also worth your time to learn how selectors work, because you use them to save you time both when you’re writing CSS rules and when you’re writing JavaScript code. Errors, too, are a fact of web coding life, so understanding the most common errors can help you debug your code faster and get back to more creative pursuits.

View Cheat Sheet
General Programming & Web Design Building Websites All-in-One For Dummies Cheat Sheet

Cheat Sheet / Updated 11-13-2023

Note: The following cheat sheet is from Building Websites All-in-One For Dummies which published in 2012; therefore, this content may be outdated. For more current information on website building, please see HTML, CSS, & JavaScript All-in-One For Dummies. Whether complex or simple, websites require that you make decisions — such as color, theme, and tone — and that you juggle many pieces of the project — like code, style sheets, and graphics. Knowing which resources to turn to for help implementing HTML5, and a few key points about incorporating graphics and video, can help you.

View Cheat Sheet
General Programming & Web Design HTML, CSS, & JavaScript All-in-One For Dummies Cheat Sheet

Cheat Sheet / Updated 09-25-2023

One of the bonuses you get when you tackle HTML, CSS, and JavaScript is that after you learn a few basics, you can apply those basics to any project. A good example is the underlying structure of a page, which uses the same set of standard HTML tags, no matter how large or small the project. It’s also worth your time to learn the most powerful CSS selectors, because you use those selectors all the time to speed up your work when you’re writing rules. Programming errors, too, are a fact of web coding life, so understanding the most useful JavaScript debugging strategies can help you fix your code faster and get back to more creative pursuits.

View Cheat Sheet
General Programming & Web Design What Is DevOps?

Article / Updated 08-16-2023

What is DevOps? It’s difficult to provide you with an exact DevOps prescription — because none exists. DevOps is a philosophy that guides software development, one that that prioritizes people over process and process over tooling. DevOps builds a culture of trust, collaboration, and continuous improvement. As a culture, the DevOps philosophy views the development process in a holistic way, taking into account everyone involved: developers, testers, operations folks, security, and infrastructure engineers. DevOps doesn’t put any one of these groups above the others, nor does it rank the importance of their work. Instead, a DevOps company treats the entire team of engineers as critical to ensuring that the customer has the best experience possible. DevOps evolved from Agile In 2001, 17 software engineers met and published the “Manifesto for Agile Software Development,” which spelled out the 12 principles of Agile project management. This new workflow was a response to the frustration and inflexibility of teams working in a waterfall (linear) process. Working within Agile principles, engineers aren’t required to adhere to original requirements or follow a linear development workflow in which each team hands off work to the next. Instead, they’re capable of adapting to the ever-changing needs of the business or the market, and sometimes even the changing technology and tools. Although Agile revolutionized software development in many ways, it failed to address the conflict between developers and operations specialists. Silos still developed around technical skill sets and specialties, and developers still handed off code to operations folks to deploy and support. In 2008, Andrew Clay Shafer talked to Patrick Debois about his frustrations with the constant conflict between developers and operations folks. Together, they launched the first DevOpsDays event in Belgium to create a better — and more agile — way of approaching software development. This evolution of Agile took hold, and DevOps has since enabled companies around the globe to produce better software faster (and usually cheaper). DevOps is not a fad. It’s a widely accepted engineering philosophy. DevOps focuses on people Anyone who says that DevOps is all about tooling wants to sell you something. Above all else, DevOps is a philosophy that focuses on engineers and how they can better work together to produce great software. You could spend millions on every DevOps tool in the world and still be no closer to DevOps nirvana. Instead, focus on your most important engineering asset: engineers. Happy engineers make great software. How do you make happy engineers? Well, you create a collaborative work environment in which mutual respect, shared knowledge, and acknowledgement of hard work can thrive. Company culture is the foundation of DevOps Your company has a culture, even if it has been left to develop through inertia. That culture has more influence on your job satisfaction, productivity, and team velocity than you probably realize. Company culture is best described as the unspoken expectations, behavior, and values of an organization. Culture is what tells your employees whether company leadership is open to new ideas. It’s what informs an employee’s decision as to whether to come forward with a problem or to sweep it under the rug. Culture is something to be designed and refined, not something to leave to chance. Though the actual definition varies from company to company and person to person, DevOps is a cultural approach to engineering at its core. A toxic company culture will kill your DevOps journey before it even starts. Even if your engineering team adopts a DevOps mindset, the attitudes and challenges of the larger company will bleed into your environment. With DevOps, you avoid blame, grow trust, and focus on the customer. You give your engineers autonomy and empower them to do what they do best: engineer solutions. As you begin to implement DevOps, you give your engineers the time and space to adjust to it, allowing them the opportunities to get to know each other better and build rapport with engineers with different specialties. Also, you measure progress and reward achievements. Never blame individuals for failures. Instead, the team should continuously improve together, and achievements should be celebrated and rewarded. You learn by observing your process and collecting data Observing your workflow without expectation is a powerful technique to use to see the successes and challenges of your workflow realistically. This observation is the only way to find the correct solution to the areas and issues that create bottlenecks in your processes. Just as with software, slapping some Kubernetes (or other new tool) on a problem doesn’t necessarily fix it. You have to know where the problems are before you go about fixing them. As you continue, you collect data — not to measure success or failure but to track the team’s performance. You determine what works, what doesn’t work, and what to try next time. Persuasion is key to DevOps adoption Selling the idea of DevOps to your leaders, peers, and employees isn’t easy. The process isn’t always intuitive to engineers, either. Shouldn’t a great idea simply sell itself? If only it were that easy. However, a key concept to always keep in mind as you implement DevOps is that it emphasizes people. he so-called “soft skills” of communication and collaboration are central to your DevOps transformation. Persuading other folks on your team and within your company to adopt DevOps requires practicing good communication skills. Early conversations that you have with colleagues about DevOps can set you up for success down the road — especially when you hit an unexpected speed bump. Small, incremental changes are priceless in DevOps The aspect of DevOps that emphasizes making changes in small, incremental ways has its roots in lean manufacturing, which embraces accelerated feedback, continuous improvement, and swifter time to market. Water is a good metaphor for DevOps transformations. Water is one of the world’s most powerful elements. Unless people are watching the flood waters rise in front of them, they think of it as relatively harmless. The Colorado River carved the Grand Canyon. Slowly, over millions of years, water cut through stone to expose nearly two billion years of soil and rock. You can be like water. Be the slow, relentless change in your organization. Here’s that famous quote from a Bruce Lee interview to inspire you: Be formless, shapeless, like water. Now you put water into a cup, it becomes the cup. You put water into a bottle, it becomes the bottle. You put it in a teapot, it becomes the teapot. Now, water can flow or it can crash. Be water, my friend. Making incremental changes means, for example, that you find a problem and you fix that problem. Then you fix the next one. You don’t take on too much too fast and you don’t pick every battle to fight. You understand that some fights aren’t worth the energy or social capital that they can cost you. Ultimately, DevOps isn’t a list of steps you can take, but is rather an approach that should guide the decisions you make as you develop.

View Article
General Programming & Web Design How to Form DevOps Teams in Your Organization

Article / Updated 08-16-2023

DevOps has no ideal organizational structure. Like everything in tech, the “right” answer concerning your company’s structure depends on your unique situation: your current team, your plans for growth, your team’s size, your team’s available skill sets, your product, and on and on. Aligning your DevOps team’s vision should be your first mission. Only after you’ve removed the low-hanging fruit of obvious friction between people should you begin rearranging teams. Even then, allow some flexibility. If you approach a reorganization with openness and flexibility, you send the message that you’re willing to listen and give your team autonomy — a basic tenet of DevOps. You may already have a Python or Go developer who’s passionate and curious about infrastructure and configuration management. Maybe that person can switch into a more ops-focused role in your new organization. Put yourself in that person’s shoes. Wouldn’t you be loyal to an organization that took a risk on you? Wouldn’t you be excited to work hard? And that excitement is contagious. Here, you learn how to align the teams you already have in place, dedicate a team to DevOps practices, and create cross-functional teams — all approaches from which you can choose to orient your teams toward DevOps. You can choose one approach and allow it to evolve from there. Don’t feel that this decision is permanent and unmovable. DevOps focuses on rapid iteration and continual improvement and that’s the prime benefit of this methodology. That philosophy applies to teams as well. Aligning functional teams for DevOps In this approach, you create strong collaboration between your traditional development and operations teams. The teams remain functional in nature — one focused on ops, one focused on code. But their incentives are aligned. They will grow to trust each other and work as two teams yoked together. For smaller engineering organizations, aligning functional teams is a solid choice. Even as a first step, this alignment can reinforce the positive changes you’ve made so far. You typically start the alignment by taking the time to build rapport. Ensure that each person on both teams not only intellectually understands the other team’s role and constraints but also empathizes with the pain points. For this approach, it’s a good idea to promote a policy of “You build it, you support it.” This policy means that everyone — developer and operations person alike —participates in your on-call rotation. This participation allows developers to start understanding the frustrations of being called in the middle of the night and struggling while foggy-eyed and caffeine-deprived to fix a bug that’s impacting customers. Operations folks also begin to trust your developers’ commitment to their work. Even this small change builds an extraordinary amount of trust. A word of caution: If developers fight hard against being on call, a larger problem is at play in your organization. The pushback is not uncommon because being on call is wildly different from their normal day-to-day responsibilities. The pushback often comes from a place of discomfort and fear. You can help mitigate this reaction by addressing the fact that your developers may not know what to do the first few times they’re on call. They may not be familiar with the infrastructure, and that’s okay. Encourage them to escalate the incident and page someone with more experience. Finally, create a runbook with common alerts and what actions to take. Providing this resource will help to assuage some fear until they begin to get the hang of things. Another tactic to help spur collaboration to form a more cohesive DevOps team is to introduce a day of shadowing, with each team “trading” a colleague. The traded person simply shadows someone else on the team, sits at their desk (or in their area), and assists in their day-to-day responsibilities. They may help with work, discuss problems as a team (pair programming), and learn more about the system from a different point of view. This style of teaching isn’t prescriptive. Instead, it lends itself to curiosity and building trust. Colleagues should feel free to ask questions — even the “stupid” variety — and learn freely. No performance expectations exist. The time should be spent simply getting to know each other and appreciating each other’s work. Any productive output is a bonus! In this alignment approach, both teams absolutely must be involved in the planning, architecture, and development processes. They must share responsibilities and accountability throughout the entire development life cycle. Dedicating a DevOps team A dedicated DevOps team is more an evolution of the Sys Admin than a true DevOps team. It is an operations team with a mix of skill sets. Perhaps some engineers are familiar with configuration management, others IaC (infrastructure as code) and perhaps others are experts in containers or cloud native infrastructure or CI/CD (continuous integration and continuous delivery/development). If you think that putting a group of humans into an official team is enough to break down silos, you’re mistaken. Humans are more complex than spreadsheets. Hierarchy doesn’t mean anything if your silos have entered a phase in which they are unhealthy and tribal. In toxic cultures, a strongman style of leadership can emerge that is almost always followed by people taking sides. If you see this on your own team, you have work to do. Although any approach may work for your team, this dedicated team approach is the one you should think through the most. The greatest disadvantage of a dedicated DevOps team is that it easily becomes a continuation of traditional engineering teams without acknowledging the need to align teams, reduce silos, and remove friction. The risks of continuing friction (or creating more) are high in this approach. Tread carefully to ensure you’re choosing this team organization for a specific reason. The benefits of this DevOps approach is having a dedicated team to address major infrastructure changes or adjustments. If you’re struggling with operations-centered issues that are slowing down your deployments or causing site reliability concerns, this might be a good approach — even temporarily. A dedicated team if you’re planning on moving a legacy application to the cloud. But rather than calling this team a DevOps team, you might try labeling it an automation team. This dedicated group of engineers can focus completely on ensuring that you’ve set up the correct infrastructure and automation tools. You can then proceed with confidence that your application will land in the cloud without major disruption. Still, this approach is temporary. If you keep the team isolated for too long, you risk going down a slippery slope from rapid growth to embedded silo. Creating cross-functional product teams for DevOps A cross-functional team is a team formed around a single product focus. Rather than have separate teams for development, user interface and user experience (UI/UX), quality assurance (QA), and operations, you combine people from each of these teams. A cross-functional team works best in medium to large organizations. You need enough developers and operations folks to fill in the positions of each product team. Each cross-functional team looks a bit different. It’s a good idea to have, at a minimum, one operations person per team. Do not ask an operations person to split their responsibilities between two teams. This scenario is unfair to them and will quickly create friction between the two product teams. Give your engineers the privilege of being able to focus and dig deep into their work. If you’re organization is still small or in the startup phase, you can think of your entire engineering organization as a cross-functional team. Keep it small and focused. When you begin to approach having 10–12 people, start thinking about how you can reorganize engineers. The image below shows what your cross-functional teams could look like. But keep in mind that their composition varies from team to team and from organization to organization. Some products have a strong design focus, which means that you may have multiple designers in each team. Other products are technical ones designed for engineers who don’t care much for aesthetics. Teams for that kind of product may have one designer — or none at all. If your organization is large enough, you can certainly create multiple teams using different DevOps ideas and approaches. Remember that your organization is unique. Feel empowered to make decisions based on your current circumstances and adjust from there. Here are some possible combinations of various types of product teams. Legacy Product Team: Project Manager (PM), Front-end Developer, Back-end Developer, Back-end Developer, Site Reliability Engineer (SRE), Automation Engineer, QA Tester Cloud Transformation Team: SRE, SRE, Operations Engineer, Automation Engineer, Back-end Developer MVP Team: PM, Designer, UX Engineer, Front-end Developer, Backend Developer, Operations Engineer The downside of a cross-functional product team is that engineers lose the camaraderie of engineers with their same skill sets and passions. Having a group of like-minded individuals with whom you can socialize and from whom you can learn is an important aspect of job satisfaction. Check out a solution to this issue below. As shown below, you can give your engineers dedicated work time to spend with their tribes. You can do something as generous as paying for lunch once every week so that they can get together and talk. Or you might provide 10–20 percent of work time for them to work on projects as a tribe. Either way, you need your engineers to stay sharp. Tribes share industry knowledge, provide sound feedback, and support career growth. Provide time for your engineers to learn from people with whom they share education, experience, and goals. This time provides a safe place where they can relax and feel at home. No amount of perfect finagling will overcome the shortfalls of a bad organizational culture. But if you’ve paid attention so far and made the appropriate strides, the next step is to form teams that reinforce the cultural ideals you’ve already put in place.

View Article
General Programming & Web Design Using XMLHttpRequest Class Properties

Article / Updated 08-02-2023

The XMLHttpRequest object contains several class properties that you’ll need to know about to handle the HTTP response from the web server. The XMLHttpRequest Class Properties Property Description onreadystatechange Defines a callback function that the browser triggers when the HTTP connection changes state readyState Contains the connection status of the HTTP connection responseText Contains the response sent by the web server in text format responseXML Contains the response sent by the web server in XML format status Contains the numeric HTTP response code from the web server statusText Contains the text HTTP response string from the web server After you use the send() method to send a connection request to a web server, the HTTP connection process works through five connection states, as tracked by the readyState property: State 0: The connection has not been initialized. State 1: The connection to the server has been established. State 2: The server received the HTTP request message. State 3: The server is processing the HTTP request. State 4: The server sent the response. As the HTTP connection works through these five connection states, the value contained in the readyState property changes. This causes the function you define in the onreadystatechange property to trigger for each state change. When the readyState property contains a value of 4, the final result from the request is available for processing. When the readyState property value is 4, you know the communication is complete, but you don’t know how it turned out. To determine that, you check the HTTP response returned by the web server using the status property. If the status property contains the 200 numeric HTTP result code, that indicates the connection was successful, and any data returned by the web server is available in the responseText and responseXML properties. If the status property contains some other HTTP result code (such as 403 or 404), that indicates there was an error communicating with the web server. Because these values are standard, it has become somewhat common practice to start out the onreadystatechange callback function code checking for them: con.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { var result = this.responseText; } }; The function only retrieves the data when the connection is complete and has returned valid data. This method of defining the callback function inline is referred to as creating an anonymous callback function, because you don’t define a name for the function. It only exists inside the onreadystatechange property, so you can’t reference it anywhere else in your JavaScript code. Although using an anonymous function is a popular way of defining the callback function, you can define the function as a standard named JavaScript function and then reference that function name in the onreadystatechange property.

View Article
page 1
page 2
page 3
page 4
page 5
page 6
page 7
page 8
page 9
page 10
page 11
page 12
page 13
page 14
page 15
page 16
page 17
page 18
page 19
page 20
page 21

Quick Links

  • About For Dummies
  • Contact Us
  • Activate Online Content

Connect

About Dummies

Dummies has always stood for taking on complex concepts and making them easy to understand. Dummies helps everyone be more knowledgeable and confident in applying what they know. Whether it's to pass that big test, qualify for that big promotion or even master that cooking technique; people who rely on dummies, rely on it to learn the critical skills and relevant information necessary for success.

Copyright @ 2000-2024 by John Wiley & Sons, Inc., or related companies. All rights reserved, including rights for text and data mining and training of artificial technologies or similar technologies.

Terms of Use
Privacy Policy
Cookies Settings
Do Not Sell My Personal Info - CA Only