bronze
bronze

Reputation: 53

Learn and understand the full stack

I have been struggling with an idea for a few weeks and wanted to see if someone can help me out here.

Programming today is full of abstractions, and people who do not understand the abstractions, do not truly understand the reason or design than went into building that abstraction/layer/framework and will struggle as soon as they step outside the comfort zone.

I was wondering if there is a learning resource that goes about teaching programming in an incremental fashion. This will lead to understanding the full stack.

  1. take a small problem
  2. implement a simple solution
  3. talk about the the solution and the designs used
  4. convert the solution into a framework or utility of some sort
  5. now extend the problem space and repeat from step 2.

This way when someone then picks up any framework/library, they can easily visualize the problems the framework is trying to solve, the design decisions taken and the reasons thereof.

[Added to clarify the intent]

Based on the answers and comments below, I want to clarify that I want to move further up the stack. Building your own ORM to understand ORM better, same goes for ActiveRecord, IOC container, data binding, templating engine, and the host of other magic/glue/plumbing we use day-to-day.

Thanks.

Upvotes: 2

Views: 240

Answers (4)

vyom
vyom

Reputation: 249

Read the source. It is a good idea to build something you want to understand, but you can enhance your understanding of concepts significantly by looking at how something is built. This is especially true for infrastructure pieces (ORM/DI/Templating) which you seem to be interested in.

Get the software to build on your machine, attach a debugger and trace through the code. This is pretty easy for C#/Java with a good IDE. For dynamic languages like Python and Ruby, it takes a good editor and a lot of grepping.

If it is a good software package, it will usually have tests. Tests are a great place to start digging into code. They usually make clear the intent of the code, and also provide you a logical starting point to peel off the layers and actually peek under the hood.

Upvotes: 0

bronze
bronze

Reputation: 53

The best example of the sort of learning resources I am seeking is the MIX session by Rob Eisenberg on "BUILD YOUR OWN MVVM FRAMEWORK". It goes step by step on explaining the pattern and also implementing it at the same time, attacking one problem area at a time.

http://live.visitmix.com/MIX10/Sessions/EX15

Hope there are more out there.

Upvotes: 0

Anshul
Anshul

Reputation: 529

Build a fully functional compiler from scratch in a systems language like C or C++. Maybe it isn't the full stack, but it's a large part of it. This is something I want to do as well. If only I could find the time and space.

Upvotes: 0

basarat
basarat

Reputation: 276085

Here's what I recommend : Have a brush with assembly (just one book or one month is enough). Have a good strong review of C++ (hopefully it will teach you some of C as well). Now the world is yours. Python is made in C/C++ , Object C is pretty close to c++, .NET is in C++ and C#/VB.NET , The windows API is oriented for C.

I picked C# as my abstract language of choice after this by the way.

Upvotes: 1

Related Questions