Tag Info

Hot answers tagged

162

it just isn't necessary because of the increased amount of processing power and memory available. Having cheap memory, enormous disks and fast processors isn't the only thing that has freed people from the need to obsess over every byte and cycle. Compilers are now far, far better than humans at producing highly optimized code when it matters. ...


87

IPV4 only networking code. The time hasn't come for most people yet, but the idea of IPV4 only networking will become obsolete.


77

I used to work for a company where every app we gave them led to the question: Can we export this data to Excel? After a while, I decided I had to know why they were obsessed with Excel exports for everything. It turned out that a lot of departments had one person who was an expert in Excel and could write a useful data-analysis app in no time. These apps ...


76

Many localization issues fit this pattern: a generation ago, programmers assumed all characters can be represented with an 8 bit data type a generation ago, programmers assumed every kind of text should be read left-to-right, top-down a generation ago, programmers assumed the field separator in a CSV file is always the comma character , (No, it really ...


72

Imagine you have to use someone else's code designed as about below: class Messy { String concat(String param, String str) { /* ... */ } boolean contains(String param, String s) { /* ... */ } boolean isEmpty(String param) { /* ... */ } boolean matches(String param, String regex) { /* ... */ } boolean ...


65

Do dedicated maintenance programming roles end up being detrimental to an early career? Are other programmers right to avoid roles like these? Does doing this line of work lock you into doing similar tasks unless you're prepared to start over as a junior? First up, you should know that you're considered a junior for quite a while. You may get arbitrary ...


63

The key problem with legacy code is that it has no tests. So you need to add some (and then more...). This in itself would take a lot of work, as @mattnz noted. But the special problem of legacy code is that it was never designed to be testable. So typically it is a huge convoluted mess of spaghetti code, where it is very difficult or downright impossible ...


49

I think people are missing the general point here: If you don't like all the custom development that's going on, forbidding it is solving the wrong problem - you should instead be asking why they're going around IT, not just telling them it's not allowed. Remember that you (IT) exist to help them do their job better, and that people don't use ...


47

I had ideas on this subject, and I put them into a book 20 years ago. It's long out of print, but you can still get used copies on Amazon. One simple answer to your question is as old as Aristotle: Nature abhors a vacuum. As much as machines have gotten faster and bigger, software has gotten slower and bigger. To be more constructive, what I proposed was ...


41

Validators for domain names making wrong assumptions like: TLD is 2-3 characters long (not true since 2001); domain names and TLDs contain only US-ASCII characters (not true since January 2010);


38

Usually it means it's written in a language, or based on a system that you don't typically do new development in. For example, most places don't write new programs in Cobol. However, a large part of their business may run on apps written in Cobol. Hence, those apps, are labelled "Legacy".


35

I did some research on y2010 about 14 months ago: printf("200%d", year); Believe it or not, code like that exists.


34

Quick ways to get the key points of Working Effectively With Legacy Code Read Michael Feathers' 12-page PDF, written 2 years before the book. Look at Michael Feathers' presentation: 68 slides Listen to a podcast interview with Michael Feathers. E.g. this 30-minute Hanselminutes episode.


34

High-level abstraction is essential to achieving ongoing progress in computing. Why? Because humans can only hold so much knowledge in their heads at any given moment. Modern, large scale systems are only possible today because you can leverage such abstractions. Without those abstractions, software systems would simply collapse under their own weight. ...


29

I'm rather partial to Wikipedia's summary myself: A legacy system is an old method, technology, computer system, or application program that continues to be used, typically because it still functions for the users' needs, even though newer technology or more efficient methods of performing a task are now available. A lot of what other people are ...


27

Legacy means any code you'd rather replace than work with. Given the attitude of most programmers toward most existing code, that usually includes nearly everything except what you're actively writing at the moment (and on a large project where you have to code to a frozen design, even what you're writing at the moment can be included as well). The ...


27

all I hear about is how they are using the latest ASP MVC framework, or Vagrant/Ruby on Rails/etc and I am getting the green eyes! Ah, but there they are playing with their toys, and there's you doing real work, using a tool that does the job to achieve a solution. That's what you should be considering - software is too often an amateur affair with ...


26

Another one not yet touched on are applications (and especially websites) assuming that all addresses are US addresses. In an era where international business is increasingly vital, this is causing trouble. Companies are loosing out on possibly lucrative business because customers find themselves incapable of placing orders. This is especially critical with ...


26

There's hope, but it's an uphill battle, especially if nobody realizes the database design is horrible. You can try to abstract the nastiness away with abstraction layers, but chances are it won't be worth the battle. My advice would be to create enough abstractions over the database that the application itself is clean and properly designed; that way if ...


23

In one word: legacy. Shift-JIS and other encodings were used before Unicode became available/popular, since it was the only way to encode Japanese at all. Companies have invested in infrastructure that only supported Shift-JIS. Even if that infrastructure now supports Unicode, they are still stuck with Shift-JIS for various reasons ranging from ...


23

I am currently on a paid internship, and have been tasked with maintaining an obsolete system that has been developed by multiple developers (at different times) over the course of the past 5 years. Management agrees the "system is on life support", and I receive a fairly regular supply of bug reports from end users currently using the system. The ...


22

Do people still use Ada -- (it was mostly used in the Defense Department) It appears that Ada was last updated in 2005 and there's work toward an Ada 2012, so the language itself is still alive and kicking. As far as use, Ada isn't mandated for use in the Department of Defense anymore. Most of the work that I've seen and done has been in Java, C, and ...


21

Single-byte encoding (ASCII, ISO-8859-x) vs multi-byte encoding (Unicode, UTF-8). That's currently the biggest legacy issue I can think of. There is just so much software that assumes that strings' byte length == character length.


21

As you have access to the developer you code ask:- Which modules were the most difficult to code/implement. What were the problems and how were they overcome. Which modules have generated the most bugs. Which modules have resulted in the most difficult to solve bugs. Which bits of code he is most proud off. Which bits of code he would really like to ...


21

I feel your pain. I've been in this exact position before. My suggestion is to lead by example. Start a wiki or document and start making notes. Make repeated references to this document you're putting together. If someone asks you a question, make a show of looking at the document for the answer first. If the question isn't there, add it to the ...


20

The demands you have put actually put Fortran at the top of the list, for problems like this: a) number crunching b) paralellable c) it was and still is the de facto language taught outside of cs studies (to engineers who aren't professional programmers). d) has an incredible(!) industry backing, number-of-industry-grade-compilers-wise, with none of the ...


20

There are, indeed, several benefits for a company to stick with outdated technologies: Legacy stuff sometimes doesn't work with new stuff A company may have invested a large amount of money in systems which simply don't work with newer languages or operating systems. A classical example is many intranet web apps which are compatible with IE6, and IE6 ...


19

There is no reason to not be able to have version control period. If management is against it even after having the benefits pointed out to them, they're clearly not fit to be managers and their boss should be approached. If you don't have administrative privileges, either get them or have someone from IT install the software. The code shouldn't be ...


19

Well, based on my age, I might be one of "those guys". I certainly get asked "are you comfortable working for someone younger than yourself" at a lot of interviews. While such questions might be "illegal" they're also irrelevant because every boss I've had since my 40s has been several years younger than myself. I don't like managing (and I've tried it), I ...


18

First of all, get and read Working Effectively With Legacy Code by Michael Feathers - it is an indispensable aid for such tasks. Then, a few notes: do you have a precise specification / contract for the interface, or do you practically only have the existing implementation as "specification"? In the former case it is easier to do a complete rewrite from ...



Only top voted, non community-wiki answers of a minimum length are eligible