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

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I obtained a BSc CS & Applied Mathematics November last year and started working as a Software Developer in December.

I'm currently working for a very solid company and I'm part of a small core development team, developing big software.

I absolutely love software development and would someday like to become a (Senior) Software Engineer, Systems Analyst or Solutions Architect (not 100% sure about all the senior titles).

My questions is - what experience do I need to obtain to achieve this?

What is the necessary/desired career path?

What type of courses do I need to attend to gain the needed knowledge?

share|improve this question

closed as not constructive by gnat, GrandmasterB, Yusubov, StuperUser, ChrisF Jul 17 '12 at 10:39

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

Perhaps you could try the new workplace exchange? – Onno Jul 17 '12 at 7:55
Courses are like driving lessons. The experience comes afterwards. – user1249 Jul 17 '12 at 8:15
It is better to define your technology stack first and then get specialized in it. – Yusubov Jul 17 '12 at 9:59
The Force... :D – Songo Jul 17 '12 at 12:56
up vote 6 down vote accepted

What is needed to become a Software Engineer?

The only things you really need are:

  • A logical mind.
  • Ability to learn.
  • Ability to solve problems.
  • Ability to communicate effectively with others [EDIT]

And a bonus:

  • Creativity.
share|improve this answer
I would also add to it that you need to be able to deal with people. The hard part of software engineering usually involves the human factor :) – Bushibytes Jul 17 '12 at 9:05
@Bushibytes :) good point, hadn't thought of that – Darknight Jul 17 '12 at 9:06
@Bushibytes definitely, communication skills need to be on the main list – RYFN Jul 17 '12 at 11:52
now added to the list :) – Darknight Jul 17 '12 at 12:58

The most important ability for a software engineer, i think, is abstraction. Like Hoare says it's the most powerful tool to human intellect. A good software engineer should be able to decide what is design and what is architecture and know how to deal with both. He should be able to decompose complex facts. The software engineer also understands the requirements gathered by the Requirements Engineer/System Analyst. The software engineer should understand that developing an alorithm isn't software architecture. He should think in concerns.

To say it shortly fundamental knowledges are:

  1. abstraction, abstraction, abstraction, decomposition, building views, reducing complexity
  2. process models (scrum, RUP and so on)
  3. system architecture frameworks (EJB and so on)
  4. architecture frameworks (IEEE 1471 and so on)
  5. the importance of modeling and using the models, understanding them not only as documentation
  6. the ability to differentiate between architecture and design
  7. the ability to deal with customers concerns
  8. the knowledge what programmers are doing and how they solve problems

Sure there is further more too mention, but this are the facts that are important in my subjective view.

share|improve this answer

Short Answer: All you need is probably passion and love to develop solutions to the problems!

The titles like sr., mid, junior is only given to identify your relative experience. Thus they are usually NOT the merit to know how good is one.

If you have interest in emerging frameworks/technologies and software development methodologies (MVC, Ruby on Rails, TDD, WCF, ASP.NET Web API, etc. ) and get really happy/satisfied when solving problems (by developing software) then you will become a good Software Developer.

share|improve this answer

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