SlideShare a Scribd company logo
Pain-driven development
Alexandr Sugak,
.NET developer/architect at Sigma Software,
Kharkiv F# User Group
About me
 32 years old;
 Programming for ~12 years;
 Did mostly .NET;
 Worked on Web and Desktop apps, DBs, Web/Win Services, IDE plug-ins,
SPAs, mobile apps, integrations;
About me
 32 years old;
 Programming for ~12 years;
 Did mostly .NET;
 Worked on Web and Desktop apps, DBs, Web/Win Services, IDE plug-ins,
SPAs, mobile apps, integrations;
 Never liked it.
Agenda
 Pain #1 -> example(s) -> Guiding principle #1;
 Pain #2 -> example(s) -> Guiding principle #2;
 Pain #3 -> example(s) -> Guiding principle #3;
 Pain #4 -> example(s) -> Guiding principle #4.

Recommended for you

Front End Development for Back End Java Developers - NYJavaSIG 2019
Front End Development for Back End Java Developers - NYJavaSIG 2019Front End Development for Back End Java Developers - NYJavaSIG 2019
Front End Development for Back End Java Developers - NYJavaSIG 2019

Are you a backend Java developer that's being pushed into front-end development? Are you frustrated with all the JavaScript frameworks and build tools you have to learn to be a good UI developer? If so, this session is for you! We'll explore the landscape of UI development, including web standards, frameworks, and what’s on the horizon (e.g., micro frontends).

frontendwebweb-development
Preparing for the WebGeek DevCup
Preparing for the WebGeek DevCupPreparing for the WebGeek DevCup
Preparing for the WebGeek DevCup

The document provides tips for preparing for a hackathon event called the WebGeek DevCup. It recommends preparing your application framework ahead of time by choosing technologies and setting up modules like authentication, but not completing the full application. It also suggests preparing your development environment, using version control, potentially deploying code, and ensuring good team communication and self-care during the event. The goal is to minimize time spent on setup during the hackathon in order to focus on coding the full application within the limited timeframe.

hackathon
React native first impression
React native first impressionReact native first impression
React native first impression

https://github.com/alvarowolfx/react-native-shakeit-demo Introduction to React native presentation. A little history about React web, comparison with state of art of hybrid mobile development and demo to the local community.

reactreact nativemobile
How we do .NET today
Platform:
 Windows;
 IIS;
 MS SQL Server;
 Azure.
Technology:
 C#;
 ASP.NET
MVC/API;
 Entity Framework;
 WCF
 Angular.JS.
Tools:
 Visual Studio;
 R#;
 NuGet.exe;
 TFS;
 TeamCity.
Libraries:
 AutoMapper;
 Json.NET;
 Log4Net;
 Rhino Mocks.
Architecture:
 3-Tier;
 DDD “Light”;
 SOA;
 Microservices.
But now we have .NET Core and a new
open-source MSFT, right?
But now we have .NET Core and a new
open-source MSFT, right?
https://github.com/NuGet/NuGetGallery/pull/4437
Wrong
.NET Core + Linux =
 C#;
 ASP.NET Core;
 EF Core;
 SQL Server for Linux;
 Visual Studio for Mac;
 <something> Core;

Recommended for you

In graph we trust: Microservices, GraphQL and security challenges
In graph we trust: Microservices, GraphQL and security challengesIn graph we trust: Microservices, GraphQL and security challenges
In graph we trust: Microservices, GraphQL and security challenges

In graph we trust: Microservices, GraphQL and security challenges - Mohammed A. Imran Microservices, RESTful and API-first architectures are rage these days and rightfully so, they solve some of the challenges of modern application development. Microservices enable organisations in shipping code to production faster and is accomplished by dividing big monolithic applications into smaller but specialised applications. Though they provide great benefits, they are difficult to debug and secure in complex environments (different API versions, multiple API calls and frontend/backend gaps etc.,). GraphQL provides a powerful way to solve some of these challenges but with great power, comes great responsibility. GraphQL reduces the attack surface drastically(thanks to LangSec) but there are still many things which can go wrong. This talk will cover the risks associated with GraphQL, challenges and solutions, which help in implementing Secure GraphQL based APIs. We will start off with introduction to GraphQL and its benefits. We then discuss the difficulty in securing these applications and why traditional security scanners don’t work with them. At last, we will cover solutions which help in securing these API by shifting left in DevOps pipeline. We will cover the following as part of this presentation: GraphQL use cases and how unicorns use them Benefits and security challenges with GraphQL Authentication and Authorisation Resource exhaustion Backend complexities with microservices Need for tweaking conventional DevSecOps tools for security assurance Security solutions which works with GraphQL

graphqlmicroservicesgraphql-auth
Effective Android Development. UA Mobile 2016.
Effective Android Development. UA Mobile 2016.Effective Android Development. UA Mobile 2016.
Effective Android Development. UA Mobile 2016.

This document contains tips for effective Android development. It discusses tools like Android Studio, techniques for testing on emulators and devices, improving app performance, developing in an efficient environment, and optimizing the Gradle build process. Specific tips include using two Android Studio instances for code reviews, testing on different OS versions, measuring execution times, checking the frame rate, using annotations and Stetho for inspection, and building faster by targeting API 21 for debug builds.

Testing Angular 2 Applications - Rich Web 2016
Testing Angular 2 Applications - Rich Web 2016Testing Angular 2 Applications - Rich Web 2016
Testing Angular 2 Applications - Rich Web 2016

The best reason for writing tests is to automate your testing. Without tests, you'll likely be testing manually. This manual testing will take longer and longer as your codebase grows. In this session, you’ll learn how to test an Angular 2 application. You'll learn how to use Jasmine to unit test components and Protractor for integration testing. We’ll also take a look at code coverage options and explore continuous integration tools.

stormpathangular-clikarma
DISCLAIMER
 Subjective matter!
 You will have your project’s requirements;
 Not every project is a “green field” project;
 This is not about “all new shiny things are better”.
Pain of using “magic” frameworks
 You install NHibernate;
 Everything works as expected;
 You create your first entity – so far so good;
 You create second entity – it doesn’t work;
 You spend 3 hours to understand that the problem is that your new entity
has “Date” property and it is not escaped in generated T-SQL.
Principle 1: direct SQL queries (Dapper)
Principle 1: direct SQL queries (F# +
ADO.NET)

Recommended for you

Fixing security by fixing software development
Fixing security by fixing software developmentFixing security by fixing software development
Fixing security by fixing software development

