Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am the only developer for some of projects.

I used to pick environment I like, alike C# and C++.

But this time new task could come from another department head who used to write programs ~20 years ago. That person reject all the new technologies alike .net and even C++ with no sane reason. Sure everything could be written in C and it could be fast and stable but forcing me (as only one developer) to write large scale-able project in plain C is not anyhow sane for me.

  • Must developers aware of directions like that?
  • Must developers fight to pick development environment?

My current position is a bit weird. I don't like the situation and I say that I'm able to go and start project in C but I will not tell any development time only apparent minimum and I guess this time will not be anyhow acceptable. That could make me look as really bad developer.

  • What will you suggest me in such situation?
  • Have you experienced such situations?
share|improve this question
6  
Learning to write large projects in C that do not look like spaghetti code is a great worthwhile experience. You can add to the challenge by trying to implement OO C, including UML design. –  mouviciel May 30 '13 at 7:12
6  
This is one of those times where you should be getting your resume up-to-date and blowing the dust off your networking contacts list. When the head of another department, not your boss, is telling you how to do your job, and your boss is NOT getting in his face about it, the smart money says it is time for you to Move On. Yes, you're the one-and-only developer for those projects, and it will REALLY hurt them to lose you. That's THEIR problem, NOT YOURS. –  John R. Strohm May 30 '13 at 12:15
    
@mouviciel: you're right carving a smooth round wheel is a huge challenge indeed. Question is why would it be considered worthwhile instead of picking up one from a shelf. –  Balog Pal Jun 6 '13 at 5:23
1  
@BalogPal Because then I don't control the tools, the material used, or the workmanship. I only want tools. Possibly tools that help make that wheel almost instantly, but the second you tell me how it works and what it's made of, and the exact kind of axle it fits on, I only have a use for you if I have no real interest in the quality of whatever it is I'm working on. That said, I wouldn't touch C unless there was super-low-level performance-critical work to be done but your argument isn't the reason why. –  Erik Reppen Jun 6 '13 at 5:42
add comment

7 Answers

up vote 8 down vote accepted

Make sure your bosses understand that your preference for C# or C++ is not just a matter of personal taste (well, honestly, it is to some degree, but there are also a lot of economical reasons to use a more modern environment - focus on that).

For example, make an estimation how much longer you will need to solve certain, representative tasks using C instead of C# or C++ - make that estimation on some practical, understandable examples of your business context. I am sure you will find examples where the overhead is only a factor between 1 and 2, and also examples where the oberhead is >10 times.

If you present that to your bosses, and they insist that you should use C, either, then you have to live with that decision.

share|improve this answer
    
Well, I think good estimation will take a lot of time. I'm also not that good with C. –  Heather May 30 '13 at 7:17
    
@Heather: don't make an estimation for your full project - pick some small tasks, make estimations for that and make sure your bosses see that those examples reflect the overall performance for the whole project. –  Doc Brown May 30 '13 at 7:19
    
I afraid that easy estimations is not that good way because that's not big problem to make easy task with C. Earlier or some later I will do it in C. The problems I expect in complex solutions. Specially in debugging stage. –  Heather May 30 '13 at 7:24
    
@Heather: a good estimation will take the expected debugging times into account - or the increased development time you need to keep your C code as easily debuggable as your C# or C++ code. And beeing "not that good in C" will mean your estimations in C must be even higher. –  Doc Brown May 30 '13 at 7:48
2  
@Heather: The point of the estimations is to show your bosses what effect it will have on the schedule if they require you to continue using an unfamiliar language and design methodology. –  Bart van Ingen Schenau May 30 '13 at 8:15
show 2 more comments

Will you be responsible for the code after "delivery" or will maintenance be done (in part or in full) by the department that ordered the project?

If you will be responsible for the full life cycle of the project, I don't see why anyone else should dictate what it's written in, as long as it is delivered on something approaching to schedule, to something approaching specification.

If someone else will be doing the maintenance, in part or in full, writing the project in a language they're comfortable with makes perfect sense.

