<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Erica V</title>
    <description>The latest articles on Forem by Erica V (@ericavart).</description>
    <link>https://forem.com/ericavart</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F737611%2Ff9323b04-1b45-4cc8-a1cd-2869e87f07a3.jpg</url>
      <title>Forem: Erica V</title>
      <link>https://forem.com/ericavart</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ericavart"/>
    <language>en</language>
    <item>
      <title>All about unit testing: 11 best practices and overview</title>
      <dc:creator>Erica V</dc:creator>
      <pubDate>Tue, 19 Apr 2022 23:32:52 +0000</pubDate>
      <link>https://forem.com/educative/all-about-unit-testing-11-best-practices-and-overview-14bb</link>
      <guid>https://forem.com/educative/all-about-unit-testing-11-best-practices-and-overview-14bb</guid>
      <description>&lt;p&gt;Unit testing is one of the primary types of software testing. As is generally the case with software testing, unit testing can’t guarantee that no bugs will occur after your application is deployed. However, by testing the smallest repeatable pieces of code in your applications, unit testing &lt;strong&gt;helps catch bugs in the building blocks&lt;/strong&gt; of your project before they affect your integrated application. &lt;/p&gt;

&lt;p&gt;As an essential software development process, unit testing is a valuable skill to know as a developer. If we’re able to follow unit testing best practices, we’d already be unit testing during the development phase. However, this isn’t realistic for all software development projects. Therefore, unit testing can happen after your production code is written, and is &lt;strong&gt;essential to ensure that extended and refactored code remains functional&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Today, we’ll cover an overview on unit testing and unit testing best practices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We’ll cover&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
An overview of unit testing

&lt;ul&gt;
&lt;li&gt;What is unit testing?&lt;/li&gt;
&lt;li&gt;Benefits of unit testing&lt;/li&gt;
&lt;li&gt;Test planning&lt;/li&gt;
&lt;li&gt;Test coverage&lt;/li&gt;
&lt;li&gt;Unit testing frameworks&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;11 unit testing best practices&lt;/li&gt;

&lt;li&gt;Wrapping up and next steps&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  An overview of unit testing
&lt;/h2&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  What is unit testing?
&lt;/h3&gt;

&lt;p&gt;Unit testing &lt;strong&gt;ensures that the units within your program are working as expected&lt;/strong&gt;. Since the person who wrote a piece of code would have the greatest insight as to its expected behavior, it’s usually the developer’s responsibility to unit test. In combination with end-to-end tests and integration tests, unit testing helps ensure code quality early on in the development process. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A &lt;strong&gt;unit&lt;/strong&gt; is the smallest piece of code in your program that is &lt;strong&gt;repeatable, testable, and functional&lt;/strong&gt;. Units can be functions, classes, methods, and so on. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcpt42pllefaby40132be.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcpt42pllefaby40132be.png" alt="software testing levels" width="800" height="591"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The previous figure depicts unit testing alongside other software testing levels, wherein each level has its own scope:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unit testing&lt;/strong&gt; tests each software module.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integration testing&lt;/strong&gt; tests the combined modules according to system design documents and functional requirements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Functional testing&lt;/strong&gt; tests a program’s desired functionality based on requirement analysis documents and the user manual (i.e. ensuring the expected output for a given input). This is sometimes divided into system testing and acceptance testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Black box and white box testing are two approaches to software tests, wherein:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Black box testing&lt;/strong&gt; tests software behavior without knowing the implementation details of a software module. These tests are derived from the software specification document.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;White box testing&lt;/strong&gt; tests the actual implementation of a software module., wherein the inner architecture of the program is known to the tester. These tests give us implementation insights to develop more comprehensive tests. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;For unit testing, white box testing is usually the most suitable option&lt;/strong&gt;, particularly when our modules are smaller and their code is easier to comprehend. On the other hand, black box testing is a good option for later stages of a project, when modules have been integrated to create a complex software.  &lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Benefits of unit testing
&lt;/h3&gt;

&lt;p&gt;Some benefits of unit testing include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Simplifies debugging&lt;/strong&gt;: By testing the functionality of small units, you can catch bugs before they affect more units in the integrated application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Encourages more loosely coupled code&lt;/strong&gt;: By intentionally reducing interdependencies between units, we get more loosely coupled code, a coding best practice. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Faster than functional testing&lt;/strong&gt;: As units are very small, you can run several unit tests in seconds (provided you’ve automated them).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Minimize code regression&lt;/strong&gt;: After code is refactored or extended, you can rerun all test suites to ensure your new or updated code doesn’t break existing functionality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Better code coverage&lt;/strong&gt;: By breaking an application down into the smallest testable components, unit testing helps increase your code coverage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Test planning
&lt;/h3&gt;

&lt;p&gt;A test plan dictates a &lt;strong&gt;unit test’s complexity and design&lt;/strong&gt;. Because we have limited time and budget for any development project, it’s not always possible to exhaustively unit test a project. Taking this into consideration, a test plan will determine which resources will be allocated to unit testing. A test plan is one of the key parts of the software development lifecycle. &lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Test coverage
&lt;/h3&gt;

&lt;p&gt;Test coverage is a &lt;strong&gt;metric to determine how thoroughly we've unit tested&lt;/strong&gt; our software. As a general rule, we want to maximize test coverage as much as possible.&lt;/p&gt;

&lt;p&gt;Test coverage can be further classified as follows:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Function coverage&lt;/strong&gt;: The percentage of functions which have been tested&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Statement coverage&lt;/strong&gt;: The percentage of statements that have been tested. Sometimes, it includes all the statements that have been executed at least once during the testing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Path coverage&lt;/strong&gt;: The percentage of paths that have been tested. A software may have multiple paths (or branches) taken by it based on conditions, such as, user’s input, environment sensing, and other events. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Unit testing frameworks
&lt;/h3&gt;

&lt;p&gt;A unit testing framework is software that enables us to &lt;strong&gt;quickly code unit tests and automate their execution&lt;/strong&gt;. In the event that a test fails, frameworks can save the results or throw an assertion. &lt;/p&gt;

&lt;p&gt;There are dozens of unit testing frameworks available for various programming languages. Some &lt;strong&gt;popular unit testing frameworks&lt;/strong&gt; include Cunit, Moq, Cucumber, Selenium, Embunit, Sass True, HtmlUnit, and JUnit (one of the most widely used open source frameworks for the Java programming language). &lt;/p&gt;

&lt;p&gt;We can save a great amount of time and resources with unit testing frameworks, which include the following features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Test suite&lt;/strong&gt;: A set of test cases that are grouped for test execution purposes, which allows us to aggregate multiple similar unit tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test runner&lt;/strong&gt;: A component which automates execution of a series of test cases and returns  the test result to the user.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test fixture&lt;/strong&gt;: A predefined state or fixed environment in which we run tests, ensuring that our tests are repeatable across multiple test runs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  11 unit testing best practices
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. Write tests for a number of scenarios
&lt;/h3&gt;

&lt;p&gt;When writing a test case, be sure that you’re considering &lt;strong&gt;all possible scenarios&lt;/strong&gt;. In other words, don’t just write a test for the happy path. Think about other scenarios as well, such as error handling.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Write good test names
&lt;/h3&gt;

&lt;p&gt;A good unit test name should explicitly &lt;strong&gt;reflect the intent&lt;/strong&gt; of the test case. Follow consistent naming conventions, and only use shorthand if they’re easily understood by a reader.&lt;br&gt;
Writing good test names supports code readability, which will make it easier for yourself and others to extend that code into the future. &lt;/p&gt;
&lt;h3&gt;
  
  
  3. Set up automated tests
&lt;/h3&gt;

&lt;p&gt;Opt for &lt;strong&gt;automated unit testing&lt;/strong&gt; with the help of a unit testing framework. An even better practice is automating tests in your continuous integration (CI/CD) pipeline.&lt;/p&gt;

&lt;p&gt;The alternative to automated testing is manual testing, wherein we manually execute test cases and gather their results. As you can imagine, manually testing small units is incredibly tedious. It’s also less reliable. Automated tests are surely the way to go here.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Write deterministic tests
&lt;/h3&gt;

&lt;p&gt;False positives and negatives are common in software testing, and we must be diligent in order to minimize them. The goal is to have consistent outputs for tests in order to verify the desired function. Unit tests should therefore be deterministic. In other words, as long as the test code isn’t changed, a deterministic test should have &lt;strong&gt;consistent behavior&lt;/strong&gt; every time the test is run.&lt;/p&gt;
&lt;h3&gt;
  
  
  5. Arrange, Act, and Assert (AAA)
&lt;/h3&gt;

&lt;p&gt;The AAA protocol is a recommended approach for structuring unit tests. As a unit testing best practice, it improves your test's readability by giving it a logical flow. AAA is sometimes referred to as the “Given/When/Then” protocol. &lt;/p&gt;

&lt;p&gt;You can use the AAA protocol to structure your unit tests with the following steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Arrange&lt;/strong&gt;: Arrange the setup and initialization for the test&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Act&lt;/strong&gt;: Act on the unit for the given test&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assert&lt;/strong&gt;: Assert or verify the outcome&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The following code demonstrates the AAA structure in testing the absolute value function in Python:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def test_abs_for_a_negative_number():

  # Arrange
  negative = -2

  # Act
  answer = abs(negative)

  # Assert
  assert answer == 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  6. Write tests before or during development
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Test-driven development (TDD)&lt;/strong&gt; is a software development process through which we enhance our test cases and software code in parallel. In contrast to a typical development methodology, TDD involves writing test code &lt;strong&gt;before&lt;/strong&gt; production code. TDD has several advantages, including increasing the code coverage of unit tests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The process of TDD&lt;/strong&gt; looks as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Develop a unit test for a desired feature&lt;/li&gt;
&lt;li&gt;Write the shortest possible code to pass that newly created test&lt;/li&gt;
&lt;li&gt;When the test passes, refactor your code to improve maintainability and readability&lt;/li&gt;
&lt;li&gt;If another feature is needed, repeat this process&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The following figure illustrates the TDD development process:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi333i4vd5itw84imvg2d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi333i4vd5itw84imvg2d.png" alt="test-driven development TDD" width="800" height="797"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  7. One use case per unit test
&lt;/h3&gt;

&lt;p&gt;Each test should focus on a single use case, and verify the output is as expected for that tested method. By focusing on one use case, you’ll have a clearer line of sight into the root problem in the event that a test fails (as opposed to testing for multiple use cases).&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Avoid logic in tests
&lt;/h3&gt;

&lt;p&gt;To reduce the chance of bugs, your test code should have little to no logical conditions or manual string concatenations. &lt;/p&gt;

&lt;h3&gt;
  
  
  9. Reduce test dependencies
&lt;/h3&gt;

&lt;p&gt;Tests should not be dependent on each other. By reducing dependencies between units, test runners can simultaneously run tests on different pieces of code. &lt;br&gt;
A unit can be considered testable only if its dependencies are staged (i.e. stubs) within the test code. &lt;strong&gt;No real-world or external dependencies should affect the outcome&lt;/strong&gt; of the test.&lt;/p&gt;

&lt;h3&gt;
  
  
  10. Aim for maximum test coverage
&lt;/h3&gt;

&lt;p&gt;While we can aim for 100% test coverage, this might not be always desirable or possible. Such comprehensive testing may have budget and time requirements beyond our ability. In some cases, such comprehensive testing is theoretically impossible (i.e. undecidable). That being said, &lt;strong&gt;we should aim for the most possible coverage given our constraints&lt;/strong&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  11. Keep proper test documentation
&lt;/h3&gt;

&lt;p&gt;Maintaining test documentation will help both developers and, in some cases, the end users (e.g. in the case of an API).&lt;/p&gt;

&lt;p&gt;Testing documentation should fulfill the following criteria: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reviewable&lt;/strong&gt;: A test by any given resource is reviewable by others.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repeatable&lt;/strong&gt;: A test is documented such that it can be repeated multiple times. This enables us to verify that a bug is fixed in an updated piece of code by repeating the same test. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Archivable&lt;/strong&gt;: Tests and related bugs can be archived in documentation, serving as a valuable resource for future extensions of the project.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up and next steps
&lt;/h2&gt;

&lt;p&gt;Wherever you are in your coding journey, learning to unit test will ensure that you can check your balances in the applications that you develop. In some companies, unit testing is taken care of by quality assurance (QA) engineers, but for the rest, software developers are responsible for mastering this craft. By validating your code as you write it, &lt;strong&gt;unit testing is invaluable in ensuring your development project comes together with minimal bugs&lt;/strong&gt;. If it seems like a tedious task to test your application on a small scale of units, remember that you have various testing frameworks at your disposal to streamline the process!&lt;/p&gt;

&lt;p&gt;One of the most popular unit testing frameworks is JUnit. &lt;br&gt;
&lt;strong&gt;If you work with Java&lt;/strong&gt;, you might consider diving into unit testing with our course, &lt;a href="https://www.educative.io/courses/unit-testing-java8-junit?eid=5082902844932096" rel="noopener noreferrer"&gt;&lt;strong&gt;Pragmatic Unit Testing in Java 8 with JUnit 5&lt;/strong&gt;&lt;/a&gt;. JUnit is one of the most popular unit testing frameworks. You can use JUnit to write test methods with special directives, automate test executions with test runners, indicate test failures with different assertions, and record your test results. This course includes tutorials and all the information you need to leverage JUnit to efficiently test and develop your Java applications.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy learning!&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Continue learning about software testing on Educative
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/software-testing-types-101?eid=5082902844932096" rel="noopener noreferrer"&gt;Software testing 101: Get started with software testing types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.educative.io/blog/performance-testing-tutorial-gatling-jenkins?eid=5082902844932096" rel="noopener noreferrer"&gt;Performance testing tutorial: Automation, Gatling, and Jenkins&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/sass-tutorial-unit-testing-with-sass-true?eid=5082902844932096" rel="noopener noreferrer"&gt;Sass tutorial: Unit testing with Sass True&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Start a discussion
&lt;/h3&gt;

&lt;p&gt;How do you do unit testing? Was this article helpful? Let us know in the comments below!&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>beginners</category>
      <category>testing</category>
      <category>debugging</category>
    </item>
    <item>
      <title>3 philosophies that influenced software development</title>
      <dc:creator>Erica V</dc:creator>
      <pubDate>Fri, 15 Apr 2022 20:27:43 +0000</pubDate>
      <link>https://forem.com/educative/3-philosophies-that-influenced-software-development-589n</link>
      <guid>https://forem.com/educative/3-philosophies-that-influenced-software-development-589n</guid>
      <description>&lt;p&gt;I started my undergraduate studies by pursuing a double major in philosophy and mathematics. While people often remarked that these subjects were complete opposites, this couldn’t be further from the truth. &lt;strong&gt;Philosophy is not only linked to math and sciences – it’s their ancestor&lt;/strong&gt;. Philosophy has had a profound impact on most scientific fields, and computer science is no exception.&lt;/p&gt;

&lt;p&gt;A philosophy is a way of thinking that determines how we understand ourselves, the world, or the right thing to do. Much like a program, a philosophy is composed of a set of premises and principles that determine how we handle events. Whether or not we’re aware of it, &lt;strong&gt;there’s a philosophy driving everything we do – from the way we honor history, to the way we develop software&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Today we’ll discuss three philosophies that have influenced software development, in ways big and small.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We’ll cover&lt;/strong&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A bit of history&lt;/li&gt;
&lt;li&gt;
3 philosophies that influenced software development