Fixing Security by Fixing Software Development Using Continuous Deployment Do you have an effective release cycle? Is your process long and archaic? Long release cycle are typically based on assumptions we haven't seen since the 1980s and require very mature organizations to implement successfully. They can also disenfranchise developers from caring or even knowing about security or operational issues. Attend this session to learn more about an alternative approach to managing deployments through Continuous Deployment, otherwise known as Continuous Delivery. Find out how small, but frequent changes to the production environment can transform an organization’s development process to truly integrate security. Learn how to get started with continuous deployment and what tools and process are needed to make implementation within your organization a (security) success.

securitycontinuous deploymentmicrosoft
Javascript State of the Union 2015 - English
Javascript State of the Union 2015 - EnglishJavascript State of the Union 2015 - English
Javascript State of the Union 2015 - English

The document provides a history of JavaScript and web development from 1950 to 2015. It discusses the evolution of programming languages, computers, processors, companies, browsers, HTML/CSS, JavaScript frameworks, and more. Key developments include the introduction of imperative and functional programming, Ajax and JSON, mobile devices, and modern JavaScript frameworks. The document predicts continued evolution in areas like WebAssembly, isomorphic code, functional programming, and integration of AI and IoT. Overall it traces the massive changes in the field but argues the underlying principles that allow for continued evolution have remained steady.

 
by Huge
developmentfrontendhistory
DOES SFO 2016 - Sam Guckenheimer & Ed Blankenship "Moving to One Engineering ...
DOES SFO 2016 - Sam Guckenheimer & Ed Blankenship "Moving to One Engineering ...DOES SFO 2016 - Sam Guckenheimer & Ed Blankenship "Moving to One Engineering ...
DOES SFO 2016 - Sam Guckenheimer & Ed Blankenship "Moving to One Engineering ...

This document introduces Sam Guckenheimer and Ed Blankenship and discusses Microsoft's goal of creating a single engineering system (1ES). The purpose is to enable any developer to access and reuse source code across the company, get rewarded for creating popular components, and have changes instantly visible. In practice, this means scaling Git for enterprise use, promoting a live site culture, and creating a common telemetry pipeline to measure usage and engineering metrics. The goal is to have self-forming teams and determine if 1ES is achieving its goals like supporting 4x user growth.

continuous deliverycontinuous integrationmobile devops
Principle 1: direct SQL queries (Go)
https://github.com/jmoiron/sqlx
Principle 1: Request -> Response
https://suave.io
Principle 1: Request -> Response
https://golang.org/pkg/net/http/
Principle 1: “less magic”
 Avoid accidental complexity at all cost;
 Magic things: ORMs, AOP, overuse of conventions, code generation,
reflection etc.;
 Willing to trade some effort for the full control over solution.

Recommended for you

API Design Principles for Accelerated Development
API Design Principles for Accelerated DevelopmentAPI Design Principles for Accelerated Development
API Design Principles for Accelerated Development

One of the largest issues in API architecture development is that the task is often driven by the pragmatic indoctrination of a specification into a product rather than designing around the speed and ease of development, usually due to a separation between the engineering teams and their core developer user base. Extending upon the ideas of API design around developer accelerated development delivered in the PayPal keynote, we will take a deeper look into some of the great techniques delivered to us through the RESTful specification, applying them to developer API consumption practices with the intention of creating efficient best practices for rapid development. Within this talk we will explore what we have learned through reconstructing our API backbone at PayPal for our developer community, including: - API automation practices for code reduction and application longevity - Open security standards that promote developer integration ease and maintain strict security practices - RESTful API architecture best practices for developer centric accelerated development

restsecurityppdssc
Continuous Testing With React Storybook & WebdriverIO
Continuous Testing With React Storybook & WebdriverIOContinuous Testing With React Storybook & WebdriverIO
Continuous Testing With React Storybook & WebdriverIO

This document summarizes Josh Cypher's presentation on continuous testing with React Storybook and WebdriverIO. It discusses using Storybook for UI development and testing React components in isolation. WebdriverIO is recommended for end-to-end acceptance testing through a real browser. A testing pyramid is presented with unit tests at the bottom and end-to-end tests at the top. Continuous testing should happen at all stages of development through unit, component, snapshot, and acceptance tests to catch errors early and reduce risks.

software testingnodejsnodevember
Javaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learnedJavaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learned

This document discusses GWT architectures and lessons learned from GWT development. It covers topics like structuring the UI with widgets, talking to servers, and shifting to rich internet applications. It provides tips for development like using MVP patterns, handling events, avoiding maintainability issues. It also discusses using GWT-RPC and generics for type-safe communications and batching commands for efficiency. Overall it focuses on architectural best practices, common problems, and solutions for building maintainable and performant GWT applications.

historygwtcommand pattern
The “it works on my machine” pain
 You do the change and test it locally – it works;
 You push your changes to repository;
 CI build fails with “Cannot load an assembly”;
 You spend next 3 hours trying to understand why.
Principle 2: predictable builds
Principle 2: locking dependencies
Package Manager Platform Has lock file?
Paket .Net
Nuget.exe .Net
Npm JS
Yarn JS
dep Go
Principle 2: configuring IIS
http://tavalik.ru/ustanovka-wordpress-na-iis/

Recommended for you

Cloud Native Progressive Web Applications - Denver JUG 2016
Cloud Native Progressive Web Applications - Denver JUG 2016Cloud Native Progressive Web Applications - Denver JUG 2016
Cloud Native Progressive Web Applications - Denver JUG 2016

In this session, we covered how to build microservices with Spring, deploy them to the cloud and expose their functionality with an progressive web application that can run offline. You’ll learn how to “build to fail” and create a quality, resilient application. Live coding will show how to use: Spring Boot, Spring Cloud, Spring Security, Cloud Foundry, IntelliJ IDEA, Angular 2, JWT, Stormpath, and Progressive Web Apps.

spring-bootofflinebuildtofail
Easy logins for JavaScript web applications
Easy logins for JavaScript web applicationsEasy logins for JavaScript web applications
Easy logins for JavaScript web applications

This document summarizes François Marier's presentation on easy logins for JavaScript web applications using Persona. It discusses some of the problems with traditional password-based logins, such as passwords being hard to secure and remember. It then introduces Persona as a solution that allows users to log in to websites using their email address, without needing to manage individual passwords. The document provides an overview of how Persona works and how developers can implement it with just a few steps. It highlights the benefits of Persona being decentralized, simple for users, and easy for developers to add to websites and applications.

authenticationpasswordsbrowserid
Ease into HTML5 and CSS3
Ease into HTML5 and CSS3Ease into HTML5 and CSS3
Ease into HTML5 and CSS3

