# Is elixir good for beginner programmer?

**URL:** <https://forum.elixirforum.com/t/is-elixir-good-for-beginner-programmer/1675>\
**Category:** Discussions\
**Tags:** beginners-questions\
**Created:** [September 16, 2016, 1:16am UTC](https://forum.elixirforum.com/t/is-elixir-good-for-beginner-programmer/1675 "2016-09-16T01:16:26Z")\
**Posts on this page:** 1\
**Showing post:** 7

<div class="post-metadata">

**Author:** ![peerreynders](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/peerreynders/32/5826_2.png) [@peerreynders](https://forum.elixirforum.com/u/peerreynders)\
**Post date:** [September 16, 2016, 9:59pm UTC](https://forum.elixirforum.com/t/is-elixir-good-for-beginner-programmer/1675/7 "2016-09-16T21:59:19Z")

</div>

> [@vasspilka](#):
>
> I would recommend pursuing meta-programming once one feels familiar and confident with the language, not that it would hurt taking a look.

While I certainly understand the sentiment, I wasn’t referring to it for learning _how to write macros_ but to underline that “macros that generate code during compilation” are of central importance in Elixir - and people coming from languages where that capability isn’t a core feature need to be made aware of it _as soon as possible_.

In my mind _some_ macros express code that “[hangs in the sky in much the same way that bricks don’t](http://www.quotationspage.com/quote/720.html)” - as a result from a novice’s point of view it isn’t at all clear how that code can have any run-time effect and/or how the code connects to the “rest-of-the-world” until they are made fully aware of Elixir’s meta-programming facilities (I’m surprised this hasn’t made it into [Elixir’s biggest gotchas](https://forum.elixirforum.com/t/elixirs-biggest-gotchas/796/3)).

One good example is the [plug router](https://github.com/elixir-lang/plug#user-content-the-plug-router):

```
defmodule MyRouter do
  use Plug.Router

  plug :match
  plug :dispatch

```

One has no hope of understanding what is happening here until the realization comes that a whole bunch of code is “hydrated” here, in place, during compilation. The faster any novice realizes that the better. So while _writing_ macros can wait, _reading_ them and understanding their implications on the language as a whole cannot - at least in my opinion.

---

_[View the full topic](https://forum.elixirforum.com/t/is-elixir-good-for-beginner-programmer/1675)._