However, you can probably make a business case for picking another language, if another language is genuinely a better choice (bear in mind that way over half of the cost of a software project will be in the maintenance phase, so any estimate would need to account for getting the people doing the maintenance up to speed in a new language).

share|improve this answer
1  
+1 for accepting that it's not always up to you. Also, if you leave and have used a second language, your replacement now needs to be familiar with both. –  Matt May 30 '13 at 13:19
add comment

Make yourself a factual benefits of C++ and C# over pure C and reduce it to these benefits that actually will appeal to your head of department. Think of what the C programmer who has not programmed for 20 years thinks about the new stuff. Programming was under different constraints back then, computers were slower, compilers were worse and at times only with C you were able to do certain things.

  • He might have had some C++ experience, but your father's c++ was much different from C++ today in terms of compilers, language and reliability.

  • You won't be able to score with the possibility for the OO paradigm, etc. If the dep. head does not easily buy into the merits he will only be convinced by his/her personal experience (and he has to start programming again then)

  • What are his reasons to choose C, basically the usual Java/C#/C++ critique in any corner of the web should give you an idea

    • Platform stability (has been here for decades, will be here for decades)
    • C is the "Lingua France" -- everyone can continue / pick up the project
    • the source code is readable to the department head (inspection, control)
    • Bad experiences with alternative programming language of the 80ies
      • C++ compilers bad, your father's C++ was different (limited)
      • Garbage Collected languages were really slow (Simula, reason for C++ after all, Lisp)
      • Other programming languages were really weird (Cobol, BASIC) arcane (Fortran) or very platform specific.
      • Only natively compiled languages were performant (he might think about BASIC)

Now you can tailor arguments that take his fear of various of these points or show the shifted programming world.

  • C is not the lingua france in the same sense as it used to be. C is sometimes even exotic (not my opinion but I know its the opinion of others)
  • The least of programmers know pure C. Lot of them only know the C++ subset that they believe is C.
  • C++ and C# are children of C syntax-wise.
  • C++ does not loose on performance, C# performance is near-native.
    • Templates are type-safe and "good" macros
    • built in dynamic arrays and such that are smart in memory (See my anecdote)
  • environment of APIs and libraries (boost for C++, the .NET ecosystem)

What is really important is, that you should not think of his thoughts as being incompetent. He might still be a savy C programmer just having a lack of imagination for your problems with C. C is a valid choice for some jobs. You are not writing what kind of software you are working on, but hypothetically if you were to write a cryptographic routine C would be a really valid choice.

Anecdotal Supplement I was in a similar situation once where my supervisor at university was all about C's efficiency. One of his auxiliary programs that I was using as well use a doubly linked list that contained a lot of entries. By a lot I mean a lot. The time I needed to rewrite the program to use a C++ std::vector implementation instead of the LL implementation was already saved in the first run on the next dataset, since std::vector is smartly implemented. You can write such a data structure in C as well but it takes time.

Disclaimer: I am not ranting against C here, I like it. I just cherry-picked arguments for omitting C without list all these that encourage C usage.

share|improve this answer
    
+1: For the basic premise that he has to sell the advantages of other languages. –  mattnz Jun 6 '13 at 5:34
add comment

Embrace it. Become a polyglot.

They are giving you an opportunity to expand your background and experience on their dime, so take it; but be fair about it. Do like @Doc Brown suggested, and give them some comparative estimates so both you and they realize the added challenge this effort will entail.

Your advantage is a lot of the idioms will be familiar, and a lot of the libraries and tools will work just like you are accustomed. The disadvantage is a lot of the things that look the same will work just a bit different, and some of the conveniences you have come to take for granted won't be available, but that is ok.

share|improve this answer
    
It would make sense if we spoke of something worth knowing, not stuff obsolete for two decades just kept running by bosses like that. –  Balog Pal Jun 6 '13 at 5:07
add comment

An alternative is to take the 'skunkworks' approach (assuming you have the means to install the tools yourself). Knock up a quick prototype in C# or C++, this will:

  • Reduce your managers fears of the technology
  • Give you a working prototype much quicker