HTML5 and CSS3 offer some great features that everyone is clamoring to use. However, not everyone can simply rip apart their site and redo all of their markup and styling across the board. There are some quick wins, especially with CSS3, to be had that you can integrate into your site without rewriting your whole entire site.

htmlcss
Principle 2: configuring nginx
Principle 2: predictable state
 Reproducible builds: “single script to rule them all”;
 Transient dependencies, lock files;
 Immutable servers/infrastructure;
 Configuration-driven environment.
The “edit, compile, wait, repeat” pain
 You do the change to the model/view/controller;
 You compile your 35 projects solution - 30 sec;
 You reload your browser and wait for:
 IIS to reload the app – 5 sec;
 Your app to initialize – 15 sec;
 The page to load – 2 sec;
 You manually restore the page state – 5 sec;
The “edit, compile, wait, repeat” pain
 You do the change to the model/view/controller;
 You compile your 35 projects solution - 30 sec;
 You reload your browser and wait for:
 IIS to reload the app – 5 sec;
 Your app to initialize – 15 sec;
 The page to load – 2 sec;
 You manually restore the page state – 5 sec;
 And it did not work;
 Repeat.

Recommended for you

WordPress: Doing Simply & Effectively
WordPress: Doing Simply & EffectivelyWordPress: Doing Simply & Effectively
WordPress: Doing Simply & Effectively

Some tips and tools to make WordPress development process simple and effective. (This presentation was made for WordPress Pokhara meetup: December 2016)

gruntphpwp-cli
The Angular road from 1.x to 2.0
The Angular road from 1.x to 2.0The Angular road from 1.x to 2.0
The Angular road from 1.x to 2.0

This presentation includes some thoughts and conclusion of mine after my research for the refactor of the Jexia interface. It will provide you useful tools for your refactor (or your new projects) and some tips. Video with the speech: https://youtu.be/zbphdRs__DM

angularjsangular-universaltypescript
История одного успешного ".NET" проекта, Александр Сугак
История одного успешного ".NET" проекта, Александр СугакИстория одного успешного ".NET" проекта, Александр Сугак
История одного успешного ".NET" проекта, Александр Сугак

The document describes an IoT project built using an unconventional technology stack. It discusses the current status quo of typical .NET projects using standard Microsoft technologies. It then presents a case study of an IoT project built using non-standard technologies like F#, Suave, ReactJS, and running on Linux. It outlines the principles used in selecting the technology stack, including preferring less magic frameworks, ensuring predictable and reproducible builds, shortening feedback loops, and focusing on reusable skills and knowledge.

The “edit, compile, wait, repeat” pain
https://faculty.washington.edu/ajko/books/cooperative-software-development/history.html
Principle 3: File watchers
Principle 3: React hot loader
Principle 3: next level
 Not just time travel, I want to observe changes across time at one glance;
 Not just hot reload, I want to see changes for all states, on all pages;
 Visual programming?
 Programming by example?
 See Bret Victor’s work, e.g.
http://worrydream.com/#!2/LadderOfAbstraction

Recommended for you

AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdfAstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf

This document provides an overview of a coding bootcamp introduction hosted by AstroLabs Academy. It outlines the agenda, content, deliverables, and tips for getting the most out of the program. The bootcamp will cover introductory topics like HTML, CSS, JavaScript, as well as frameworks like React and Node.js. It emphasizes that web development is the easiest domain to get started in and recommends focusing on JavaScript skills.

Front-End Modernization for Mortals
Front-End Modernization for MortalsFront-End Modernization for Mortals
Front-End Modernization for Mortals

This document discusses strategies for modernizing front-end codebases in an incremental way. It suggests starting with basic modularization by splitting code into logical chunks, then concatenating and minifying modules. Next steps include loading modules on demand using various module systems. Graceful deprecation is recommended over breaking changes. The document also advocates trying new frameworks on side projects first before adopting one. Maintaining good development practices like testing, linting, code style rules and performance testing is emphasized over choosing any particular framework.

Front end-modernization
Front end-modernizationFront end-modernization
Front end-modernization

This document discusses strategies for modernizing front-end codebases in an incremental way. It recommends starting with basic modularization by splitting code into logical chunks, then concatenating and minifying files. Next steps include loading modules on demand using various module systems. Graceful deprecation is advised by keeping deprecated code available temporarily while logging its usage. Framework choices should be informed by building prototypes in different options. Overall modernization should prioritize tools like testing, linting and performance testing over choosing specific frameworks. Changes should be made gradually to avoid diverging from existing workflows.

Principle 3: build feedback
 Run entire test suite on every commit;
 Run all linters on every commit;
 Deploy 10 version of the app per day;
 Receive notifications on every failure: Slack integration for CI builds and in-
app critical errors;
Principle 3: shorten feedback loop
 As a programmer, I want to see the effect of the changes I do
immediately so that I could be more efficient;
The “your skills are now obsolete” pain
 You start as a .NET programmer in 200X;
 You learn ASP.NET Web Forms: the event model, the View State, the Ajax
Toolkit, etc.;
The “your skills are now obsolete” pain
 You start as a .NET programmer in 200X;
 You learn ASP.NET Web Forms: the event model, the View State, the Ajax
Toolkit, etc.;
 Time passes, you are in the 201X;
 You now have a part of your brain that is forever lost.
How to disable
ViewState
https://commons.wikimedia.org/wiki/File:Brodmann_area_45_lateral.jpg

Recommended for you

Front end-modernization
Front end-modernizationFront end-modernization
Front end-modernization

This document discusses strategies for modernizing front-end codebases in an incremental way. It suggests starting with basic modularization by splitting code into logical chunks and concatenating/minifying files. Next steps include loading modules on demand using various module systems. Graceful deprecation is recommended over breaking changes. The document also advocates trying new frameworks on side projects first before adopting one. Maintaining good development practices like testing, linting and performance testing is emphasized over choosing the latest frameworks.

uifront end
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)

