I'm looking for some advice on the best path to take to shift careers from database development to software engineering.
I have an undergrad in Mathematics from one of the better engineering/computer science schools in NA. I was lucky to have taken a few computer science courses given me a bit of a foundation in CS theory (java programming, elementary algorithms, data structures).
Since graduating I've been working as a database developer (6 yrs now), specifically in data warehousing doing lots of PL/SQL coding for back-end ETL processing and occasionally front-end web/database applications. For a while now I've been finding that I'm far more interested in the work involving building database driven applications and now I want to extend and apply this passion to more traditional areas of software development.
I've done research online to come up with some first action steps to catch up on theory and start to practice coding.
Study following texts.
- Code: The Hidden Language of Computer Hardware and Software
- The C Programming Language
- The Structure and Interpretation of Computer Programs
Simultaneously work through Python coding tutorials and look into solving as many online challenges, problems using Python.
A few months down the line begin serious study of algorithms via Introduction to Algorithms (Cormen) & MIT 6.006 opencourse. Need to brush up on some discrete math but I think prior exposure to advanced mathematics and basic algorithms from my undergrad will come in handy.
So at moment I could use some direction on following:
Does the above learning plan look ok? Any other readings, concepts, practice to consider optimizing my time and opportunities?
I'm in a dilemma in that I want to leave my current job asap as I'm not gaining anything that will help move me towards software development (not to mention how boring, unchallenging it is), yet I don't have the practical experience on the resume to apply for programming positions. What to do? Ideally I would like to get a position which I can leverage my background in databases/data warehousing, like data services engineering (Amazon for example has several positions in this regard), and transition from there but even those need some work experience in java/c++. If I pick up minor open source work on the side in the following months, how far can that get me in being considered for development positions? Any other paths I should consider?