The high-level design and description of a software system. Architectural design distills away details of implementations, algorithms, and data representation to concentrate on the interaction of "black box" components.

learn more… | top users | synonyms

280
votes
34answers
62k views

How do I create my own programming language and a compiler for it

I am thorough with programming and have come across languages including BASIC, FORTRAN, COBOL, LISP, LOGO, Java, C++, C, MATLAB, Mathematica, Python, Ruby, Perl, JavaScript, Assembly and so on. I ...
76
votes
17answers
21k views

Is it a good idea to design an architecture thinking that the User Interface classes can be replaced by a command line interface?

In Code Complete page 25, it's said that it's a good idea to be able to easily replace the regular user interface classes by a command line one. Knowing its advantages for testing, what about the ...
76
votes
8answers
3k views

What is the most effective way to add functionality to unfamiliar, structurally unsound code? [duplicate]

This is probably something everyone has to face during the development sooner or later. You have an existing code written by someone else, and you have to extend it to work under new requirements. ...
55
votes
8answers
3k views

Don't Use “Static” in C#?

I submitted an application I wrote to some other architects for code review. One of them almost immediately wrote me back and said "Don't use "static". You can't write automated tests with static ...
54
votes
19answers
2k views

Dealing with awful estimates

A recent project I worked on was proven to be severely underestimated by the architect. The estimate was out by at least 500%. Unfortunately I was brought onto the project after the estimate had ...
52
votes
8answers
24k views

Why did Alan Kay say, “The internet was so well done, but the web was by amateurs”?

Ok, so I paraphrased. The full quote: The Internet was done so well that most people think of it as a natural resource like the Pacific Ocean, rather than something that was man-made. When was the ...
50
votes
12answers
3k views

Getting out of my head

I've spent the last year as a one-man team developing a rich-client application (35,000+ LoC, for what it's worth). It's currently stable and in production. However, I know that my skills were rusty ...
49
votes
17answers
3k views

How to train yourself to avoid writing “clever” code?

Do you know that feeling when you just need to show off that new trick with Expressions or generalize three different procedures? This does not have to be on Architecture Astronaut scale and in fact ...
46
votes
15answers
3k views

Working on someone else's code

I have hardly a year's experience in coding. After I started working, most of the time I would be working on someone else's code. Either adding new features over the existing ones or modifying the ...
45
votes
3answers
2k views

How is architectural design done in an agile environment?

I have read Principles for the Agile Architect, where they defined next principles : Principle #1 The teams that code the system design the system. Principle #2 Build the simplest architecture ...
42
votes
15answers
7k views

Is it better to return NULL or empty values from functions/methods where the return value is not present?

I am looking for a recommendation here. I am struggling with whether it is better to return NULL or an empty value from a method when the return value is not present or cannot be determined. Take ...
42
votes
12answers
3k views

Are there problems with using Reflection?

I don't know why, but I always feel like I am "cheating" when I use reflection - maybe it is because of the performance hit I know I am taking. Part of me says, if it is part of the language you are ...
42
votes
4answers
2k views

What is REST (in simple English)

Lately I have become interested in familiarizing myself with REST. I tried reading wiki entry on REST, but it was of no help. I would really appreciate it if someone can explain in simple English ...
41
votes
13answers
4k views

Is premature optimization really the root of all evil?

A colleague of mine today committed a class called ThreadLocalFormat, which basically moved instances of Java Format classes into a thread local, since they are not thread safe and "relatively ...
39
votes
11answers
3k views

As a software architect, am I supposed to focus that much on analysing the logs and fixing other's bugs?

Since my graduation (late 2005) I was working for the same company as a c++ software engineer. A year ago I was promoted as a software architect but I have found myself involved more and more in ...
38
votes
12answers
5k views

What is the advantage of little endian format?

Intel processors (and maybe some others) use the little endian format for storage. I always wonder why someone would want to store the bytes in reverse order. Does this format have any advantages ...
38
votes
17answers
2k views

