158

I can't seem to understand the reason as to why multiple programming languages are used in the same product or software? It is quite simple: there is no single programming language suitable for all needs and goals. Read Michael L. Scott's book Programming Language Pragmatics Some programming languages favor expressiveness and declarativity (a lot of ...


69

I believe that it's a faulty assumption to say that there are projects where the requirements don't change. Having worked in both the defense industry and the pharmaceutical industry making software, I can tell you that once software ends up in the hands of subject matter experts (either internal or external), there is feedback. Sometimes, this feedback is ...


54

Obviously they are both wrong. The bottom up guy is hacking away at code and will never produce something that does what it is supposed to do - it'll be a continual churn as the unknown requirements are determined. The top down guy can spend just as long on architectural vision and get nothing productive done too. However, a middle ground is ideal - if ...


51

In this case I would simplify to Kanban. Kanban simply has a backlog that you work off, so there is no need to organize work into sprints. It's best not to over-complicate things. Considering this is a stretch of work that would be only one sprint, and a very limited staff, I think it matches the Kanban way more than scrum.


37

The main problem with your idea is that you can't just write tests for any code. The code has to be testable. I.e. you need to be able to inject mocks, separate out the bit you want to test, access state which is changed and needs confirming etc. Unless you get lucky or write the test first, chances are writing the test means rewriting the code a bit. ...


30

The general approach of using pairs to split the effort of writing production code and writing its associated unit tests is not uncommon. I've even personally paired in this way before with decent success. However, a strict line between the person writing production code and the person writing test code may not necessarily yield results. When I used a ...


29

Experience definitely leads toward building something small and simple, and getting it to the users as early as possible. Add features and capabilities as they're requested by the users. Chances are very good (bordering on certain) that what they want/ask for won't resemble what you would have built on your own very much (if at all). As far as things ...


29

Many projects are not built with multiple programming languages. However, it is common to use scripts in other languages to assist with the software. Administration tools that are separate programs are sometimes written in a different language. Libraries and APIs frequently offer bindings for multiple languages, so that developers can use whatever language ...


23

The two developers need to maintain a mutual respect for each other. The top down person needs to respect the fact that the bottom up person may have come up with something that actually works. As one of my "quant" professors told me, "A working model is worth 1000 guesses." If that's the case, the top down person should consider re-doing his "design" to ...


21

Ideally, the scrum master is responsible for facilitating the project activities and to address any sort of impediments faced during that. He/she does not participate in the "yesterday, today, impediments" spiel during the daily stand-up per se, however, is answerable to the team members for any kind of status on the impediments they have reported during ...


20

This has two forms, and a lot of organisations that fall somewhere between the two: The bad form - the organisation is a mess, and there's nobody making sure that there's a single technological vision for the effort. Devs most likely use whatever language they're most comfortable in, or recently experimented with a new framework or language and decided to ...


20

I can contribute an example, of a programming project which has been running for 32 years, and appears to still have plenty of life left in it. It's commercial rather than open-source. The core is written in a domain-specific language, created specifically for the project. This has proved extremely useful, notably because it integrates rollback into the ...


18

Documenting legacy code-bases I would highly recommend following the scout rule with legacy code-bases. Trying to document a legacy project independently of working on it will just never happen. In-code documentation The most important thing is to use the documentation facilities in your chosen development environment, so that means pydoc for python, ...


18

When I am faced with custom development requests I filter them through the cool filter which splits requests into 3 piles: awesome things which will be useful for everyone and are relatively easy to implement awesome things which will be useful for everyone and are hard to implement stupid one-of things which are only needed for this one client which ...


18

This answer has superb coverage and links on why different languages can provide distinct benefits to a project. However, there is quite a bit more than just language suitability involved in why projects end up using multiple languages. Projects end up using multiple languages for six main reasons: Cost benefits of reusing code written in other languages; ...


17

Actually, your current way of working isn't that far removed from Scrum as you might think. In Scrum, you also get an initial set of requirements, implement those and demonstrate the result, and based on the demonstration, new requirements can be given to you or the stakeholders can decide that the product is good enough that no further development is ...


15

What you are asking for is called "robustness", and there is no right or wrong answer. It depends on the size and complexity of the program, the number of people working in it, and the importance of detecting failures. In small programs you write alone and only for yourself, robustness is typically a much smaller concern than when you are going to write a ...


15

In some cases, there is a tool you need to use (such as an OS's UI toolkit) which is most easily accessible from a given language. For example on iOS and macOS, if you want to write GUI applications using UIKit and AppKit, writing in Swift or Objective-C is the fastest, easiest way to do it. (There may be bindings for other languages, but they may behind the ...


15

The main issue I see here, at the unit level, when I write code, I want to compile it, run it, and remove the most obvious bugs immediately - even when the code is incomplete and I know the unit, feature or function is only partly implemented. And for running the code of a unit, I need some piece of program calling the implementation, usually a unit test or ...


14

Why on earth are you planning to use Agile methods for such a small scale project? Agile methods are designed e.g. to handle the risk of unforeseen absences from ruining your project, and to schedule work tasks in a large team. They work by splitting the work to small chunks, assigning a difficulty to each of them, and then by some kind of magic the ...


13

If you can bend the user-specific requirements into something that will be useful for everyone, great. If the client is willing to pay the ongoing support costs for the feature, also great. But if you're a small team and you find yourself struggling to support all your features, there's nothing for it but to make some hard decisions about the features you ...


13

The very short answer is that yes, Scrum is by design a more expensive approach, but if you're calling it a project, it almost certainly doesn't matter and in the end will almost certainly always result in a better ROI. The more complete answer is this: Generally speaking there are three forms of process control: Defined Process Control, Statistical ...


12

due to certain constraints we sometimes end up bending to the will of certain clients and we end building bits of custom software that can only be used for that client. Your problem isn't that you're creating code that's used for only one client. The problem is that you're incorporating code that's used only for one client into a product that you're ...


12

Unit tests don't test gameplay. There's no programmatic criteria to see if a game is fun, or a level is the right difficulty. Unit tests will test that your roguelike mapgen actually produces a level with a stairs up and a stairs down. It will test that your encumberance rules are setup that your character actually moves slower when weighted. It will make ...


12

How do you make sure your logs are sufficient? My 11th grade English teacher has the best answer for this question: Know your audience. Think about who will be reading this. What they will and wont know. Think about what they need. When you log, log with intention. There should be a point to everything you capture. You should be thinking about the use ...


11

Probably the biggest difference is that you can be completely trained in scrum without even mentioning software. It is more about the process of choosing what software to write and when to write it rather than how. Conversely, extreme programming is primarily about the how, and specifically recommends certain programming practices, taken to the extreme. ...


11

A few things: A compiler is a code generator, it takes a high level language and creates assembly or bytecode Generated code is usually not as optimized as code written directly because despite of all the optimizations the compiler just doesn't understand the big picture all that well. The code that is used to generate code is often shorter, more concise ...


11

Ok, I'm going to take a crack at this since nobody else has yet. My experience is perhaps somewhat similar. I transferred from the software department to the embedded software department at my workplace a little over a year ago, and I have definitely heard echoes of the sentiments you're expressing here. Here are a few observations I made that are along ...


10

You might want to look at the answer to this similar question here: https://stackoverflow.com/questions/11329823/add-where-clauses-to-sql-dynamically-programmatically We've found that a SPROC which takes in a bunch of optional parameters and implements the filter like this : CREATE PROC MyProc (@optionalParam1 NVARCHAR(50)=NULL, @optionalParam2 INT=NULL) ...


10

In addition to the fact that some programming languages can be better suited for some specific tasks, there is the practical reality. In the practical reality, there are 2 especially important points to be considered: People have different experience and levels of interest in different programming languages. - Allowing people to work in languages they like ...


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