It should be worthwhile even if your manager then insists its rewritten in C, however there is a very good chance that they will pick working software over something not yet written.

share|improve this answer
    
I agree that this was a solution but it also means disobeying a direct order by the department head. –  wirrbel May 30 '13 at 8:44
    
yes it may not be possible to do this depending on how much autonomy you have and how receptive your boss is to 'prototyping' –  jk. May 30 '13 at 10:24
2  
@wirrbel: never forget to ask the "direct order"s issued in writing, signed. Chances are good you never get it, and if you do, can be put to good use. –  Balog Pal Jun 6 '13 at 10:10
add comment
  • Must developers aware of directions like that?
  • Must developers fight to pick development environment?

Developers like all employees are supposed to do as they are asked to do by the boss. That is the person responsible for the final product and if you are not interested in using teh technology he has chosen, then leave. To use what you want when you have been specifically told what to use is a good way to get fired. The time for changing someone's mind is before the decision is made. No one ever wins all the professional disagreements they will face in a career. You have to learn to accept and live with that.

Perhaps he wants this in C because the rest of his project is in C. To do one part in another language is short-sighted from a management perspective. It makes the overall project harder to manage in time when it is a comglomeration of different techniques and tools prefered by individual developers. I've worked with some of these types of things and after 5-10 years they are virtually unmaintainable.

Personally you don't like C and and it appears you just assumed his reasons were insane as you didn't specify what they were.

Should developers choose what tools they want to use. Categorically no. The tools should be discussed before the start of the project and the developer should have a chance to make his case for what he thinks will be best, but the final choice has to be with management as other things are often part of the consideration such as what the client requested. (see How to deal with the developers refusing to use certain technologies or tools?) And once a decision has been made, you should not continue to whine about it. If you are ever specifically directed to use a particular tool, you must use it whether you agree with it or not as other parts of the project are depending on you using that choice.

share|improve this answer
1  
Are you sure that if the project fails it's the boss will get laid off and not the obeying servants? I somehow saw those bosses just getting the next project while other employees kept rotating. IMO the 'do as told' more applies to a conveyor belt or the military, while in engineering practices Rule #6, 'my only sovereign is reason' should apply. Certainly the boss is welcome to use it to advantage. –  Balog Pal Jun 6 '13 at 5:12
    
Or maybe there was no explanation or client-specific need and he's an ass who only ever learned one language and that should be good enough for everybody. –  Erik Reppen Jun 6 '13 at 6:13
add comment

Well, my saying goes "Anyone has exactly as much power over you as YOU grant them". When you give way to the bully, what you really expect? Think twice.

My experience is that bosses like you describe have their position because of people who chose to obey. Then if the project go south it's blamed on the executor. While if nobody notices or chooses to show the tremendous waste, and the project still manages to vomplete they shine as benefactors.

That all would not happen without volunteer serfs.

If I don't agree with something i speak up. If one wants to prescribe me HOW to do what is really my job and my responsibility, I just say "you do it". Yourself. In your name.

Those who think it's a good way to get you fired are probably right -- but if it actually happens I'd consider it a huge gain. In practice it never happened to me, the boss just backed off realizing the no power situation. And being skilled survivalist rather covered up. (Especially as dong the suboptimal way or even escalating it would likely got him fired or seriously injured.)

Part of your job description (I guess, it sure is of mine) is to keep doing the right thing. Using the most economic way. Ok, make it one economic way. And prevent making huge detours or tracing backwards.

It's established industry wisdom that we're supposed to use sharp tools. That one is quite easy to defend. And if one comes up with gratuitous restrictions, he can be drown by applying the five whys.

On the other hand there may be some team-related factors to consider. But that thread leads far.

Suggestion? That would require many details over the board. But if you happen to work in a "large" company that has legal department you can make a good use of it. Especially if you have position "ombudsman", I suggest to consult right away. They are really helpful, and that part can be done in full secret till you learn all your options and decide what to chase. If you're honestly are after doing your job correctly and act in the best interest of the company, even going against bosses, you're entitled to a deal of protection.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.