My presentation on 'Enterprise PHP' at the PHP London Conference 2008 (http://www.phpconference.co.uk)

JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...

We'll go through the possible ways to bring technology agnostic microservice architecture to the frontend, review pros/cons of each of them. We also will check the "ultimate solution" that handles microservices with SSR in SPA manner. This talk will be interesting for ones who have multiple teams working on the same frontend application.

#jsfest#jsfestua#jsfest2019
The “your skills are now obsolete” pain
 You start doing SPAs in the 201X;
 You learn AngularJS: the template language, the directives, the custom
HTTP client, etc.;
The “your skills are now obsolete” pain
 You start doing SPAs in the 201X;
 You learn AngularJS: the template language, the directives, the custom
HTTP client, etc.;
 …
 See the pattern?
Principle 4: things I cannot reuse
 WebForms;
 WinForms;
 SharePoint;
 Visual Studio + R#;
 AngularJS http client;
 “Click to deploy to Azure”;
 and many more.
Principle 4: things I can reuse
 JavaScript;
 Object Oriented/Functional programming, SOLID;
 Event-driven/reactive systems;
 Web, http, networks;
 SQL;
 Emacs/Vim;
 Actor Model;
 Stream Processing;
 Machine Learning;
 Statistics;
 UX;
 And many more.

Recommended for you

Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakaya

Django is a free and open-source Python web framework used to ease the process of developing web applications. It emphasizes reusability and pluggability of components for rapid development. Django projects include applications that satisfy the project's intentions. The framework uses the MVC architecture where models represent the data, views display the user interface, and controllers link models and views together. This document explained how to install Django, create a project and application, and tested the development server to display "It worked!"

installing djangoweb appsdjango file strucutre
JSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendJSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontend

We'll go through the possible ways to bring technology agnostic microservice architecture to the frontend, review pros/cons of each of them. We also will check the "ultimate solution" that handles microservices with SSR in SPA manner. This talk will be interesting for ones who have multiple teams working on the same frontend application.

javascriptfrontendmicroservices
Web worker in your angular application
Web worker in your angular applicationWeb worker in your angular application
Web worker in your angular application

Discussion on angular offering, approaches to integrate web worker in angular (5 and 6) application, their pros and cons. A sample example implementation using custom web worker approach and integrating the same with CLI(1 and 6) and the application.

web workerwebworkerangular 5
Principle 4: Reactive Extensions
http://reactivex.io/
Principle 4: composition and reuse
 As a programmer, I want to be able to reuse the skills and knowledge I
have when working on a new project so that I could be more efficient and
be in demand on job market;
Summary
 Business value first, technical wizardry second;
 Automate all the things!
 Do not make compromises with technology, ask for more!
 Learn how to build systems, not how to use frameworks.
What are your Principles?

Recommended for you

Stanislav Khorunzhyi, "Front-end it like a PRO"
Stanislav Khorunzhyi, "Front-end it like a PRO"Stanislav Khorunzhyi, "Front-end it like a PRO"
Stanislav Khorunzhyi, "Front-end it like a PRO"

This document provides 12 tips for front-end developers to code like a pro, including always using form tags for forms, adding labels for inputs, configuring linters from the beginning, adding Git hooks to run linters on commit/push, understanding transpilation processes, using modern array methods, and optimizing final bundles through lazy loading and bundle analysis. Key recommendations are to focus on semantics, accessibility, best practices for code quality and performance.

10 Code Anti-Patterns to Avoid in Software Development.pdf
10 Code Anti-Patterns to Avoid in Software Development.pdf10 Code Anti-Patterns to Avoid in Software Development.pdf
10 Code Anti-Patterns to Avoid in Software Development.pdf

The document discusses 10 code anti-patterns that developers should avoid in software development. These anti-patterns include: 1) The Golden Hammer where the same solution is used for different problems, 2) Spaghetti Code which is messy and unorganized, 3) Reinventing the Wheel by creating custom solutions instead of using existing libraries, 4) Dependency Hell which occurs when too many third-party libraries are imported, 5) God Classes that have too many responsibilities, 6) Hard Coding values instead of externalizing them, 7) Boat Anchor code that is written but not needed, 8) Lava Flow legacy code that is risky to change, 9) Copy-Paste Programming without reviewing code, and 10) Cargo Cult Programming

programming
30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software Engineer30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software Engineer

The document discusses 30 skills that software engineers should master to become senior engineers, including skills with programming languages like PHP, databases, SQL, HTML, CSS, JavaScript frameworks, build tools like Gulp, version control with Git, server-side frameworks like Laravel, object-relational mappers, and using database seeding and migrations. It emphasizes the importance of being well-rounded and having experience with both front-end and back-end technologies as well as tools that improve productivity and maintainability. Mastering these skills can lead to higher salaries, more leadership opportunities, and building more robust applications.

software engineeeringlaravelsoftware development
https://www.facebook.com/groups/kharkivfsharp/
Thank you!

More Related Content

What's hot

Use groovy & grails in your spring boot projects
Use groovy & grails in your spring boot projectsUse groovy & grails in your spring boot projects
Use groovy & grails in your spring boot projects
Fátima Casaú Pérez
 
"Will Git Be Around Forever? A List of Possible Successors" at UtrechtJUG
"Will Git Be Around Forever? A List of Possible Successors" at UtrechtJUG"Will Git Be Around Forever? A List of Possible Successors" at UtrechtJUG
"Will Git Be Around Forever? A List of Possible Successors" at UtrechtJUG
🎤 Hanno Embregts 🎸
 
Refactoring Wunderlist. UA Mobile 2016.
Refactoring Wunderlist. UA Mobile 2016.Refactoring Wunderlist. UA Mobile 2016.
Refactoring Wunderlist. UA Mobile 2016.
UA Mobile
 
Front End Development for Back End Java Developers - NYJavaSIG 2019
Front End Development for Back End Java Developers - NYJavaSIG 2019Front End Development for Back End Java Developers - NYJavaSIG 2019
Front End Development for Back End Java Developers - NYJavaSIG 2019
Matt Raible
 
Preparing for the WebGeek DevCup
Preparing for the WebGeek DevCupPreparing for the WebGeek DevCup
Preparing for the WebGeek DevCup
bryanbibat
 
React native first impression
React native first impressionReact native first impression
React native first impression
Alvaro Viebrantz
 
In graph we trust: Microservices, GraphQL and security challenges
In graph we trust: Microservices, GraphQL and security challengesIn graph we trust: Microservices, GraphQL and security challenges
In graph we trust: Microservices, GraphQL and security challenges
Mohammed A. Imran
 
Effective Android Development. UA Mobile 2016.
Effective Android Development. UA Mobile 2016.Effective Android Development. UA Mobile 2016.
Effective Android Development. UA Mobile 2016.
UA Mobile
 
Testing Angular 2 Applications - Rich Web 2016
Testing Angular 2 Applications - Rich Web 2016Testing Angular 2 Applications - Rich Web 2016
Testing Angular 2 Applications - Rich Web 2016
Matt Raible
 
Fixing security by fixing software development
Fixing security by fixing software developmentFixing security by fixing software development
Fixing security by fixing software development
Nick Galbreath
 
Javascript State of the Union 2015 - English
Javascript State of the Union 2015 - EnglishJavascript State of the Union 2015 - English
Javascript State of the Union 2015 - English
Huge
 
