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.
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?
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
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 ...
31
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 ...
25
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
5k 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
845 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
250 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
588 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 ...
14
votes
22answers
733 views
At What Point Should You Start To Think About Performance?
As I'm building applications I find myself constantly asking if this is best way to perform or implement a certain functionality. Often, I'll post questions on stackoverflow or another forum desiring ...
