| Hello HN, I'm trying to switch careers from systems integration (SI) consulting to software engineering, but I have a lot of questions and would greatly value any advice I can get from current software engineers. Here's my situation: I graduated from college (undergrad) fairly recently from a top 10 undergraduate business program (which also happens to rank in the top 10 for engineering). At college, I majored in business, but also minored in computer science through the school of engineering. This major-minor combination meant that my coursework involved core business classes with many business electives, as well as core computer science classes with an upper-level CS elective. I performed a lot better in the CS classes because I found the material much more interesting and challenging, and I often scored well above the curve on CS exams - even in the "weeder" classes. Looking back, I should have switched my major to CS. As a result of my undergraduate education, I have a pretty solid foundation in computer science - OOP, algorithms, data structures, memory management etc... During college, I also ran a web development business and earned a reasonable amount of money to cover my basic living expenses, so I'm very familiar web application development. This business also involved working part-time at a web technology firm creating Flash web applications (back in 2007), and working with advertising agencies to implement concepts from designers. Since college, I have worked for about 1.5 years at a large SI consulting firm. I chose to work at this firm because I thought SI consulting would be a good compromise between business and computer science. But I was wrong - my passion lies in coding and solving difficult technical problems. Many of my co-workers at this firm majored in some sort of engineering, but they work here because they didn't want an engineering job. I'm the opposite - I want an engineering job. In consulting, it's typical for consultants to go out to dinner or to the bar after work. Instead of doing this, I come back to my hotel room (as soon as I can get out of work after an 11-hour day - 6:30ish) and build Ruby on Rails / AJAX web applications. I read HN religiously and enjoy learning about new technologies and languages, whereas the consultants I work with seem allergic to code. I don't suck at consulting, either - I was rated among the top 10% of consultants at my level within the firm, but that doesn't stop me from disliking it. I've tried to "stick it out" in my current job, but I don't see a future for myself at this firm. I don't aspire to become a manager or executive, and I don't enjoy my work. Nevertheless, I understand CS very well and I've researched CS interview questions. I'm confident I can pass a software engineering interview using pseudocode (I could probably manage in a coding language, but I don't code in my current day job, so there would be lots of syntax errors). Furthermore, since I work on software implementation projects, I have a good understanding of the software development lifecycle (requirements traceability, testing, functional designs, etc...). Here are my questions: 1.) How do I go about approaching companies to obtain a software engineering job? Is a CS minor going to put me at a significant disadvantage compared to the CS majors, given my experience? 2.) I apologize if this sounds arrogant or naieve (given my situation), but I want to avoid becoming a "code-mokey" and work somewhere with opportunities for advancement. How do I avoid "dead-end" coding jobs? (or do they even exist?) Please set me straight if I'm completely off-base here. Thanks for reading, and thank you in advance for your advice. |
1)Describe an algorythm? Then describe it within it's implementation.
2)Write a function with two parameters that returns a string in a reverse fashion.
3) Write a SQL queries? Use inner, outer, and all other joins when needed depending on interview requirement of the question.
3)Describe dependency injection?
I think for the most part interview question's can either can go one way or another. They will either slam you with conceptual CS stuff or actually have you write code. I would look at as many question's as possible. Then I would literally ingrain the basics of coding(In order to implement anything they ask you in the interview on the spot). Things like loops, structures, stacks, recursion, and everything else. Learn them and understand how to implement them at their most basic level.
Let them know that you are addicted to programming and learning new technologies.
Also get involved in as much open source projects you can handle.
Focus on the fact that you understand business process and how that relates to software dev.
Mock up some demo stuff or have a site that contains your portfolio. (Have demo of something cool for each language you know.) Take you laptop to the interview and show them your work and explain the abstraction and logic.
Focus on any projects you have done in the interview even if you did not get paid for them.
Find a solid mentor that has been in the industry for 10 plus years.. learn everything from them.
Put them as a reference.