Live data from Hacker News

Teaching Software Architecture with GitHub

avandeursen.com

11–20 of 23 posts

Re: Teaching Software Architecture with GitHub

#11
post #9

Earlier quoted context omitted.

The pictures are a result of studying the systems in question. For example, you have given links to a couple of github repos. Now if I'm trying to create an overview of how say emacs works, I would try to identify the main sub-parts and break the system down into more manageable chunks of study. This is all what 'viewpoints' are trying to structure. None of this is evident from just the codebase unless it has been ca…

The point is that how emacs is broken down in modules is one of the least important things about emacs. I can draw a block diagram without a "software architecture" course, thank you. In software engineering, there are of minor usefulness most of the time, if of any. There have to be persons that guide the overall development, sure, but this does not mean that those have to be "architects" living in a castle somewher…

There are a LOT of practicing architects that really fit the mould you are describing! Linus has the big picture in his head, and perhaps if he were to draw them out, does it make him an ivory tower denizen ?!

Also, ignoring how a system is modularized is typically how you get tangled codebases by introducing unexpected dependencies. Just because it is 'less interesting' doesn't make it 'unimportant'.

Re: Teaching Software Architecture with GitHub

#12
post #5

It is actively harmful to teach students that software architecture is something that somehow arises from diagrams or that those kinds of silly pictures capture anything important about it. Powerful architectures come out of powerful ideas that in turn come from accumulated hard work of many people in different disciplines. One can learn much more from walking through the actual source code of some classic projects a…

Actively harmful? Diagrams? Sorry I have to counter-react strongly. Your post is negative without a valid point and the irony is that you agree with the post. > One can learn much more from walking through the actual source code of some classic projects and from trying to understand what makes them tick That is the fun part about this post! You propose to mandidate a list of classical code bases. This course lets stu…

Programs are powerful because of concepts. Whether or not you will be able to build a good 3d engine rests much more on the fact whether you know or able to invent a concept of a vector and have it guide all your future coding than it rests on whatever is visible from a block diagram. Both the course and the book linked to seem to focus on some abstract ideas of doubtful usefulness and never ever seem to touch upon those important things that historically have allowed us to build complex programs where other approaches have failed. Google can exist not because people invented new kinds of diagrams, but because large scale numerical linear algebra techniques were applied to the problem of search. This is the heart of Google's "architecture", not a class diagram of the crawler.

Picking arbitrary programs won't do. The point is to pick the really good designs and illustrate why they are good, and I think it boils down much more to knowing mathematics, algorithms, programming languages and having studied a lot of existing software, than to usage of any modelling techniques so far invented in formal software engineering circles.

Re: Teaching Software Architecture with GitHub

#13
post #4

Wow I wish my university offered courses like this. As a student what are good books for software engineering practices in the field right now? Also when you're doing sole projects are there specific procedures you should follow and how do they differ from when you're in a team? Lastly if it isn't too much can you post links to the course website for this,the software communications and software metrics?

Personally I think this is a good starting point: http://gorban.org/post/32873465932/software-architecture-che...

In terms of books, I really like "The Architecture of Open Source Applications" (http://aosabook.org/) which is also mentioned in the blog post. For the enterprise world, "Patterns of Enterprise Application Architecture" (http://martinfowler.com/books/eaa.html) is a good choice.

However, before applying any technical software architecture methods, it is really important to understand what your stakeholders actually want/need. Unfortunately most of the time they don't even know it themselves. In my experience most software projects fail, not because of technical reasons but simply because the original problem hasn't been understood. This is where communication is key. I assume the reason why the authors of the blog post encouraged drawing diagrams and looking at different perspectives/views is to facilitate this communication.

Re: Teaching Software Architecture with GitHub

#14
post #3

I'm finding it very difficult getting into a large open source project. I consider myself an experienced developer, but for some reason it feel very intimidating, especially when the code base is large. I was wondering if someone could give any tips ?

I try to work on the software I actually use. I don't jump on a random horse and start riding to the West. I think the first step is look at your tools. What problem do you have with your tools. Is the library you using too restricted? Does it have a null/nonetype exception rasied and not properly handle? If you can't solve it because you have no idea where to start, well, at least file a ticket :) I have limited exp…

