<?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>DEV Community: frameworkz</title>
    <description>The latest articles on DEV Community by frameworkz (@frameworkz).</description>
    <link>https://dev.to/frameworkz</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%2F582271%2F2a48dd13-fe87-4b96-ad95-56e887591f12.png</url>
      <title>DEV Community: frameworkz</title>
      <link>https://dev.to/frameworkz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/frameworkz"/>
    <language>en</language>
    <item>
      <title>Data Lakes</title>
      <dc:creator>frameworkz</dc:creator>
      <pubDate>Tue, 27 Apr 2021 11:39:44 +0000</pubDate>
      <link>https://dev.to/frameworkz/data-lakes-4k9m</link>
      <guid>https://dev.to/frameworkz/data-lakes-4k9m</guid>
      <description>&lt;p&gt;Our digital universe doubles in size annually - and is predicted to exceed &lt;a href="https://financesonline.com/big-data-statistics/"&gt;44 trillion gigabytes by the end of 2021&lt;/a&gt;. Up to 90% of this data is semi-structured or unstructured, presenting challenges in storing, maintaining, and processing such a vast volume. Here is where a data lake comes in. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dQ5zDjaI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b1cyt0i88aum1pp4ibh5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dQ5zDjaI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b1cyt0i88aum1pp4ibh5.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Data Lake?
&lt;/h2&gt;

&lt;p&gt;A data lake is a central storage repository that holds a vast amount of data in a raw formula from many different sources. It can store data that is unstructured, semi-structured, or structured. Data can be kept in a flexible format for future use as a data lake will identify the data via metadata tags to enable fast retrieval when needed. &lt;/p&gt;

&lt;p&gt;There isn’t a limit on storage capacity as clusters of data can exist on-premises or in the cloud.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why use Data Lakes
&lt;/h2&gt;

&lt;p&gt;Data lakes have become an essential part of many big data initiatives because they offer more flexible and easier options to scale when working with significant volumes of data, especially if it is being generated at a high velocity - such as app activity data. Web, sensor, and app activity data are increasingly prevalent, and so interest in data leaks is also growing at speed. &lt;/p&gt;

&lt;p&gt;To determine if your company needs a data lake, let’s explore the following indicators:&lt;/p&gt;

&lt;h2&gt;
  
  
  How Structured is your Data?
&lt;/h2&gt;

&lt;p&gt;If you’re processing a large volume of semi-structured or unstructured data, it can be extremely draining on time resources to do this without a data lake. Storing mass volumes of data that isn’t structured will require extensive data preparation; this is especially true for event-based data such as clickstream or server logs. &lt;/p&gt;

&lt;h2&gt;
  
  
  Is Data Retention a Problem?
&lt;/h2&gt;

&lt;p&gt;Storing large volumes of data in a database can be an expensive task. This can lead to much fiddling about with data retention - either limiting the period in which historical data is held or trimming certain fields of the data to control costs. If your business struggles to strike the right balance between retaining data for analytical purposes versus deleting data to control costs, then a &lt;a href="https://dataphoenix.io/services/data-lake/%20could%20be%20beneficial"&gt;data lake solution&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is your Use Case Experimental or Predictable?
&lt;/h2&gt;

&lt;p&gt;What you intend to do with the data is really the determining factor in whether a data lake is the best solution. Suppose you want to build reports or dashboards that will essentially be created through running a predetermined set of queries against tables that are updated regularly. In that case, you may be better off looking at a data warehouse.&lt;/p&gt;

&lt;p&gt;However, for experimental use cases - like predictive analytics and machine learning, it can be challenging to know in advance what data you will need, which is where a data lake could be more beneficial. &lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits and Risks of using Data Lakes
&lt;/h2&gt;

