What are Effective Techniques for Managing Small Software Projects?

AI Thread Summary
The discussion centers on managing small-scale software and firmware projects developed by multiple individuals, each working on specific applications. The challenge is to leverage a common platform created by one developer while allowing others to adapt it for their needs without losing the benefits of shared components. There is a concern about the potential for fragmentation if each developer creates independent forks of the system, which would hinder collaboration and integration of improvements. Key points include the need for a flexible management approach that enables individual development while maintaining a cohesive common codebase. Suggestions involve identifying and structuring common components within a source control system, allowing for clear differentiation between shared and unique elements. The goal is to facilitate ongoing collaboration and evolution of the common parts, ensuring that all developers can benefit from collective advancements while retaining their independence. Techniques for achieving this include establishing clear guidelines for code structure and fostering communication among team members to identify and adapt shared components effectively.
vanesch
Staff Emeritus
Science Advisor
Gold Member
Messages
5,109
Reaction score
20
Hello,

I'm looking for established techniques, writings, books, etc... on what I'd call small project management. I'll try to frame what I need.

The problem to solve is about as follows. 4 or 5 people have developed small software/firmware systems in their corner, for specific applications. There's one person who has been developing in his corner quite a system (different FPGA's on different cards communicating through high speed links with their own protocol, ethernet link to a control computer and an acquisition computer, and the relevant software that runs on these machines), and now the thing is that we are going to use that platform developed by that one person in order to take it as a basis for different systems.
So there will be a kind of common part to most of them, and then particular adaptations to different situations. And the question is: how to manage that, in a flexible way, so that people can do things in their corner, but can nevertheless take advantage of evolution of the common part on which several people can work ?
For people who are not mainly software engineers ?

The very simplest way to do this would be that everybody takes a copy of the system as it is now, and evolves it by himself: we'd have forks of the original system. But that means that there's no means to put in common the parts that can benefit to everybody after the fork.
We could also manage it as a single software project, but we need more independence, as most of the "forks" will mainly be developed by individuals, only occasionally touching upon the "common" part, and that common part is not even well-defined (you take what you can, and you adapt what you need).

So are there "standard" techniques to manage such a thing ?
 
Technology news on Phys.org
The main issue is having the group identify existing and any potential future common parts on an ongoing basis and to structure the code to take advantage of the common parts. If you do firmware builds via some sort of source control system, you could identify which folders (or directory trees) are "common" and which ones are unique to a specifc implementation.
 
Thread 'Is this public key encryption?'
I've tried to intuit public key encryption but never quite managed. But this seems to wrap it up in a bow. This seems to be a very elegant way of transmitting a message publicly that only the sender and receiver can decipher. Is this how PKE works? No, it cant be. In the above case, the requester knows the target's "secret" key - because they have his ID, and therefore knows his birthdate.
I tried a web search "the loss of programming ", and found an article saying that all aspects of writing, developing, and testing software programs will one day all be handled through artificial intelligence. One must wonder then, who is responsible. WHO is responsible for any problems, bugs, deficiencies, or whatever malfunctions which the programs make their users endure? Things may work wrong however the "wrong" happens. AI needs to fix the problems for the users. Any way to...
Back
Top