DOES SFO 2016 - Sam Guckenheimer & Ed Blankenship "Moving to One Engineering ...
DOES SFO 2016 - Sam Guckenheimer & Ed Blankenship "Moving to One Engineering ...DOES SFO 2016 - Sam Guckenheimer & Ed Blankenship "Moving to One Engineering ...
DOES SFO 2016 - Sam Guckenheimer & Ed Blankenship "Moving to One Engineering ...
Gene Kim
 
API Design Principles for Accelerated Development
API Design Principles for Accelerated DevelopmentAPI Design Principles for Accelerated Development
API Design Principles for Accelerated Development
Jonathan LeBlanc
 
Continuous Testing With React Storybook & WebdriverIO
Continuous Testing With React Storybook & WebdriverIOContinuous Testing With React Storybook & WebdriverIO
Continuous Testing With React Storybook & WebdriverIO
Josh Cypher
 
Javaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learnedJavaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learned
pgt technology scouting GmbH
 
Cloud Native Progressive Web Applications - Denver JUG 2016
Cloud Native Progressive Web Applications - Denver JUG 2016Cloud Native Progressive Web Applications - Denver JUG 2016
Cloud Native Progressive Web Applications - Denver JUG 2016
Matt Raible
 
Easy logins for JavaScript web applications
Easy logins for JavaScript web applicationsEasy logins for JavaScript web applications
Easy logins for JavaScript web applications
Francois Marier
 
Ease into HTML5 and CSS3
Ease into HTML5 and CSS3Ease into HTML5 and CSS3
Ease into HTML5 and CSS3
Brian Moon
 
WordPress: Doing Simply & Effectively
WordPress: Doing Simply & EffectivelyWordPress: Doing Simply & Effectively
WordPress: Doing Simply & Effectively
arryaas
 
The Angular road from 1.x to 2.0
The Angular road from 1.x to 2.0The Angular road from 1.x to 2.0
The Angular road from 1.x to 2.0
Vassilis Pitsounis
 

What's hot (20)

Use groovy & grails in your spring boot projects
Use groovy & grails in your spring boot projectsUse groovy & grails in your spring boot projects
Use groovy & grails in your spring boot projects
 
"Will Git Be Around Forever? A List of Possible Successors" at UtrechtJUG
"Will Git Be Around Forever? A List of Possible Successors" at UtrechtJUG"Will Git Be Around Forever? A List of Possible Successors" at UtrechtJUG
"Will Git Be Around Forever? A List of Possible Successors" at UtrechtJUG
 
Refactoring Wunderlist. UA Mobile 2016.
Refactoring Wunderlist. UA Mobile 2016.Refactoring Wunderlist. UA Mobile 2016.
Refactoring Wunderlist. UA Mobile 2016.
 
Front End Development for Back End Java Developers - NYJavaSIG 2019
Front End Development for Back End Java Developers - NYJavaSIG 2019Front End Development for Back End Java Developers - NYJavaSIG 2019
Front End Development for Back End Java Developers - NYJavaSIG 2019
 
Preparing for the WebGeek DevCup
Preparing for the WebGeek DevCupPreparing for the WebGeek DevCup
Preparing for the WebGeek DevCup
 
React native first impression
React native first impressionReact native first impression
React native first impression
 
In graph we trust: Microservices, GraphQL and security challenges
In graph we trust: Microservices, GraphQL and security challengesIn graph we trust: Microservices, GraphQL and security challenges
In graph we trust: Microservices, GraphQL and security challenges
 
Effective Android Development. UA Mobile 2016.
Effective Android Development. UA Mobile 2016.Effective Android Development. UA Mobile 2016.
Effective Android Development. UA Mobile 2016.
 
Testing Angular 2 Applications - Rich Web 2016
Testing Angular 2 Applications - Rich Web 2016Testing Angular 2 Applications - Rich Web 2016
Testing Angular 2 Applications - Rich Web 2016
 
Fixing security by fixing software development
Fixing security by fixing software developmentFixing security by fixing software development
Fixing security by fixing software development
 
Javascript State of the Union 2015 - English
Javascript State of the Union 2015 - EnglishJavascript State of the Union 2015 - English
Javascript State of the Union 2015 - English
 
DOES SFO 2016 - Sam Guckenheimer & Ed Blankenship "Moving to One Engineering ...
DOES SFO 2016 - Sam Guckenheimer & Ed Blankenship "Moving to One Engineering ...DOES SFO 2016 - Sam Guckenheimer & Ed Blankenship "Moving to One Engineering ...
DOES SFO 2016 - Sam Guckenheimer & Ed Blankenship "Moving to One Engineering ...
 
API Design Principles for Accelerated Development
API Design Principles for Accelerated DevelopmentAPI Design Principles for Accelerated Development
API Design Principles for Accelerated Development
 
Continuous Testing With React Storybook & WebdriverIO
Continuous Testing With React Storybook & WebdriverIOContinuous Testing With React Storybook & WebdriverIO
Continuous Testing With React Storybook & WebdriverIO
 
Javaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learnedJavaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learned
 
Cloud Native Progressive Web Applications - Denver JUG 2016
Cloud Native Progressive Web Applications - Denver JUG 2016Cloud Native Progressive Web Applications - Denver JUG 2016
Cloud Native Progressive Web Applications - Denver JUG 2016
 
Easy logins for JavaScript web applications
Easy logins for JavaScript web applicationsEasy logins for JavaScript web applications
Easy logins for JavaScript web applications
 
Ease into HTML5 and CSS3
Ease into HTML5 and CSS3Ease into HTML5 and CSS3
Ease into HTML5 and CSS3
 
WordPress: Doing Simply & Effectively
WordPress: Doing Simply & EffectivelyWordPress: Doing Simply & Effectively
WordPress: Doing Simply & Effectively
 
The Angular road from 1.x to 2.0
The Angular road from 1.x to 2.0The Angular road from 1.x to 2.0
The Angular road from 1.x to 2.0
 

Similar to Pain Driven Development by Alexandr Sugak

История одного успешного ".NET" проекта, Александр Сугак
История одного успешного ".NET" проекта, Александр СугакИстория одного успешного ".NET" проекта, Александр Сугак
История одного успешного ".NET" проекта, Александр Сугак
Sigma Software
 
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdfAstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
FarHanWasif1
 
Front-End Modernization for Mortals
Front-End Modernization for MortalsFront-End Modernization for Mortals
Front-End Modernization for Mortals
cgack
 
Front end-modernization
Front end-modernizationFront end-modernization
Front end-modernization
devObjective
 