&lt;p&gt;As with all business solutions, there are benefits and risks when using data lakes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Benefits in Using a Data Lake:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Aids with advanced analytics and product ionizing&lt;/li&gt;
&lt;li&gt;Cost-effective scalability and flexibility&lt;/li&gt;
&lt;li&gt;Great value from unlimited data types&lt;/li&gt;
&lt;li&gt;Significantly reduced long-term cost of ownership &lt;/li&gt;
&lt;li&gt;Permits economic file storage &lt;/li&gt;
&lt;li&gt;Quickly adaptable &lt;/li&gt;
&lt;li&gt;Centralisation of different content sources&lt;/li&gt;
&lt;li&gt;Flexible access to the data worldwide - due to the cloud system&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Risks of Using Data Lake:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;May lose momentum and relevance over time &lt;/li&gt;
&lt;li&gt;The prominent risk involved while designing data lake&lt;/li&gt;
&lt;li&gt;Increases storage and computes costs &lt;/li&gt;
&lt;li&gt;Because there is no account of the lineage of findings by previous analysts, there is no way to get insights from others who have worked with the data &lt;/li&gt;
&lt;li&gt;Access control and security can be at risk&lt;/li&gt;
&lt;li&gt;Unstructured data could lead to unusable data, disparate and complex tools, and enterprise-wide collaboration.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>datastorage</category>
      <category>beginners</category>
      <category>devops</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Modular Spring Boot Development</title>
      <dc:creator>frameworkz</dc:creator>
      <pubDate>Mon, 15 Mar 2021 09:15:39 +0000</pubDate>
      <link>https://dev.to/frameworkz/modular-spring-boot-development-4cnj</link>
      <guid>https://dev.to/frameworkz/modular-spring-boot-development-4cnj</guid>
      <description>&lt;p&gt;On a basic level, Spring Boot provides a fast way to build applications by looking at your classpath and at the beans you have configured, makes reasonable assumptions about what you are missing, and adds those items. With Spring Boot, you can focus more on business features and less on infrastructure.&lt;br&gt;
&lt;a href="https://media.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%2F2mom5wx1nv2cqiihiv16.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F2mom5wx1nv2cqiihiv16.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
I’ll cover some of the main concepts of Spring before we dig into the Modular aspects a little below.&lt;/p&gt;

&lt;p&gt;Dependency Injection (DI) (Inversion of Control) – To give the application more flexibility, control is given to an external controller through events instead of the application taking control sequentially. &lt;/p&gt;

&lt;p&gt;Beans &amp;amp; ApplicationContext – In Spring these are the two kinds of objects containers. Beans are managed and configured by a BeanFactory. This BeanFactory is a root interface for accessing the Spring container that configures and manages the beans. Implementations use lazy loading, which means that Beans are only instantiating when directly called.&lt;/p&gt;

&lt;p&gt;ApplicationContext is the central interface within a Spring application for providing configuration information to the application. It's actually a superset of BeanFactory used for more complex applications that need event propagation, declarative mechanisms, and integration with aspect-oriented features of Spring.&lt;/p&gt;
&lt;h2&gt;
  
  
  Modularizing a Spring Boot Application
&lt;/h2&gt;

&lt;p&gt;Every software project comes to a point where the code should be broken up into modules. This is because modular systems architecture allows for shorter development times, along with improved code management, and the deployment of different solutions for different requirements. These modules may reside within a single code base or could be modules that each reside within their own particular code base.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Ft7bi9mgn2d40zp8nm06f.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Ft7bi9mgn2d40zp8nm06f.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Modules in Spring Boot
&lt;/h3&gt;

&lt;p&gt;In relation to Spring Boot, a module is a set of Spring components loaded into the application context.&lt;/p&gt;

&lt;p&gt;A module can be a business module that provides some business services for the application, or it can be a technical module that provides cross-cutting concerns for several other modules or the entire application. Additionally, these modules could be part of a monolithic codebase or split up into multiple build modules using Maven or Gradle.&lt;/p&gt;
&lt;h3&gt;
  
  
  Creating Modules - Some Options
&lt;/h3&gt;