Software Design: Build it fast or build it well?

When building a non-trivial application, is it best to focus on getting things working quickly, and taking shortcuts in the code like mixing model logic with your views, breaking encapsulation - ...
38
votes
10answers
2k views

What can one do when “lead by example” doesn't work?

I have been working for a big company (8000+ employees) for almost 2 years now, and was hired just after I finished my study course. Everyone here has to deal daily with legacy code which is often ...
35
votes
9answers
2k views

Why is it a good idea for “lower” application layers not to be aware of “higher” ones?

In a typical (well-designed) MVC web app, the database is not aware of the model code, the model code is not aware of the controller code, and the controller code is not aware of the view code. (I ...
35
votes
11answers
2k views

Is there any reason not to go directly from client-side Javascript to a database? [duplicate]

Possible Duplicate: Writing Web “server less” applications So, let's say I'm going to build a Stack Exchange clone and I decide to use something like CouchDB as my backend store. If I use ...
33
votes
3answers
1k views

Why do so many namespaces start with com

I've noticed that a lot of companies use "reverse domain name" namespaces and I'm curious where that practice originated and why it continues. Does it merely continue because of rote practice, or is ...
32
votes
18answers
6k views

Best books on the theory and practice of software architecture? [closed]

I have a couple of developers at my company who wish to move from programming into architecture. What are the best books out there on the theory and practice of software architecture? Include a cover ...
31
votes
5answers
2k views

Re-inventing system design for Scala

Many, many, moons ago, I did my masters in Object Orientated Software Engineering. I covered everything: project initiation, requirements, analysis, design, architecture, development, etc, etc. My ...
30
votes
15answers
2k views

What can programmers learn from the construction industry? [closed]

When talking with colleagues about software design and development principles, I've noticed one of the most common sources for analogies is the construction industry. We build software and we ...
28
votes
11answers
1k views

Well designed / high-quality open source software [closed]

I'm taking a software design class where I should choose an open source software to analyze from the Software Design point of view. It has to be a big project: not less then 100,000 lines of code. I ...
26
votes
7answers
1k views

Are there architecture smells?

There are tons of resources on the web referring to and listing code smells. However, I've never seen information on architectural smells. Is this defined somewhere, and is there a list available? ...
24
votes
7answers
2k views

Why do large websites use different languages for the backend and frontend?

My understanding from small MVC applications is that you have the front end, which deals with HTML, JS, jQuery, etc, and you have the back end, which consists of your controllers and models. ...
24
votes
6answers
3k views

How essential is it to make a service layer?

I started building an app in 3 layers (DAL, BL, UI) [it mainly handles CRM, some sales reports and inventory]. A colleague told me that I must move to service layer pattern, that developers came to ...
24
votes
8answers
2k views

Can manager classes be a sign of bad architecture?

Lately I've begun to think that having lots of manager classes in your design is a bad thing. The idea hasn't matured enough for me to make a compelling argument, but here's a few general points: I ...
24
votes
3answers
12k views

Best Practices for MVC Architecture

There are a number of questions on StackOverflow regard MVC best practices, but most of those seem to revolve around things like using Dependancy Injection, or creating helper functions, or do's and ...
23
votes
10answers
2k views

What is good (neat) architecture in programming?

When I build a simple website, e.g. a contact book where I can add, delete and update contacts, I create an index.php file where a user, if he's not logged in, is requested to enter a password and if ...
23
votes
11answers
1k views

Is it possible to write software that doesn't need to be continually modified?

I have written a lot of software in many different languages, and I've also "written" hardware for use with FPGAs using Verilog and VHDL. I tend to enjoy writing hardware more than software, and I ...
23
votes
10answers
1k views

How do you organize highly customized software?

I'm working on a large software project which is highly customized for various customers arround the world. This means that we have maybe 80% code which is common between the various customers, but ...
22
votes
9answers
2k views

Are abstract classes / methods obsolete?

I used to create a lot of abstract classes / methods. Then I started using interfaces. Now I am not sure if interfaces aren't making abstract classes obsolete. You need a fully abstract class? ...
18
votes
2answers
3k views

We have a large Ruby on Rails application (25 million monthly users), our management decided to rewrite in Node.js, am I crazy?

Please tell me if: Node.js will make our site faster! Node.js will consume fewer server resources, we can save money! Node.js will make us more productive! Node.js means we can share client and ...
18
votes
3answers
3k views

How to build completely modular web applications [closed]

In the coming months we're going to begin a project where we take a system we've built for a client (v1) and rebuild it from scratch. Our goal with v2 is to make it modular, so that this specific ...
17
votes
6answers
6k views

Which platform to choose, Java or .NET?

I am working in a private bank, a leading mid size bank in local market. We are going to create our core banking solution. Existing solution has been developed on Java using IBM Visual Age 4.0. It is ...
17
votes
8answers
1k views

Dangers of huge monolithic application

The big project I'm working on for a couple years now is a control (and everything) application of an advanced device, heart of its firmware. The device is quite advanced, with more different ...
17
votes
7answers
848 views

S.O.L.I.D., avoiding anemic domains, dependency injection?

Although this could be a programming language agnostic question, I'm interested in answers targeting the .NET ecosystem. This is the scenario: suppose we need to develop a simple console application ...
16
votes
4answers
1k views

Architectural differences between dynamic and static languages

Area there any major architectural differences when designing applications that will be built on static languages (such as C# or Java) and dynamic languages (such as Ruby or Python)? Wich are the ...
16
votes
5answers
4k views

What are some arguments AGAINST using EntityFramework?

The application I am currently building has been using Stored procedures and hand-crafted class models to represent database objects. Some people have suggested using Entity Framework and I am ...
15
votes
9answers
1k views

Should I try persistence in flat file before database?

Somebody explained to me that since in agile development, policy and the application logic should be more important than details such as persistence method, persistence decision should be taken at the ...
15
votes
18answers
946 views

What do you look at first: the code or the design?

If you've just been introduced to a new project, what's the first thing you look for to get an idea of how it works? Do you look for the design first? If there is a design, what do you look for in ...
15
votes
11answers
1k views

Why all classes in .NET globally inherits from Object class?

Its very interesting for me which advantages gives "global root class" approach for framework. In simple words what reasons resulted the .NET framework was designed to have one root object class with ...
15
votes
3answers
4k views

Interview question: How would you implement Google Search?

Supposed you were asked in an interview "How would you implement Google Search?" How would you answer such a question? There might be resources out there that explain how some pieces in Google are ...
15
votes
4answers
2k views

How to significantly improve java performance?

The team over at LMAX have a presentation about how they were able to do 100k TPS at less than 1 ms of latency. They have backed up that presentation with a blog, technical paper (pdf) and source code ...
15
votes
8answers
5k views

What software can be used to create architecture diagrams?

I use MS Visio for most of my design/architecting work when I need to be able to save the diagram somewhere and edit it later. I'm not the biggest fan of Visio, but it gets the job done (and it's free ...
15
votes
1answer
251 views

Are there any examples of implementing and effectively responding to a “Chaos Monkey”?

Jeff Atwood recently wrote a blog post about Netflix's implementation of a "Chaos Monkey". It is a very high level article. I am curious if anyone has actually implemented this technique for testing a ...
14
votes
10answers
835 views

How can I get paid for reducing technical debt?

I'm currently working for small company that has few technically complicated products. I'm the one and only developer for one of them. About a year ago, I got the legacy version of the product and ...
14
votes
9answers
589 views

How can I tell if software is highly-coupled?

I am familiar with the term "highly coupled" but am curious if there are signs (code smells) that can indicate that code is highly coupled. I'm currently working with Java EE but this can apply to ...

1 2 3 4 5 13