Front end-modernization
Front end-modernizationFront end-modernization
Front end-modernization
ColdFusionConference
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)
Ivo Jansch
 
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JSFestUA
 
Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakaya
Mbakaya Kwatukha
 
JSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendJSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontend
Vlad Fedosov
 
Web worker in your angular application
Web worker in your angular applicationWeb worker in your angular application
Web worker in your angular application
Suresh Patidar
 
Stanislav Khorunzhyi, "Front-end it like a PRO"
Stanislav Khorunzhyi, "Front-end it like a PRO"Stanislav Khorunzhyi, "Front-end it like a PRO"
Stanislav Khorunzhyi, "Front-end it like a PRO"
Sigma Software
 
10 Code Anti-Patterns to Avoid in Software Development.pdf
10 Code Anti-Patterns to Avoid in Software Development.pdf10 Code Anti-Patterns to Avoid in Software Development.pdf
10 Code Anti-Patterns to Avoid in Software Development.pdf
Ahmed Salama
 
30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software Engineer30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software Engineer
Sean Coates
 
Wordpress as a framework
Wordpress as a frameworkWordpress as a framework
Wordpress as a framework
Aggelos Synadakis
 
System design for Web Application
System design for Web ApplicationSystem design for Web Application
System design for Web Application
Michael Choi
 
The State of Front-end At CrowdTwist
The State of Front-end At CrowdTwistThe State of Front-end At CrowdTwist
The State of Front-end At CrowdTwist
Mark Fayngersh
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
Roberto Pérez Alcolea
 
DevSecCon Singapore 2018 - Remove developers’ shameful secrets or simply rem...
DevSecCon Singapore 2018 -  Remove developers’ shameful secrets or simply rem...DevSecCon Singapore 2018 -  Remove developers’ shameful secrets or simply rem...
DevSecCon Singapore 2018 - Remove developers’ shameful secrets or simply rem...
DevSecCon
 
O365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - MaterialO365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - Material
Thomas Daly
 
A modern architecturereview–usingcodereviewtools-ver-3.5
A modern architecturereview–usingcodereviewtools-ver-3.5A modern architecturereview–usingcodereviewtools-ver-3.5
A modern architecturereview–usingcodereviewtools-ver-3.5
SSW
 

Similar to Pain Driven Development by Alexandr Sugak (20)

История одного успешного ".NET" проекта, Александр Сугак
История одного успешного ".NET" проекта, Александр СугакИстория одного успешного ".NET" проекта, Александр Сугак
История одного успешного ".NET" проекта, Александр Сугак
 
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdfAstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
 
Front-End Modernization for Mortals
Front-End Modernization for MortalsFront-End Modernization for Mortals
Front-End Modernization for Mortals
 
Front end-modernization
Front end-modernizationFront end-modernization
Front end-modernization
 
Front end-modernization
Front end-modernizationFront end-modernization
Front end-modernization
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)
 
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
 
Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakaya
 
JSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendJSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontend
 
Web worker in your angular application
Web worker in your angular applicationWeb worker in your angular application
Web worker in your angular application
 
Stanislav Khorunzhyi, "Front-end it like a PRO"
Stanislav Khorunzhyi, "Front-end it like a PRO"Stanislav Khorunzhyi, "Front-end it like a PRO"
Stanislav Khorunzhyi, "Front-end it like a PRO"
 
10 Code Anti-Patterns to Avoid in Software Development.pdf
10 Code Anti-Patterns to Avoid in Software Development.pdf10 Code Anti-Patterns to Avoid in Software Development.pdf
10 Code Anti-Patterns to Avoid in Software Development.pdf
 
30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software Engineer30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software Engineer
 
Wordpress as a framework
Wordpress as a frameworkWordpress as a framework
Wordpress as a framework
 
System design for Web Application
System design for Web ApplicationSystem design for Web Application
System design for Web Application
 
The State of Front-end At CrowdTwist
The State of Front-end At CrowdTwistThe State of Front-end At CrowdTwist
The State of Front-end At CrowdTwist
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
DevSecCon Singapore 2018 - Remove developers’ shameful secrets or simply rem...
DevSecCon Singapore 2018 -  Remove developers’ shameful secrets or simply rem...DevSecCon Singapore 2018 -  Remove developers’ shameful secrets or simply rem...
DevSecCon Singapore 2018 - Remove developers’ shameful secrets or simply rem...
 
O365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - MaterialO365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - Material
 
A modern architecturereview–usingcodereviewtools-ver-3.5
A modern architecturereview–usingcodereviewtools-ver-3.5A modern architecturereview–usingcodereviewtools-ver-3.5
A modern architecturereview–usingcodereviewtools-ver-3.5
 

More from Sigma Software

Fast is Best. Using .NET MinimalAPIs
Fast is Best. Using .NET MinimalAPIsFast is Best. Using .NET MinimalAPIs
Fast is Best. Using .NET MinimalAPIs
Sigma Software
 
"Are you developing or declining? Don't become an IT-dinosaur"
"Are you developing or declining? Don't become an IT-dinosaur""Are you developing or declining? Don't become an IT-dinosaur"
"Are you developing or declining? Don't become an IT-dinosaur"
Sigma Software
 
Michael Smolin, "Decrypting customer's cultural code"
Michael Smolin, "Decrypting customer's cultural code"Michael Smolin, "Decrypting customer's cultural code"
Michael Smolin, "Decrypting customer's cultural code"
Sigma Software
 
Max Kunytsia, “Why is continuous product discovery better than continuous del...
Max Kunytsia, “Why is continuous product discovery better than continuous del...Max Kunytsia, “Why is continuous product discovery better than continuous del...
Max Kunytsia, “Why is continuous product discovery better than continuous del...
Sigma Software
 
Marcelino Moreno, "Product Management Mindset"
Marcelino Moreno, "Product Management Mindset"Marcelino Moreno, "Product Management Mindset"
Marcelino Moreno, "Product Management Mindset"
Sigma Software
 
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
Sigma Software
 
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
Sigma Software
 
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
Sigma Software
 
Stoyan Atanasov “How crucial is the BA role in an IT Project"
Stoyan Atanasov “How crucial is the BA role in an IT Project"Stoyan Atanasov “How crucial is the BA role in an IT Project"
Stoyan Atanasov “How crucial is the BA role in an IT Project"
Sigma Software
 
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
Sigma Software
 
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
Sigma Software
 
VOLVO x HACK SPRINT
VOLVO x HACK SPRINTVOLVO x HACK SPRINT
VOLVO x HACK SPRINT
Sigma Software
 
Business digitalization trends and challenges
Business digitalization trends and challengesBusiness digitalization trends and challenges
Business digitalization trends and challenges
Sigma Software
 
