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've been working for 15 years at a mid-size company (300-400 engineers) doing a mix of embedded software / signal processing / controls engineering / circuit design. And an event has occurred recently that puts my current role in jeopardy. I'm having trouble deciding how to either find a good fit at my current employer, or deciding where to go next.

What I'm wondering is if anyone here relates to the following situation and can recommend a way to leverage or "sell" my strengths to my current (or future) employer:

Most of the projects at my company need what I see as strong "large-scope" synthesis skills: project X needs a software engineer to take responsibility for area Y in that project, and quickly finish the design, debug, test, and documentation needed to make that area a success, overlapping enough with coworkers so the project as a whole is a success. (or replace "software engineer" with "circuit designer" or "controls engineer", it doesn't matter)

That's not my forte, and no matter how hard I try, it always seems to end up in frustration for me.

What I'm very good at, is a mix of the following:

  • problem solving
  • learning
  • mathematical analysis
  • use of a wide skillset (ee/math/signal processing)
  • meticulousness (many projects in our company have been delayed because someone "finished" a task quickly but sloppily, so it had to be redone properly later at a much greater risk/cost)
  • identifying design process bottlenecks that cause delays/risk/etc., and writing software tools to help overcome those bottlenecks. (for example: we had a case recently where our build process for a C++ software project was missing some dependencies on autogenerated .h files, so sometimes when we did incremental builds instead of fresh builds, one of the .cpp files wouldn't be recompiled and would refer to an incorrect structure definition. I already had a software tool that could read debug data in the executable file, so I improved it to detect and report multiple conflicting structure definitions present in the executable. Works like a charm: we now use it as a step in our automated build process, and it quickly helps us identify missing build dependencies should a new one occur.)
  • focusing on synthesis (design/debug/test/documentation) projects of very limited scope
  • acting in a supporting role to take on small issues that have other engineers stuck, freeing them up to continue their work

What I'm bad at is synthesis on moderate to large projects. I'm not a programmer workhorse. I cannot seem to manage the complexity no matter what kind of organizational tools I try to use, and it feels like I'm running into a case of neural stack overflow: if I take on new tasks, some of the old ones slip away from my brain, I forget about important details which take me a long time to re-acquaint, and I just feel overwhelmed. And on top of that, I have RSI in my wrists and one shoulder, which get aggravated with stress.

How can I state my strengths and weaknesses effectively and briefly with my current employer (or prospective employers), so that I can find a good fit where my skills benefit them and I can find a role that I'm satisfied with?

share|improve this question
3  
...well ...I would just tell them exactly what you told us ...my 2 cents –  arnaud Oct 13 '11 at 13:53

1 Answer 1

Large scope is just a carefully managed collection of interrelated smaller scopes. If you find yourself being overwhelmed by scope, it means that you are not carefully organizing your software designs as a collection of smaller components.

Each component can be thought of as a black box; once you get it working correctly, you no longer have to think about its internals. All you have to do is wire it up to other black boxes.

Traditionally, the role of organizing the smaller boxes into a coherent collection of larger boxes is the responsibility of a software architect. Some people don't have the skills or mental mindset to be a software architect; there's nothing wrong with that. That's why companies have people that are good at such things, so that you don't have to do everything yourself.

share|improve this answer

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.