quarta-feira, 12 de novembro de 2014

sábado, 6 de setembro de 2014

Do not estimate software development projects

This paper (What We Do and Don't Know about Software Development Effort Estimation) makes it clear: there is no reliable estimate methodology. Expert advice, experience are the best evaluators.

Slowly the idea of software as a craft, as an art, is growing. Not a production activity.

Computer Science Majors, Your Degree May Not Be As Valuable As You Think

Well, what this article show is that you can have programmers who will work as bricklayers. That's ok and enough to produce the bad spaghetti monolithic code of most commercial software. What about real developers. They should have, yes, a computer science degree. To be able to abstract concepts of the software they design. The keywork here is design, not build.

sábado, 9 de agosto de 2014

You ain't gonna need it

Finally someone said it clearly: we have to Get Back to Coding.

Note: "Don't be pressured by the perceived popularity of Git to adopt Git. (Obviously, if you want to explore Git for your own edification, I'm not recommending against that. But understand that that choice will add complexity to your other work.)"

Just let me code

Discouraged Developer  

If you really need it, here is How to get started with GitHub

Devops? Docker?

Devops: new methodology? Hype or finally some thing which integrates development and operation? Looks like developers should think operation. Much like engineers design the product and the plant to fabricate the product.

And Docker? Looks like containers are better than virtual machines for development:

http://www.infoworld.com/t/application-development/docker-the-first-true-devops-tool-247170?source=IFWNLE_nlt_stradev_2014-07-29

http://www.zdnet.com/what-is-docker-and-why-is-it-so-darn-popular-7000032269/

http://opensource.com/business/14/7/docker-through-hype?sc_cid=70160000000dgMrAAI&elq=a1b855f9c688441790c95f6bb6c7251f&elqCampaignId=31321


http://www.infoworld.com/d/application-development/how-get-started-docker-245278?source=IFWNLE_nlt_virtualization_2014-08-07

sexta-feira, 4 de julho de 2014

domingo, 11 de maio de 2014

Mathematics and Programming

Three examples, with monads  and other constructs, showing that mathematical concepts, and functional programming, are the way to clear and error-free programs. Difficult perhaps. But worthy.

The Curse of the Excluded Middle

 Monads and Programming

Functors, Applicatives, And Monads In Pictures

sábado, 15 de fevereiro de 2014

No Methodologies

Why don’t software development methodologies work?

An experienced programmer - a "typical" programmer -, one who have used all methodologies and "techniques du jour" shows clearly that methodology is not the key to producing good software. 

The text strongly suggests that the key to good software is... the programmer. As a craftsman. Which puts the last nail in the coffin of so-called Software Engineering. 

Simple: Software is not engineering. It is related to Art, Craft and Mathematics.See Knuth The Art of Computer Programming.

" I’ve lived through waterfall/BDUF (big design up front), structured programming, top-down, bottom-up, modular design, components, agile, Scrum, extreme, TDD, OOP, rapid prototyping, RAD, and probably others I’ve forgotten about. I’m not convinced any of these things work."

"My own experience, validated by Cockburn’s thesis and Frederick Brooks in No Silver Bullet, is that software development projects succeed when the key people on the team share a common vision, what Brooks calls “conceptual integrity.” This doesn’t arise from any particular methodology, and can happen in the absence of anything resembling a process. I know the feeling working on a team where everyone clicks and things just get done. What I don’t understand is why I had that feeling a lot more in the bad old days of BDUF and business analysts than I do now."

"I think programmers should pay much more attention to listening to and working with their peers than to rituals and tools, and that we should be skeptical of too much process or methodologies that promise to magically make everyone more productive"

sábado, 8 de fevereiro de 2014

Software pronto não é software

Artigo Geraldo Coen 2011

E tese proposta em 2010: O Fim do Software, e como Recomeçar: "O objetivo deste trabalho é mostrar que se pode usar o conceito de máquina universal como modelo para o desenvolvimento de software." 

Aplicação prática deste trabalho é um ambiente de desenvolvimento para software, comercial e outros, que é uma planilha cujas células são expressões LISP.

Assim, o ciclo clássico REPL é aplicado a uma planilha, o que é familiar aos usuários de planilha. A planilha se torna, usando expressões LISP, uma máquina universal. Além disso, execução em paralelo fica muito fácil, uma vez que os relacionamentos entre células indicarão as restrições ao processamento em paralelo. Finalmente, no caso particular de uma planilha com uma só célular leva ao sistema LISP (ou qualquer outra linguagem, ou EMACS, etc) atual.

One more stone on the "Software Crisis"

Standish report debunked, again.