ideanl

ideanl

Any good books or resources for project maintainability?

I have come from an OOP background with usage of recognized design patterns for large projects that aids in maintainability. However, I am now interested in the blackbox nature of functional programming and specifically Elixir programming. I struggle to find resources teaching patterns for maintainability and readability of a large codebase. The best I’ve seen is references to libraries such as credo, excoveralls, dialyxir, etc. Does anybody know of some book or resource that does a good job explaining how to organize and keep maintainable large functional programming (specifically elixir) projects?

Most Liked

pragdave

pragdave

Author of Programming Elixir

This is why the mantra is "–no-ecto’. There’s no excuse for putting any model-related stuff in a Phoenix application, unless you miss Rails…

peerreynders

peerreynders

In terms of “large projects” I don’t think there is anything equivalent to Designing for Scalability with Erlang/OTP: Implement Robust, Fault-Tolerant Systems:

  • Chapters 3-4 deals with the process level (for example extracting generic behaviours)
  • Chapters 5-7 deals with OTP level details
  • Chapter 8 deals with supervision
  • Chapter 9 deals with (OTP) applications
  • Chapter 10 deals with special processes and custom behaviours
  • Chapters 11-12 deals with releases
  • Chapters 13-16 touches on various topics pertaining to distributed and unattended system architectures.

Now granted this is all presented in the context of the Erlang ecosystem but most lessons apply to systems built with Elixir as well.

It still boils down to:

  • choosing the right boundaries, be it at the function, module, process, or application granularity
  • managing the number, kind, and direction of any dependencies
  • designing effective collaborations, coordinations, and protocols.

Thinking like an Erlanger

… and when comes to these “principles” and “patterns” it is always important to consider:

The SOLID Design Principles Deconstructed

“Patterns” primarily establish a nomenclature for some generalized solution approaches as they may apply to certain circumstances with the intent of making communication between developers more efficient, effective and clear. Secondarily they can also serve as case studies for the design guidelines they are based on.

The term originates from pattern language - not some kind of software equivalent of sewing patterns.

Exadra37

Exadra37

I also come from an OOP background where I regularly use the Resource Action pattern to write Solid and Clean Code but the MVC pattern used for example in Phoenix completely violates it.

The best software architecture I found until now is present in the book Programming Elixir 1.6 and the Elixir for Programmers video course and both have as author @pragdave .

I strongly recommend you to take a look to both and see how the approach results in a more clean and decoupled architecture :slight_smile:

blatyo

blatyo

Conduit Core Team

A lot of the topics in OO programming apply just as well in FP. With that in mind, I’d recommend domain driven design by Eric Evans and working effectively with legacy code by michael feathers.

AstonJ

AstonJ

I second PragDave’s book and course too - his course is one of the best courses I have ever done - here’s my review :003:

Where Next?

Popular in Chat/Questions Top

William
I would like to know that is there any online source for learning Phoenix Framework for building E-Commerce Store? Any advantage on build...
New
xgilarb
Hi there, I’m interested in using Elixir because of the rumors about the reliability of the Phoenix framework, and surprisingly, Elixir’...
New
Lincxx
Hello, I’m sure this has been asked a bunch, but where to start. I do prefer vodeos over books, but recently I have found books to be mor...
New
lc0815
hello from a real frustrated newbe… I’m reading this article Full-Stack React With Phoenix (Chapter 3 | Introduction to Phoenix) by mich...
New
gouvermxt
I just finished the “Learn Functional Programming with Elixir (Pragprog)” book. I have 5+ years of experience with Ruby/Rails, my goal is...
New
asfand
I already created an Elixir Phoenix app for learning purpose. In this app students of our collage will create profiles, and will chat wit...
New
miguelsrrobo
hi i was wondering if it is necessary to learn erlang to learn elixir
New
jslearner
Will learning Erlang really help in being a better Phoenix or Elixir developer or is it a waste of time?
New
asfand
Hi Everyone, I am a student and know basics of web development, used some php and ruby, but I am not an expert in any. I want to learn E...
New
Sujit
Hi Team From the title, I am entirely new to programming and i am interested in learning elixir but not sure where to start. Can someone...
New

Other popular topics Top

shahryarjb
Hello, I get Persian date from my client and convert it to normal calendar like this: def jalali_string_to_miladi_english_number(persi...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
sergio
I couldn’t find any guides that worked well with Phoenix 1.6.0 and esbuild. I hope this helps people test the waters and eases you into t...
New
KronicDeth
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine) This is a plugin that adds support for Elixir to JetBrains IntelliJ...
289 35421 110
New
vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
ovidiubadita
Hey all, I discovered Elixir and I love it. I always wanted to learn a functional programming and I intended to go for Haskell, but afte...
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New
vrod
I am using the Starship cross-shell prompt – it seems pretty nice, but I get some errors: [WARN] - (starship::utils): Executing command ...
New

We're in Beta

About us Mission Statement