Functional spec begun: please review

I suppose it was ever thus – yes.

The big difference seems to me the ethos – i.e., “This site is all about getting answers . It’s not a discussion forum. There’s no chit-chat.” – and the moderation (whether and how posts are moderated), and the community (what the questions and answers are).

Well done then, I guess.

I think a “system” is specified by its I/O – what input it accepts and what output it produces – and in the case of a web app that specification is more-or-less defined by its UI (plus some “non-functional specifications”).

As a coder I’d hope to work off one or more UI design specifications – those would be my input, those would be my marching orders (plus whatever internal or external APIs or other developers I must interface with).

And as a sole developer, or a project manager for a non-technical boss, I’d either agree on a simple UI – like a wireframe or sketch plus some vanilla styling like Bootstrap – and/or have a UI designer to customize the pixels.

That’s the “UI design”. From that a developer can infer what all the data are.

Something like this, even, is a spec of a sort that a developer could run with (i.e. implement) – I don’t know whether that spec is “accepted”, though – the only answers there are people complaining about the choice of font and colour (which are trivial to change since they’re controlled by CSS).

And I guess someone might want to specify several designs and say the software must support any-and-all of them – to whatever extent the software is designed to support being “customised”.

The “technical” aspect of design – the implementation architecture – is all just about invisible to end-users, therefore nothing that a non-technical boss might have an opinion about or know. Developers might often select a technology stack based on whatever they know already, or based on whatever new shiny they want a chance to experiment with – and people might get into religious issues – like, “Which is important: ‘ACID’ or ‘web-scale’?” – which might be tedious to resolve, or resolved wrongly, unless you can Lock 'em Up Together. Apparently there is an architecture selected now – ASP.NET Core – I don’t know why though, I haven’t seen the definition or discussion and don’t know where to look for that.

Ha.

My instinct is principally to “finish” (define, implement, and deliver) a coding project – something of a killer instinct – I’m not so sure about “participate”.

How should one get in touch with either of those teams, or a project manager?

Are there (or will there be eventually) any “blessed” specifications somewhere for a coder like me to read and from which to dequeue some task to be completed?

Is it a matter of posting “Hi can I help with something?” on ‘Discord’ – then waiting, for somebody who’s willing to chat?

And hopefully your chef or chefs have it all in hand already, yes?

2 Likes

Mostly yes. You can also ping an @Admin and ask for a Contributor role. They grant you write-access to some dev-internal channels.

There isn’t one yet, at least according to my knowledge. I’m sure there will be one, once we start developing.

As I said, ping any @Admin or the @Team Lead or the @Tech Lead.

(pings are always meant to be in Discord)

1 Like

I’m thinking that a rapid iteration cycle, combined with requiring early feedback and requesting clarification often, will do the trick fine and allow us to launch an MVP much earlier than if we were to wait until a proper, detailed functional/technical spec was made. This of course would not be the case (most likely) if our project was properly funded and had a full-time professional requirement analysis team working along a professional full-time documentation team under a project manager’s supervision. But given our constraints, that’s just not happening so we go with the next best strategy.

1 Like

If by “iterate” you mean, “write code before you write a spec (e.g. a UI spec)” I guess I’d be inclined to do that if:

  • If the client is too non-technical to understand (read, edit, and approve) a paper specification – e.g. screen mockups with descriptive text (or e.g. pencil sketches and an audio conversation)
  • Or if the client wants their end-users to test (i.e. run) prototypes

Otherwise I’d want a spec before coding – so I’d write one with the client, and/or they might be give me some design and I’d ask questions about it.

The UI design might be sufficient for a web-app. It is “design”, and more detailed than (perhaps the next stage after) the “functional spec” – IMO it’s necessary and sufficient:

  • “Necessary” because you can’t code a UI without one, implicitly or explicitly
  • “Sufficient” because what defines a system is its I/O and the UI is the only interface visible to a user and/or a client – given a UI a developer can infer the rest of the implementation (e.g. data and behaviour, data-processing).
  • I think that UI design “desirable” too – something a client can talk about and understand and approve (i.e. want).

Apart from the UI design, if I’m the one developer of a new project, I might only want:

  • Team design – who else do I talk with?
  • Non-functional specifications – e.g. performance?
  • What other systems is this required to interop with (hosts, browsers, 3rd-party data sources and network services, email)?
  • Any IP issues – e.g. open-source, licensing?

That (“UI design first”) is assuming I’m doing it – and don’t want to waste my time developing something the client doesn’t want.

Doing the UI design is a bit of a test, too, or milestone. Because you might like to do “risk-first” development, i.e. schedule the riskiest things first, i.e plan development so as always to eliminate whatever the current biggest risk to the project is. And IMO “cannot find a client” and/or “cannot agree on a design with the client” are the biggest risk – the only risks which are outside the developer’s control – because implementing the design is well understood by developers, and maybe the only remaining implementation risks (after the external interfaces like UI are defined) are like, quality, budget, maintainability.

I didn’t mention “development team, development process, and software architecture design” above – though they might be necessary, that’s like an internal implementation detail which needn’t wait on a client’s approval.

I think I’d want a UI design though, maybe you have one but I haven’t seen it. If you’re in any hurry hurry then it could be a phased design, e.g.:

  • We definitely want this (specific design for essential features) so implement this design first
  • We haven’t decided on a further design for these other features yet, but we probably will later and they’ll be add-ons to the initial design, so you can ignore them for now and concentrate on the initial design first

Hopefully anyone involved in nailing down a UI design is savvy to what can be done with CSS – to foresee whether any given uncertainty in the UI design spec would require changing bones or skin – to tell whether or not it’s an uncertainty which it’s better to resolve now. There is, similarly, understanding whether the design for some new/advanced/uncertain feature will merely require an addition to an existing base design, or some more fundamental change. For example, “add the ability to vote on existing posts” might be merely an additional function, conversely “support real-time collaboration on a document” might be an example of some more fundamental change that would require rework of the software design.

21 posts were split to a new topic: How should (subject-)experts be recognized?