David Whitney’s Post

View profile for David Whitney, graphic

Director of Architecture | Software Consultant | Microsoft MVP | Best-selling Author | Speaker

I think I'm coming to realise that one of my more unusual traits as a programmer - and one that has led me to preferring processes like TDD, is I'm obsessed with how code *looks and feels* before I can even make it work. My design process is more "how do I want to express this concept" than "how do I execute this task". Once I find the right form for a concept, I then work backwards and drive out tests that help me make it work. I think a lot of people do the opposite, and try make something work before finding its form. This is reflected in the phrase "working, readable, fast - in that order", but I think I've landed on "expressive, working, fast" ordering now. I'm not making a particular value judgement here - but I think finding the shape in everything is an aesthetic tactic you need if you're going to build software other programmers will consume. It's the design work.

Samantha Cohen

Principal software engineer

2mo

I feel like this is similar to how I work. Designing from the interface surface and typically following an aesthetic thread from simple to complex. Using the aesthetic to kind of... Litmus test the complexity if you know what I mean? If that's similar to what you meant, do you ever struggle with overly fixating on the aesthetic and losing sight a little of "KISS" and writing code juniors can work with?

🖖 Philip Laureano 🇦🇺

Speaker | Technical Leader | Independent Consultant | Principal Engineer | Coder for Life

2mo

I prefer a straight line Console app for the first spike, then throw it away and write tests on the second attempt that match the specs I discovered from the first spike. And then go TDD

Daniel Fernandes

Cloud Solutions Architect at Dennemeyer

1mo

You could very use the term ‘ergonomics’ when taking into consideration consumer and maintainer. Now with regards to software design, aside from a trivial problem, it’s something that does require a lot of experience. And when you combine software design when faced with uncertainty it requires even more to bring that evolutionary approach.

Like
Reply
Paul Hammond

Contract Web Developer

1mo

Same here. I start with, "what would a good solution to this problem look like?" and then work my way back from there. TDD is very compatible with that thinking.

Philip Stockwell

Consultant @ Version 1 | Solution Architecture | Cloud Solutions | Application Modernisation | Certified Azure Architect & Developer | Ex-Microsoft

2mo

I can totally relate to “obsessed with how code *looks and feels* before I can even make it work”. I find that the aesthetic is so important whether it is code, diagram or other artefact in communicating to others, if the form is right others can grok so much quicker.

Ovais Oozeer

Solution Architect / Tech lead

2mo

For me, this is rooted in the philosophy that you get good output from happy people, and people who have to spend a lot of time reading code are "happiest" when they can grok things.

See more comments

To view or add a comment, sign in

Explore topics