A bit of background:

I am one of the two software developers in my company and we are currently working with C++ on embedded machines. My co-worker is working with C since a lot of time and now my boss wanted to improve development using C++. After a traineeship spent in doing web applications my boss asked me to work with these machines without knowing anything of the machine itself.

When i was assumed my boss knew that i only had done things in C++ at school and that i hadn't done anything more personally, but that i wanted to know more about how to develop software on embedded machines.

The source of my problems:

So, as i said, i started fresh like a rose developing software for machines i have never seen before. These have very complex program built in a very complex way that sometimes lacks of the capatibilies of OOP and C++ (since everything was built in C before (which i don't know and my boss knew that)) and i am having lots of difficulties understading how it works, why something was built in a certain way, what kind of idea is behind something etc. etc. etc.

I can't ask the Senior since he did things in C and is not programming this new machine (or anyway he's doing it with C and doesn't want to learn C++) and he is anyway too busy.

However, despite all of these problems i got a grip of the situation and at least started to know how to do some little things, and for my boss this was going ok... until now.

The actual problem:

Now after a month, because of company difficulties i am asked to use the functions of the Architect and not the ones i was doing on my own. He is the man behind the scenes that wrote all the OS of the machine and i cannot contact him since he left the company and can help me just when he is called for "consulence".

The problem is.. that i cannot know what a function does and behave, because the function behaviour is closed into *.a files. When i asked through one of the rare mails i could sent the answer was "the name of the function and the parameters should make things clear, anyway you have lots of documentation".

Actually... this documentation lacks of information (it is like 30% complete to get the idea). And anyway it explains generally what a function does assuming that i know how the OS works, what is the purpose of a certain idea or other random things that i could neither imagine.

I am having a lot of issues in my mind, which one is to leave this company and look for web development (which really caught my interest), but before getting use to strange ideas i just want to ask:

Is it common to work as a developer without having the possility to know vital things in the project?

Actually i am understanding a little here and there. But i am really asked to solve a giant puzzle without knowing how the final figure will look like. Since this is my first job i don't really know what do, maybe this is common in the companies and i am only getting discouraged.

closed as off-topic by Lilienthal, gnat, IDrinkandIKnowThings, AndreiROM, Philip Kendall Feb 16 '16 at 17:19

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Real questions have answers. Rather than explaining why your situation is terrible, or why your boss/coworker makes you unhappy, explain what you want to do to make it better. For more information, click here." – Lilienthal, gnat, IDrinkandIKnowThings, AndreiROM, Philip Kendall
If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    We prefer questions with practical answers here so what are you trying to accomplish? If a random person on the internet says yes or no to this, I doubt that that solves anything for you. – Lilienthal Feb 16 '16 at 15:33
  • I don't really know if it is common to have hidden such amount of things. And i can't ask better. How would you have asked..? I have tried my best asking but i have not much time here at work and i feel really stressed, i am sorry... – MarkWuji Feb 16 '16 at 15:36
  • "These have very complex program built in a very complex way that sometimes lacks of the capatibilies of OOP and C++ (since everything was built in C before " - This sort of technical situation question may be a better fit for Programmers Stackexchange. And you may want to look into how embedded programming is done in C++ (and C) in general. – Brandin Feb 16 '16 at 15:38
  • 2
    @MarkWuji Which site depends on what your question is. If you want to know how to program when you don't have the full picture of the system then that probably belongs on Programmers. If you want to know how to raise the issue with your manager that's more appropriate here. The issue is that you don't specify what you want to do here. "Is it common" is a simply yes/no question where the answer will depend on industry, sector and personal preference. – Lilienthal Feb 16 '16 at 15:58
  • 1
    I get the sense that the real issue is your boss, who is either a) clueless; or b) using you as an experiment, since you apparently know C++/OOP. Now you've perhaps discovered that it doesn't work well for embedded environment. The solution is to explain this to the boss, if possible. – jamesqf Feb 16 '16 at 19:15

It's completely normal for a developer to be asked to perform miracles in this sort of situation - in a bad company.

I've worked co-ops where the owner of the company expected me to outperform Bill Gates, and revolutionize his business. I did my best, but let's be honest, it didn't exactly turn out as they hoped.