Дмитро Терещенко, "How to secure your application with Secure SDLC"
Дмитро Терещенко, "How to secure your application with Secure SDLC"Дмитро Терещенко, "How to secure your application with Secure SDLC"
Дмитро Терещенко, "How to secure your application with Secure SDLC"
Sigma Software
 
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
Sigma Software
 
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
Sigma Software
 
Training solutions and content creation
Training solutions and content creationTraining solutions and content creation
Training solutions and content creation
Sigma Software
 
False news - false truth: tips & tricks how to avoid them
False news - false truth: tips & tricks how to avoid themFalse news - false truth: tips & tricks how to avoid them
False news - false truth: tips & tricks how to avoid them
Sigma Software
 
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
Sigma Software
 
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
Sigma Software
 

More from Sigma Software (20)

Fast is Best. Using .NET MinimalAPIs
Fast is Best. Using .NET MinimalAPIsFast is Best. Using .NET MinimalAPIs
Fast is Best. Using .NET MinimalAPIs
 
"Are you developing or declining? Don't become an IT-dinosaur"
"Are you developing or declining? Don't become an IT-dinosaur""Are you developing or declining? Don't become an IT-dinosaur"
"Are you developing or declining? Don't become an IT-dinosaur"
 
Michael Smolin, "Decrypting customer's cultural code"
Michael Smolin, "Decrypting customer's cultural code"Michael Smolin, "Decrypting customer's cultural code"
Michael Smolin, "Decrypting customer's cultural code"
 
Max Kunytsia, “Why is continuous product discovery better than continuous del...
Max Kunytsia, “Why is continuous product discovery better than continuous del...Max Kunytsia, “Why is continuous product discovery better than continuous del...
Max Kunytsia, “Why is continuous product discovery better than continuous del...
 
Marcelino Moreno, "Product Management Mindset"
Marcelino Moreno, "Product Management Mindset"Marcelino Moreno, "Product Management Mindset"
Marcelino Moreno, "Product Management Mindset"
 
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
 
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
 
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
 
Stoyan Atanasov “How crucial is the BA role in an IT Project"
Stoyan Atanasov “How crucial is the BA role in an IT Project"Stoyan Atanasov “How crucial is the BA role in an IT Project"
Stoyan Atanasov “How crucial is the BA role in an IT Project"
 
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
 
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
 
VOLVO x HACK SPRINT
VOLVO x HACK SPRINTVOLVO x HACK SPRINT
VOLVO x HACK SPRINT
 
Business digitalization trends and challenges
Business digitalization trends and challengesBusiness digitalization trends and challenges
Business digitalization trends and challenges
 
Дмитро Терещенко, "How to secure your application with Secure SDLC"
Дмитро Терещенко, "How to secure your application with Secure SDLC"Дмитро Терещенко, "How to secure your application with Secure SDLC"
Дмитро Терещенко, "How to secure your application with Secure SDLC"
 
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
 
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
 
Training solutions and content creation
Training solutions and content creationTraining solutions and content creation
Training solutions and content creation
 
False news - false truth: tips & tricks how to avoid them
False news - false truth: tips & tricks how to avoid themFalse news - false truth: tips & tricks how to avoid them
False news - false truth: tips & tricks how to avoid them
 
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
 
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
 

Recently uploaded

Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
Tatiana Al-Chueyr
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
Larry Smarr
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
Safe Software
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
SynapseIndia
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
jackson110191
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
Liveplex
 
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Bert Blevins
 
Best Programming Language for Civil Engineers
Best Programming Language for Civil EngineersBest Programming Language for Civil Engineers
Best Programming Language for Civil Engineers
Awais Yaseen
 
Mitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing SystemsMitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing Systems
ScyllaDB
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Erasmo Purificato
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
ishalveerrandhawa1
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
RaminGhanbari2
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
Yevgen Sysoyev
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
Stephanie Beckett
 
Choose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presenceChoose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presence
rajancomputerfbd
 
Cookies program to display the information though cookie creation
Cookies program to display the information though cookie creationCookies program to display the information though cookie creation
Cookies program to display the information though cookie creation
shanthidl1
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
Sally Laouacheria
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
Mark Billinghurst
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
Larry Smarr
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
Kief Morris
 

Recently uploaded (20)

Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
 
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
 
Best Programming Language for Civil Engineers
Best Programming Language for Civil EngineersBest Programming Language for Civil Engineers
Best Programming Language for Civil Engineers
 
Mitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing SystemsMitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing Systems
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
 
Choose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presenceChoose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presence
 
Cookies program to display the information though cookie creation
Cookies program to display the information though cookie creationCookies program to display the information though cookie creation
Cookies program to display the information though cookie creation
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
 

