Hacker News new | ask | show | jobs
by boltefnovor 2050 days ago
Slightly off topic but collaborative programming seems to be a big unsolved and ignored problem in programming.

A recent HN discussion on microservices had people saying (paraphrasing) “it’s the only way we can collaboratively build software”.

Programming languages currently seem to be built for programming as a solitary activity. Seems to me that programming languages could be designed with the aim of solving the large scale collaboration problem.

4 comments

I'm really not found of object oriented programming, but don't you think the basic idea is the same? A class is a kind of "microservice" and can be seen as exactly what you describe.

What do microservices bring to collaborative programming that OOP do not?

Yeah, microservices should be about addressing horizonal scaling and runtime resource constraint issues, not about collaborative programming issues. We have things like modules, packages and coding standards for the latter.
What's a possible way to design a language for collaboration besides encouraging ever more fine-grained modularization and code reuse?

I can see collaborative debugging and sharing of environments, especially with web services, as possible avenues. Observability as well.

I'm having a harder time coming up with specific language features though.

> What's a possible way to design a language for collaboration besides encouraging ever more fine-grained modularization and code reuse?

Contract, contracts and contracts!

Collaborative development depends on people not freely overstepping outside of their bounds and clear communication of those.

OOP creates some actually strong kinds of contracts by abstract interfaces and information hiding. Flexible typed languages do the same with generics and specific types. Any language feature that creates more contracts will help collaboration.

Maybe I misunderstand you (and I definitely misunderstand people who advocate micro-services like everything and the kitchen sink), but aren't we collaborating on enormous projects for many years already? Linux, Windows, all large open source projects (without them being micro-services) etc. But again, maybe I misunderstand what you mean.
> Slightly off topic but collaborative programming seems to be a big unsolved and ignored problem in programming.

No, it isn’t.

C, C++, Unix, and even Windows, have long sinced solved what you describe as being ignored. See also CPAN[0].

0 - https://www.cpan.org/

Not sure why you're being down voted here. I see why the CPAN reference is relevant but maybe it in particular is viewed as an issue because of Perl's TMTOWTDI. I take your comment to be that code modularization and sharing was a problem solved long ago and that most collaborative programming issues are more social than technical.