Awesome! This is actually quite helpful and it gave me a couple of ideas.

Re: Teaching Software Architecture with GitHub

#16
post #12

Earlier quoted context omitted.

Actively harmful? Diagrams? Sorry I have to counter-react strongly. Your post is negative without a valid point and the irony is that you agree with the post. > One can learn much more from walking through the actual source code of some classic projects and from trying to understand what makes them tick That is the fun part about this post! You propose to mandidate a list of classical code bases. This course lets stu…

Programs are powerful because of concepts. Whether or not you will be able to build a good 3d engine rests much more on the fact whether you know or able to invent a concept of a vector and have it guide all your future coding than it rests on whatever is visible from a block diagram. Both the course and the book linked to seem to focus on some abstract ideas of doubtful usefulness and never ever seem to touch upon t…

There's no conflict between reading and understanding a codebase and seeing the value in a diagram. You can have both. Take a look at the example you chose: [0] and [1] (about a third of the way down).

They first explained PageRank (without a diagram), then explained the flow of the data from the crawler (with a diagram). You seem to be arguing that diagrams are never useful, and that just isn't true.

[0] http://infolab.stanford.edu/~backrub/google.html [1] http://infolab.stanford.edu/~backrub/over.gif

Re: Teaching Software Architecture with GitHub

#17
post #5

It is actively harmful to teach students that software architecture is something that somehow arises from diagrams or that those kinds of silly pictures capture anything important about it. Powerful architectures come out of powerful ideas that in turn come from accumulated hard work of many people in different disciplines. One can learn much more from walking through the actual source code of some classic projects a…

In addition to what the other respondents have written, could it be that you are not a visual learner, and diagrams don't 'do it' for you?

Re: Teaching Software Architecture with GitHub

#18
post #4

Wow I wish my university offered courses like this. As a student what are good books for software engineering practices in the field right now? Also when you're doing sole projects are there specific procedures you should follow and how do they differ from when you're in a team? Lastly if it isn't too much can you post links to the course website for this,the software communications and software metrics?

I was searching around for how to install Hadoop and found this information related to software patterns and how well they are understood by undergraduates leaving university.

This fellow: http://www.jonathanholloway.co.uk/work

Wrote his master's thesis on the very subject http://www.jonathanholloway.co.uk/thesis/abstract.html

[Whole thesis back in /work]

Re: Teaching Software Architecture with GitHub

#19

I'm finding it very difficult getting into a large open source project. I consider myself an experienced developer, but for some reason it feel very intimidating, especially when the code base is large. I was wondering if someone could give any tips ?

The students of the course had the same problem.

We advised the students to look critically at recent open (or just closed) issues and pull requests, as well as e.g., the mailing list for the project at hand. Based on that they could get a feeling what was happening at the moment, and what a typical contribution looks like.

If you want to contribute code, we found that it works best if you work on parts of the code that are currently under active development. This also means that you do not have to have a deep understanding of the full code base: A broad overview suffices.

Some of our students also offered documentation for, e.g., installation or deployment: they struggled themselves, and offered what they learned back to the project.

Re: Teaching Software Architecture with GitHub

#20
post #5

It is actively harmful to teach students that software architecture is something that somehow arises from diagrams or that those kinds of silly pictures capture anything important about it. Powerful architectures come out of powerful ideas that in turn come from accumulated hard work of many people in different disciplines. One can learn much more from walking through the actual source code of some classic projects a…

Here's an addition to the answers from the others -- I'm one of the authors of the post.

Thanks for your feedback.

Perhaps we did not sufficiently emphasize it in the blog post, but we do tell the students about strong existing architectures, open source as well as from industry. The books listed in further reading in the post actually contain chapters about git and emacs, and I share your enthusiasm for Bentley's little language approach.

The philosophy of the course is based on trying to apply published approaches to software architecture (such as those in Rozanski & Woods' book, but it could be others) to real systems actually maintained and used. We encourage to get in touch with the creators of those systems.

The students actually take a deep dive into a foreign code base -- I included pictures because that is easy to share in a post, but the students analyze code, report about that, execute test cases, deploy systems, etc. The pictures are indeed, as suggested by some of the others, means for communication.

Post reply on HN