&lt;ul&gt;
&lt;li&gt;Open-source philosophy&lt;/li&gt;
&lt;li&gt;Minimalism&lt;/li&gt;
&lt;li&gt;Kaizen&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Wrapping up and next steps&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A bit of history
&lt;/h2&gt;

&lt;p&gt;Before our discussion, I want to address one of philosophy’s most obvious and important contributions to computer science. Namely, our earliest binary representation of data came from a branch of philosophy called logic. Specifically, &lt;strong&gt;Boolean logic&lt;/strong&gt; provided the framework through which we represent data in binary digits (0s and 1s). These binary digits are called bits in computer science. Bits are our tiniest units of data, and are the building blocks through which we &lt;strong&gt;animate lifeless hardware into functional machines&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Boolean logic was developed by George Boole in the 1850s. A mathematician and philosopher, Boole was building upon the findings of his predecessors. The hardware to physically realize these bits came much later thanks to findings in quantum physics. Still, Boolean logic was a breakthrough that’s often credited for transitioning us into the Information Age. &lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3 philosophies that influenced software development
&lt;/h2&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Minimalism
&lt;/h3&gt;

&lt;p&gt;From decluttering to software development, minimalism has had a widespread impact on many areas of our lives. While the term “minimalism” was first coined to describe a post-WWII Western art movement, the term found itself applied in various contexts where there was a benefit to &lt;strong&gt;doing more with less&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Generally, minimalist philosophies value:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simplicity&lt;/li&gt;
&lt;li&gt;Utility&lt;/li&gt;
&lt;li&gt;Doing away with the unnecessary&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Minimalism &lt;strong&gt;worked its way into software development in the 1970’s&lt;/strong&gt;. In these early days of programming, developers worked to optimize programs within the constraints of limited hardware resources and budget. While our hardware capabilities and budgets have certainly grown since then, minimalism remains an influence in software design and development. &lt;/p&gt;

&lt;p&gt;We see minimalism’s influence on many communities and technologies, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unix&lt;/strong&gt;: The Unix operating system's corresponding &lt;em&gt;Unix philosophy&lt;/em&gt; values minimalism. One of its principles is the “Rule of Modularity: Write simple parts connected by clean interfaces.”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python&lt;/strong&gt;: Python is a language that values minimalism and simplicity. Python has its own philosophy known as The Zen of Python, wherein one principle is “Simple is better than complex”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Minimalism in software development advocates for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Doing more with less code&lt;/li&gt;
&lt;li&gt;Minimizing resources needed&lt;/li&gt;
&lt;li&gt;Employing a modular approach, wherein each module is highly focused &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Open-source philosophy
&lt;/h3&gt;

&lt;p&gt;Open-source software is software that makes its source code available to the public. We owe today's abundance of open-source software to open-source philosophy and the open-source-software movement in the 1990s.&lt;/p&gt;

&lt;p&gt;The open-source philosophy is closely linked to the &lt;strong&gt;hacker ethic&lt;/strong&gt;. Indeed, many open-source activists were hackers (a term with positive connotations in this context). Like the hacker ethic, the open-source philosophy believes software and information should be freely available to anyone who wishes to use or improve upon it.&lt;/p&gt;

&lt;p&gt;Open-source philosophy advocates for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sharing source code&lt;/li&gt;
&lt;li&gt;Open collaboration with diversity of perspectives&lt;/li&gt;
&lt;li&gt;Free exchange of information &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The open-source-software movement was a response to the increased privatization and commercialization of software around the advent of the personal computer (PC). This privatization was a contrast to the early days of programming, when researchers and programmers openly collaborated and software was shared in the &lt;strong&gt;public domain&lt;/strong&gt;. Open-source philosophy advocates for &lt;strong&gt;bringing source code back to the hands of the people&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;We now enjoy an abundance of open-source technologies, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apache web server&lt;/li&gt;
&lt;li&gt;Linux operating system&lt;/li&gt;
&lt;li&gt;GIMP &lt;/li&gt;
&lt;li&gt;Kubernetes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Kaizen philosophy
&lt;/h3&gt;

&lt;p&gt;Kaizen is a Japanese &lt;strong&gt;business philosophy&lt;/strong&gt; that has influenced countless industries. The term Kaizen roughly translates to “change for the better” or “&lt;strong&gt;continuous improvement&lt;/strong&gt;.” Kaizen was first implemented by Japanese businesses after WWII. It became popular in the US in the 1980s. &lt;/p&gt;

&lt;p&gt;Kaizen advocates for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Small, incremental improvements in processes and activities&lt;/li&gt;
&lt;li&gt;Elimination of waste&lt;/li&gt;
&lt;li&gt;Giving all employees ownership over small improvements &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kaizen’s incremental approach laid the &lt;strong&gt;groundwork for agile development&lt;/strong&gt; methodologies, including &lt;strong&gt;lean development&lt;/strong&gt;. Agile methodologies share a focus on continuous improvement, and are widely used by software development teams today.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up and next steps
&lt;/h2&gt;

&lt;p&gt;A program is not so different from a philosophy. They both inform how we move through the world – and in the case of programs, through &lt;strong&gt;the world as data&lt;/strong&gt;. As a programmer, how you develop software can reflect your values, your purpose, and what you believe in. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Like this piece?&lt;/strong&gt; Don’t miss any of our other posts! &lt;strong&gt;Follow Educative&lt;/strong&gt; for more thought-provoking pieces and hands-on tutorials on software development.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Happy learning!&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Continue learning about software development on Educative
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/bytesize-accidental-discoveries-in-programming?eid=5082902844932096" rel="noopener noreferrer"&gt;Bytesize: 2 accidental discoveries that changed programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/the-7-most-important-software-design-patterns?eid=5082902844932096" rel="noopener noreferrer"&gt;The 7 most important software design patterns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/software-process-model-types?eid=5082902844932096" rel="noopener noreferrer"&gt;What is a software process model? Top 7 models explained&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>opensource</category>
      <category>watercooler</category>
      <category>writing</category>
      <category>philosophy</category>
    </item>
    <item>
      <title>6 tips: Finding your balance as a mother and software engineer</title>
      <dc:creator>Erica V</dc:creator>
      <pubDate>Fri, 18 Mar 2022 21:03:49 +0000</pubDate>
      <link>https://forem.com/educative/6-tips-finding-your-balance-as-a-mother-and-software-engineer-47mn</link>
      <guid>https://forem.com/educative/6-tips-finding-your-balance-as-a-mother-and-software-engineer-47mn</guid>
      <description>&lt;p&gt;Writing code, unit testing, then feeding your baby: Unless you’ve seen it firsthand, it might be difficult to imagine juggling both motherhood and software development. If you don’t have relatable role models who have done it before, you might be wondering if it’s possible to take on both roles (and come out in one piece). The answer is: Yes! &lt;strong&gt;While it’s not easy, finding a balance between your career and children is  done by many determined women around the world&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;At Educative, we’ve had the honor to speak with many women who have found space in their life for both motherhood and coding. Whether you’re a mom who wants to break into tech or a developer who doesn't want to give up on her career, we hope you’ll enjoy this piece inspired by the experiences of mothers who code.&lt;/p&gt;

&lt;p&gt;Today we’ll cover &lt;strong&gt;six tips on finding your balance as a mother and software engineer&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We’ll cover&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
6 tips: Finding your balance as a mother and software engineer

&lt;ul&gt;
&lt;li&gt;1. Know your limits, and work around them&lt;/li&gt;
&lt;li&gt;2. Look for synergies between your worlds&lt;/li&gt;
&lt;li&gt;3. Communicate your needs&lt;/li&gt;
&lt;li&gt;4. Redefine your wins&lt;/li&gt;
&lt;li&gt;5. Drop the guilt&lt;/li&gt;
&lt;li&gt;6. Don’t give up on your dreams&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Wrapping up and next steps&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6 tips: Finding your balance as a mother and software engineer
&lt;/h2&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Know your limits, and work around them
&lt;/h3&gt;

&lt;p&gt;Once you’re a mother and a developer, your daily responsibilities have doubled (if not tripled). But, &lt;strong&gt;despite the changes in your life, there are still only 24 hours in a day&lt;/strong&gt;. By recognizing your limits, you can &lt;strong&gt;set boundaries and delegate tasks&lt;/strong&gt; as appropriate. &lt;/p&gt;

&lt;p&gt;Setting boundaries is a skill that many are still trying to master. We don't mean that you should talk to your infant about boundaries! But you can experiment with setting boundaries in some areas of your life as a mother. For instance, you can limit the hours for which you're "on call" for caregivers of your child. &lt;strong&gt;You may also need to set new boundaries with work&lt;/strong&gt;.  For instance, if you've been open to overtime in the past, you may need to set a hard boundary on your hours now that you have a child. As Dawn Parzych put it during one of our Educative Sessions, “&lt;strong&gt;Know your limits, and say no when you need to.&lt;/strong&gt;”&lt;/p&gt;

&lt;p&gt;Delegating is an important skill that applies not only to leadership but motherhood as well. &lt;strong&gt;Don’t be afraid to ask for help&lt;/strong&gt;, whether it involves household chores, shopping, and childcare. Leveraging your support system – be they friends, family, or hired professionals – will help free your bandwidth to get some focused work done.&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Look for synergies between your worlds
&lt;/h3&gt;

&lt;p&gt;Helping develop a human life is undoubtedly different from developing an application. And yet, &lt;strong&gt;motherhood and software development stand to share a lot in common&lt;/strong&gt;. Both roles call for late nights, constant learning, and surprises that require your immediate attention. Far from being polar opposites, your two identities of mother and software engineer can find synergy with each other. Try to be curious about how you can transfer knowledge from one sphere to the next. &lt;/p&gt;

&lt;p&gt;During our talk with her on Educative Sessions, Dawn Parzych highlighted the synergies she found between DevOps and parenting. She reflected that they're both a continual learning process.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“It’s all about iterating, seeing what works, what doesn’t work.” – Dawn Parzych, Developer Advocate (Hear her full story on &lt;a href="https://www.youtube.com/watch?v=cr7DYi0-PNY&amp;amp;list=PL5Pdj6odxsXQwGfjyGsMTjdmJoUsq3QZu&amp;amp;index=" rel="noopener noreferrer"&gt;our episode of Educative Sessions, "What DevOps and Parenting Have in Common"&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Communicate your needs to your manager
&lt;/h3&gt;