&lt;p&gt;The base for a Spring Module is a @Configuration-annotated class along the lines of Spring’s Java configuration feature. There are several ways to define what beans should be loaded by such a configuration class.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;@ComponentScan&lt;/em&gt;&lt;br&gt;
The simplest method to create a module is by using the @ComponentScan statement on a configuration class:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@ComponentScan
public class BlogPostsFilter {
 {
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As the configuration class is picked up by an importing mechanism, it will search in all classes in the package and load an instance of each class that is annotated with one of Spring’s annotations into the application context.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a class="mentioned-user" href="https://dev.to/bean"&gt;@bean&lt;/a&gt; Definitions&lt;/em&gt;&lt;br&gt;
Beans are objects that form the backbone of your application, and they are defined, assembled, and managed by the Spring IoC container. These beans are created by the configuration metadata supplied to the container.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public JavaConfigBean javaConfigBean(){
       return new JavaConfigBean();
   }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This above configuration class is imported creating a TransferService instance that will be inserted into the application context.&lt;/p&gt;

&lt;p&gt;The method of creating a module demonstrates what beans are actually loaded by having a single location to look at. The flipside of using @ComponentScan, which can be scattered through annotations of all classes in the package.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;@ConditionalOn... Annotations&lt;/em&gt;&lt;br&gt;
To achieve more control over which components should be loaded into the application context, then @ConditionalOn...  annotations is the answer. This is how Spring loads the exact beans required.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@ConditionalOnClass(SpringTemplateRank.class)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Importing Modules - Some Options
&lt;/h3&gt;

&lt;p&gt;The next step in using modular Spring Boot development is once the module is created then we will need to import it into the application. There are several methods of doing this:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a class="mentioned-user" href="https://dev.to/import"&gt;@import&lt;/a&gt;...Annotations&lt;/em&gt;&lt;br&gt;
will import the class and all beans that come with it. Any new bean added to the package will be automatically found in our context. And we still have explicit control over the configurations we are using.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Import(JavaConfig.class)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;@Enable... Annotations&lt;/em&gt;&lt;br&gt;
Spring Boot already comes with a set of annotations that help developers to configure applications. The @Enable annotation allows for features to be enabled and configured. Some examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;@EnableScheduling&lt;/li&gt;
&lt;li&gt;@EnableAsync&lt;/li&gt;
&lt;li&gt;@EnableWebSocket&lt;/li&gt;
&lt;li&gt;@EnableJpaRepositories&lt;/li&gt;
&lt;li&gt;@EnableTransactionManagement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Auto-Configuration&lt;/em&gt;&lt;br&gt;
Spring also comes with an auto-configuration feature. Although super useful there are issues that may arise too. For example, auto-configuration is especially useful when building a cross-cutting solution that will be used across several Spring Boot applications. However, the limitations because all beans registered due to auto-configuration will be available to all contexts, which might not be what we want. &lt;/p&gt;

&lt;p&gt;To enable a module for auto configuration, put the file META-INF/spring.factories into the classpath:&lt;br&gt;
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\&lt;br&gt;
com.xyz.libx.autoconfigure.LibXAutoConfiguration&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuring a Module
&lt;/h3&gt;

&lt;p&gt;@ConfigurationProperties works best with hierarchical properties giving Spring Boot quality support for binding external configuration parameters to a Spring bean. The Spring framework uses standard Java bean setters, so we must declare setters for each of the properties.&lt;/p&gt;

&lt;h3&gt;
  
  
  Modular development at run time through plugins
&lt;/h3&gt;

&lt;p&gt;For deployment flexibility, run time modularization provides additional benefits over strictly modular development.&lt;/p&gt;

&lt;p&gt;With plugins, development and deployment can be separated so new plugins can be developed and deployed without changing the main application.&lt;/p&gt;

&lt;p&gt;Thus different teams can work on different aspects of a system and expand it later without changing the Spring Boot application, it provides significant time-saving in quality assurance (QA) and deployment. Different customers can use a different set of plugins matching their special requirements.&lt;br&gt;
This is possible with on-premise deployment as well as on the cloud.&lt;/p&gt;

&lt;p&gt;The main difference between modular Spring development and Plugins based development is related to the packaging of the application.&lt;/p&gt;

&lt;p&gt;With modular Spring development, the entire application is packaged together, libraries that use the same third-party components may cause “dependency hell” that must be resolved at the packaging time, ultimately only a specific version of the third-party library may be selected. All logical components are known at this point in time, this means that implementations must be also provided at this point.&lt;/p&gt;

&lt;p&gt;With plugins-based development the host application and each of the plugins is separately packaged, a properly developed plugin system allows overcoming dependency hell as each plugin is separately loaded.&lt;/p&gt;

&lt;p&gt;Logical components are unknown at this point, this allows deciding on the relevant implementation at the deployment time. Additional features, perhaps from a completely different application domain can be added through plugins.&lt;/p&gt;

&lt;p&gt;A properly designed and implemented plugins-system should allow any part of a system to be implemented through plugins such as  API interfaces, business logic, and persistence.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fimqoui0lwy9c7lty7j9t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fimqoui0lwy9c7lty7j9t.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Injectable plugins using FlexiCore Boot and Spring Boot
&lt;/h2&gt;

&lt;p&gt;FlexiCore Boot is an open-source library available on &lt;a href="https://github.com/wizzdi" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and documented at &lt;a href="support.wizzdi.com"&gt;support.wizzdi.com&lt;/a&gt; and &lt;a href="https://wizzdi.com/" rel="noopener noreferrer"&gt; Wizzdi&lt;/a&gt;. FlexiCore artifacts are available on Maven Central.&lt;/p&gt;

&lt;p&gt;Support for inter-injectable plugins can be added to any existing Spring Boot application or used on a newly created application. FlexiCore encourages and supports building solutions as sets of interconnected plug-ins, each developed using Spring Boot APIs, services, and paradigms.  &lt;/p&gt;

&lt;p&gt;A plug-in may depend on other plug-ins, these plugins are injected (@AutoWire) into dependent plugins.  All the components of a system may be defined as plug-ins. &lt;/p&gt;

&lt;p&gt;In FlexiCore Plug-ins have no limitations to what they define or provide, including the interfaces to front-end devices (APIs), the domain model (Database structure), business services, and Spring event bus.&lt;/p&gt;

&lt;p&gt;Unlike Spring modules, the main application has no ‘knowledge’ of what plugins will be available to it at run-time. Plugins are deployed by placing them in a predefined location on the server.&lt;/p&gt;

&lt;p&gt;Thus, the above mentioned requirement for supporting different deployments for different customers is addressed at deploy time and not at build time. Simply dispatch a different set of plugins to create a different ‘flavor’ of a system.&lt;/p&gt;

&lt;p&gt;Moreover, different versions of the same plugin can be concurrently deployed. The exact version may be selected by the caller, for instance, the client mobile or browser application accessing the API a plugin exposes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Examples
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Adding plugins support&lt;/em&gt;&lt;br&gt;
@EnableFlexiCorePlugins&lt;br&gt;
This should be added near the @SpringBootApplication annotation. Once added, the application will load and use plugins stored in a configurable folder on the server.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Adding REST API support (in plugins)&lt;/em&gt;&lt;br&gt;
@EnableFlexiCoreRESTPlugins&lt;br&gt;
Once added (on the same location), plugins can now create REST API endpoints. Clients (mobile, browsers, and other servers).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Adding support for JPA in plugins&lt;/em&gt;&lt;br&gt;
@EnableFlexiCoreJPAPlugins&lt;br&gt;
Although not strictly considered as plugins, FlexiCore allows model definition jars built to conform to JPA standard to be placed in a predefined entities folder. The domain model defined in these ‘plugins’ is available to plugins and also to other entities definition plugins that may be dependent on them.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Adding support for health messages in plugins&lt;/em&gt;&lt;br&gt;
@EnableFlexiCoreHealthPlugins&lt;br&gt;
Allows plugins use the standard annotations Spring provides for actuators and health.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;Spring’s great value is multifaceted - firstly as an integration framework. Then from having stable and familiar libraries to implement all layers of applications. And with all the benefits as a dependency injection container and MVC framework.&lt;/p&gt;

&lt;p&gt;Modular architectures encourage cohesive program units, which should be easier for developers to read and understand. This Modularisation of a codebase enables parallelisation in its build process, making it easy for modules to develop into stand-alone services if their boundaries are clear. &lt;/p&gt;

&lt;p&gt;On large projects i think modularisation could be essential to offering structure to the code base while also reducing crossover and duplication of developers resources.&lt;/p&gt;

&lt;p&gt;With FlexiCore plugins, Spring Modularity can be implemented at run time with requiring new builds of the complete monolithic application.&lt;/p&gt;

</description>
      <category>spring</category>
      <category>modular</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Why should you do coding competitions</title>
      <dc:creator>frameworkz</dc:creator>
      <pubDate>Mon, 22 Feb 2021 11:47:42 +0000</pubDate>
      <link>https://dev.to/frameworkz/why-should-you-do-coding-competitions-ci7</link>
      <guid>https://dev.to/frameworkz/why-should-you-do-coding-competitions-ci7</guid>
      <description>&lt;p&gt;When I was younger I used to compete in coding competitions but never really made the grade. I’ve got a lot of respect for these guys who get to the top through dedication and perseverance, there are some cool prizes to be won and massive kudos to be earned.&lt;/p&gt;

&lt;p&gt;Even though i was competing i was never a serious player but i loved the sense of community, competitivity aside i was just so in awe that so many different people were involved in something i was interested in, and good at.&lt;/p&gt;

&lt;p&gt;The more I thought about competing over the years of these competitions the more I realised how useful they were for my own development and career. So here’s my attempt to cover why they are a good idea, followed by a list of competitions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enhance problem-solving skills&lt;/li&gt;
&lt;li&gt;Brush up programming skills&lt;/li&gt;
&lt;li&gt;Develop team player skills&lt;/li&gt;
&lt;li&gt;Encourage to write cleaner and better code&lt;/li&gt;
&lt;li&gt;Good brain exercise&lt;/li&gt;
&lt;li&gt;Employment opportunities&lt;/li&gt;
&lt;li&gt;Join you with community&lt;/li&gt;
&lt;li&gt;Prizes and money&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;CodeChef&lt;/h3&gt;

&lt;p&gt;&lt;a&gt;CodeChef&lt;/a&gt; hosts a programming contest at the start of each month and two smaller programming challenges at the middle and end of the month. There’s a practice section with problems that can be solved using different languages, a good way to get started.&lt;/p&gt;

&lt;h3&gt;Leetcode&lt;/h3&gt;

&lt;p&gt;&lt;a&gt;Leetcode&lt;/a&gt; runs weekly and biweekly contents as well as daily challenges and a Bug Bounty Program with many eligible for rewards.&lt;/p&gt;

&lt;h3&gt;Topcoder&lt;/h3&gt;

&lt;p&gt;&lt;a&gt;Topcoder&lt;/a&gt; provides challenges as well as competitive programming competitions as well as paying community members for their work on projects. They also sell community services to business clients when required.&lt;/p&gt;

&lt;h3&gt;Coderbyte&lt;/h3&gt;

&lt;p&gt;A challenge library with a simple entry, you don’t even need to register to start testing your skills here. You can just jump in and start solving coding challenges using the online editor. You can really test your knowledge and skill by difficulty or from specific companies like Google and Facebook. Lots of starter courses for newbies and budding developers to learn new skills. &lt;a&gt;Codebyte&lt;/a&gt; is also a hunting ground for employers so the Interview Kits is a great addition.&lt;/p&gt;

&lt;h3&gt;HackerRank&lt;/h3&gt;

&lt;p&gt;&lt;a&gt;HackerRank&lt;/a&gt; has some great challenges from Competitive Challenges, Hackathons, Hiring Challenges (Jobs) and University Challenges to test your skills. You can also host your own hackathon.&lt;/p&gt;

&lt;p&gt;Company Code Contests:&lt;br&gt;
&lt;a&gt;Microsoft Imagine Cup&lt;/a&gt;&lt;br&gt;
&lt;a&gt;Google&lt;/a&gt; &lt;br&gt;
&lt;a&gt;Facebook&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More competition websites:&lt;br&gt;
&lt;a&gt;Project Euler&lt;/a&gt;&lt;br&gt;
&lt;a&gt;Exercism&lt;/a&gt;&lt;br&gt;
&lt;a&gt;Code Wars&lt;/a&gt;&lt;br&gt;
&lt;a&gt;Sphere Online Judge&lt;/a&gt; &lt;br&gt;
&lt;a&gt;CodinGame&lt;/a&gt; &lt;br&gt;
&lt;a&gt;Code Wars Central&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me now if i missed something. &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>learning</category>
      <category>coding</category>
      <category>programming</category>
    </item>
    <item>
      <title>Should developers do their own testing?</title>
      <dc:creator>frameworkz</dc:creator>
      <pubDate>Fri, 19 Feb 2021 13:36:46 +0000</pubDate>
      <link>https://dev.to/frameworkz/should-developers-do-their-own-testing-133d</link>
      <guid>https://dev.to/frameworkz/should-developers-do-their-own-testing-133d</guid>
      <description>&lt;p&gt;Let's start with stating that the majority of developers don’t fully test their own code, usually because they are backed up by QA testers. It's easier to allow QA testers to use their time to find defects rather than spending the time testing it themselves. Maybe they are too busy or the company prefers this method and to have their dev team churning out tasks. There’s also an arrogant aspect at play potentially, as some developers believe their work is without flaws but this could (and has) lead to serious problems that affect business.&lt;/p&gt;

&lt;p&gt;With many dev teams testing their own work and not using QA testers, this topic inspires a heated debate from both sides. I’m going to cover both sides, and hopefully help you understand the strengths and weaknesses from both approaches.&lt;/p&gt;

&lt;p&gt;Let's start with developer-based testing:&lt;br&gt;
Most teams (I believe) do require its developers to run unit testing (at least) and many also require automated, integrated, code-based tests. The problem is that this does take time away from working on new features and code and we as developers are attracted to the next shiny thing to work on. Testing could be built-in if it covers the entire codebase but again this takes time away from new tasks.&lt;/p&gt;

&lt;p&gt;In some ways these developers are correct in saying that testing can waste time, even if the testing process is automated. Testing can be seen to slow down the development and productivity.&lt;/p&gt;

&lt;p&gt;Another reason testing is not done is purely because some developers don’t have an understanding of how the entire application works. Or they don’t believe mistakes exist in their code, arrogant I know but we’ve all met people like this, in some cases they are actual colleagues.&lt;/p&gt;

&lt;p&gt;On the other side there are many developers who rigorously test their code using coded tests. A sense of pride in their work means they want to fully test their own work to ensure its defect free, or at least to ensure that any QA testers don’t find faults or defects in their code. Pride, is should be noted is seen as &lt;a href="http://freesoftwaremagazine.com/articles/the_seven_sins_of_programmers/"&gt;one of the sins of developers&lt;/a&gt; :)&lt;/p&gt;

&lt;p&gt;Personally, I don't enjoy testing because i find it boring and repetitive. And i know many who think the same but we need to ensure that developer testing can be a productive part of your QA.&lt;/p&gt;

&lt;p&gt;QA-based testing&lt;br&gt;
On the QA side I have a lot of respect for QA tests because it takes balls to question a developer's work and deal with any defensiveness that can come back. There are some very good QA testers out there doing a great job but the best ones need to be confident when reporting bugs to the dev team.&lt;/p&gt;

&lt;p&gt;They also tend to have much more knowledge of the application in its entirety with all its nuances, including regression history. I think they also help to ensure the developers are honest and hard working, because in some ways they are covering the work on a dev manager testing and providing oversight of the entire development process.&lt;/p&gt;

&lt;p&gt;As their job is based on finding faults, QA testers push an application harder than a developer. A simple test and success will not be enough as they seek ways creatively to execute tests that may not occur to the developer. Proof is everything and bugs are not fixed unless proven, something many developers don’t go far enough when testing their own code.&lt;/p&gt;

&lt;p&gt;Developers and QA testers should, of course, work in conjunction with each other. Code testing works well but a QA tester can run more human tests that are unexpected and ensure the application is more robust. &lt;/p&gt;

&lt;p&gt;Another aspect of QA is the creative side, most of us see testing as boring repetitive work but from dealing with QA testers i’ve realised that creativity is an important part of the QA process. Based on their knowledge they can think of many different ways to test an application and compare to previous testing. Documentation created from testing is super useful for training and even in some cases for client usage.&lt;/p&gt;

&lt;p&gt;So which is better?&lt;br&gt;
The answer is neither, a combination of both approaches works best. With many Dev teams constantly and quickly releasing code there is a need for QA to play its part. I understand that speed to market is a crucial factor but stability is also key to success.&lt;/p&gt;

&lt;p&gt;Another aspect i see is companies outsourcing their QA rather than having it run inhouse and together with the dev team. Several new businesses such as &lt;a href="https://www.globalapptesting.com/"&gt;Global&lt;/a&gt; and &lt;a href="https://www.digivante.com/"&gt;Digivante&lt;/a&gt; are some of the companies where outsourcing QA or crowd testing is growing. I do understand the hole they fill in the space but is it a good move for companies to outsource QA testing?&lt;/p&gt;

</description>
      <category>testing</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
