I’ve inherited 200K lines of spaghetti code — what now?
-
I am newly employed as the sole "SW Engineer" in a fairly small shop of scientists who have spent the last 10-20 years cobbling together a vast code base. The program itself is a physical model of a complex chemical processing plant; the team that wrote it has incredibly deep domain knowledge but little or no formal training in programming fundamentals. They have asked me to begin presenting to the team some of the principles of modern software development. They want me to introduce some of the industry-standard practices and strategies regarding coding conventions, lifecycle management, high-level design patterns, and source control. Frankly, it's a fairly daunting task and I'm not sure where to begin.
A daunting task, and here are some great guidelines for getting started.
-
I am newly employed as the sole "SW Engineer" in a fairly small shop of scientists who have spent the last 10-20 years cobbling together a vast code base. The program itself is a physical model of a complex chemical processing plant; the team that wrote it has incredibly deep domain knowledge but little or no formal training in programming fundamentals. They have asked me to begin presenting to the team some of the principles of modern software development. They want me to introduce some of the industry-standard practices and strategies regarding coding conventions, lifecycle management, high-level design patterns, and source control. Frankly, it's a fairly daunting task and I'm not sure where to begin.
A daunting task, and here are some great guidelines for getting started.
-
I am newly employed as the sole "SW Engineer" in a fairly small shop of scientists who have spent the last 10-20 years cobbling together a vast code base. The program itself is a physical model of a complex chemical processing plant; the team that wrote it has incredibly deep domain knowledge but little or no formal training in programming fundamentals. They have asked me to begin presenting to the team some of the principles of modern software development. They want me to introduce some of the industry-standard practices and strategies regarding coding conventions, lifecycle management, high-level design patterns, and source control. Frankly, it's a fairly daunting task and I'm not sure where to begin.
A daunting task, and here are some great guidelines for getting started.
In my experience: Don't try to change the scientists. Getting them to use source control is essential for business. Getting them to use other variable names than i, j, k, x, y, z, lambda and combinations thereof is a lofty goal. Getting them to write a purpose (or even a contract) comment on a function is daunting. Everythign else - like code smells / refactoring, you can best do in code reviews, ideally triggered by them asking you "I have this problem, how can I solve this?".
FILETIME to time_t
| FoldWithUs! | sighist | WhoIncludes - Analyzing C++ include file hierarchy -
I am newly employed as the sole "SW Engineer" in a fairly small shop of scientists who have spent the last 10-20 years cobbling together a vast code base. The program itself is a physical model of a complex chemical processing plant; the team that wrote it has incredibly deep domain knowledge but little or no formal training in programming fundamentals. They have asked me to begin presenting to the team some of the principles of modern software development. They want me to introduce some of the industry-standard practices and strategies regarding coding conventions, lifecycle management, high-level design patterns, and source control. Frankly, it's a fairly daunting task and I'm not sure where to begin.
A daunting task, and here are some great guidelines for getting started.
-
Chemical processing plant... that worries me. Can you implement some sort of ShutDown() or SelfDestructClean() from Finally block?
dev
I like this idea. Let there a
if_spill_detected(cleanupcmd, shutdowncmd, evacuatecmd)
method which implements
SOS()
interface.
--> Getting information off the Internet is like taking a drink from a fire hydrant. --> In three words I can sum up everything I've learned about life: it goes on.