Pain Driven Development by Alexandr Sugak

  • 1. Pain-driven development Alexandr Sugak, .NET developer/architect at Sigma Software, Kharkiv F# User Group
  • 2. About me  32 years old;  Programming for ~12 years;  Did mostly .NET;  Worked on Web and Desktop apps, DBs, Web/Win Services, IDE plug-ins, SPAs, mobile apps, integrations;
  • 3. About me  32 years old;  Programming for ~12 years;  Did mostly .NET;  Worked on Web and Desktop apps, DBs, Web/Win Services, IDE plug-ins, SPAs, mobile apps, integrations;  Never liked it.
  • 4. Agenda  Pain #1 -> example(s) -> Guiding principle #1;  Pain #2 -> example(s) -> Guiding principle #2;  Pain #3 -> example(s) -> Guiding principle #3;  Pain #4 -> example(s) -> Guiding principle #4.
  • 5. How we do .NET today Platform:  Windows;  IIS;  MS SQL Server;  Azure. Technology:  C#;  ASP.NET MVC/API;  Entity Framework;  WCF  Angular.JS. Tools:  Visual Studio;  R#;  NuGet.exe;  TFS;  TeamCity. Libraries:  AutoMapper;  Json.NET;  Log4Net;  Rhino Mocks. Architecture:  3-Tier;  DDD “Light”;  SOA;  Microservices.
  • 6. But now we have .NET Core and a new open-source MSFT, right?
  • 7. But now we have .NET Core and a new open-source MSFT, right? https://github.com/NuGet/NuGetGallery/pull/4437 Wrong
  • 8. .NET Core + Linux =  C#;  ASP.NET Core;  EF Core;  SQL Server for Linux;  Visual Studio for Mac;  <something> Core;
  • 9. DISCLAIMER  Subjective matter!  You will have your project’s requirements;  Not every project is a “green field” project;  This is not about “all new shiny things are better”.
  • 10. Pain of using “magic” frameworks  You install NHibernate;  Everything works as expected;  You create your first entity – so far so good;  You create second entity – it doesn’t work;  You spend 3 hours to understand that the problem is that your new entity has “Date” property and it is not escaped in generated T-SQL.
  • 11. Principle 1: direct SQL queries (Dapper)
  • 12. Principle 1: direct SQL queries (F# + ADO.NET)
  • 13. Principle 1: direct SQL queries (Go) https://github.com/jmoiron/sqlx
  • 14. Principle 1: Request -> Response https://suave.io
  • 15. Principle 1: Request -> Response https://golang.org/pkg/net/http/
  • 16. Principle 1: “less magic”  Avoid accidental complexity at all cost;  Magic things: ORMs, AOP, overuse of conventions, code generation, reflection etc.;  Willing to trade some effort for the full control over solution.
  • 17. The “it works on my machine” pain  You do the change and test it locally – it works;  You push your changes to repository;  CI build fails with “Cannot load an assembly”;  You spend next 3 hours trying to understand why.
  • 19. Principle 2: locking dependencies Package Manager Platform Has lock file? Paket .Net Nuget.exe .Net Npm JS Yarn JS dep Go
  • 20. Principle 2: configuring IIS http://tavalik.ru/ustanovka-wordpress-na-iis/
  • 22. Principle 2: predictable state  Reproducible builds: “single script to rule them all”;  Transient dependencies, lock files;  Immutable servers/infrastructure;  Configuration-driven environment.
  • 23. The “edit, compile, wait, repeat” pain  You do the change to the model/view/controller;  You compile your 35 projects solution - 30 sec;  You reload your browser and wait for:  IIS to reload the app – 5 sec;  Your app to initialize – 15 sec;  The page to load – 2 sec;  You manually restore the page state – 5 sec;
  • 24. The “edit, compile, wait, repeat” pain  You do the change to the model/view/controller;  You compile your 35 projects solution - 30 sec;  You reload your browser and wait for:  IIS to reload the app – 5 sec;  Your app to initialize – 15 sec;  The page to load – 2 sec;  You manually restore the page state – 5 sec;  And it did not work;  Repeat.
  • 25. The “edit, compile, wait, repeat” pain https://faculty.washington.edu/ajko/books/cooperative-software-development/history.html
  • 26. Principle 3: File watchers
  • 27. Principle 3: React hot loader
  • 28. Principle 3: next level  Not just time travel, I want to observe changes across time at one glance;  Not just hot reload, I want to see changes for all states, on all pages;  Visual programming?  Programming by example?  See Bret Victor’s work, e.g. http://worrydream.com/#!2/LadderOfAbstraction
  • 29. Principle 3: build feedback  Run entire test suite on every commit;  Run all linters on every commit;  Deploy 10 version of the app per day;  Receive notifications on every failure: Slack integration for CI builds and in- app critical errors;
  • 30. Principle 3: shorten feedback loop  As a programmer, I want to see the effect of the changes I do immediately so that I could be more efficient;
  • 31. The “your skills are now obsolete” pain  You start as a .NET programmer in 200X;  You learn ASP.NET Web Forms: the event model, the View State, the Ajax Toolkit, etc.;
  • 32. The “your skills are now obsolete” pain  You start as a .NET programmer in 200X;  You learn ASP.NET Web Forms: the event model, the View State, the Ajax Toolkit, etc.;  Time passes, you are in the 201X;  You now have a part of your brain that is forever lost. How to disable ViewState https://commons.wikimedia.org/wiki/File:Brodmann_area_45_lateral.jpg
  • 33. The “your skills are now obsolete” pain  You start doing SPAs in the 201X;  You learn AngularJS: the template language, the directives, the custom HTTP client, etc.;
  • 34. The “your skills are now obsolete” pain  You start doing SPAs in the 201X;  You learn AngularJS: the template language, the directives, the custom HTTP client, etc.;  …  See the pattern?
  • 35. Principle 4: things I cannot reuse  WebForms;  WinForms;  SharePoint;  Visual Studio + R#;  AngularJS http client;  “Click to deploy to Azure”;  and many more.
  • 36. Principle 4: things I can reuse  JavaScript;  Object Oriented/Functional programming, SOLID;  Event-driven/reactive systems;  Web, http, networks;  SQL;  Emacs/Vim;  Actor Model;  Stream Processing;  Machine Learning;  Statistics;  UX;  And many more.
  • 37. Principle 4: Reactive Extensions http://reactivex.io/
  • 38. Principle 4: composition and reuse  As a programmer, I want to be able to reuse the skills and knowledge I have when working on a new project so that I could be more efficient and be in demand on job market;
  • 39. Summary  Business value first, technical wizardry second;  Automate all the things!  Do not make compromises with technology, ask for more!  Learn how to build systems, not how to use frameworks.
  • 40. What are your Principles?

Editor's Notes

  1. Not satisfied – is the better word
  2. We will now do programming on linux using .NET Core, ASP.NET Core, EF Core and SQL for linux?
  3. We will now do programming on linux using .NET Core, ASP.NET Core, EF Core and SQL for linux? I am not against these tools, I am against not changing, since this will not remove the pain
  4. Sometimes, after all (non)functional requirements and limitations are considered, you as a tech specialist make a decision to use technology A or B. This is the time to think of your principles.
  5. Put down your headphones and listen to what your teammates are talking about in the room? Is it “how to do this in this framework?”, “how do I configure that?”, “how do I deploy it?” or “what did you do to make it work?” Or is it “do I understand this business rule right?”, “what should happen if user does this?” or “maybe we have contradiction in these requirements?”
  6. Do you need to have 5 operations on 3 core entities? Do plain ADO.Net or dapper Do you have 24-screens CRUD app? Use EF
  7. Do you need to have 5 operations on 3 core entities? Do plain ADO.Net or dapper Do you have 24-screens CRUD app? Use EF
  8. Do you need to have 5 operations on 3 core entities? Do plain ADO.Net or dapper Do you have 24-screens CRUD app? Use EF
  9. Single script build: Must have for OSS Must have for inhouse too – days on setting up the environment for new developers?
  10. Instead of “Consolidate packages” button in VS.
  11. You could actually google for ready configurations (e.g. for hosting wordpress), not “how-to” articles with screenshots of the old IIS version
  12. You could actually google for ready configurations (e.g. for hosting wordpress), not “how-to” articles with screenshots of the old IIS version
  13. Did you have a day when you spent entire day working hard but at the end of the day felt that you accomplished nothing?
  14. Sounds like using punchcards in the 70s