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.
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;
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)
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.
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/
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.
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
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
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.
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?
https://www.facebook.com/groups/kharkivfsharp/
Thank you!

More Related Content

PDF
Making operations visible - devopsdays tokyo 2013
PDF
Get Hip with JHipster - Colorado Springs Open Source User Group 2021
PDF
From devOps to front end Ops, test first
PDF
What I learned teaching programming to 150 beginners
PDF
GR8Conf 2015 - Spring Boot and Groovy. What more do you need?
PDF
Full stack-web-design
PDF
What's New in JHipsterLand - DevNexus 2017
PDF
Testing Angular Applications - Jfokus 2017
Making operations visible - devopsdays tokyo 2013
Get Hip with JHipster - Colorado Springs Open Source User Group 2021
From devOps to front end Ops, test first
What I learned teaching programming to 150 beginners
GR8Conf 2015 - Spring Boot and Groovy. What more do you need?
Full stack-web-design
What's New in JHipsterLand - DevNexus 2017
Testing Angular Applications - Jfokus 2017

What's hot (20)

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

Similar to Pain Driven Development by Alexandr Sugak (20)

PPTX
История одного успешного ".NET" проекта, Александр Сугак
PDF
A Deep Dive into Android App Development 2.0.pdf
PPTX
What Front-End Developers (FED's) Need to Know to Be the Modern Day Superhero
PPT
Best practices for agile design
KEY
TxJS 2011
PDF
Architecting a Large Software Project - Lessons Learned
PDF
Sacrificing the golden calf of "coding"
PDF
Programming ASP NET MVC 4 Developing Real World Web Applications with ASP NET...
PPTX
Software Engineering - Trends & Industry Practices
PPTX
Improving The Quality of Existing Software
PDF
Programming ASP NET MVC 4 Developing Real World Web Applications with ASP NET...
PPT
Arch factory - Agile Design: Best Practices
PDF
.NET Full Stack Development AI + IoT Integrated Course | TechEntry
PPT
Develop a Quick and Dirty Web interface to your database: for the DBA and oth...
PDF
Product! - The road to production deployment
PDF
Asp.net Web Development.pdf
PDF
Waste Driven Development - Agile Coaching Serbia Meetup
PDF
Surviving a Hackathon and Beyond
PDF
Dot net syllabus book
История одного успешного ".NET" проекта, Александр Сугак
A Deep Dive into Android App Development 2.0.pdf
What Front-End Developers (FED's) Need to Know to Be the Modern Day Superhero
Best practices for agile design
TxJS 2011
Architecting a Large Software Project - Lessons Learned
Sacrificing the golden calf of "coding"
Programming ASP NET MVC 4 Developing Real World Web Applications with ASP NET...
Software Engineering - Trends & Industry Practices
Improving The Quality of Existing Software
Programming ASP NET MVC 4 Developing Real World Web Applications with ASP NET...
Arch factory - Agile Design: Best Practices
.NET Full Stack Development AI + IoT Integrated Course | TechEntry
Develop a Quick and Dirty Web interface to your database: for the DBA and oth...
Product! - The road to production deployment
Asp.net Web Development.pdf
Waste Driven Development - Agile Coaching Serbia Meetup
Surviving a Hackathon and Beyond
Dot net syllabus book
Ad

More from Sigma Software (20)

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

Recently uploaded (20)

PDF
Modernizing your data center with Dell and AMD
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Machine learning based COVID-19 study performance prediction
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Big Data Technologies - Introduction.pptx
PPT
Teaching material agriculture food technology
PDF
KodekX | Application Modernization Development
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Encapsulation theory and applications.pdf
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
MYSQL Presentation for SQL database connectivity
Modernizing your data center with Dell and AMD
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Dropbox Q2 2025 Financial Results & Investor Presentation
Machine learning based COVID-19 study performance prediction
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Encapsulation_ Review paper, used for researhc scholars
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Big Data Technologies - Introduction.pptx
Teaching material agriculture food technology
KodekX | Application Modernization Development
Review of recent advances in non-invasive hemoglobin estimation
Digital-Transformation-Roadmap-for-Companies.pptx
NewMind AI Weekly Chronicles - August'25 Week I
Encapsulation theory and applications.pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
MYSQL Presentation for SQL database connectivity

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

  • #4: Not satisfied – is the better word
  • #8: We will now do programming on linux using .NET Core, ASP.NET Core, EF Core and SQL for linux?
  • #9: 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
  • #10: 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.
  • #11: 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?”
  • #12: 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
  • #13: 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
  • #14: 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
  • #19: Single script build: Must have for OSS Must have for inhouse too – days on setting up the environment for new developers?
  • #20: Instead of “Consolidate packages” button in VS.
  • #21: You could actually google for ready configurations (e.g. for hosting wordpress), not “how-to” articles with screenshots of the old IIS version
  • #22: You could actually google for ready configurations (e.g. for hosting wordpress), not “how-to” articles with screenshots of the old IIS version
  • #25: Did you have a day when you spent entire day working hard but at the end of the day felt that you accomplished nothing?
  • #26: Sounds like using punchcards in the 70s