The problem is that a lot of managers do not understand software development.

They do not understand how different one language can be from another. They do not understand that certain areas of development are not very closely related to another (web dev vs machine programming, for example). They do not understand the timeline for delivering on a complex software package, the implications of changing the scope of the project - even in a seemingly small way - etc.

These are issues that you are going to run into constantly in the course of your career. You will need to learn how to communicate your concerns, estimate delivery timelines (take the time you think it's gonna take and multiply by 3 is a good rule), and also learn when it's time to GTFO.

This company sounds chaotic, and poorly organized. Furthermore, the person in charge clearly has no idea what the heck they're asking of you, and are providing you with little or no support.

At this point you can get more vocal, state your concerns, and explain what your own plan and timeline for delivering on their demands is.

For example, you could request a few days to simply experiment with the library, and further your knowledge. They may not like it, but you should explain that without further understanding you're not likely to succeed in your tasks.

I would also like to address the comment you've made to Kilisi:

i have no intention studying c++ at home or such

As a developer you will have to constantly keep enhancing your knowledge over the course of your career. Only a very poor developer stagnates.

I'm not saying that you should sacrifice your personal life, however if a bit of extra effort is required in order to be successful in the long term, then don't be so negative about spending a few hours of your own time on learning a new technology.

Ultimately, if web dev is what you want to do, then you should look for a new job.

  • As for the comment i just wanted to explain, is not that i don't really want to study at home, i actually do it of course! But i don't want to do it because i am asked the impossible in my company (because i will feel it like taking some work at home). For the rest you got the point! – MarkWuji Feb 16 '16 at 15:47
  • 1
    @MarkWuji - there are so many different aspect of development. If you don't want to focus on machine development then you should look for a new job before you get "pegged" as a C++ dev. Look for a job in web development while your experience in the field is still pretty recent/relevant. A year or two down the line it might be very difficult to get a web dev job if all you're been doing in the mean time is C++. I had a hard time transitioning after 3 years of back end development because companies would not trust that I was up to date on the latest technologies. – AndreiROM Feb 16 '16 at 16:01

It's not common to give someone new to the industry such tasks unless they were deemed capable. It seems that you have been thrown in the deep end (which is fairly common).

You need to talk to your manager about it. Specifically you need to build your knowledge base with the product just for a start. You can move forwards after that conversation.

  • On the first interview the vice-president and the president told me that i would have been put into some testing to make a first approach at the program. This never happened; what happened is my boss telling me to do things little by little. But now he decided that "it is enough and i can start doing something serious" but i have no intention studying c++ at home or such. So i feel like i am caught in something bigger then me! – MarkWuji Feb 16 '16 at 15:34

Apart from the other answers. Developers are expected to use repositories to store their code. Even if they leave the company they should leave the source to the company that have paid for their work. I belive that recovering the source code will be usefull not only for you but also for the company that can loose this knowhow if it gets forgotten. One they they may need to change one function in a .a file and nobody will be able to change it.

I am assuming this code was from your own company. There are some puntual cases when the source code is not avalaible. That might include:

  1. A non-disclosure agreement or other contractual reasons
  2. Security worries or national security. Especialy if you work for the military or security concious firms.
  3. Employees that destroy all traces or their code. (not only unprofessional but also criminal).
  4. Freelance refuse to release the code when they are not paid.
  5. Sometimes managers may be worried that you code against the implementation instead that the interface. If the implementation of the function changes it will stop working.

When coding against other companies code this situation is quite common and inevitably make things hard. Good code usually doesn't need too much explanation but good code is not the norm and source code is helpful to debug when you do not know what happends. Good luck.

  • The Architect was part of the company until recently as an external company. So you're telling me it's common; well, ok :) but it's also harder, especially in my position! – MarkWuji Feb 16 '16 at 17:08
  • But as far as I have understood they subconcontracted the architect, not the piece of work. That usually means that his/her code should be available for your company although it dependeds on the company policy, contract and national laws. Saving this code from being lost is worth checking. If you find a bug in their functions how do yo you expecte to solve it ? – Shikoba Feb 16 '16 at 17:24
  • I can add it actually have some bugs. But thanks for the advice, i will ask my manager – MarkWuji Feb 16 '16 at 17:26

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