How to Explain Coding is not just Copy and Paste to non Software Developers? [closed]
Problem with copying is that you copy the bugs also and you add new features only to the last 'current' copy.When copying bugs over you may end up with a maintenance culture where you have to fix bugs many many times for each separate copy. As time passes and the code loses simularity bug fixing is not 'copying' anymore. One fix wo not quite fit on the other project etc.When you add new features that you want to retrofit to a project that was source of a copy in the past the business may expect it would be easy, in practice not so much, the code bases will stray away from each other with time.Refactoring is a big no-no, knowing that if you improve code on project A you would still be stuck with the painful experience on all the other projects. Doing a complex refactoring 10 times? I do not think so.If project A is only a few line changes from project B maybe you can just use project A's code as is and share between A and B. Add configuration options to differentiate between A and B. Create a framework, configurable application or service. Etc.Having said that. I do copy code a lot, but only for scaffolding purposes. I aggressively remove any code not needed and I look for parts that could potentially be moved to a library and shared that way. This is a valid way of working if project A and project B are expected to have different axis of change (they are similar now but wo not be further into the future).Constantly looking for commonality and coming up with increasingly abstract and therefor vague components has it's limits also. Draw a line somewhere and just fork for dissimilar domains.
â â â â â â
Is the use of the term "buggedâ to refer to software bugs in English a worldwide or regional use?
The term for software with faults is at the boundary between the specialized language used by software developers and the language used by everyone. Laymen and laywomen talk about bugs in software. Software developers will call a single software fault a "bug", software that does not have such faults "bug free" (although that happens only very rarely), software that has too many faults "buggy", the process of removing bugs "debugging". Non-software developers may call software with bugs whatever they like, for example "bugged". Software developers hearing this just cringe and do not change how they call it. No doubt that you can find examples in the literature, but very few from software developers.
â â â â â â
Which countries are best for hiring offshore software developers?
I do not think the country is the most important factor. It's more important to find a company (or individual) who you are compatible with:Language. This one is very important. Does not have to be 100% perfect though. The important thing is that you can understand each other quickly. Culture. Just as important as if you hire someone, I think. Do you like the person(s) you are going to interact a lot with? Do they understand what you are trying to accomplish and what is important for you?Management style. Do you want someone who just follows your orders or someone who you can leave on their own knowing they will come up with something good?Time zones. Do you want the person to be awake when you are or does not it matter?If you are working with an outsourcing company it's often not required that the developers themselves speak and understand your language perfectly, as long as they have a technical manager who you do all your communication with.Finally, remember that the success is very much dependent on you! :)
â â â â â â
How does a non-technical manager add value to team of self-motivated software developers?
As it applies specifically to software development, there are two sorts of value-adding roles for managers: project management and team leading.A project manager interfaces with clients and middle management, which is a time saver for the developers. Trying to field questions from every member of a development team leads to unrecorded project decisions and undocumented commitments, the bane of scope management.On the other side, a team leader is involved with career/skills development, making sure the workload is appropriately distributed among team members, and providing resources and rewards commensurate with the individual contributions and needs.Neither of these roles requires a heads-down programmer, in fact somewhat the opposite. A programmer will often jump to a code-writing task as the first response to a question or crisis, and it's helpful to have someone whose job is to ask whether that task really needs to be done