DevEd 033: Learning By Building Frameworks & Libraries
Dillon Kearns is an Elm consultant who provides coaching and training to help people accelerate the way they write Elm to keep their codebases maintainable as they grow. He's the author of elm-graphql, and recently announced a new static site framework, elm-pages.
Today the panel is discussing how building libraries and frameworks can aide with the learning process. Dillon talks about how building frameworks and working with languages has helped him. He uses them as a laboratory to learn new techniques. When working on a library or framework, he always tries to bring his best programming self to that project.He believes that libraries and frameworks are a low risk way to practice your skills because they’re unlikely to get adopted when you’re starting out.
The panel defines what libraries and frameworks are and how they differ from one another. Libraries and frameworks are a type of project, with a library solving a specific class of problems. A framework is plugable and can be extended to solve problems that a framework author may not have imagined, though it does a set of core things. A library is something you put into your existing code base, a framework is the core you’re building on top of. They talk about an article, _The Difference Between a Library and a Framework, _that compares a library to a trip to Ikea when you already have a home, but you need to fill it with furniture, and a framework to building a home.
Next they talk about how libraries and frameworks are built and who builds them. Both are often built in open source, and some are funded by big companies while some are passion projects. They talk about the libraries that they’ve created and how it helped them to become a better developer. When Preston Lamb builds libraries, he learns how to do things he’s never done before. He doesn’t have a huge user base, but he finds it fun to sit down and have an idea, figure out how to do it, and make it reusable. Jesse Sanders talks about the company Rebug, and how somebody gave him the idea to write it as a schematic. Making libraries and frameworks is a continual way for developers to take a look at situations they don’t come across a lot and put them in a different mindset to make things truly reusable so that it can be adopted by others in the community. Dillon has found that making Elm GraphQL has given him the chance to be involved in very interesting conversations in the community. Creating a library or framework gives you the opportunity to be considered an expert in something and see they types of questions people are asking, problems they’re solving, and their interesting approaches.
The panel talks about the difference between fluency and understanding, and agree that one of the best ways to learn is by teaching. By being involved in creating a library, you’re seen as an expert in that library, so people come to you with their questions and you have to figure out how to answer them. One of the most valuable things about building a library or framework is learning the core basic concepts of the language.
They agree that it is best to start this kind of project as soon as you find something that interests you, and assure listeners that even if you mess it up and it’s never used, the learning experience is the true value. Often times, you’ll surprise yourself and make something that’s actually useful. Building or contributing to frameworks takes away the mystery and magic of programming, makes problems seem more approachable, and helps you understand the fundamentals. To find a project to contribute to, they suggest checking Twitter, Slack channels, and Github. If you find a library you like on Github, they’ll often have a #goodfirstissue, and you can tackle that problem to get started. Listeners are encouraged to be curious and look up source code on Github if you ever have a question to see how different libraries tackle this problem.
Finally, they talk about how to decide what requires a small exercise and what requires a library or framework. If the goal is short term, it only requires a small focused exercise. If the goal is long term or you find yourself doing the same thing repeatedly, consider a library or framework to make that code reusable and publishing it for others to use. Their closing thoughts are don’t focus on making something popular, just make something useful to you and maybe someone else will find it useful, and a reminder that there’s something to learn from everybody. Always have an open mind and try to get clarity on what someone is saying, even if it sounds like a bad idea at first.
With special guest: Dillon Kearns
- Non-Violent Communication: A Language of Life by Marshall B. Rosenberg
- Incremental Elm Consulting
- Follow Dillon on Twitter, LinkedIn, and Medium
- Star Wars Drones (check Costco first)
What is the difference between a library and a framework?
Libraries and frameworks are a type of project, with a library solving a specific class of problems. A framework is plugable and can be extended to solve problems that a framework author may not have imagined, though it does a set of core things. A library is something you put into your existing code base, a framework is the core you’re building on top of.
Who builds libraries and frameworks?
Both are often built in open source, and some are funded by big companies while some are passion projects. They talk about the libraries that they’ve created and how it helped them to become a better developer.
When is a good time to start creating or contributing to a library or framework?
As soon as you find a project you like and care about, start contributing!
How can I contribute to a library or framework?
If you have a long term goal or doing the same thing repeatedly, you can make your own library or framework to solve that problem and make the code reusable. You can also check Twitter, Slack, and Github for projects to contribute to. Many libraries and frameworks on Github will have #goodfirstissue for a beginner problem you can tackle.