Sign up ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

I'm currently seeking a job. I've got a good CV, but little industry experience, and so my difficulty is that I'm not entirely certain what I'm looking for.

What I've done is a good BSc in Computer Science, and an extensive six-year stint as an all-purpose programmer in a military unit. I won't go into the details, but I've worked on a fairly large number of projects, with huge variety but each of fairly limited scope. I'm also, so far, very much a generalist - I don't have a specific domain I specialize in. What I've enjoyed most has been in the realm of design - the object-oriented design of modules, APIs, project architecture, what-have-ye. As an eventual goal I believe I'd like to see myself as a software architect. What I'd like right now is a position where the OOD features significantly - where I can learn and develop my skills, and eventually practice OOD at a rather larger scale than I have so far.

Obviously, nobody has pure OOD as a job description; that's not what I'm expecting and it's not what I'm looking for. But I'm somewhat unfamiliar with the major sub-fields of the software engineering job market, and I my knowledge of major current technologies is pretty basic. I'm finding it very hard to tell from a job description (and even from speaking to an interviewer) whether the job is likely to have a major design element. So many positions I see could involve lots of OOD, or none at all - or at least, so it seems to this inexperienced job-seeker. It seems to depend so much on the precise nature of the job, and on how precisely they use tech stacks I don't know (and won't even know the names of without serious digging, or accepting the job :P).

What can I look for in a position to find a job with a focus on OOD? Are there particular fields, company-types, or positions I should seek or avoid? Are there questions I can ask at interviews that will help me out?

share|improve this question

closed as off-topic by durron597, GlenH7, Ixrec, MichaelT, Snowman May 28 at 0:29

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

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – durron597, GlenH7, Ixrec, MichaelT, Snowman
If this question can be reworded to fit the rules in the help center, please edit the question.

Like you pointed out, design is just a small part of the SDLC and we as developers have a lot of other responsibilities. OOA&D has always been like a sugar rush for me - fun while it lasts but short-lived. It's difficult to find other developers who understand OOA&D. It is also hard designing systems with others because it is so difficult to explain why your "abstraction" is more beneficial than someone else's. Even when you get your way, you'll grow and in six months regret your decisions. Then you have to live with it. It can take years to gain the trust of your employer to be a designer. – Travis Parks Mar 15 '13 at 15:41
@TravisParks: Understood, and agreed - that's roughly the scope I'm expecting. But my sense is still that some fields and jobs have the potential for that level of design as a part of the job, while others much less so. – Standback Mar 16 '13 at 21:09

4 Answers 4

Look for a company that releases an API for 3rd party developers. Designing APIs is harder than it sounds as you have to try and future-proof it as much as possible. This allows you to make changes to the engine behind the API without requiring those 3rd party developers (customers) to recompile, or even worse refactor, their code (breaking binary or behavioural compatibility is something done as a last resort). You'd use patterns such as PImpl and Factories and Interfaces etc.

share|improve this answer
Pimpl, Factories, Interfaces are all ways to introduce dynamic behavior in statically typed languages -- complex work-arounds for inexpressive languages. – kevin cline Mar 12 '13 at 12:32
Not that complex really. – James Mar 12 '13 at 12:39

It sounds like what you want is to be able to work with other highly skilled developers/architect(s).

It's very difficult (almost impossible) to tell just by a job ad what it will entail - you can only really find that out during the interview(s). So, when you're doing your interview, grill them (nicely!) about what practices they follow, and ask them all about their methodology, practices & technology. Make sure they know their stuff and that you can learn from them.

If it was me I would try to find a company that specialise in software development and take pride in being expert developers.

share|improve this answer

Ask the programmers that you will be working with what their favorite design pattern is and which was the last one that they used.

Most people use the term "Design Patterns" to refer to object-oriented design patterns. Since the op is interested in object-oriented design, this should give him some idea of how much OOD is done there.

share|improve this answer
Your answer would provide more value if you explained how asking about design patterns addresses the OP's concerns. – GlenH7 Mar 13 '13 at 20:28
And if the answer to both is singleton then you run? – Rig Mar 15 '13 at 5:03
@Rig maybe, but singleton is useful despite it's bad rep. – Ray Tayek Mar 15 '13 at 5:06
@RayTayek But if it is their favorite and most frequently used its a sign they are endorsing an antipattern. – Rig Mar 15 '13 at 5:13
@Rig yes, i agree. – Ray Tayek Mar 15 '13 at 5:21

I'd suggest looking primarily at positions that specify some kind of "agile" methodology (e.g. "scrum" or "xp", or just plain-old "agile") -- my experience has been that most people interested in these methodologies are also more deeply interested in object-oriented design principles than others, so you're more likely to find like-minded developers at such companies.

share|improve this answer
I think your correlation makes sense intuitively, but in practice, these phrases are used in job descriptions as meaningless buzzwords. (Not just them... And, many would say, agile-ish phrases are mere buzzwords in other contexts as well }:D ). I've actually asked a lot of friends and contacts if they know workplaces where they feel like Agile (or, really, any other methodology) is in place, and in any way helpful. Only one had anything good to say. Though, to be fair - that one company's definitely got my attention in a good way :D – Standback Mar 14 '13 at 18:13
Many "agile" shops I've met write mostly procedural code. Part of that might be that they wrote in dynamic/scripting languages. While many of these languages support OOP, developers can usually express things more concisely in other ways. Even with statically typed languages, agile shops tend to "evolve" their architectures, driven by use cases and test-ability. Usually these teams have a high-level architect for selecting the tools and breaking out high-level modules. There is little time spent "designing" the modules themselves. Just my experience. – Travis Parks Mar 15 '13 at 15:50

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