&lt;p&gt;Be specific about your needs with your manager so that they can better support you. When you feel concerned about your workload, be open with them. By helping your manager better understand your experience, needs, and roadblocks, they’ll be better able to advocate for you in this new phase of your life.  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Once you start speaking up, you realize that people are really supportive.” -- Anjana Shankar, Sr Distributed Systems Developer (Hear her full story on &lt;a href="https://www.youtube.com/watch?v=OT4zi7C3H0g&amp;amp;list=PL5Pdj6odxsXQwGfjyGsMTjdmJoUsq3QZu&amp;amp;index=10" rel="noopener noreferrer"&gt;our episode of Educative Sessions, "A Tech Mom's Struggle During the Pandemic"&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here are some accommodations you can ask for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flexible work hours&lt;/li&gt;
&lt;li&gt;Remote work options&lt;/li&gt;
&lt;li&gt;Breastfeeding breaks and facilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re having a difficult time coming to understandings with your manager, you might want to consider joining the great developer job search of 2022 in the interest of a work environment that better supports the needs of working mothers.&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Redefine your wins
&lt;/h3&gt;

&lt;p&gt;You may not have the time to tackle all the things you &lt;em&gt;want&lt;/em&gt; to do. Compromising your expectations can be difficult, especially if you’re a high performer. But remember that &lt;strong&gt;your life circumstances have changed drastically&lt;/strong&gt;. In this new reality, there will always be something left on your to-do list at the end of the day, so you should &lt;strong&gt;adjust your expectations accordingly&lt;/strong&gt;. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Look for the small wins and celebrate them.” – Dawn Parzych, Developer Advocate (Hear her full story on &lt;a href="https://www.youtube.com/watch?v=cr7DYi0-PNY&amp;amp;list=PL5Pdj6odxsXQwGfjyGsMTjdmJoUsq3QZu&amp;amp;index=2" rel="noopener noreferrer"&gt;our episode of Educative Sessions, "What DevOps and Parenting Have in Common"&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, how would you have time to celebrate wins when this might be the most sleep-deprived era of your life? Your celebration might be as simple (and crucial) as taking five minutes for a simple self-care activity. If you get good at identifying the small wins, this means you should’ve earned a little bit of time for self-care each day. &lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Drop the guilt
&lt;/h3&gt;

&lt;p&gt;Examine any feelings of guilt that are weighing you down and ask yourself if they're necessary. &lt;strong&gt;Chances are, you may be holding yourself to unrealistic expectations&lt;/strong&gt;. Guilt follows many working mothers around. When you're with your child, you may feel guilty about being away from your work. Conversely, you may feel guilty about being away from your child when you're at work. &lt;/p&gt;

&lt;p&gt;Many women find themselves in the habit of apologizing, and working mothers are no exception. When reflecting on how she handled the moments when her child interrupted her video meetings, Anjana Shankar said, &lt;strong&gt;“I realized that being apologetic was adding to my guilt.”&lt;/strong&gt; By learning to fully accept that the circumstances of her life had changed, she was able to stop her habit and release the unnecessary guilt.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“You don’t have to set unrealistic expectations for yourself. Accept that sometimes you have bad days, sometimes you have good days.” – Anjana Shankar, Sr Distributed Systems Developer (Hear her full story on &lt;a href="https://www.youtube.com/watch?v=OT4zi7C3H0g&amp;amp;list=PL5Pdj6odxsXQwGfjyGsMTjdmJoUsq3QZu&amp;amp;index=10" rel="noopener noreferrer"&gt;our episode of Educative Sessions&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Don’t give up on your dreams
&lt;/h3&gt;

&lt;p&gt;If there’s anything we’ve learned from our conversations with women in Educative Sessions, it’s that persistence is the key to responding to failure. When challenges present themselves along the way, &lt;strong&gt;keep your focus on the dream that got you started in the first place&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=JadS87KX2q0&amp;amp;list=PL5Pdj6odxsXQwGfjyGsMTjdmJoUsq3QZu&amp;amp;index=4" rel="noopener noreferrer"&gt;Navira Abbasi is now the director of the coding bootcamp she initially failed&lt;/a&gt;. Despite her failure and wounded pride, Navira returned for a second attempt. This time, she modified her strategy based on lessons she learned from her first time around. Having been asked to be the director, her persistence and hard work didn't go unrecognized. &lt;/p&gt;

&lt;p&gt;Chinenye Ikpa, a Software Developer at Decagon, pursued her coding dreams when she was already a mother of four. As a mother, her family and society expected her to stay home or work in a less demanding industry. But Chinenye refused to sacrifice her career ambitions. She’s now a developer who treats challenges as opportunities to be a role model for her children:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“I teach them that they should… practice once a week, never give up, that we go for gold. When I'm down, I think of those things that I repeat to them, and we repeat to ourselves daily. I get up, and I show them how it’s done.” – Chinenye Ikpa, Software Developer (Hear her full story on &lt;a href="https://www.youtube.com/watch?v=pVVW0By09rM&amp;amp;list=PL5Pdj6odxsXQwGfjyGsMTjdmJoUsq3QZu&amp;amp;index=9" rel="noopener noreferrer"&gt;our episode of Educative Sessions, "It’s Never Too Late! A Mother’s Pursuit of Code"&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up and next steps
&lt;/h2&gt;

&lt;p&gt;As with motherhood, keeping up as a software engineer requires constant learning. A child’s needs may change just as quickly as in-demand tech stacks. While it’s surely not easy, we celebrate the women who have claimed their space as both mothers and software engineers. If the journey seems daunting, just know that &lt;strong&gt;you’re not alone&lt;/strong&gt; in walking this path. &lt;/p&gt;

&lt;p&gt;To hear how other mothers have rocked their tech careers, check out our &lt;a href="https://www.youtube.com/playlist?list=PL5Pdj6odxsXQwGfjyGsMTjdmJoUsq3QZu" rel="noopener noreferrer"&gt;&lt;strong&gt;Mothers Who Code series&lt;/strong&gt;&lt;/a&gt; on Educative Sessions. You’ll hear stories from other women who have blazed their own paths as mothers and software engineers. While we hope you find these stories inspiring, we look forward to seeing what you make of your unique journey as a mother in tech. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy learning!&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Continue reading about women in code on Educative
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/being-your-own-role-model-woman-tech?eid=5082902844932096" rel="noopener noreferrer"&gt;7 tips: Being your own role model as a woman in tech&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/hercode-overcoming-imposter-syndrome?eid=5082902844932096" rel="noopener noreferrer"&gt;HerCode: Tips for overcoming imposter syndrome&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/womens-history-month-tech?eid=5082902844932096" rel="noopener noreferrer"&gt;Women’s History Month: Women in tech throughout the ages&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Start a discussion
&lt;/h3&gt;

&lt;p&gt;How do you find balance as a mother and software engineer. What concerns do you have if you haven't yet lived both roles? Let us know in the comments below!&lt;/p&gt;

</description>
      <category>career</category>
      <category>womenintech</category>
      <category>discuss</category>
      <category>hercode</category>
    </item>
    <item>
      <title>Can I become a full-stack Python developer?</title>
      <dc:creator>Erica V</dc:creator>
      <pubDate>Fri, 18 Mar 2022 00:00:58 +0000</pubDate>
      <link>https://forem.com/educative/can-i-become-a-full-stack-python-developer-cg2</link>
      <guid>https://forem.com/educative/can-i-become-a-full-stack-python-developer-cg2</guid>
      <description>&lt;p&gt;Want to be a full-stack engineer who uses Python? Great! There are many benefits to using the Python programming language for web development. Python is most popularly used for back-end development. While Python can also be used for front-end development, languages such as HTML are a more common choice. Whether you stick purely to Python or use other programming languages, we'll cover all you need to know in this article.&lt;/p&gt;

&lt;p&gt;Today we’ll discuss why &lt;strong&gt;Python is a great tool to take with you on your journey to become a full-stack developer&lt;/strong&gt;, and what you’ll need to learn along the way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We’ll cover&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What does a full-stack developer do?&lt;/li&gt;
&lt;li&gt;Full-stack development with Python&lt;/li&gt;
&lt;li&gt;What you’ll need to learn to become a Python full-stack developer&lt;/li&gt;
&lt;li&gt;Tips for becoming a Python full-stack developer&lt;/li&gt;
&lt;li&gt;Wrapping up and next steps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What does a full-stack developer do?
&lt;/h2&gt;

&lt;p&gt;Being a full-stack engineer means you’re able to work both ends of web app development: The front-end &lt;em&gt;and&lt;/em&gt; the back-end. Front-end development concerns how the application appears to the user. In other words, &lt;strong&gt;front-end development involves programming the browser&lt;/strong&gt;, or the client-end. On the other hand, back-end development concerns the logic that governs the application. &lt;strong&gt;Back-end development involves programming the remote server&lt;/strong&gt; and communicating with one or more database(s).&lt;/p&gt;

&lt;p&gt;The concepts of back-end and front-end are illustrated in the following figure:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0apec2s4qwllqd0zcx1l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0apec2s4qwllqd0zcx1l.png" alt="front end vs back end" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In theory, a full-stack developer can take an application from the design stage all the way through to deployment. However, in application, this is only feasible for very small projects. While a specialized back-end developer might have a deeper knowledge of back-end development, such as database design, a full-stack developer has more of a generalized knowledge. &lt;strong&gt;On a large real-world project, full-stack engineers are generalists who help bridge the gap between two highly specialized forces: Front-end and back-end developers&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Full-stack development with Python
&lt;/h2&gt;

&lt;p&gt;There are many benefits to using the Python programming language for web development, including a relatively fast development time. However, the &lt;strong&gt;best part about using Python as a full-stack engineer might be the career opportunities it can open up for you&lt;/strong&gt;. There remains a demand for full-stack and back-end Python engineers. Because Python is commonly used in data science and machine learning, you can add these to your back-end skillset as you advance as a full-stack engineer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Back-end development using Python
&lt;/h3&gt;

&lt;p&gt;There are numerous Python back-end frameworks include Flask, Django, Turbogears, CherryPy, Pyramid, Bottle, and Falcon. However, we'll discuss the most popular frameworks: Django and Flask.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Django&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Django is a free and open-source project with a large developer community. As such, it sees frequent enhancements in its features of security, user and roles management, and database migration management. Django also has a REST framework that fully supports RESTful Web APIs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flask&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Flask is another popular Python web framework. More lightweight than Django, it's known as a micro-framework. Flask is commonly used to develop the back-end of APIs. You'll find many pluggable features available in the Flask community.&lt;/p&gt;

&lt;h3&gt;
  
  
  Front-end development using Python
&lt;/h3&gt;

&lt;p&gt;Unlike back-end development, &lt;strong&gt;front-end development in Python is still in its infancy.&lt;/strong&gt; For this reason, HTML, JavaScript, and CSS are typically used at the front-end. However, a few front-end Python frameworks have been developed recently, such as Skulpt, Brython, and Anvil.&lt;/p&gt;

&lt;p&gt;Since it’s relatively more mature, let's discuss Anvil.  Anvil is a &lt;strong&gt;full-stack framework&lt;/strong&gt; that can be used for both front-end and back-end development. We can use Anvil to develop a web page’s UI components through drag-and-drop components on Anvil's graphical interface. We can also modify the properties of UI components, and associate those components with events (Python functions). Anvil helps with back-end functionalities such as database manipulation, file management, and user authentication. &lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What you’ll need to learn to become a Python full-stack developer
&lt;/h2&gt;

&lt;p&gt;What you need to learn depends on your past experience. Here’s an overview of what you’ll need to know.&lt;/p&gt;

&lt;h3&gt;
  
  
  Programming in Python
&lt;/h3&gt;

&lt;p&gt;If you don’t already know Python, you’ll want to learn Python well. You’ll be programming servers with it, after all. But before you start doing that, make sure you’re comfortable with Python fundamentals, from algorithms and data structures, to object-oriented programming (OOP) with Python. While the latter isn’t absolutely necessary, you might consider learning OOP techniques as it can reduce your development time in the long run.&lt;/p&gt;

&lt;p&gt;On that note, here are some tips for learning Python as a beginner developer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Web development fundamentals
&lt;/h3&gt;

&lt;p&gt;If you’re an absolute beginner to web development, you’ve got two sides to acquaint yourself with.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Front-end development&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here’s a minimal list covering what you’ll need to know to get started with front-end development:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web fundamentals of HTML, JavaScript, and CSS&lt;/li&gt;
&lt;li&gt;A front-end JavaScript framework like AngularJS, ReactJS, VueJS&lt;/li&gt;
&lt;li&gt;A JavaScript library like jQuery&lt;/li&gt;
&lt;li&gt;Optionally, a CSS framework like Bootstrap&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Back-end development&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here’s a minimal list covering what you’ll need to know to get started with back-end development:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Designing and building Application Programming Interfaces (APIs), including REST APIs&lt;/li&gt;
&lt;li&gt;CRUD operations &lt;/li&gt;
&lt;li&gt;A database like MySQL, MongoDB, PostgreSQL, or SQLite&lt;/li&gt;
&lt;li&gt;Python back-end frameworks such as Django or Flask&lt;/li&gt;
&lt;li&gt;Git for source code management and version control &lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip&lt;/strong&gt;: There are various web frameworks to choose from. To narrow down your choices, consider the factors that are a priority for you. For instance, you might want to opt for a tool that has decent community support and good documentation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips for becoming a Python full-stack developer
&lt;/h2&gt;

&lt;p&gt;Here’s some guidance for your journey as a full-stack Python developer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Think of this as a long-term journey&lt;/strong&gt;: If you’re starting from scratch, you may have a long road ahead of you – and that’s exciting! If you get impatient with your progress, remember that the time you spend learning and practicing now is going to minimize your knowledge gap, which will only help strengthen the foundation for your future growth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aim for generalist knowledge first, then go deeper&lt;/strong&gt;: Since your range of knowledge is covering several topics, you don’t need to have the same depth of knowledge as a specialist would. Start with the minimum that you need to know, and practice that until you’re great at it. You’ll gain a greater depth of knowledge with work experience over time. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plan your progress with small, achievable goals&lt;/strong&gt;: Your learning curve might take a while simply because full-stack engineering involves various languages, frameworks, and techniques. If you have a lot of new concepts to learn, it helps to structure a plan that decomposes your final goal into several small goals with realistic deadlines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Focus on one tech stack at a time&lt;/strong&gt;: Master one stack first. You can (and should) pick up additional technologies later on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learn with peers&lt;/strong&gt;: You can do this in any way that suits you. Find a fellow Python learner, take classes, do a bootcamp or join a Python Discord server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up and next steps
&lt;/h2&gt;

&lt;p&gt;No matter where you are in your journey as a developer, Python is a great programming language to support you in full-stack development. Learning the skills to carry a web application from design to deployment will not only be a fascinating learning process, but an excellent move for your career as well. &lt;/p&gt;

&lt;p&gt;To help you learn the essentials of full-stack development, we’ve created the &lt;a href="https://www.educative.io/collection/10370001/4969399737384960?eid=5082902844932096" rel="noopener noreferrer"&gt;&lt;strong&gt;Quick Start Full Stack Web Development&lt;/strong&gt;&lt;/a&gt; course. With several tutorials and quizzes to assess your progress, you’ll get hands-on experience with each step of web application development. Throughout the course, you’ll learn how to develop a client page with React, create an API with Flask, work with databases with SQLAlchemy, and deploy your application on Heroku. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy learning!&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Continue learning more about web development on Educative
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/web-developer-faq?eid=5082902844932096" rel="noopener noreferrer"&gt;The Web Developer FAQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.educative.io/blog/fullstack-javascript-introduction?eid=5082902844932096" rel="noopener noreferrer"&gt;An introduction to full-stack JavaScript development&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.educative.io/blog/the-journey-to-become-a-full-stack-js-developer-starts-here?eid=5082902844932096" rel="noopener noreferrer"&gt;Roadmap to full-stack: How to become a full-stack developer&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Start a discussion
&lt;/h3&gt;

&lt;p&gt;What's your approach to learning full-stack? Was this article helpful to you? Let us know in the comments below!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>python</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Get started with building Alexa skills: Basics and best practices</title>
      <dc:creator>Erica V</dc:creator>
      <pubDate>Tue, 01 Mar 2022 19:04:18 +0000</pubDate>
      <link>https://forem.com/educative/get-started-with-building-alexa-skills-basics-and-best-practices-5a3n</link>
      <guid>https://forem.com/educative/get-started-with-building-alexa-skills-basics-and-best-practices-5a3n</guid>
      <description>&lt;p&gt;Over the years, human-computer interaction (HCI) has steadily evolved to allow more intuitive and natural interactions between human and machine. Before the late 1970’s, you needed to be a computer specialist who used text commands to interact with computers. Then, the introduction of graphical user interfaces (GUIs) allowed people who weren't specialists to interact with computers, using visual elements such as icons and menus. Today, the possibilities for human-computer interaction continue to widen with the growing use of Voice User Interfaces (VUIs).&lt;/p&gt;

&lt;p&gt;VUIs allow people to interact with computers using voice commands. VUIs are enriched by conversational artificial intelligence (AI), which help make our voice interactions feel as natural as conversations. There are many implementations and use cases of conversational AI, in industries ranging from healthcare to finance. Amazon’s Alexa is one popular implementation of conversational AI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Today, we’ll discuss how you can contribute to a new generation of voice apps by building your own Alexa skills for Amazon Alexa&lt;/strong&gt;. Whether you want to be a full-time Alexa developer, build a project to impress at Amazon interviews, or create fun tools to share with your family and friends, this is a great place to start.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We’ll cover&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Building Alexa skills 101&lt;/li&gt;
&lt;li&gt;Best practices of voice design&lt;/li&gt;
&lt;li&gt;Basics of building Alexa skills&lt;/li&gt;
&lt;li&gt;Additional considerations&lt;/li&gt;
&lt;li&gt;Wrapping up and next steps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Building Alexa skills 101
&lt;/h2&gt;

&lt;p&gt;Alexa is a virtual assistant that comes with pre-built functions such as weather updates and alarms. You can also create new Alexa skills that users can find and enable on the Alexa Skills Store. Your skills will change the way people interact with smart speakers such as the Echo Dot, or smart home devices like the Echo Show. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You don’t need to be a specialist in conversational AI to develop new Alexa skills&lt;/strong&gt;. There are various tools and software development kits (SDKs) available to support Alexa skill development. The official SDK for Amazon Alexa skills is the Alexa Skills Kit (ASK). ASK provides self-service APIs as well as other tools that you can use to create your own skill in the Amazon developer console. This includes Alexa skill blueprints, which offer templates for common skills like trivia and games. Alternatively, you can also “Start from scratch” as a template. &lt;/p&gt;

&lt;p&gt;To host your backend, you have the convenient option to use Alexa-hosted skills or to provision your own resources. If you opt for Alexa-hosted skills, you can select between Python or Node.js. You’ll also be able to deploy directly to AWS Lambda from the Amazon developer console.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here’s what you’ll need to start building your own custom Alexa skills&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Knowledge of web basics (e.g. JSON, HTTP protocols, etc)&lt;/li&gt;
&lt;li&gt;Knowledge of programming basics (a language such as JavaScript, Python, Node.js) &lt;/li&gt;
&lt;li&gt;Amazon developer account&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You’ll also need to know some voice design best practices and Alexa basics, but we’ll cover some of that next. &lt;/p&gt;



&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Best practices of voice design
&lt;/h2&gt;

&lt;p&gt;Compared to apps built for the screen, voice-powered apps have their own set of best practices. Voice services should be inspired by qualities of real-world conversations to ensure an intuitive and engaging user experience.&lt;br&gt;
There are four design principles that Amazon recommends following for building Alexa skills.&lt;/p&gt;

&lt;h3&gt;
  
  
  Be adaptable
&lt;/h3&gt;

&lt;p&gt;People use different words to express the same ideas or intentions. When processing a person’s response, a voice application should be able to consider the many different paths that can yield the same results.&lt;/p&gt;

&lt;h3&gt;
  
  
  Be personal
&lt;/h3&gt;

&lt;p&gt;Your voice assistant is sort of a robot, but it’s serving humans. As such, it should strive toward more human standards. If someone responded to you with the same phrases, you may quickly lose interest in the conversation. To keep the user experience engaging, you’ll need to &lt;em&gt;personalize&lt;/em&gt; your voice app to have a variation of responses.&lt;/p&gt;

&lt;h3&gt;
  
  
  Be available
&lt;/h3&gt;

&lt;p&gt;Voice services should make it clear what options are available to their users. However, you don’t want to overload users with an entire menu of options. Being available means you offer users their available options, while keeping things as simple and brief as possible. &lt;/p&gt;

&lt;h3&gt;
  
  
  Be relatable
&lt;/h3&gt;

&lt;p&gt;Just like conversations with humans, you want your voice app to feel human and relatable. To do this, we need to make sure that the app’s responses sound natural and conversational. Some of the strategies to help achieve this are using contractions (e.g. “can’t” instead of “can not”) and transition words (e.g. “first”).&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Basics of building Alexa skills
&lt;/h2&gt;

&lt;p&gt;To start building your custom Alexa skill, your interaction model will be defined with the following components: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Wake word&lt;/strong&gt;: A wake word is the word that wakes your virtual assistant. In the case of Alexa, it’s “Alexa.”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Invocation name&lt;/strong&gt;: Once your virtual assistant is activated and listening, an invocation name tells Alexa which skill you want to open. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Utterances&lt;/strong&gt;: Utterances are the statements or questions you express to Alexa. Since many different utterances can express the same thing, variation of utterances should be expected, per the “Be adaptable” design requirement. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intent&lt;/strong&gt;: Intent is the action that Alexa should take in response to the utterance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slot&lt;/strong&gt;: Slots are variable inputs in utterances. They’re useful for cases like numbers, it’s incredibly tedious and unreasonable to have to enumerate all possible utterances one could tell Alexa (e.g. zero to infinity). &lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional considerations
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Alexa skill building process
&lt;/h3&gt;

&lt;p&gt;ASK has made the Alexa skill building process rather streamlined. However, there are still several steps you’ll need to include in your building process to ensure a good quality voice service.&lt;/p&gt;

&lt;p&gt;Your building process will involve several steps, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Planning (User experience, intents, etc)&lt;/li&gt;
&lt;li&gt;Creating the VUI &lt;/li&gt;
&lt;li&gt;Coding the backend logic&lt;/li&gt;
&lt;li&gt;Testing (From Amazon developer console or device)&lt;/li&gt;
&lt;li&gt;Store listing and certification&lt;/li&gt;
&lt;li&gt;Making improvements based on user feedback &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Remember the user
&lt;/h3&gt;

&lt;p&gt;Remember, your skill is providing a user experience. The better it is at anticipating your users, the more successful it'll be. &lt;strong&gt;You’ll want to moderate all of your design choices by prioritizing the user experience&lt;/strong&gt;. Let’s consider some of the thought that goes into the building process by focusing on scriptwriting for the user experience.&lt;/p&gt;

&lt;p&gt;When you’re building a skill from scratch, the building process will involve writing scripts. Scriptwriting can be fun. Keeping in line the voice design principles, you can personalize your script to give Alexa a bit of personality. However, be sure you don’t lose sight of what’s best for the user experience. Even if you get creative, Alexa’s interactions should still be relevant and reasonably brief. &lt;/p&gt;

&lt;p&gt;When writing scripts, you certainly plan for the happy path, which is the ideal interaction you imagine between a user and your skill. However, you should also plan for &lt;strong&gt;edge cases&lt;/strong&gt;. Edge cases are everything outside of the happy path. They may be what you’re not expecting, but they’re something you should plan for. To prepare for edge cases, you’ll need to consider the various types of utterances that your virtual assistant can be trained for, and which of them require a specific rather than general response. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some edge cases may be questions that are entirely irrelevant, while others may be a help case in which your user may need assistance&lt;/strong&gt;. For instance, if they ask Alexa, “What’s your favorite fruit?” it’s not a bad idea for Alexa to give a general response such as, “Sorry, I’m a trivia game. Tell me when you’re ready to start playing.” But if the user asks, “Can you help me?” it might be helpful to prepare a specific response that clarifies something for the reader, such as, “This is a trivia game. Tell me when you’re ready to start playing, or say ‘Stop’ to exit.” &lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up and next steps
&lt;/h2&gt;

&lt;p&gt;It’s always exciting to gain new skills, and learning to build voice apps is no exception! Building Alexa skills will open the door for you to experiment with next-gen voice-powered apps. Whether you become a dedicated Alexa developer, or make a hobby out of creating skills, there’s a lot you can do with the help of the Alexa Skill Kit.&lt;/p&gt;

&lt;p&gt;For a deeper exploration of building Alexa skills, check out our course &lt;a href="https://www.educative.io/courses/building-voice-apps-alexa?eid=5082902844932096" rel="noopener noreferrer"&gt;&lt;strong&gt;Alexa Skills 101: Building voice apps for Alexa&lt;/strong&gt;&lt;/a&gt;. You’ll learn more about voice design and how VUIs can enhance your apps. The course includes a step-by-step tutorial on the Alexa skill building process, quizzes to test your knowledge, and a hands-on mini project.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy learning!&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Continue learning about next-gen trends on Educative
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/unusual-uses-of-ai?eid=5082902844932096" rel="noopener noreferrer"&gt;Bytesize: 3 unusual uses of AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/deep-vs-machine-learning?eid=5082902844932096" rel="noopener noreferrer"&gt;Deep learning vs machine learning: Deep dive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/learn-alexa-skills-from-amazon-for-free?eid=5082902844932096" rel="noopener noreferrer"&gt;Learning about Alexa skills from a solutions architect&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Start a discussion
&lt;/h3&gt;

&lt;p&gt;What Alexa skill are you building? Was this article helpful? Let us know in the comments below!&lt;/p&gt;

</description>
      <category>voicedesign</category>
      <category>alexaskills</category>
      <category>vui</category>
      <category>conversationalai</category>
    </item>
    <item>
      <title>7 tips: Being your own role model as a woman in tech</title>
      <dc:creator>Erica V</dc:creator>
      <pubDate>Wed, 23 Feb 2022 22:20:12 +0000</pubDate>
      <link>https://forem.com/educative/7-tips-being-your-own-role-model-as-a-woman-in-tech-2iie</link>
      <guid>https://forem.com/educative/7-tips-being-your-own-role-model-as-a-woman-in-tech-2iie</guid>
      <description>&lt;p&gt;We have a long way to go in diversifying the tech industry. According to &lt;a href="https://insights.stackoverflow.com/survey/2021#demographics-gender-prof" rel="noopener noreferrer"&gt;Stack Overflow’s 2021 Developer Survey&lt;/a&gt;, only 4.8% of professional developers identify as women. While this number illustrates how underrepresented women are in tech, this meager 4.8% also accounts for women at the intersections of other groups who see even less representation in the industry. A programmer may not only be a woman, but also a neurodivergent single mother, a queer person of color, or a disabled veteran. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;While having a relatable role model is invaluable, they're sometimes absent for those of us who are statistically underrepresented in tech&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;On our way to a more diverse future in tech, we need brave individuals who can pave their own path and inspire positive change and promote diversity in the tech industry for generations to come. Today, we’ll discuss what it means to be your own role model as a woman in tech, and 7 tips to help you along the way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We’ll cover&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What does it mean to be your own role model?&lt;/li&gt;
&lt;li&gt;
7 tips: Being your own role model as a woman in tech

&lt;ul&gt;
&lt;li&gt;1. Get to know your best self&lt;/li&gt;
&lt;li&gt;2. Be your biggest advocate&lt;/li&gt;
&lt;li&gt;3. Claim your confidence&lt;/li&gt;
&lt;li&gt;4. Build supportive relationships&lt;/li&gt;
&lt;li&gt;5. Identify and cultivate sources of inspiration&lt;/li&gt;
&lt;li&gt;6. Embrace the process and accept imperfection&lt;/li&gt;
&lt;li&gt;7. Give yourself a break&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Wrapping up and next steps&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What does it mean to be your own role model?
&lt;/h2&gt;

&lt;p&gt;The Educative team has talked to various women across the industry. What we found was that many women didn’t have relatable role models in tech. Undoubtedly, role models and representation can be a game-changer for women speculating a future in tech. The presence of someone “like you” can serve as tangible proof of what’s possible in an industry that suggests otherwise. But when they’re few and far between, there’s power in forgetting the idols. You can blaze your own path and write your own rules instead. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Being your own role model means setting your own standards for success and paving your own path as you navigate your tech career.&lt;/strong&gt; By looking to your own standards, you don’t need to compare your journey with another person’s to validate your success. We can still be inspired by others, but it’s unfair to make comparisons with role models from entirely different backgrounds. This is especially true if you’re at the intersection of several underrepresented groups (whether it’s gender, ethnicity, or neurotypicality). Being your own role model is a mindset in which you take leadership of your life. In doing so, you can inspire future generations to come. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Equality in the workspace shouldn’t be an exception; it should be the standard. That’s non-negotiable for me as a leader.” – Mehwish Salahuddin, HR and Office Manager (and one of the many women who power Educative)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We're still writing the story of how diversity and equity in the workplace became the rule, rather than the exception. &lt;strong&gt;And you, as one character in this story, have your own unique path to pave&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  7 tips: How to be your own role model as a woman in tech
&lt;/h2&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Get to know your best self
&lt;/h3&gt;

&lt;p&gt;Part of the beauty of being your own role model is that you don’t have to compare yourself to others. Instead, you need to clarify what success and happiness looks like to &lt;em&gt;you.&lt;/em&gt; Your best self is not the person others expect you to be. Your best self is who you want to be, in the best possible scenario. After all, &lt;strong&gt;the true measure of your success and happiness should be defined by nobody other than yourself&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;In getting to know your best self, ask yourself these questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What would I be like in ten or twenty years, if everything worked in my favor?&lt;/li&gt;
&lt;li&gt;What would I set out to achieve, if I knew I wouldn’t fail?&lt;/li&gt;
&lt;li&gt;What am I known and celebrated for?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the absence of other role models, your best self will be your guiding light. While she may not feel completely “real” yet, your best self is an important resource that you can turn to when you need perspective in difficult situations.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Your best self today could be different from your best self a week ago, and yesterday. Make a general vision, and something that’s achievable on a daily basis. **You can be the best version of your best self relative to the day ahead of you – and that's good enough.&lt;/em&gt;&lt;em&gt;” – Edit Vosganians, Technology Services Librarian Specialist&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Be your biggest advocate
&lt;/h3&gt;

&lt;p&gt;We’re often our biggest critics – but we should also be our biggest advocates. Advocating for yourself means having the courage to &lt;strong&gt;highlight your accomplishments and have difficult conversations&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Workplaces benefit from a plurality from perspectives and input, so don’t be afraid to communicate. Most people have no idea what you’re going through until you talk to them about it. While it can feel daunting, communicating and addressing concerns head-on can improve a situation for you and your team members. There’s strength in being vulnerable. When identifying problems, try to propose solutions as well. If you can, support yourself with objective facts and numbers too. &lt;/p&gt;

&lt;p&gt;As part of an underrepresented group, it’s a common experience to have your voice and your accomplishments left unheard. This can feel alienating and infuriating. Just know that you aren’t alone. When you do face difficulties like this, &lt;strong&gt;be sure to take care of yourself and call on your support system for help&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;That being said, not everybody experiences a workplace where hard conversations are encouraged. If your employers don’t react well, take it with a big grain of salt. You may be a better culture fit at a different company! &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Working at Google, we have this idea of "Googleyness." It can be interpreted in a lot of ways, but my biggest take on it is to treat others with respect, and call out others when respect isn't being shown. I believe hostility creates toxicity, and that's not an environment I want any women entering tech to be a part of. It's taken me a while to build up the courage to call things out when I see it. If you're afraid of conflict and have an awesome manager, I strongly encourage you to lean on them for support." – Abigail Carey, Developer Advocate&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Claim your confidence
&lt;/h3&gt;

&lt;p&gt;If you don’t feel like you’re an amazing developer, here’s a little secret about performers: All performers have moments where they don’t feel like playing their part. But they do it anyway. It rings in tune with the saying “Fake it ‘til you make it.” And it works. &lt;/p&gt;

&lt;p&gt;No matter your level of experience, &lt;strong&gt;you have every right to take up space in the place that you're in&lt;/strong&gt;. If you’re struggling with self-doubt, you’re not alone in your feelings. Part of the issue could be that you’re feeling imposter syndrome, which is completely normal for high-performing individuals. But as an underrepresented group, there are several other elements that can threaten your confidence, especially mistreatment ranging from microaggressions to demeaning comments. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Being a Black woman… in this industry… things like [microaggressions] will happen... What helped me… were my female friends and peers… it's happened to them. It's happened to some guys as well. … We have a few people like that in the [tech] culture who feel like they want to take over the room. If you're taking up too much space, they want a piece of that space.” – Timirah James, App Frameworks Evangelist (Hear her full story on &lt;a href="https://www.youtube.com/watch?v=dVa0o0lXOcI&amp;amp;list=PL5Pdj6odxsXSBhRN7lCRJnlURTaJP27kv&amp;amp;index=9&amp;amp;t=1086s" rel="noopener noreferrer"&gt;Educative Sessions&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Keep a meter on your confidence. When challenges arise, honor your feelings, take care of yourself, and lean on your support system. &lt;strong&gt;You’re fully competent and capable, and you have a seat at the table because you’ve earned it&lt;/strong&gt;. Even if it seems like the odds are stacked against you, believe in yourself, and the people who believe in you too will see you and lift you up too. &lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Build supportive relationships
&lt;/h3&gt;

&lt;p&gt;Even on a molecular level, we are nothing without relationships. As the idiom goes, “It takes a village” to raise a child, and the same can be said for our careers. When you’re looking for advice or someone to talk things out with, your community will be an invaluable support that you can turn to. Some people are lucky to find a supportive community with colleagues in their workplace – for the rest of us, it’s up to us to build our own supportive relationships with others. The key to doing this is &lt;strong&gt;finding out who you can trust and building mutually supportive relationships with them&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;It can take some time to build a community, but it’s well worth the time investment. To meet people, you can participate in study groups, volunteer your time, or go to Meetups or networking events. You can also just focus on building your own community that consists of individual relationships. Be open to individuals with differences too – there’s a lot you can learn by straying away from a narrow window of “like-minded” people. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“I still think it’s very important to volunteer and to reach out. LinkedIn can be scary because you don’t know anyone necessarily, but just reach out to someone who came from the same school or is at a company… that you like or want to know more about.” – Ivette Cortez, Business Program Manager (Hear her full story on &lt;a href="https://www.youtube.com/watch?v=By0G7tdNe9c" rel="noopener noreferrer"&gt;Educative Sessions&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Identify and cultivate sources of inspiration
&lt;/h3&gt;

&lt;p&gt;All successful people have been inspired by something. Inspiration can be found everywhere. Be curious about the world and look for the things that speak to you. When you don’t have a clear idea of what your “best self” would do, you can turn to these sources of inspiration to navigate your path forward. &lt;/p&gt;

&lt;p&gt;Your inspiration could be as tangible as a person or as abstract as a concept. The person could be your next door neighbor. They could also be someone you’ve never met, such as women in tech history or even fictional characters. Apart from people, inspiration can span as wide a range as your imagination allows. It could be found in a philosophical concept, or even in your favorite animal. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I don’t have a role model, but I have a role motto. My motto is “Get it done.” … Just the satisfaction at the end of the day that I’ve crossed some things off and contributed to the process is enough for me to consider it a good day. I’m happy with myself going home with that." – Edit Vosganians, Technology Services Librarian Specialist&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Embrace the process and accept imperfection
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“I want to be at a place where I’m comfortable not knowing everything. I’ve found that senior people are okay with admitting they don’t have the answers, and those with less experience tend to try and sound right all the time.” - Kaitlyn Yamamoto, Software Engineer&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;One of the biggest ways we hold ourselves back is by setting unrealistic expectations for ourselves, and prioritizing product over process. If you settle for nothing short of your end result, you may be missing opportunities to &lt;strong&gt;be present in the process by celebrating milestones and learning from mistakes&lt;/strong&gt;. Instead of paralyzing yourself with unrealistic expectations, be content with small steps toward your goals. &lt;/p&gt;

&lt;p&gt;It’s important to celebrate not just your end goals, but each step along the way. Acknowledge and celebrate your accomplishments. Set up a consistent reward system. You don’t need to reward yourself based off something being completely “done.” It’s enough that you did your best, showed up, or moved something forward. Rewarding yourself for even the little things will keep your morale strong. Remember that you’re still winning, no matter how imperfect you may feel.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Give yourself a break
&lt;/h3&gt;

&lt;p&gt;Self-care is incredibly important. Do you ever write “Rest” on your to-do list? &lt;strong&gt;Be they big or small, the challenges you face on the day-to-day add up&lt;/strong&gt;. Even if others won’t, cut yourself slack and show yourself some love.&lt;/p&gt;

&lt;p&gt;Give yourself breaks and opportunities to disconnect and destress. Taking breaks will help you stay strong and resilient through tough times. It will also help you be more productive in the long-term. When you’re in the zone, you may never think the solution to debugging that code is a simple 5 minute break to stretch your bones, give space to your emotions, or clear your mind.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“...We need restoration… recognizing that is a huge first step... Whatever it is, [find something] that really restores that energy for you and gives you energy rather than… you expending energy on something else.” – Mary Thengvall, Director of Developer Relations (Hear her full story on &lt;a href="https://www.youtube.com/watch?v=QLHICsxwDjY&amp;amp;list=PL5Pdj6odxsXSBhRN7lCRJnlURTaJP27kv&amp;amp;index=20" rel="noopener noreferrer"&gt;Educative Sessions&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up and next steps
&lt;/h2&gt;

&lt;p&gt;Being your own role model is about paving your own path, owning your unique journey, and defining your own standards for success. While you could look to other role models for inspiration, nobody is walking in your shoes but yourself. By owning your story, you can succeed while staying authentic to yourself, and serve as an inspiration for a more diverse future in tech – one step at a time.&lt;/p&gt;

&lt;p&gt;To hear about how other women paved their own paths into tech, check out the &lt;a href="https://www.youtube.com/playlist?list=PL5Pdj6odxsXSBhRN7lCRJnlURTaJP27kv" rel="noopener noreferrer"&gt;&lt;strong&gt;Women in Tech series&lt;/strong&gt; on our podcast, Educative Sessions&lt;/a&gt;. You’ll hear engaging stories on the challenges they faced, the wisdom that helped them succeed, and the sense of humor that helped along the way.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy learning!&lt;/em&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Keep learning about developer success
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/get-a-developer-job-you-love?eid=5082902844932096" rel="noopener noreferrer"&gt;8 job search tips to get a developer job you love in 2022&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/womens-history-month-tech?eid=5082902844932096" rel="noopener noreferrer"&gt;Women’s History Month: women in tech throughout the ages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/empowering-women-in-the-tech-world?eid=5082902844932096" rel="noopener noreferrer"&gt;Women Who Code: Educative's journey to empower women in tech&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>womenintech</category>
      <category>career</category>
      <category>inspiration</category>
    </item>
    <item>
      <title>8 steps to an offer: Ace your Netflix software engineer interview</title>
      <dc:creator>Erica V</dc:creator>
      <pubDate>Thu, 17 Feb 2022 23:49:23 +0000</pubDate>
      <link>https://forem.com/educative/8-steps-to-an-offer-ace-your-netflix-software-engineer-interview-33jl</link>
      <guid>https://forem.com/educative/8-steps-to-an-offer-ace-your-netflix-software-engineer-interview-33jl</guid>
      <description>&lt;p&gt;So you have an interview at Netflix, or you’ve just submitted an application and are eagerly awaiting a response. Job searches and interviews can be daunting, and Netflix is certainly very particular about who they hire. However, with the right interview preparation, you can cruise through the hiring process and land your dream job.&lt;/p&gt;

&lt;p&gt;Today we'll cover 8 steps to help you ace your software engineer interview at Netflix. While this article focuses on Netflix, you can apply much of what you learn to other FAANG companies, such as Amazon and Apple.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We'll cover the following steps&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1. Study the Netflix culture deck&lt;/li&gt;
&lt;li&gt;2. Connect your past experience with Netflix culture and values&lt;/li&gt;
&lt;li&gt;3. Prepare to grok the system design interview&lt;/li&gt;
&lt;li&gt;4. Study the fundamentals in one programming language&lt;/li&gt;
&lt;li&gt;5. Learn the ins and outs of the Netflix interview process&lt;/li&gt;
&lt;li&gt;6. Shake off your imposter syndrome&lt;/li&gt;
&lt;li&gt;7. Have a winning mindset&lt;/li&gt;
&lt;li&gt;8. Position yourself as a next-gen engineer&lt;/li&gt;
&lt;li&gt;Wrapping up and next steps&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8 steps to prepare for your Netflix software engineer interview
&lt;/h2&gt;



&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Study the Netflix culture deck
&lt;/h3&gt;

&lt;p&gt;Many software engineers make the mistake of underestimating the importance of their culture fit in the interview process. Make no mistake – Netflix cares, and so should you.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Our core philosophy is people over process. More specifically, we have great people working together as a dream team. With this approach, we are a more flexible, fun, stimulating, creative, collaborative and successful organization.” – From the Netflix culture memo&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you haven’t heard from the recruiter yet, they’ll tell you that you need to read the culture deck before your initial phone screen. &lt;strong&gt;Even for technical roles, your culture fit is weighs heavily&lt;/strong&gt; on your candidacy, from start to finish.&lt;/p&gt;

&lt;p&gt;So go and check out the &lt;a href="https://jobs.netflix.com/culture" rel="noopener noreferrer"&gt;Netflix culture memo&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Connect your past experience with Netflix culture and values
&lt;/h3&gt;

&lt;p&gt;Look at your resume and start connecting dots between your past experience and Netflix’s values. You’ll want to tell a story about how your past accomplishments demonstrate your alignment with Netflix’s cultural values, such as leadership and candor.&lt;/p&gt;

&lt;p&gt;Phone interviews are the very first steps in the interview process. There are two phone calls, where the recruiter and hiring manager will primarily ask behavioral questions to assess your culture fit. All they’ll have in hand is your resume and perhaps your LinkedIn profile. By targeting details in your resume, you’ll build a more tangible story of your culture fit.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip&lt;/strong&gt;: Practice talking about your accomplishments out loud. As opposed to writing a cover letter and resume, sometimes verbalizing our strengths is the hardest part.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Prepare to grok the system design interview
&lt;/h3&gt;

&lt;p&gt;Netflix’s technical interview questions aren’t like LeetCode questions. Instead, they’re more open-ended, with the aim of assessing your design skills and subject matter expertise. Since Netflix mainly hires senior developers, this emphasis on design skills is in line with industry expectations. This means you’ll want to study system design principles and practice system design interview questions.&lt;/p&gt;

&lt;p&gt;System design interviews ask open-ended questions such as “Design the Uber backend,” “Design TinyURL," or “Design an API.” While you may not be asked this particular question, practicing designing video streaming services such as Netflix will surely be good to know too! Throughout the interview, you’ll share your thought process and whiteboard solutions to demonstrate how you apply design principles to real-world problems.&lt;/p&gt;



&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Study the fundamentals in one programming language
&lt;/h3&gt;

&lt;p&gt;Netflix’s technical questions are focused on design, but you’ll still need to show your problem-solving skills with more basic programming concepts. Unless the job description says otherwise, we recommend focusing on &lt;strong&gt;a strong working knowledge of one programming language&lt;/strong&gt;. Make sure to study various programming basics in that language, including design patterns and algorithms and data structures, such as binary search trees and linked lists.&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Learn the ins and outs of the Netflix interview process
&lt;/h3&gt;

&lt;p&gt;The Netflix hiring process consists of phone calls and onsite interviews. They cover both technical questions and behavioral questions. Since Netflix values hiring for their team, the interview process will not only involve HR and hiring managers, but engineering team members as well. You’ll want to research and prepare for each round in the interview process so that you know what to expect – and what is expected of you.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Reminder&lt;/strong&gt;: Don’t procrastinate on reading the culture deck. Your culture fit will play a huge part in the interview process, as early as the initial phone screen.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Shake off your imposter syndrome
&lt;/h3&gt;

&lt;p&gt;Job interviews make a lot of us nervous, and imposter syndrome can make it even worse. While it’s good to be humble, we often vastly underestimate the value we bring to the table (This is especially true for women in the tech world). If we don’t truly believe in ourselves, it’ll be harder to convince others to believe in us too.&lt;/p&gt;

&lt;p&gt;Take some time to reflect and fully own your narrative and your accomplishments. Be generous with yourself and believe that you have the right stuff to blow the other candidates out of the water.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip&lt;/strong&gt;: Sometimes it helps to dress the part. Even if nobody can see you in your PJs during a phone interview, there’s something powerful about embodying your professionalism with a professional "uniform."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
   7. Have a winning mindset
&lt;/h3&gt;

&lt;p&gt;A winning mindset is the key to success. While this may mean something different to everyone, we challenge you to approach it from what may seem a surprising angle: Be unafraid of failure.&lt;/p&gt;

&lt;p&gt;There’s something liberating about fully engaging in the interview process, without getting too hung up about the results. Even if you don’t get an offer, you haven’t failed. With so many other developers competing for jobs at Netflix, sometimes you just won’t be the top pick. Don’t be hard on yourself if you aren’t. Instead, reflect on what you could do better next time – and &lt;strong&gt;celebrate what you already did well&lt;/strong&gt;. Certainly, you’ve become a stronger interviewer – and you’re one step closer to a developer job you love.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Position yourself as a next-gen engineer
&lt;/h3&gt;

&lt;p&gt;Netflix is looking for folks who can journey forward with them into the constantly changing landscape of tech. You’ll want to position yourself as the right candidate to evolve and embrace new challenges with them along the way.&lt;/p&gt;

&lt;p&gt;To position yourself as a next-gen engineer, express your enthusiasm and awareness of emerging technologies such as machine learning. Even if your position only requires proficiency in one language, express excitement about any opportunities to work with the other technologies at Netflix. Netflix uses various technologies across teams and departments, including Scala, Flink, Kafka, and SQL.&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up and next steps
&lt;/h2&gt;

&lt;p&gt;Now that you know how to prepare for your Netflix interview, it’s time to get the pedal to the metal and get that dream job.&lt;/p&gt;

&lt;p&gt;To help you grok your interviews, we’ve created &lt;a href="https://learn.educative.io/interview-prep?eid=5082902844932096" rel="noopener noreferrer"&gt;&lt;strong&gt;Interview Prep with Educative&lt;/strong&gt;&lt;/a&gt;. Here, you’ll find all our interview prep resources in one place, from courses and learning paths to free tutorials and educational blog resources. We cover all the bases, from coding questions to system design questions and answers.&lt;br&gt;
Now go show them what you’ve got, and don’t forget us little people when you become a Netflix employee.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy learning!&lt;/em&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Continue learning about interview prep on Educative
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/how-to-prepare-system-design-interview?eid=5082902844932096" rel="noopener noreferrer"&gt;How to prepare for the System Design Interview in 2022&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/get-a-developer-job-you-love?eid=5082902844932096" rel="noopener noreferrer"&gt;8 job search tips to get a developer job you love in 2022&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/how-to-negotiate-salary-software-developer?eid=5082902844932096" rel="noopener noreferrer"&gt;How to negotiate your salary as a software developer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Start a discussion
&lt;/h3&gt;

&lt;p&gt;Have you interviewed at Netflix before? Was this article helpful to you? Let us know in the comments below!&lt;/p&gt;

</description>
      <category>interview</category>
      <category>career</category>
      <category>netflix</category>
    </item>
    <item>
      <title>6 coding best practices for beginner programmers</title>
      <dc:creator>Erica V</dc:creator>
      <pubDate>Mon, 14 Feb 2022 21:44:18 +0000</pubDate>
      <link>https://forem.com/educative/6-coding-best-practices-for-beginner-programmers-jk</link>
      <guid>https://forem.com/educative/6-coding-best-practices-for-beginner-programmers-jk</guid>
      <description>&lt;p&gt;Code is written once. Then it's read, debugged, refactored, and scaled constantly. How you write code today will help you maintain and scale the application later down the road.  We’re frequently under the pressure of deadlines in software development. &lt;/p&gt;

&lt;p&gt;Regardless, it’s important to &lt;strong&gt;use coding best practices to help ensure better quality code for yourself and for anyone who may have to extend that code in the future&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Today, we’ll discuss the importance of using coding best practices, and six best practices you should know as a beginner programmer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We’ll cover&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why you should use coding best practices&lt;/li&gt;
&lt;li&gt;
6 coding best practices for beginner programmers

&lt;ul&gt;
&lt;li&gt;1. Code indentation&lt;/li&gt;
&lt;li&gt;2. Meaningful naming&lt;/li&gt;
&lt;li&gt;3. Comments that add context&lt;/li&gt;
&lt;li&gt;4. Don’t repeat yourself&lt;/li&gt;
&lt;li&gt;5. Low coupling and high cohesion&lt;/li&gt;
&lt;li&gt;6. Consider your context&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Wrapping up and next steps&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Why you should use coding best practices
&lt;/h2&gt;

&lt;p&gt;As a coder, developing a coding style that’s mindful of these best practices will make it easier to extend and debug the code in the future. Even if you’re no longer working with that codebase, the legacy of your work will affect the community of developers who work with that code in the future.&lt;/p&gt;

&lt;p&gt;Coding best practices help ensure code quality and codebase health. Using good practices when writing code will support the characteristics of good code, that is: Maintainability, scalability, readability, and portability.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Code is written once and read thousands of times.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Some good coding practices, such as commenting, don’t affect the functionality of a program. &lt;strong&gt;However, they do impact the experience for the humans who’ll be reading and maintaining that code&lt;/strong&gt;. You may be able to get your program to execute, but if you don’t implement best practices, a quickly done task can backfire by creating confusion and problems in the future. Writing good code now will help ease the processes of code reviews, unit tests, and refactoring.&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;  &lt;/p&gt;
&lt;h2&gt;
  
  
  6 coding best practices for beginner programmers
&lt;/h2&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Code indentation
&lt;/h3&gt;

&lt;p&gt;Proper indentation is the most important thing you can do to ensure that your code is readable and easy to understand. There are many different indentation styles, such as K&amp;amp;R, OTBS, and Stroustrup. These styles all advise that we add spaces and new lines in our code, so that each block of code is readily identifiable.&lt;/p&gt;

&lt;p&gt;In the following code example, &lt;strong&gt;it’s difficult to identify the boundaries of functions, loops, and conditional blocks without proper indentation&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
int find(int A[], int size) { int ret = -1; for(int i = 0; i &amp;lt; size; i++) {
if(A[i] &amp;gt; ret){ ret = A[i];
}
  }
   return ret;}
int main() { int A[]={1, 4, 7, 13, 99, 0, 8, 5}; printf("\n\n\t%d\n\n", find(A, 8));
return 0; }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the following example, we rewrite this code with proper indentation. It becomes much easier to understand.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
int find(int A[], int size) {
   int ret = -1;
   for (int i = 0; i &amp;lt; size; i++) {
       if (A[i] &amp;gt; ret) {
           ret = A[i];
       }
   }
   return ret;
}

int main() {
   int A[] = {1, 4, 7, 13, 99, 0, 8, 5};
   printf("\n\n\t%d\n\n", find(A, 8));
   return 0;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Meaningful naming
&lt;/h3&gt;

&lt;p&gt;Your code’s variable names and function names should be intuitive. Ideally, we should be able to guess what a function does based on the function’s name. &lt;/p&gt;

&lt;p&gt;You should &lt;strong&gt;give intuitive names to objects, variables, classes, functions, and constants&lt;/strong&gt;. However, we also strive to keep our code concise and readable. If the most intuitive name is too long to keep code concise, you’re welcome to use its shorthand. Just be mindful that the &lt;strong&gt;shorthand should remain intuitive as well&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The following example of code does not follow meaningful naming conventions. This makes it difficult to understand and reuse.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

int find(int A[], int size) {
   int ret = -1;
   for (int i = 0; i &amp;lt; size; i++) {
       if (A[i] &amp;gt; ret) {
           ret = A[i];
       }
   }
   return ret;
}
int main() {
   int A[]={1, 4, 7, 13, 99, 0, 8, 5};
   printf("\n\n\t%d\n\n", find(A, 8));
   return 0;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In contrast, the following code example has the same functionality, but meaningful naming makes it easier to understand.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

int findLargest(int inputAry[], int inputArySize) {
   int largest = -1;
   for (int loop = 0; loop &amp;lt; inputArySize; loop++) {
       if (inputAry[loop] &amp;gt; largest) {
           largest = inputAry[loop];
       }
   }
   return largest;
}

int main() {
   int A[]={1, 4, 7, 13, 99, 0, 8, 5};
   printf("\n\n\t%d\n\n", findLargest(A, 8));
   return 0;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Comments that add context
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Code is for the compiler, while comments are for coders.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Even if other best practices are accounted for, source code can’t always be self-explanatory. When code can’t explain itself, comments should step in. Here, good practices for writing stories apply to writing code: &lt;strong&gt;The more you anticipate your reader’s thoughts, the more impactful your comments will be&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here are some general guidelines for code comments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prioritize quality over quantity&lt;/strong&gt;: Don’t go commenting on every line of code. Comments should still support code readability. If your function name or variable name already infers what is happening, you don’t need to let readers know.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don’t assume your reader has context&lt;/strong&gt;: Let your readers know the context behind the code so they can understand why each part is necessary. If you’ve modified code to fix a bug, &lt;em&gt;comments help keep that bug fixed&lt;/em&gt;.    &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Explain the “Why”&lt;/strong&gt;: Don’t tell us what we can already see in the code. Explain the &lt;em&gt;why&lt;/em&gt; behind it. We can see which method or function you’re using, but knowing &lt;em&gt;why&lt;/em&gt; helps readers better understand the code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Code commenting helps make codebases and projects more maintainable. When done well, good commenting can streamline code reviews. Comments also support developer onboarding by helping newcomers familiarize themselves more quickly with a codebase. &lt;/p&gt;

&lt;p&gt;The following is an example of code commenting done well.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

/**
* Finds the largest integer from the given array (inputAry)
* of size (inputArySize).
*/
int findLargest(int inputAry[], int inputArySize) {
   //Assumption: array will have +ve elements.
   //Thus, the largest is initialized with -1 (smallest possible value).
  int largest = -1;

   // Iterate through all elements of the array.
  for (int loop = 0; loop &amp;lt; inputArySize; loop++) {

      //Replace largest with element greater than it.
      if (inputAry[loop] &amp;gt; largest) {
          largest = inputAry[loop];
      }

  }
  //returns the largest element of the array
  return largest;
}

int main() {
   int A[]={1, 4, 7, 13, 99, 0, 8, 5};
   printf("\n\n\t%d\n\n", findLargest(A, 8));
   return 0;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Don’t repeat yourself
&lt;/h3&gt;

&lt;p&gt;Also known as the DRY principle, “Don’t repeat yourself” strives to reduce code duplication. The idea here is that if you have code that’s doing the same thing twice, it should be made into a function. &lt;strong&gt;By abstracting code into functions, you can reuse that code and make development more efficient&lt;/strong&gt;. In addition, avoiding code duplication makes debugging easier, as you won’t have to fix a bug in every instance of repeated code throughout your program.&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Low coupling and high cohesion
&lt;/h3&gt;

&lt;p&gt;Low coupling and high cohesion are different yet complementary principles. &lt;strong&gt;Low coupling encourages separation between unrelated parts of a codebase, while high cohesion encourages integration between related parts of a codebase&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl0n3zdbx78wz4yqb74q2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl0n3zdbx78wz4yqb74q2.png" alt="low coupling" width="800" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They may sound like opposing principles, but low coupling and high cohesion work together to ensure the maintainability, scalability, and testability of our applications. High cohesion strives to keep a close relation between units that need to know about each other. When it’s time to extend code, we benefit from finding related code in the same places. On the other hand, low coupling strives to reduce dependencies between unrelated units. &lt;/p&gt;

&lt;p&gt;If we don't follow this best practice, &lt;strong&gt;we risk trending toward &lt;em&gt;high coupling and low cohesion&lt;/em&gt;.&lt;/strong&gt; This results in excessive dependencies, which has several negative impacts. One undesirable result is an increased vulnerability to bugs, as a bug in one unit will affect its dependent units as well.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgwpuakyefyzgutxtl8v1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgwpuakyefyzgutxtl8v1.png" alt="high coupling" width="800" height="302"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Low coupling and high cohesion apply to how we treat any of our language constructs, from methods and classes to libraries and APIs. These good practices can be achieved through what are known as SOLID principles in object-oriented programming.&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Consider your context
&lt;/h3&gt;

&lt;p&gt;Coding guidelines vary across different contexts. Depending on your programming language, company, or industry, there may be different coding guidelines for naming conventions, coding style, indentation, and file structures. Be mindful of your project’s individual needs and honor those coding standards when you can. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Use your best judgment, and adjust to whatever your situation calls for.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's important to know good coding practices, but &lt;strong&gt;rules are simply generalizations without context. To be used well, they need your good judgment&lt;/strong&gt;. Keeping &lt;em&gt;all&lt;/em&gt; these principles in mind, you should follow your instincts as a programmer. There will be times where your context challenges a general principle, and you know your case best. This is what others mean when they say not to take these rules “pragmatically,” and we agree.  &lt;/p&gt;



&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up and next steps
&lt;/h2&gt;

&lt;p&gt;Writing good code is essential to your success as a developer. By keeping these coding practices in mind, you can ensure that your code is easier to maintain, scale, and debug. The more you code, the better you’ll get at applying and adapting these practices across different languages and projects. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To master more best practices for your coding career, check out the&lt;/strong&gt; &lt;a href="https://www.educative.io/courses/coding-career-handbook?eid=5082902844932096" rel="noopener noreferrer"&gt;&lt;strong&gt;Coding Career Handbook&lt;/strong&gt;&lt;/a&gt;. This course covers everything from writing quality code to career strategy for junior through senior developers.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy learning!&lt;/em&gt;&lt;/p&gt;



&lt;h3&gt;
  
  
  Continue learning about coding on Educative
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/learn-how-to-code-beginners-guide?eid=5082902844932096" rel="noopener noreferrer"&gt;Learn how to code: The beginner’s guide to coding and syntax&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/javascript-tips-simplify-code?eid=5082902844932096" rel="noopener noreferrer"&gt;15 JavaScript tips: Best practices to simplify your code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/ruby-best-practices?eid=5082902844932096" rel="noopener noreferrer"&gt;8 tricks and best practices for improving your Ruby code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Start a discussion
&lt;/h3&gt;

&lt;p&gt;What best practices have you been using? Was this article helpful? Let us know in the comments below!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>coding</category>
      <category>tip</category>
    </item>
    <item>
      <title>Ace Google's behavioral interview: Questions and tips for coders</title>
      <dc:creator>Erica V</dc:creator>
      <pubDate>Thu, 10 Feb 2022 20:16:09 +0000</pubDate>
      <link>https://forem.com/educative/ace-googles-behavioral-interview-questions-and-tips-for-coders-5a9c</link>
      <guid>https://forem.com/educative/ace-googles-behavioral-interview-questions-and-tips-for-coders-5a9c</guid>
      <description>&lt;p&gt;While contradictory, it makes perfect sense: &lt;strong&gt;Some of the most important qualities we evaluate in tech professionals aren’t technical&lt;/strong&gt;. After all, what help would your knowledge of libraries and languages be if you can’t cooperate with your colleagues? Acing the behavioral interview is essential to landing your dream developer job. Today we’ll talk about acing behavioral interview questions at one of the most desirable tech companies: Google. &lt;/p&gt;

&lt;p&gt;Google is notoriously committed to hiring people who are a strong cultural fit for their company. Your level of cultural fit is what Google calls your “Googleyness.” Google takes their behavioral interviews seriously. If you take your interview prep just as seriously, you’ll not only pass with flying colors at Google, but you’ll be well-positioned to ace behavioral interviews at other companies too, such as Amazon and Microsoft.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We’ll cover&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why you need non-tech skills for your tech job&lt;/li&gt;
&lt;li&gt;What Google looks for in behavioral interviews&lt;/li&gt;
&lt;li&gt;
Top Google behavioral interview questions

&lt;ul&gt;
&lt;li&gt;Describe your work style.&lt;/li&gt;
&lt;li&gt;How do you handle conflict?&lt;/li&gt;
&lt;li&gt;Tell me about a time you led a project.&lt;/li&gt;
&lt;li&gt;Tell me about a time you had to take hard feedback.&lt;/li&gt;
&lt;li&gt;Tell me about a time you improved a process.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Wrapping up and next steps&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why you need non-tech skills for your tech job
&lt;/h2&gt;

&lt;p&gt;Answering technical questions regarding data structures and algorithms is important. But every big tech company is driven by non-tech values. When you’re a software engineer candidate, it’s not enough to prepare for coding and system design interviews. After all, other candidates may have the same technical qualifications as yourself. &lt;strong&gt;You need to demonstrate that your personality and soft skills make you a strong culture fit for the company as well&lt;/strong&gt;. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Technical interviews assess whether you’re a good fit for a company’s technology. Behavioral interviews assess whether you’re a good fit for a company’s people.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You may be productive when sitting at your desktop. But when it’s time for code reviews, collaboration, or a hydration break in the office kitchen, your people skills will be important to the success and morale of your coworkers and team members too. &lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Google looks for in behavioral interviews
&lt;/h2&gt;

&lt;p&gt;Part of Google’s interview process, like the coding interview, aims to unearth your technical skills. On the other hand, &lt;strong&gt;Google’s behavioral interview assesses what they call your “Googleyness.”&lt;/strong&gt; When you’re looking at a job description, you might be excited about the particular details of the role, or perhaps the opportunity to work with your favorite Google product. But to consider your “Googleyness,” you’ll want to step back and relate Google’s company vision to your core values as a person.  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“If we hire you based on your skills, we’ll get a skilled employee. If we hire you based on your skills, and your enduring passions, and your distinct experiences and perspectives, we’ll get a Googler. That's what we want.” - From Google’s How We Hire page.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To show that you’re a “Googler,” think about how you align with Google’s core values and philosophy. All the work you do at Google will connect to one of these core values, which include user-centered design and web democracy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here are some qualities that hiring managers associate with “Googleyness”&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Positivity&lt;/li&gt;
&lt;li&gt;Sense of humor&lt;/li&gt;
&lt;li&gt;Respect and inclusivity&lt;/li&gt;
&lt;li&gt;Lifelong learning&lt;/li&gt;
&lt;li&gt;Humbleness &lt;/li&gt;
&lt;li&gt;Supportive team player&lt;/li&gt;
&lt;li&gt;Conscientiousness and ethics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In addition to your “Googleyness,” you’ll want to highlight your unique values, passions, and standards for success too. Show your hiring managers the traits that make you stand out from the rest, and relate them to Google’s values whenever you can.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Top Google behavioral interview questions
&lt;/h2&gt;

&lt;p&gt;As much as we’d like to offer common interview questions &lt;em&gt;and&lt;/em&gt; answers, your answers are unique to your experience. Here, we’ll cover some questions you should prepare to answer, and some considerations to help guide your responses. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Behavioral interview questions are open-ended, so it’s helpful to have a structured approach to answering them. One recommended strategy for answering behavioral interview questions is the STAR method. STAR stands for Situation, Task, Action, Result. Use this technique to describe the &lt;strong&gt;situation&lt;/strong&gt; you were in, the &lt;strong&gt;task&lt;/strong&gt; you were working on, the &lt;strong&gt;action&lt;/strong&gt; you took, and the &lt;strong&gt;resulting outcome&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Describe your work style.
&lt;/h3&gt;

&lt;p&gt;This question shows your self-awareness and gives others an idea of what it’s like working with you.&lt;/p&gt;

&lt;p&gt;Some elements to consider in crafting your response are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Organizational skills&lt;/strong&gt;: How you multitask and prioritize, the specific tools and techniques that you leverage to get the job done &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Individual work vs team work&lt;/strong&gt;: How you balance your individual tasks while remaining a communicative and collaborative team player&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project management skills&lt;/strong&gt;: How you allocate your time between everyday tasks and long-term projects, how you ensure you meet project deadlines&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Efficiency and attention to detail&lt;/strong&gt;: How you get work done quickly without losing accuracy &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How do you handle conflict?
&lt;/h3&gt;

&lt;p&gt;Conflict happens in all areas of life, including the workplace. If you’re having trouble thinking of an example from your past work experiences, remember that it can be as tiny as a difference of opinion between you and a team member. You want to highlight respectful behaviors that contribute toward conflict resolution. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here are some prompts to get you thinking about how you would respond&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is your communication style during a conflict? How does this tie to your values?&lt;/li&gt;
&lt;li&gt;Do you hear the other’s perspective on the matter? Do they feel heard by you when you respond?&lt;/li&gt;
&lt;li&gt;When it comes to personal opinions in the workplace, are you able to be diplomatic and compartmentalize and filter your feelings and thoughts?&lt;/li&gt;
&lt;li&gt;How do you steer the situation toward conflict resolution?
&amp;gt; A sense of humor is a trademark of “Googleyness,” and is great for conflict resolution.

&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tell me about a time you led a project.
&lt;/h3&gt;

&lt;p&gt;This question aims to understand your leadership and project management skills. It’s important to highlight how you managed time, communicated with others, and worked calmly under pressure. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Implementing the STAR method, a sample answer could look like this&lt;/strong&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Situation&lt;/strong&gt;: I recently owned a development project that involved collaboration with developers across time zones. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Task&lt;/strong&gt;: The aim was to create a software product for a client with several requirements on a tight deadline. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Action&lt;/strong&gt;: I asked my team of developers to send me daily updates on their progress throughout the project timeline. I created a shared channel where we could communicate our roadblocks along the way.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Result&lt;/strong&gt;: In the end, my project was completed on-time. Our shared and constant communication helped utilize our team’s collective strengths to resolve problems quickly, boost team morale, and minimize stress.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Be sure to practice answering your interview questions out loud. If you can, ask a friend or family member to sit with you for a mock interview.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tell me about a time you had to take hard feedback.
&lt;/h3&gt;

&lt;p&gt;You may have been proud of your project, but you received feedback asking you to change several things. While it’s great to take pride in your work, it’s also important to respond to feedback gracefully.&lt;/p&gt;

&lt;p&gt;Keeping the STAR method in mind, reflect on a previous experience where you handled feedback. It could’ve been about your performance, your communication style, or a deliverable you executed. &lt;strong&gt;Be sure your answer shows that you’re a respectful communicator, a good listener, and that you’re flexible and responsive to constructive criticism&lt;/strong&gt;. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Interview answers are more impactful and believable when you give real-world examples. Even if the interview question doesn’t prompt you to “Give an example,” it’s a good idea to &lt;strong&gt;connect to your previous experience whenever you can&lt;/strong&gt;. If you don’t have much work experience, you can also share examples from your time as a student.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tell me about a time you improved a process.
&lt;/h3&gt;

&lt;p&gt;Think about a time where you identified a process that could be improved. Remember that the scope of this answer can range from your individual work process to larger processes affecting other stakeholders. &lt;/p&gt;

&lt;p&gt;When discussing how you improved a process, &lt;strong&gt;consider highlighting these points, if relevant&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You considered the best interest of stakeholders and colleagues&lt;/li&gt;
&lt;li&gt;You monitored the result of the new process, and adjusted according to feedback &lt;/li&gt;
&lt;li&gt;You were enthusiastic about the opportunity to improve process for yourself and your team

&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up and next steps
&lt;/h2&gt;

&lt;p&gt;Congratulations! You’re one step closer to your dream job at Google.  While behavioral interviews can be nerve-wracking, the right amount of preparation will ensure you come out of the interview round with “Googley” colors. Now that you’ve got the tools and tricks to ace your behavioral interview, you’ll want to be sure you check your boxes for the coding interview and system design interview as well. &lt;/p&gt;

&lt;p&gt;To master all things interview-related, check out &lt;a href="https://learn.educative.io/interview-prep?eid=5082902844932096" rel="noopener noreferrer"&gt;&lt;strong&gt;Interview Prep with Educative&lt;/strong&gt;&lt;/a&gt;. Here you’ll find company-specific interview guides, coding interview tutorials with sample answers, as well as courses and blog posts to help you ace your interviews and land your dream job.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy learning!&lt;/em&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Continue learning about interview prep
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/behavioral-interviews-how-to-prepare-and-ace-interview-questions?eid=5082902844932096" rel="noopener noreferrer"&gt;Behavioral interviews: How to prepare and ace interview questions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/video-interviews-a-comprensive-guide-for-software-developers?eid=5082902844932096" rel="noopener noreferrer"&gt;Video interviews: A comprehensive guide for software developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/google-coding-interview-questions?eid=5082902844932096" rel="noopener noreferrer"&gt;Google Coding Interview Questions: Top 18 questions explained&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Start a discussion
&lt;/h3&gt;

&lt;p&gt;Do you have tips on preparing for behavioral interviews? We'd love to hear them in the comments below!&lt;/p&gt;

</description>
      <category>google</category>
      <category>interview</category>
      <category>career</category>
      <category>behavioralinterview</category>
    </item>
    <item>
      <title>13 REST API interview questions you need to know</title>
      <dc:creator>Erica V</dc:creator>
      <pubDate>Thu, 20 Jan 2022 00:48:00 +0000</pubDate>
      <link>https://forem.com/educative/13-rest-api-interview-questions-you-need-to-know-pnd</link>
      <guid>https://forem.com/educative/13-rest-api-interview-questions-you-need-to-know-pnd</guid>
      <description>&lt;p&gt;No matter which programming language or technology you’re working with, you’ve probably encountered a REST application programming interface (API). REST stands for Representational State Transfer, which is the one of the most widely-used architectural styles for web services, microservices, and APIs today. APIs that follow the REST architectural style are considered REST APIs.&lt;/p&gt;

&lt;p&gt;Whether you’re a junior or senior developer, you may be asked questions about REST API in an interview. To help you ace your next interview, we’ll discuss some common REST API interview questions and answers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We’ll cover&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
13 REST API interview questions you need to know

&lt;ul&gt;
&lt;li&gt;1. What is REST?&lt;/li&gt;
&lt;li&gt;2. What is a REST API?&lt;/li&gt;
&lt;li&gt;3. Describe the 5 constraints of the REST architectural style, and their benefits.&lt;/li&gt;
&lt;li&gt;4. What is the optional architectural constraint of REST?&lt;/li&gt;
&lt;li&gt;5. Explain the constraints of a uniform interface.&lt;/li&gt;
&lt;li&gt;6. What is CRUD?&lt;/li&gt;
&lt;li&gt;7. Explain the HTTP request methods supported by REST, and when they are used.&lt;/li&gt;
&lt;li&gt;8. What’s the difference between PUT and POST methods?&lt;/li&gt;
&lt;li&gt;9. Explain what statelessness means in REST.&lt;/li&gt;
&lt;li&gt;10. What are the advantages and disadvantages of a REST API?&lt;/li&gt;
&lt;li&gt;11. What's the difference between AJAX and REST?&lt;/li&gt;
&lt;li&gt;12. What's the difference between SOAP and REST?&lt;/li&gt;
&lt;li&gt;13. Explain HTTP response status codes.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Wrapping up and next steps&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  13 REST API interview questions you need to know
&lt;/h2&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. What is REST?
&lt;/h3&gt;

&lt;p&gt;REST stands for Representational State Transfer. REST is an architectural style for web development. REST architecture lays out guidelines for the transfer of resource representations between clients and servers on the web. &lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. What is a REST API?
&lt;/h3&gt;

&lt;p&gt;A &lt;em&gt;REST API&lt;/em&gt; or &lt;em&gt;RESTful API&lt;/em&gt; is a web API that conforms to the REST architecture style. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Describe the 5 constraints of the REST architectural style, and their benefits.
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;In case they ask for 6 constraints, see the following question about the optional constraint. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A truly RESTful API must conform to the five REST architectural constraints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Uniform interface&lt;/strong&gt;: 

&lt;ul&gt;
&lt;li&gt;Interface between client and server that allows for standardized client-server communication in a single language&lt;/li&gt;
&lt;li&gt;Necessary for the decoupling of client and server&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Client-server&lt;/strong&gt;: 

&lt;ul&gt;
&lt;li&gt;Client-server model, for separation of concerns between client and server&lt;/li&gt;
&lt;li&gt;Permits client and server to operate and evolve independently&lt;/li&gt;
&lt;li&gt;Supports portability and scalability&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Stateless&lt;/strong&gt;: 

&lt;ul&gt;
&lt;li&gt;Refers to stateless communication protocol, wherein the server stores no information about session states&lt;/li&gt;
&lt;li&gt;Improves performance by reducing server load&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Cacheable&lt;/strong&gt;: 

&lt;ul&gt;
&lt;li&gt;Servers mark their responses as cacheable or non-cacheable&lt;/li&gt;
&lt;li&gt;Clients and intermediaries are able to cache server responses&lt;/li&gt;
&lt;li&gt;Reduces client-server interaction, supports scalability and performance&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Layered system&lt;/strong&gt;: 

&lt;ul&gt;
&lt;li&gt;Layers between client and server, can consist of intermediaries such as proxy servers or load balancers&lt;/li&gt;
&lt;li&gt;Layers have separate responsibilities but are able to interact with each other&lt;/li&gt;
&lt;li&gt;Supports system scalability and security

&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. What is the optional architectural constraint of REST?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Code on demand&lt;/strong&gt; is the optional constraint of RESTful architecture. Code on demand allows the server to send executable code (scripts or applets) to a client upon client request. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Advantage&lt;/strong&gt;: Extends client functionality, since client can download features after deployment &lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Disadvantage&lt;/strong&gt;: Reduces visibility, which is why it’s considered optional&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Examples&lt;/strong&gt;: Java applets and JavaScript &lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Explain the constraints of a uniform interface.
&lt;/h3&gt;

&lt;p&gt;A uniform interface is needed to decouple the client from the server. &lt;/p&gt;

&lt;p&gt;There are four necessary constraints to achieving uniform interface: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Identification of resources&lt;/strong&gt;: Client requests must identify resources using uniform resource identifiers (URIs)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manipulation of resources through these representations&lt;/strong&gt;: When clients receive a resource representation from the server, they have all information necessary to be able to modify resource state&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-descriptive messages&lt;/strong&gt;: Messages contain all information necessary for recipient to interpret it, including metadata&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hypermedia as the engine of application state&lt;/strong&gt;: Hypermedia (such as HTML) is the medium for client-server interaction, and the client requires no API-specific documentation to understand server responses 

&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. What is CRUD?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.educative.io/blog/crud-operations?eid=5082902844932096" rel="noopener noreferrer"&gt;CRUD&lt;/a&gt; is an acronym for the four basic operations used in relational database management system (RDBMS).&lt;/p&gt;

&lt;p&gt;Each operation in CRUD relates to an HTTP method that REST supports. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create&lt;/strong&gt;: &lt;code&gt;POST&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read&lt;/strong&gt;: &lt;code&gt;GET&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update&lt;/strong&gt;: &lt;code&gt;PUT&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delete&lt;/strong&gt;: &lt;code&gt;DELETE&lt;/code&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Explain the HTTP request methods supported by REST, and when they are used.
&lt;/h3&gt;

&lt;p&gt;REST APIs are based on HTTP requests or verbs, which each perform a different task.&lt;/p&gt;

&lt;p&gt;REST supports the following HTTP requests:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GET&lt;/strong&gt; method: Request data from server&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;POST&lt;/strong&gt; method: Submit data to create new resource on server-defined URL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PUT&lt;/strong&gt; method: Submit data to update a resource at client-defined URL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DELETE&lt;/strong&gt; method: Remove resource from server&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OPTIONS&lt;/strong&gt; method: Return request methods supported by a service &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HEAD&lt;/strong&gt; method: Return meta information such as response headers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PATCH&lt;/strong&gt; method: Modify part of the resource on the server

&lt;a&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  8. What’s the difference between PUT and POST methods?
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;This question can stump some developers. Being able to explain this will help you stand out as someone who actually knows what they’re talking about. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here are the differences between PUT and POST:&lt;br&gt;
&lt;strong&gt;PUT&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Idempotent (i.e. multiple requests will yield same result)&lt;/li&gt;
&lt;li&gt;PUT responses aren’t cacheable&lt;/li&gt;
&lt;li&gt;Updates or replaces target resource with request's payload&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;POST&lt;/strong&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Not idempotent (i.e. multiple requests will yield multiples of the same resource)&lt;/li&gt;
&lt;li&gt;POST responses can be cacheable, provided proper cache-control header&lt;/li&gt;
&lt;li&gt;Request's payload is processed by the web server based on target resource&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Understanding idempotency&lt;/strong&gt;: An example of an idempotent operation would be the operation of multiplying a number by one. No matter how many times you multiply five by one, you’ll get the same result.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Explain what statelessness means in REST.
&lt;/h3&gt;

&lt;p&gt;Statelessness means that the client and server don’t store information about each other’s state. Since the server stores no information, it treats each client request as a new request. &lt;/p&gt;

&lt;p&gt;As a consequence, the following conditions would apply:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The client request contains all information required for the server to process the request &lt;/li&gt;
&lt;li&gt;Client application is responsible for storing session state

&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  10. What are the advantages and disadvantages of a REST API?
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;It’s important to know the pros and cons of a RESTful API.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Advantages include&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Designed for high performance, portability, reliability, and scalability &lt;/li&gt;
&lt;li&gt;Client-server separation allows each to individually operate and scale&lt;/li&gt;
&lt;li&gt;Easy to test and adapt to various environments&lt;/li&gt;
&lt;li&gt;Easy to learn as it uses HTTP protocol&lt;/li&gt;
&lt;li&gt;Supports various data transfer technologies including JSON, XML, YAML, images, and more&lt;/li&gt;
&lt;li&gt;Uses less bandwidth than other methods, such as Simple Object Access Protocol (SOAP) technology&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages include&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Doesn’t enforce security practices&lt;/li&gt;
&lt;li&gt;HTTP method limits you to synchronous requests&lt;/li&gt;
&lt;li&gt;Due to statelessness, you might be unable to maintain state (e.g. in sessions)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  11. What's the difference between AJAX and REST?
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;The distinction can confuse beginner developers, so it’s helpful to know the difference.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;An AJAX client can make a RESTful request to a REST API (e.g. a get request), but &lt;strong&gt;AJAX isn’t an architectural style&lt;/strong&gt;. It’s a web development technique for client-side applications. REST APIs can be accessed by AJAX clients, but they aren’t inherently implemented with AJAX.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  12. What's the difference between SOAP and REST?
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Although some REST APIs use SOAP protocols, REST and SOAP are entirely different approaches to building APIs. Interviewers may ask this to assess your depth of understanding.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here are some of the differences between SOAP and REST.&lt;br&gt;
&lt;strong&gt;SOAP&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Protocol&lt;/li&gt;
&lt;li&gt;Data format is limited to XML &lt;/li&gt;
&lt;li&gt;Heavyweight and requires more bandwidth&lt;/li&gt;
&lt;li&gt;Calls can’t be cached&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;REST&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Architectural style&lt;/li&gt;
&lt;li&gt;Allows various data formats including plain text, HTML, XML, JSON, and YAML &lt;/li&gt;
&lt;li&gt;Lightweight and requires less bandwidth &lt;/li&gt;
&lt;li&gt;Calls can be cached&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  13. Explain HTTP response status codes.
&lt;/h3&gt;

&lt;p&gt;HTTP response codes indicate the result of client requests.&lt;/p&gt;

&lt;p&gt;Common HTTP status codes include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;200&lt;/strong&gt;: Successful request&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;201&lt;/strong&gt;: Entity or entities created from successful request&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;400&lt;/strong&gt;: Bad request. Invalid client request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;401&lt;/strong&gt;: Unauthorized. User isn’t authorized to access a resource and may be unauthenticated&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;403&lt;/strong&gt;: Forbidden. User isn’t authorized to access a resource, user is authenticated&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;404&lt;/strong&gt;: Not found. Resource not found&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;500&lt;/strong&gt;: Internal server error. Generic server error&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;502&lt;/strong&gt;: Bad gateway. Response from upstream server is not valid &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;503&lt;/strong&gt;: Service unavailable. Result of server-side issue, including overload or system failure 

&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up and next steps
&lt;/h2&gt;

&lt;p&gt;Congratulations! You’re now prepared with some common REST API interview questions and answers. Where you go from here depends on your goals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For interview prep&lt;/strong&gt;, check out &lt;a href="https://learn.educative.io/interview-prep?eid=5082902844932096" rel="noopener noreferrer"&gt;&lt;strong&gt;Interview Prep with Educative&lt;/strong&gt;&lt;/a&gt;. Here, you’ll find all our resources for interview prep in one place, from tutorials and practice problems, to tips from industry experts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To get hands-on with REST APIs&lt;/strong&gt;, check out one of our interactive REST API courses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/courses/learn-rest-soap-api-test-automation-java?eid=5082902844932096" rel="noopener noreferrer"&gt;Learn REST and SOAP API Test Automation in Java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/courses/creating-crud-rest-api-with-deno-oak?eid=5082902844932096" rel="noopener noreferrer"&gt;Creating a CRUD REST API with Deno &amp;amp; Oak&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/courses/rest-api-python-microsoft-azure?eid=5082902844932096" rel="noopener noreferrer"&gt;Build a REST API Using Python and Deploy it to Microsoft Azure&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Happy learning!&lt;/em&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Continue reading about APIs and interview prep on Educative
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/what-are-rest-apis?eid=5082902844932096" rel="noopener noreferrer"&gt;What are REST APIs? HTTP API vs REST API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/three-overlooked-api-features?eid=5082902844932096" rel="noopener noreferrer"&gt;3 Features beginner devs overlook when building APIs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/get-a-developer-job-you-love?eid=5082902844932096" rel="noopener noreferrer"&gt;8 job search tips to get a developer job you love&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Start a discussion
&lt;/h3&gt;

&lt;p&gt;Which REST API interview questions are you practicing? Was this guide helpful? Let us know in the comments below!&lt;/p&gt;

</description>
      <category>restapi</category>
      <category>interview</category>
      <category>restful</category>
      <category>webdev</category>
    </item>
    <item>
      <title>4 questions to ask in interviews to assess codebase health</title>
      <dc:creator>Erica V</dc:creator>
      <pubDate>Thu, 13 Jan 2022 23:33:34 +0000</pubDate>
      <link>https://forem.com/educative/4-questions-to-ask-in-interviews-to-assess-codebase-health-39c3</link>
      <guid>https://forem.com/educative/4-questions-to-ask-in-interviews-to-assess-codebase-health-39c3</guid>
      <description>&lt;p&gt;We all love good, quality code – and if we don’t, we should. Code that is consistent, clean, and easy to understand is essential to a healthy codebase. A healthy codebase is one that’s optimized for testability, maintainability, and scalability. It helps programmers code more efficiently and makes engineering teams more productive. &lt;/p&gt;

&lt;p&gt;The health of a company’s codebase plays a large role in employee satisfaction. Unfortunately, the pressure to quickly add new features imposes harsh deadlines on programmers. The trade-off is a decrease in code quality. This is the reality of the software development world. &lt;strong&gt;We can expect a level of imperfection in any company’s codebase, but the important thing is how responsible a company is about resolving or preventing the damage that results from pushing rapid development.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When interviewing to find a developer job you love, there are questions you can ask to get a sense of their codebase health. By asking these questions, you can feel more confident about your interest in the company and the long-term sustainability of your work there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We’ll cover&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nursing healthy code and managing technical debt&lt;/li&gt;
&lt;li&gt;4 questions to ask in interviews to assess codebase health&lt;/li&gt;
&lt;li&gt;Wrapping up and next steps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Nursing healthy code and managing technical debt
&lt;/h2&gt;

&lt;p&gt;To help foster a healthy codebase, companies need to have a regular cadence and strategy with which they manage technical debt. &lt;strong&gt;Technical debt&lt;/strong&gt; refers to the time, money, and resources that are lost in exchange for hasty development. This can consist of code debt, design debt, and documentation debt. By asking their engineering teams to churn out functionalities at a rapid pace, any company can expect to incur technical debt. What’s important is that companies take measures to prevent and pay it off.&lt;/p&gt;

&lt;p&gt;A developer-centric company must prioritize managing technical debt, not only for their financial gain but for &lt;strong&gt;employee satisfaction and retention&lt;/strong&gt; as well. An unhealthy codebase is a thorn in the side of many programmers and software engineers. In a 2021 &lt;a href="https://www.stepsize.com/how-codebase-health-impacts-hiring-and-retention-2021-report" rel="noopener noreferrer"&gt;study by Stepsize&lt;/a&gt;, 51% of developers confirmed that they had left or considered leaving a company because of technical debt. &lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4 questions to ask in interviews to assess codebase health
&lt;/h2&gt;

&lt;p&gt;There are questions you can ask in your interview to get a sense for the health of the company’s codebase. Many companies have room for improvement, and these answers don’t have to make or break your decision. While they may not have all the best practices in place, many interviewers would be impressed to have a candidate who is concerned and knowledgeable about matters concerning technical debt.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Be mindful of your tone when asking questions. &lt;strong&gt;Come from a place of curiosity rather than judgment&lt;/strong&gt;. You never know where a company or startup is in their growth.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  1. What is your strategy for dealing with technical debt?
&lt;/h3&gt;

&lt;p&gt;This is a high-level question that can give you a sense for how robust a company’s strategy is for managing technical debt. At the very least, your interviewer's answer shouldn’t deny that their company incurs technical debt. At most, it should show that that leadership balances adding new features with repaying technical debt. We hope you’ll hear a well-rounded strategy ranging from code reviews to communication pipelines and incentivizing programmers to clear debt. &lt;/p&gt;

&lt;h3&gt;
  
  
  2. Do you conduct code reviews?
&lt;/h3&gt;

&lt;p&gt;Despite being a best practice for maintaining code quality and scalability, not every company conducts code reviews. We hope you’ll hear a &lt;em&gt;yes&lt;/em&gt;. Code reviews reduce bugs, facilitate optimization, and helps peers share knowledge and skills.&lt;/p&gt;

&lt;p&gt;If they conduct code reviews, you can ask additional questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What does your approach look like?&lt;/strong&gt; Some do formal line-by-line reviews, others do informal “check-in buddies,” while others leverage Git to do a code review for all pull requests. It’s worth clarifying if they review code for all projects, as some only prioritize the most “critical” ones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How are priorities determined?&lt;/strong&gt; Ideally, the code review’s priorities are informed by a knowledge of the technical debt they’ve recently incurred. The best code reviews will prioritize code quality and coding best practices such as commenting, rather than simple adherence to company or team coding standards. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who is reviewing the code?&lt;/strong&gt; Gold stars can be given if code is given a most objective review by peers who aren’t involved in the project. If not, that’s okay too. Again, we have an ideal world, and a realistic one.&lt;/li&gt;
&lt;/ul&gt;



&lt;h3&gt;
  
  
  3. Do you have CI/CD pipelines?
&lt;/h3&gt;

&lt;p&gt;Not all companies have CI/CD pipelines, but the most successful software development companies do. In a perfect world, CI/CD pipelines should be consistent across all projects and tech stacks. CI/CD pipelines helps teams ship new features faster, increases visibility and collaboration, and helps ensure continuous reliability. A CI/CD pipeline automates CI/CD, which frees up developers' time to focus on, well, development.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. How much time is spent refactoring code?
&lt;/h3&gt;

&lt;p&gt;Refactoring code reduces code complexity and supports the maintainability, security, and scalability of an application. Refactoring is an ongoing part of the development process. In addition to writing and testing, refactoring is likely to take  a good amount of your time. Ask this question to get a sense for how frequently it's done and how it's built into the development process.&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up and next steps
&lt;/h2&gt;

&lt;p&gt;The better the code health of a company, the more productive you and your team members will be. How a company balances adding new features with managing technical debt will be crucial to fostering a healthy codebase. It allows for effective long-term development – and happier and more productive engineering teams. &lt;/p&gt;

&lt;p&gt;To help developers level up in their careers, we’ve gathered all our interview prep resources in one place at &lt;a href="https://learn.educative.io/interview-prep?eid=5082902844932096" rel="noopener noreferrer"&gt;&lt;strong&gt;Interview Prep with Educative&lt;/strong&gt;&lt;/a&gt;. You can find company-specific interview guides, coding interview tutorials, advice from industry experts and more. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy learning!&lt;/em&gt;&lt;/p&gt;



&lt;h3&gt;
  
  
  Continue learning about interview prep on Educative
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/strategic-interview-prep?eid=5082902844932096" rel="noopener noreferrer"&gt;Why a strategic coding interview prep plan matters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/technical-program-manager-interview-guide?eid=5082902844932096" rel="noopener noreferrer"&gt;A guide to the technical program manager interview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/get-a-developer-job-you-love?eid=5082902844932096" rel="noopener noreferrer"&gt;8 job search tips to get a developer job you love&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Start a discussion
&lt;/h3&gt;

&lt;p&gt;What questions would you ask to get a feel for a company's codebase health? How have your employers managed technical debt? Let us know in the comments below!&lt;/p&gt;

</description>
      <category>codequality</category>
      <category>interview</category>
      <category>programming</category>
      <category>career</category>
    </item>
    <item>
      <title>Is C++ an object-oriented programming language?</title>
      <dc:creator>Erica V</dc:creator>
      <pubDate>Wed, 12 Jan 2022 00:04:41 +0000</pubDate>
      <link>https://forem.com/educative/is-c-an-object-oriented-programming-language-5da</link>
      <guid>https://forem.com/educative/is-c-an-object-oriented-programming-language-5da</guid>
      <description>&lt;p&gt;Object-oriented programming (OOP) is one of the most popular programming paradigms. The C++ programming language is one of many languages that supports object-oriented programming, alongside Java, C#, Python, and JavaScript. &lt;strong&gt;Some developers consider C++ to be an object-oriented language, while others argue that it’s not&lt;/strong&gt;. Today, we’ll discuss object-oriented programming to understand whether C++ is an object-oriented programming language.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We’ll cover&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is object-oriented programming?&lt;/li&gt;
&lt;li&gt;Is C++ an object-oriented programming language?&lt;/li&gt;
&lt;li&gt;Object-oriented programming in C++&lt;/li&gt;
&lt;li&gt;
Wrapping up and next steps

&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is object-oriented programming?
&lt;/h2&gt;

&lt;p&gt;Object-oriented programming is a programming paradigm based on classes and objects and four OOP concepts of inheritance, encapsulation, abstraction, and polymorphism. &lt;strong&gt;OOP is modeled off the fact that the real world consists of objects, rather than the variables and functions we use in software development&lt;/strong&gt;. In OOP, each object has properties and functions that it can perform. Objects that share properties and functions can be grouped into classes and subclasses, which serve as blueprints for the properties and functions that an object will inherit. &lt;/p&gt;

&lt;p&gt;The foundational OOP concepts are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Inheritance&lt;/strong&gt;: The ability of a class to inherit data and behaviors from another class&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The class that inherits features is the derived class, while the class it inherits features from is the base class&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Encapsulation&lt;/strong&gt;: The binding of data to the functions that can perform operations on them&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enables data hiding, another important OOP technique &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Abstraction&lt;/strong&gt;: The masking of internal functions to present only high-level methods to the user &lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Polymorphism&lt;/strong&gt;: The ability to perform the same task in various ways&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Consider a sparrow and a penguin. Both have eyes, but they don’t share the ability to fly. Not all birds share the function of flight, therefore the base class of birds wouldn’t assign the function of flight, but the derived classes of flying birds would assign the flying function. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The following diagram illustrates the example of a &lt;code&gt;birds&lt;/code&gt; class. Inheritance is what allows the derived classes to adopt the properties and functions from the base class.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo6rlcnrtp0ej8n6dslz1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo6rlcnrtp0ej8n6dslz1.png" alt="diagram oop class inheritance" width="800" height="810"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another feature of object-oriented languages is that their syntax allows keywords to restrict and define access to classes, methods, and other members. These keywords are known as &lt;strong&gt;access specifiers (or access modifiers)&lt;/strong&gt;, which are essential to implementing encapsulation and abstraction. &lt;br&gt;
The benefits of OOP are numerous. We can leverage OOP to develop applications with less code. Object-oriented programming helps reduce repetition in code, which reduces code complexity and data redundancy. It also increases the reusability of code. Users can create user-defined objects and classes which they can use in other applications. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Is C++ an object-oriented programming language?
&lt;/h2&gt;

&lt;p&gt;C++ is widely considered an object-oriented programming language. Stroustrup developed C++ by adding object-oriented capabilities to the C programming language. When we say that a language is an object-oriented programming language, we often mean that it supports object-oriented programming. However, &lt;strong&gt;most popular languages that support OOP are not strictly object-oriented languages&lt;/strong&gt;. They're often multi-paradigm languages that can support other popular paradigms. C++ falls into this category because it supports several paradigms. It's not an exclusively object-oriented language, but a functional and procedural language as well.&lt;/p&gt;

&lt;p&gt;While it can be considered an OOP language, &lt;strong&gt;C++ isn’t a pure object-oriented language&lt;/strong&gt;. Some reasons for this are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Object is not a primary requirement&lt;/strong&gt;: A pure OOP language treats all features in a program as objects. However, since C++ supports other programming paradigms, you can write a complete valid program without using a single object.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Class is not a primary requirement&lt;/strong&gt;: The main() function can exist independent of a class.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Considering these points, it’s safe to say C++ is a &lt;strong&gt;partial object-oriented programming language&lt;/strong&gt;. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Object-oriented programming in C++
&lt;/h2&gt;

&lt;p&gt;C++ offers the essentials necessary to implement object-oriented programming. It has classes and objects, access specifiers, and the OOP concepts of inheritance, encapsulation, abstraction, and polymorphism.&lt;/p&gt;
&lt;h3&gt;
  
  
  Classes and objects
&lt;/h3&gt;

&lt;p&gt;Classes are user-defined data types that form a blueprint for properties and functions. Objects are an instance of a class. Memory is allocated for objects, while classes don’t take up memory. &lt;/p&gt;

&lt;p&gt;The syntax for &lt;strong&gt;class definition&lt;/strong&gt; in C++ is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class ClassName { 

  / *member variables and functions*/

}; // a semicolon ends the class
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The syntax for creating a &lt;strong&gt;class object&lt;/strong&gt; in C++ is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class ClassName { 

 / *member variables and functions*/
};

int main () {
  int x; // integer object
  ClassName c; // ClassName object
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Access specifiers
&lt;/h3&gt;

&lt;p&gt;Access specifiers are keywords that serve to restrict and define permissions to access data in class members. There are three keywords that serve as access specifiers in C++: public, private, and protected.&lt;/p&gt;

&lt;h3&gt;
  
  
  Inheritance
&lt;/h3&gt;

&lt;p&gt;We can implement inheritance in C++ by creating a derived class to a base class.&lt;br&gt;
The syntax in C++ code for this is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class DerivedclassName : AccessMode BaseclassName {
  // derived class body
}; // a semicolon ends derived class
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, &lt;code&gt;AccessMode&lt;/code&gt; indicates the type of access specifier.&lt;/p&gt;

&lt;h3&gt;
  
  
  Encapsulation
&lt;/h3&gt;

&lt;p&gt;Encapsulation in C++ is implemented through class and access specifiers. &lt;/p&gt;

&lt;h3&gt;
  
  
  Abstraction
&lt;/h3&gt;

&lt;p&gt;Access specifiers in C++ help implement abstraction using classes in C++. Header files in C++ are another form of abstraction through which we can implement function calls and methods without needing to know the algorithms guiding a function. &lt;/p&gt;

&lt;h3&gt;
  
  
  Polymorphism
&lt;/h3&gt;

&lt;p&gt;There are two types of polymorphism in C++:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Compile time polymorphism&lt;/strong&gt;: Achieved through function overloading or operator overloading&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run time polymorphism&lt;/strong&gt;: Achieved through function overriding and virtual functions

&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up and next steps
&lt;/h2&gt;

&lt;p&gt;If you’re looking for a practical technique to help you write applications with less code, OOP is a great technique to leverage in C++. C++ can be considered an object-oriented language. While it might not be a pure object-oriented language, it was designed specifically to enable object-oriented programming.&lt;/p&gt;

&lt;p&gt;To help you get started with object-oriented programming in C++, Educative has created the &lt;a href="https://www.educative.io/path/cpp-for-programmers?eid=5082902844932096" rel="noopener noreferrer"&gt;&lt;strong&gt;C++ for Programmers&lt;/strong&gt;&lt;/a&gt; learning path. This learning path consists of six modules. It covers the basics of C++ and progresses up to cover OOP techniques, data structures, C++ templates, and more. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy learning!&lt;/em&gt;&lt;/p&gt;



&lt;h3&gt;
  
  
  Continue reading about C++ on Educative
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/how-to-learn-cpp-the-guide-for-beginners?eid=5082902844932096" rel="noopener noreferrer"&gt;Learn C++ from scratch: The complete guide for beginners&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/object-oriented-programming?eid=5082902844932096" rel="noopener noreferrer"&gt;What is object-oriented programming? OOP explained in depth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/blog/reverse-linked-list-cpp-tutorial?eid=5082902844932096" rel="noopener noreferrer"&gt;Tutorial: How to reverse a linked list in C++&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;h3&gt;
  
  
  Start a discussion
&lt;/h3&gt;

&lt;p&gt;Are you interested in learning OOP? What are your thoughts on the debate of C++ being an OOP language? Let us know in the comments below!&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>oop</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
