antipatterns   1408

« earlier    

Software testing anti-patterns
Having unit tests without integration tests
Having integration tests without unit tests
Having the wrong kind of tests
Testing the wrong functionality
Testing internal implementation
Paying excessive attention to test coverage
Having flaky or slow tests
Running tests manually
Treating test code as a second class citizen
Not converting production bugs to tests
Treating TDD as a religion
Writing tests without reading documentation first
Giving testing a bad reputation out of ignorance
antipatterns  Testing  tdd 
6 weeks ago by iyoti
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 
february 2018 by earth2marsh

« earlier    

related tags

!great  2017  actors  advice  agile  akka  akkastreams  alternative  android  androidstudio  ansible  anti-patterns  anti  api  apis  architecture  art  article  awslambda  bad.practices  bad  balancedteam  bash  best-practices  bestpractice  bestpractices  book  bookmarks_bar  branching  c++  c  callback  cassandra  ccc  cli  cloudant  code  coders  codesmells  coding  comment  comparison  container  containers  couchdb  criticisms  css  culture  database  databases  debugger  delete_flag  design-patterns  design  designpatterns  dev  develoment  developer  development  deviq  devops  devoxx  docker  eav  ebook  editor  editors  email  empowerment  engineering  enterprise  entityservice  erlang  error  error_messages  espresso  estimation  examples  fail  fridayfrontend  fsm  funny  geek  git  go  golang  google  guide  hackernewscomments  hacking  important  infosec  innovation  innovativethinking  instrumentationtest  interface  internet.of.shit  iot  javascript  js  kubernetes  latency  lean  learning  legacy  lint  linter  linux  maintainer  management  meeting  metadata  metrics  microservice  microservices  naming  narcissism  narcissist  node  nodejs  nonsense  noreply  object  oss  pattern  patterns  people  php  pitfalls  poland  postgres  presentation  presenting  price:free  principles  problem  productivity  programmers  programming  psychology  puppet  python  quality  react  recommendations  recorder  reddit  redux  refactoring  reference  relationships  rest  ruby  scala  schema  scripting  scrum  security  semantic  service-objects  service  shell  shorthand  soft  software  software_architecture  softwareengineering  sql  state  status  store  string  styleguide  syntax  sysadmin  t_wada  talk  talks  task  tdc  tdd  team  technology  test  testing  tips  tools  traps  trouble  troubleshooting  typography  ui  uml  unittest  unittesting  ux  video  vim  visualization  vui  whatnottodo  workflows  worst.practices  writing  youtube   

Copy this bookmark: