Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
MononcQc
May 29, 2007

Related: The Impact of Business Requirements on the Success of Technology Projects by IAG.

quote:

The Business Analysis Benchmark report presents the findings from surveys of over 100 companies and definitive statistics on the importance and impact of business requirements on enterprise success with technology projects. The survey focused on larger companies and looked at development projects in excess of $250,000 where significant new functionality was delivered to the organization. The average project size was $3 million.

[...]

The report finds 2 basic scenarios for companies:
  1. Scenario 1 (68% of companies): project success is ‘Improbable’: Projects might succeed – but not by
    design. Based on the competencies present, these companies are statistically unlikely to have a successful
    project. 68% of companies fit this scenario.
  2. Scenario 2 (32% of companies): project success is ‘Probable’: Companies that can expect to have successful projects, by design, due to the investments that they have made in Business requirements process. 32% of companies fit this scenario

[...]

The following are a few key findings in the study:
  1. Companies with poor business analysis capability will have three times as many project failures as successes.
  2. 68% of companies are more likely to have a marginal project or outright failure than a success due to the way they approach business analysis. In fact, 50% of this group’s projects were “runaways” which had any 2 of:
    • Taking over 180% of target time to deliver
    • Consuming in excess of 160% of estimated budget
    • Delivering under 70% of the target required functionality
  3. Companies pay a premium of as much as 60% on time and budget when they use poor requirements practices on their projects.
  4. Over 40% of the IT development budget for software, staff and external professional services will be consumed by poor requirements at the average company using average analysts versus the optimal organization.
  5. The vast majority of projects surveyed did not utilize sufficient business analysis skill to consistently bring projects in on time and budget. The level of competency required is higher than that employed within projects for 70% of the companies surveyed.


Also other fun bits:

quote:

It is also true that people who see business requirements as simply a ‘deliverable’ or written document of some kind will continue to fail. The findings clearly indicate that only companies which are committed to achieving excellence in business requirements through improvement involving people, process, and documentation/information quality standards will be consistently, predictably successful.

[...]

The data from this study demonstrates clearly that a project manager who believes the quality of requirements received is below average would be better served to REDO requirements than to proceed on a large project despite the uproar this decision would create with business stakeholders

[...]

In absolute terms, the quality of requirements will dictate the time and cost of the solution.

[...]

The focus of companies must shift to the quality of Requirements Discovery as a process and away from “Business Requirements” as a thing that either happened or didn’t at the beginning of a project if they hope to consistently deliver successful projects.

[...]



[...]

The risk key areas (in order of importance) from the research are:
  1. Uncovering interdependencies
  2. Setting unambiguous goals
  3. Documenting information required to support the process
Improving the people, tools, and processes used in these areas will not guarantee success, but it does mitigate against failure

[...]



[...]

Effective scoping when combined with strong business requirements discovery skills yielded a successful project in 80% of circumstances


tl;dr: if IAG's stuff is to be trusted, your project is likely doomed before it even starts. Even when you've got 'excellent' requirements and analysis, ~30% of your projects will still fail. This is in big businesses, but projects that impact fewer people aren't immune to this at all.

Adbot
ADBOT LOVES YOU

Spime Wrangler
Feb 23, 2003

Because we can.

But isn't that just saying a good requirements process is (largely) necessary but not sufficient for success?

I mean, there's always factors other than requirements at play in the success of any design project. Is that surprising? Or is it just that the likelihood of failure is so large?

Cold on a Cob
Feb 6, 2006

i've seen so much, i'm going blind
and i'm brain dead virtually

College Slice
it's almost as if there's no silver bullet in software development...?

no, that can't be right there's gotta be just one weird tip that will pave the way to perfect software development in all possible environments and scenarios

Scaevolus
Apr 16, 2007

Are these for companies that aren't primarily software?

If you do waterfall development where the requirements are specified by non-technical managers 10 steps above the devs, I'd expect horrific failure rates.

Spime Wrangler
Feb 23, 2003

Because we can.

one weird tip discovered by a manager for perfect software development every time!

dont write software

MononcQc
May 29, 2007

I'm not exactly sure what companies this is applying to, the document you can read is the same one I read.

It's just hilariously bad that 70% of projects appear doomed from the start because people can't figure out requirements.

JewKiller 3000
Nov 28, 2006

by Lowtax
https://github.com/mozilla/rust/issues/13871

multigl
Nov 22, 2005

"Who's cool and has two thumbs? This guy!"

suffix posted:

yeah you really should have 100% test coverage on large p-lang projects. that's it, that's the whole trick.

luckily even the worst p-lang mock utils i've used are tons better than anything i've found for java. it's not like writing tests in p-langs is hard.


jetbrains pycharm is actually pretty good

jetbrains stuff is insanely good. the analysis tools and type inferencing in pycharm is awesome.

Spime Wrangler
Feb 23, 2003

Because we can.

is intellij + plugins an effective replacement for their language specific ides?

Scaevolus
Apr 16, 2007

Spime Wrangler posted:

is intellij + plugins an effective replacement for their language specific ides?

it's equivalent. pycharm is cheaper than idea ultimate since it's just python instead of a bunch of languages.

FamDav
Mar 29, 2008
intellij is p sw8 and i cant wait for their c++ ide

Zombywuf
Mar 29, 2008

MononcQc posted:

It's just hilariously bad that 70% of projects appear doomed from the start because people can't figure out requirements.

Very few people are ever taught how to gather requirements, and almost no-one knows what it is they know that lets them do their job.

Fun example, $SOME_COMPANY* has decided they need a better way to share documents between departments, because one department keeps stripping metadata off the documents other departments put on it. The answer they've come up with is a new folder structure, which is to say one big folder where the files are names <dept 1 id>-<dept 2 id>-<dept 3 id>-...-<dept n id>.doc. No-one has bothered to ask why every department has a different set of ids and no-one has asked what it is people actually do with the documents so they came up with this.

They reckon it'll take 6 months to 2 years to implement.

:smith:



* true story

fart simpson
Jul 2, 2005

DEATH TO AMERICA
:xickos:


nice

fart simpson
Jul 2, 2005

DEATH TO AMERICA
:xickos:

Zombywuf posted:

Very few people are ever taught how to gather requirements, and almost no-one knows what it is they know that lets them do their job.

Fun example, $SOME_COMPANY* has decided they need a better way to share documents between departments, because one department keeps stripping metadata off the documents other departments put on it. The answer they've come up with is a new folder structure, which is to say one big folder where the files are names <dept 1 id>-<dept 2 id>-<dept 3 id>-...-<dept n id>.doc. No-one has bothered to ask why every department has a different set of ids and no-one has asked what it is people actually do with the documents so they came up with this.

They reckon it'll take 6 months to 2 years to implement.

:smith:



* true story

my company had 3 different overlapping document control systems and eventually everyone stopped using all of them and now everyone just emails files around and each department has come up with their own crappy ad hoc system. my old department used a big folder on a shared drive with 3 excel files you had to update by hand whenever you input a new document into the "system" so people would know what files were there and which subdirectory to look in. my new department uses google drive

coffeetable
Feb 5, 2006

TELL ME AGAIN HOW GREAT BRITAIN WOULD BE IF IT WAS RULED BY THE MERCILESS JACKBOOT OF PRINCE CHARLES

YES I DO TALK TO PLANTS ACTUALLY

Zombywuf
Mar 29, 2008

MeramJert posted:

my company had 3 different overlapping document control systems and eventually everyone stopped using all of them and now everyone just emails files around and each department has come up with their own crappy ad hoc system. my old department used a big folder on a shared drive with 3 excel files you had to update by hand whenever you input a new document into the "system" so people would know what files were there and which subdirectory to look in. my new department uses google drive

Someone somewhere is probably trying to design a new spreadsheet to record all of that in.

prefect
Sep 11, 2001

No one, Woodhouse.
No one.




Dead Man’s Band

MeramJert posted:

whats pine? or is this a bad joke

sorry i didn't get back to this thread sooner -- many moons ago, elm was an e-mail client. and pine came afterwards -- it stood for "pine is not elm"

Squinty Applebottom
Jan 1, 2013

MeramJert posted:

my company had 3 different overlapping document control systems and eventually everyone stopped using all of them and now everyone just emails files around and each department has come up with their own crappy ad hoc system. my old department used a big folder on a shared drive with 3 excel files you had to update by hand whenever you input a new document into the "system" so people would know what files were there and which subdirectory to look in. my new department uses google drive

lol @ the department wide emails that ask if anyone has the excel doc open please close it im trying to update it

gonadic io
Feb 16, 2011

>>=
https://www.fpcomplete.com/user/icelandj/Pattern%20synonyms

Being forced to pattern match on implementation details was always a bit annoying and is one of the use cases for prisms. Now you don't have to!

MononcQc
May 29, 2007

AlsoD posted:

https://www.fpcomplete.com/user/icelandj/Pattern%20synonyms

Being forced to pattern match on implementation details was always a bit annoying and is one of the use cases for prisms. Now you don't have to!

This is fairly cool, but I'm not sure how nicer it would be to just provide that through a functional interface -- i.e. have a holiday function that accepts dates and returns the same tagged types instead.

Is there any practical limitation or consideration that makes it nicer to do a pattern declaration rather than a Date -> Month day conversion?

Shaggar
Apr 26, 2006

AlsoD posted:

https://www.fpcomplete.com/user/icelandj/Pattern%20synonyms

Being forced to pattern match on implementation details was always a bit annoying and is one of the use cases for prisms. Now you don't have to!

congrats on inventing enums?

fart simpson
Jul 2, 2005

DEATH TO AMERICA
:xickos:

Squinty Applebottom posted:

lol @ the department wide emails that ask if anyone has the excel doc open please close it im trying to update it

im pretty sure the original reason we had more than 1 excel file was because someone did this and then went on vacation. lol

fart simpson
Jul 2, 2005

DEATH TO AMERICA
:xickos:

prefect posted:

sorry i didn't get back to this thread sooner -- many moons ago, elm was an e-mail client. and pine came afterwards -- it stood for "pine is not elm"

oh. i've heard of but never used elm the email client. i never heard of pine though

Nomnom Cookie
Aug 30, 2009



AlsoD posted:

https://www.fpcomplete.com/user/icelandj/Pattern%20synonyms

Being forced to pattern match on implementation details was always a bit annoying and is one of the use cases for prisms. Now you don't have to!

our syntax isn't expressive enough. i know, lets add syntax! now you are programming scala

MononcQc
May 29, 2007

The feature I'd really love languages to have is higher-order pattern matching, where you can submit patterns and values extracted to get what you want. It would allow to do poo poo like iterate over pattern while applying transformations from a user-sent pattern rather than having to use some lambda.

The closest thing I've seen is doing it through macros in Racket, but it requires lots of work:

code:
> (define employees '((janitor bob 12000) (boss lowtax 30000) (boss peter 200000)
                      (temp jim 0) (coder janet 60000)))

;; find the boss' bonuses at 5%

> (filter-extract employees [(list 'boss _ salary) salary])
'(30000 200000)
> (filter-extract employees [(list 'boss _ salary) (* salary 0.05)])
'(1500.0 10000.0)

;; other manipulations

> (filter-extract employees [(list role name _) (list name role)])
'((bob janitor) (lowtax boss) (peter boss) (jim temp) (janet coder))
> > (filter-extract employees ['bad-pattern 'bad-return])
'()
The code to support this is

code:
#lang racket
(require racket/match)

(define-syntax-rule (matcher val pattern)
 (match val
  pattern
  [_ `nil]))

(define-syntax-rule (filter-extract start-lst pattern)
  (begin (define (f-ext lst)
    (match lst
      ['() '()]
      [(cons hd tl) (let [(v (matcher hd pattern))]
                      (if (eq? 'nil v)
                          (f-ext tl)
                          (cons v (f-ext tl))))]))
  (f-ext start-lst)))
And it sucks to have to define it for all kinds of structures. I'd really like to see a language allow it more naturally. In the end passing a function is simple enough, I guess, but the idea to allow patterns as data with custom bindings and whatnot is pretty cool and generally more terse than using higher order anonymous functions.

gonadic io
Feb 16, 2011

>>=

this evening I'll type up some prism examples, i think they're quite similar to what you're talking about - patterns being first class values means that you can do all the normal mapping, filtering, folding etc with them.

MononcQc
May 29, 2007

Erlang has a somewhat similar mechanism to what I'd like, except it's the ugliest poo poo in the world.

code:
[{{'$1','$2'},
  [{'<','$1','$2'}, {'==', {'rem','$1',2}, 0}],
  ['$1']},
{{'$1','$2'},
 [{'==','$2',0}],
 ['$1']}]
This is semantically equivalent to

code:
fun({X,Y}) when X < Y, X rem 2 == 0; Y == 0 -> X end
Which means 'return X if a tuple containing X and Y is passed, and that X is both even and smaller than Y, or Y is equal to 0'.

In the end, the thing is so god drat cumbersome and badly supported that nobody uses it except when wrapping functionality that already supports it.

Richard O'Keefe has written a spec of what he'd like to see and it would own so bad: http://www.erlang.org/eeps/eep-0029.html

havelock
Jan 20, 2004

IGNORE ME
Soiled Meat

MononcQc posted:

The feature I'd really love languages to have is higher-order pattern matching, where you can submit patterns and values extracted to get what you want. It would allow to do poo poo like iterate over pattern while applying transformations from a user-sent pattern rather than having to use some lambda.

The closest thing I've seen is doing it through macros in Racket, but it requires lots of work:


F# Active Patterns?
http://msdn.microsoft.com/en-us/library/dd233248.aspx

Edit: hrm not really, but maybe close

Malcolm XML
Aug 8, 2009

I always knew it would end like this.

MononcQc posted:

The feature I'd really love languages to have is higher-order pattern matching, where you can submit patterns and values extracted to get what you want. It would allow to do poo poo like iterate over pattern while applying transformations from a user-sent pattern rather than having to use some lambda.

The closest thing I've seen is doing it through macros in Racket, but it requires lots of work:

code:
> (define employees '((janitor bob 12000) (boss lowtax 30000) (boss peter 200000)
                      (temp jim 0) (coder janet 60000)))

;; find the boss' bonuses at 5%

> (filter-extract employees [(list 'boss _ salary) salary])
'(30000 200000)
> (filter-extract employees [(list 'boss _ salary) (* salary 0.05)])
'(1500.0 10000.0)

;; other manipulations

> (filter-extract employees [(list role name _) (list name role)])
'((bob janitor) (lowtax boss) (peter boss) (jim temp) (janet coder))
> > (filter-extract employees ['bad-pattern 'bad-return])
'()
The code to support this is

code:
#lang racket
(require racket/match)

(define-syntax-rule (matcher val pattern)
 (match val
  pattern
  [_ `nil]))

(define-syntax-rule (filter-extract start-lst pattern)
  (begin (define (f-ext lst)
    (match lst
      ['() '()]
      [(cons hd tl) (let [(v (matcher hd pattern))]
                      (if (eq? 'nil v)
                          (f-ext tl)
                          (cons v (f-ext tl))))]))
  (f-ext start-lst)))
And it sucks to have to define it for all kinds of structures. I'd really like to see a language allow it more naturally. In the end passing a function is simple enough, I guess, but the idea to allow patterns as data with custom bindings and whatnot is pretty cool and generally more terse than using higher order anonymous functions.

let me tell u about lens,

Cold on a Cob
Feb 6, 2006

i've seen so much, i'm going blind
and i'm brain dead virtually

College Slice

quote:

Personally I'd add a no_horrors cfg option or something to disable it in the rare cases where 2k is considered important, unless the potential for user confusion is considered to great to keep the behaviour at all.

lmao

ultramiraculous
Nov 12, 2003

"No..."
Grimey Drawer

seriously

extra lmao @ the people defending having 2k of nerd text added to every executable for no real reason

Blotto Skorzany
Nov 7, 2008

He's a PSoC, loose and runnin'
came the whisper from each lip
And he's here to do some business with
the bad ADC on his chip
bad ADC on his chiiiiip

Notorious b.s.d.
Jan 25, 2003

by Reene
i tried really hard not to commit forums necromancy but reading the backlog made me mad


Malcolm XML posted:

I wont claim Haskell is prevalent in industry but multiple groups in major banks use it. F# is heavily used in trading/hedge funds and C# is near ubiquitous.

hedge funds and small fry traders are the financial equivalent of startups. they use whatever technologies the first technical hire has a hardon for. personally, i've heard of c, c++, java, perl, and ruby*. but i'm sure you can find anything








* yes. ruby. the scripting language. i used to know a guy who literally wrote trading platforms in ruby. that was his job. he made a lot more money than i do

Malcolm XML
Aug 8, 2009

I always knew it would end like this.

Notorious b.s.d. posted:

i tried really hard not to commit forums necromancy but reading the backlog made me mad


hedge funds and small fry traders are the financial equivalent of startups. they use whatever technologies the first technical hire has a hardon for. personally, i've heard of c, c++, java, perl, and ruby*. but i'm sure you can find anything








* yes. ruby. the scripting language. i used to know a guy who literally wrote trading platforms in ruby. that was his job. he made a lot more money than i do

i rly meant banks like barclays and stanchart

Notorious b.s.d.
Jan 25, 2003

by Reene

MeruFM posted:

This sounds about right.
I cannot imaging GC being so bad that it needs to stop the entire machine for several seconds.
Are they passing around a global array/hash so big that the OS starts loading it to virtual memory?

multiple-second GC's are really really rare. even on a very large, very high-garbage JVM, the average gc is measured in tens of ms.

the problem is controlling the 99.9th percentile GC pause time. you may have an "average" pause of 100 ms, but if the 99.9th percentile pause is six seconds, every thousandth pause is going to cause downtime. there are 86,400 seconds in a day. you might gc once or twice a second in a service that generates a lot of young-generation garbage.

nobody likes going down for 100+ intermittent outages a day.

tef
May 30, 2004

-> some l-system crap ->

MononcQc posted:

The feature I'd really love languages to have is higher-order pattern matching, where you can submit patterns and values extracted to get what you want. It would allow to do poo poo like iterate over pattern while applying transformations from a user-sent pattern rather than having to use some lambda.

The closest thing I've seen is doing it through macros in Racket, but it requires lots of work:

code:
> (define employees '((janitor bob 12000) (boss lowtax 30000) (boss peter 200000)
                      (temp jim 0) (coder janet 60000)))

;; find the boss' bonuses at 5%

> (filter-extract employees [(list 'boss _ salary) salary])
'(30000 200000)
> (filter-extract employees [(list 'boss _ salary) (* salary 0.05)])
'(1500.0 10000.0)

;; other manipulations

> (filter-extract employees [(list role name _) (list name role)])
'((bob janitor) (lowtax boss) (peter boss) (jim temp) (janet coder))
> > (filter-extract employees ['bad-pattern 'bad-return])
'()
The code to support this is

code:
#lang racket
(require racket/match)

(define-syntax-rule (matcher val pattern)
 (match val
  pattern
  [_ `nil]))

(define-syntax-rule (filter-extract start-lst pattern)
  (begin (define (f-ext lst)
    (match lst
      ['() '()]
      [(cons hd tl) (let [(v (matcher hd pattern))]
                      (if (eq? 'nil v)
                          (f-ext tl)
                          (cons v (f-ext tl))))]))
  (f-ext start-lst)))
And it sucks to have to define it for all kinds of structures. I'd really like to see a language allow it more naturally. In the end passing a function is simple enough, I guess, but the idea to allow patterns as data with custom bindings and whatnot is pretty cool and generally more terse than using higher order anonymous functions.

prooolooooggggggggggggggg

Zombywuf
Mar 29, 2008

MononcQc posted:

And it sucks to have to define it for all kinds of structures. I'd really like to see a language allow it more naturally. In the end passing a function is simple enough, I guess, but the idea to allow patterns as data with custom bindings and whatnot is pretty cool and generally more terse than using higher order anonymous functions.

Sounds like you want real Prolog and findall/3.

Zombywuf
Mar 29, 2008

lol

MononcQc
May 29, 2007

Yeah I don't doubt Prolog does it super fine. Here's to wondering whether I can get Racklog to do it too then. :toot:

Adbot
ADBOT LOVES YOU

Deus Rex
Mar 5, 2005

another cool ownage thing static types give you: XSS protection enforced at the type level.

http://www.yesodweb.com/book/shakespearean-templates#shakespearean-templates_types

your lovely porntube webapp will not even compile if it has an XSS vulnerability (assuming you are using their templating system or a compatible one)

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply