antipatterns   1395

« earlier    

mca blog [Model Actions, Not Data]
Excellent post on dangers of CRUD
"And chief among these frustrations is the repeated attempts to design APIs based on data models. Your database is not your API! Stop it. Just stop.

Unless you are offering API consumers a SaaS (storage-as-a-service) you SHOULD NOT be using your data model as any guide for your API design. Not. At. All.

When you cast about for a handle on how to go about designing your API, the answer is straightforward and simple: Model your Actions.

It can't be stated any more directly. Model your Actions.

Don't get caught up in your current data model. Don't fall down the rabbit hole of your existing internal object model. Just. don't.

Need more? Here's a handy checklist:

Start with a list of actions to be completed. (Jobs To Be Done) -- if that sparks your brain.
Determine all the data elements that must be passed when performing that action.
Identify all the data elements to be returned when the action is performed. Be sure to account for partial or total failure of the attempted action.
Rinse and repeat.

Once you feel good about your list of actions and data points (input and output), collect related actions together. Each collection identifies a context. A boundary for a component. That might sound familiar to some folks.

Now you have an API to implement and deploy. When implementing this API, you can sort out any object models or data models you want to use (pre-existing or not). But that's all hum-drum implementation detail. Internal stuff no one consuming the API should know or care about.

All they care about are the possible actions to perform. And the data points to be supplied and returned."
apis  design  databases  antipatterns 
24 days ago by earth2marsh - Antipatterns und Missverständnisse in der Softwareentwicklung
Anhand von Anekdoten aus 20 Jahren Softwareentwicklung versucht der Vortrag herauszuarbeiten, was in der Praxis zu scheiternden Projekten...
antipatterns  ccc  presentation 
9 weeks ago by dizzzz
Akka Streams pitfalls to avoid — part 1 – SoftwareMill Tech Blog
The Akka Streams library is proven to be very useful in implementing systems focused on data processing. However, if you use it without prior knowledge or insufficient care you may encounter some really weird behavior.
At SoftwareMill we’ve been using Akka Streams in many projects. During this time we’ve come across multiple quirks related to this library. After you gain more experience, most of them make sense, but are not intuitive at first glance. Especially if you are trying to solve the problem with a procedural mindset.
This post is a collection of common Akka Streams pitfalls with explanations how to avoid them. We found ourselves caught in these traps many times while learning the library. We hope you can learn from our mistakes.
akka  akkastreams  pitfalls  recommendations  antipatterns 
november 2017 by IainHull

« earlier    

related tags

!great  2017  abuse  actors  advice  agile  akka  akkastreams  alternative  android  androidstudio  ansible  anti-patterns  anti  api  apis  applicationinfrastructure  architecture  art  article  bad  balancedteam  bdd  best-practices  bestpractice  bestpractices  book  bookmarks_bar  branching  c++  c  callback  cassandra  ccc  checked-exceptions  checkthis  cli  cloudant  cloudnative  code  coders  codesmells  coding  commands  comment  communities  comparison  container  couchdb  criticisms  css  cucumber  culture  database  databases  debugger  delete_flag  design-patterns  design  dev  develoment  developer  development  deviq  devops  devoxx  docker  eav  ebook  editor  editors  email  empowerment  engineering  enterprise  entityservice  erlang  error  espresso  estimation  examples  exceptions  fonts  fridayfrontend  fsm  git  github  go  golang  google  guide  hackernewscomments  hackerspaces  hacking  harassment  ifttt  important  infosec  innovation  innovativethinking  instrumentationtest  integration-testing  interface  internet.of.shit  iot  java  javascript  js  kubernetes  latency  lean  learning  legacy  lint  linter  linux  maintainer  management  math  medium  meeting  metadata  metrics  microservice  microservices  modeling  narcissism  narcissist  node  nodejs  nonsense  noreply  object  oss  pattern  patterns  people  performance  php  pitfalls  poland  postgres  presentation  price:free  principles  problem  productivity  programmers  programming  psychology  puppet  python  quality  react  reasoning  recommendations  recorder  reddit  redux  refactoring  reference  relationships  rest  ruby  scrum  security  semantic  service-objects  service  shorthand  sociology  sociopaths  soft  software  software_architecture  softwareengineering  sql  state  status  store  string  styleguide  syntax  t_wada  talk  talks  task  tdc  team  technology  testing  tips  tools  toptoptop  tor  toxic  traps  trouble  troubleshooting  twitter-pic  twitter  typography  ui  uml  unittest  unittesting  usability  ux  video  vim  web  webfonts  wiki  workflows  worst.practices  youtube   

Copy this bookmark: