• Software Engineering?
    21 replies, posted
I couldn't find a more suitable place to post this thread, so I thought this might be a good place. I'm 16 years old and I've been interested in developing software for a number of years, I have knowledge of HTML, CSS, PHP and Python and currently learning C++. I want to pursue a career in Software Engineering and I'm going to be taking, Mathematics and Physics for my senior years but I'm still debating whether to take Chemistry, Biology or another computer subject. The pre-requisites of a Software Engineer in the universities I plan on going to is any of the three sciences (Chem, Bio or Physics) but after further researching, it seems that Physics is the most required science for Software Engineer, but I also want to take another science in order to give myself an advantage in university. Is Chemistry really needed for a Software Engineer? Is it one of the main learning focuses alongside Physics? Or should I give myself more knowledge of computing and take a computer subject? Or just go for Biology a subject I enjoy more and is better at to boost my overall end-score (ATAR). What would you guys recommend? (I'm good at Chemistry, but I'm better at Biology and I enjoy it more than Chemistry)
I plan to go into SW engineering a year from now at the University of Waterloo in Ontario, Canada. They're pretty renowned and they have both Chemistry and Physics as [i]requisites[/i], so if you're able to fit Chemistry into your schedule I would take it. I'm not exactly sure why it's there, as I feel it has more application for things involving hardware, but in any case even if it isn't a requisite at the university you plan on going to, it's still an asset. You should theoretically be able to fit all three sciences into a semester school if you're not doing any sort of high school coop correct?
Most of the schools I got accepted into didn't require chemistry or anything for se/cs. A lot of calc though.
Every school is different. You need to look up the program entrance requirement yourself from the website of your desired universities.
I recommend a coding 'boot camp' over university.
You could know all the programming languages under the sun and not be a worthy candidate for interview at a software development house. What people don't appreciate is that the majority of the work behind designing and engineering software for all platforms - not just PC - requires a lot of planning and hard work before any lines of code are even written. This is not just market research and flow charts - I'm talking about [URL="http://en.wikipedia.org/wiki/Unified_Modeling_Language"]UML diagrams[/URL], [URL="http://en.wikipedia.org/wiki/Software_development_process"]software design methodologies[/URL] and [URL="http://en.wikipedia.org/wiki/Use_case"]use case captures[/URL], just to name a few elements a good software engineer should be familiar with. You could wander into interview knowing Java, C/C++, .NET and every open source language that is 'trendy' at the moment and another guy could wonder in with solid .NET experience and experience in the above and I can almost guarantee he will get the job. Unless you plan to go freelance I strongly suggest you read up what the life of a software engineer consists of pre-programming - as writing the damn thing is the easy part. You are hardly ever going to work solo on a development if you get employed by a software development house - you are going to work in a team of several other people and at somepoint you are going to have to hand that project off to someone. They must know your logic and designs of the application without looking at any of your code. Designing the software on paper is the best way to do this - just like building a car, a boat or a plane has blueprints or schematics for mechanics working on it to familiarise themselves with. You cannot just wonder into a software engineering job and expect to excel because you know lots of programming languages. If you go away or have to have time off then another engineer has to take your place and he must be able to jump right into the drivers seat. That is the mark of a good programmer and a good program - not fancy programming languages, techniques or any of that crap. Clear, efficient programming. This will also pay dividends when it is time for you to patch or update your own program. If you get to terms with the likes of [URL="http://en.wikipedia.org/wiki/Cohesion_(computer_science)"]cohesion[/URL], [URL="http://en.wikipedia.org/wiki/Coupling_(computer_programming)"]coupling[/URL] and [URL="http://en.wikipedia.org/wiki/Software_prototyping"]software prototyping[/URL] you're going to have a much sleeker and more streamlined program. Fact - there is no disputing it. I was once the kind of programmer that just threw down his ideas into a program and ran it - it worked, but what when I came to update or modify it three, four, five months down the line? Like fuck could I - I had long forgotten about it and had seen many for-loops since then so I spent most of my time reacquainting me with the application. Even then due to sloppy programming techniques I found changing classes, objects, functions etc broke other parts of the program - I fixed one bug, and two more popped up! That would not have happened if I had properly designed it instead of diving head first into the project. In short - sure, learn as many languages as you can, but as a priority familiarise yourself with how the professionals do it. Set yourself a target project to work on over a few weeks. Produce the diagrams, the design and then write it over the course of a few days in any language you choose. Do this a few times and you'll build up a portfolio and the industry recognised paperwork to go with it. This will pay dividends when it comes to interview. [B]As far as sciences go, none will help hugely - physics and chemistry will probably give you a marginal advantage but it is negligible in terms of practical experience. As long as you have a logical and analytical mind (which I guess you do, as you're already writing stuff) then you'll be fine. I say chemistry over biology as there are formulas and equations here which will give you a headstart when thinking about that kind of thing in software and allow you to create organic, sensible programs.[/B] This is my experience talking - having developed applications for clients as a software developer in recent years. It seems like the wrong thing to be focusing on but believe me it is not - design principles are just as important if not more so than actual programming skill. No doubt you're present experience is a huge, huge bonus. But to be really exceptional I'd advice you to lookup the stuff in this post. [editline]14th August 2013[/editline] [QUOTE=Shadaez;41828029]I recommend a coding 'boot camp' over university.[/QUOTE] I dont. My university taught us basic programming fundamentals in the first year and advanced techniques in the second. My degree isn't even software design based - a "Computer Science" degree however would be just up OPs street.
[QUOTE=Shadaez;41828029]I recommend a coding 'boot camp' over university.[/QUOTE] I recommend getting a fucking degree because going to university offers you a [I]lot[/I] more than education. [QUOTE=runtime;41840327]I'm talking about UML diagrams, software design methodologies and use case captures, just to name a few elements a good software engineer should be familiar with[/QUOTE] Now I'm not disagreeing with you all, but understand that this is fluff. It is a visual representation of knowledge of software architecture and the "engineering" part of software engineering. It's never [I]necessary[/I] to diagram out a program, even at the enterprise level, but if you are unable to create a diagram on the fly, your program is either poorly architectured or you're a bad software engineer (or you just don't know it, but we're assuming you do). Just a pet peeve of mine. I am not a diagrammer unless by request, and with 2+ years at a 200+ employee dev shop, I have had to give a lot of people the rundown on the architecture of our software.
[QUOTE=Protocol7;41840415]I recommend getting a fucking degree because going to university offers you a [I]lot[/I] more than education. Now I'm not disagreeing with you all, but understand that this is fluff. It is a visual representation of knowledge of software architecture and the "engineering" part of software engineering. It's never [I]necessary[/I] to diagram out a program, even at the enterprise level, but if you are unable to create a diagram on the fly, your program is either poorly architectured or you're a bad software engineer (or you just don't know it, but we're assuming you do). Just a pet peeve of mine. I am not a diagrammer unless by request, and with 2+ years at a 200+ employee dev shop, I have had to give a lot of people the rundown on the architecture of our software.[/QUOTE] Agree with you. As a starter to software engineering I think it best for him to understand there are things that a software engineer must know. UML and the like is all a bitch I know - I hate it, you hate it, every programmer hates it. But it is something I feel newbies to the industry should know how to use. They can't jump strai Use case captures I think are extremely important when dealing with clients - I can't imagine any piece of software being developed without at least some consultancy period behind it.
[QUOTE=runtime;41840327] I dont. My university taught us basic programming fundamentals in the first year and advanced techniques in the second. My degree isn't even software design based - a "Computer Science" degree however would be just up OPs street.[/QUOTE] I have to warn anyone who is intending to go into computer science that you need to be ready to learn a lot of university level math courses. I am a currently a computer science student, and I have to take 7 math course within the first two years as part of my curriculum.
[QUOTE=B!N4RY;41840697]I have to warn anyone who is intending to go into computer science that you need to be ready to learn a lot of university level math courses. I am a currently a computer science student, and I have to take 7 math course within the first two years as part of my curriculum.[/QUOTE] what the hell - that's ridiculous. I know people who have done a compsci course and they did the same curriculum as I did for the first two years give/take a few module differences. we had like two maths-based courses - and both of them were on analytical analysis and modelling. How to think logically, in other words. I think it depends largely on what university you take your course at. That sounds hugely overkill to me. Most universities offer a course breakdown year-by-year, so I'd suggest taking a good hard look at that before signing the dotted line.
[QUOTE=runtime;41840327]You could know all the programming languages under the sun and not be a worthy candidate for interview at a software development house. What people don't appreciate is that the majority of the work behind designing and engineering software for all platforms - not just PC - requires a lot of planning and hard work before any lines of code are even written. This is not just market research and flow charts - I'm talking about [URL="http://en.wikipedia.org/wiki/Unified_Modeling_Language"]UML diagrams[/URL], [URL="http://en.wikipedia.org/wiki/Software_development_process"]software design methodologies[/URL] and [URL="http://en.wikipedia.org/wiki/Use_case"]use case captures[/URL], just to name a few elements a good software engineer should be familiar with. You could wander into interview knowing Java, C/C++, .NET and every open source language that is 'trendy' at the moment and another guy could wonder in with solid .NET experience and experience in the above and I can almost guarantee he will get the job. Unless you plan to go freelance I strongly suggest you read up what the life of a software engineer consists of pre-programming - as writing the damn thing is the easy part. You are hardly ever going to work solo on a development if you get employed by a software development house - you are going to work in a team of several other people and at somepoint you are going to have to hand that project off to someone. They must know your logic and designs of the application without looking at any of your code. Designing the software on paper is the best way to do this - just like building a car, a boat or a plane has blueprints or schematics for mechanics working on it to familiarise themselves with. You cannot just wonder into a software engineering job and expect to excel because you know lots of programming languages. If you go away or have to have time off then another engineer has to take your place and he must be able to jump right into the drivers seat. That is the mark of a good programmer and a good program - not fancy programming languages, techniques or any of that crap. Clear, efficient programming. This will also pay dividends when it is time for you to patch or update your own program. If you get to terms with the likes of [URL="http://en.wikipedia.org/wiki/Cohesion_(computer_science)"]cohesion[/URL], [URL="http://en.wikipedia.org/wiki/Coupling_(computer_programming)"]coupling[/URL] and [URL="http://en.wikipedia.org/wiki/Software_prototyping"]software prototyping[/URL] you're going to have a much sleeker and more streamlined program. Fact - there is no disputing it. I was once the kind of programmer that just threw down his ideas into a program and ran it - it worked, but what when I came to update or modify it three, four, five months down the line? Like fuck could I - I had long forgotten about it and had seen many for-loops since then so I spent most of my time reacquainting me with the application. Even then due to sloppy programming techniques I found changing classes, objects, functions etc broke other parts of the program - I fixed one bug, and two more popped up! That would not have happened if I had properly designed it instead of diving head first into the project. In short - sure, learn as many languages as you can, but as a priority familiarise yourself with how the professionals do it. Set yourself a target project to work on over a few weeks. Produce the diagrams, the design and then write it over the course of a few days in any language you choose. Do this a few times and you'll build up a portfolio and the industry recognised paperwork to go with it. This will pay dividends when it comes to interview. [B]As far as sciences go, none will help hugely - physics and chemistry will probably give you a marginal advantage but it is negligible in terms of practical experience. As long as you have a logical and analytical mind (which I guess you do, as you're already writing stuff) then you'll be fine. I say chemistry over biology as there are formulas and equations here which will give you a headstart when thinking about that kind of thing in software and allow you to create organic, sensible programs.[/B] This is my experience talking - having developed applications for clients as a software developer in recent years. It seems like the wrong thing to be focusing on but believe me it is not - design principles are just as important if not more so than actual programming skill. No doubt you're present experience is a huge, huge bonus. But to be really exceptional I'd advice you to lookup the stuff in this post. [/QUOTE] I don't think you can vouch for every company. I work at a fortune 500 company and the software engineers and computer science people don't do much, if any of the pre coding. The majority of the document that the se/cs's do is done throughout the project, while you code. Meaning you get a method or two done, you go document them. Yes, there are a lot of uml's and other pre-coding stuff, but there is a separate group that specifically works on that. I totally agree on the sciences part, all the chem/physics I took is useless to me, hell the only other skill I wish I knew was german because this goddamn business software we use was written in german and all the services are german shorthand. Annoying. This is also me talking out of personal experience.
[QUOTE=QuikKill;41841687]I don't think you can vouch for every company. I work at a fortune 500 company and the software engineers and computer science people don't do much, if any of the pre coding. The majority of the document that the se/cs's do is done throughout the project, while you code. Meaning you get a method or two done, you go document them. Yes, there are a lot of uml's and other pre-coding stuff, but there is a separate group that specifically works on that. I totally agree on the sciences part, all the chem/physics I took is useless to me, hell the only other skill I wish I knew was german because this goddamn business software we use was written in german and all the services are german shorthand. Annoying. This is also me talking out of personal experience.[/QUOTE] Well then I guess every software development house is different. A 150+ company I worked with have its software engineers do all of the prelim stuff as well as write the program and provide post-deployment support.
Granted my workplace is the most relaxed place I've worked in, which is awesome for a company with 13224 employees.
[QUOTE=QuikKill;41846599]Granted my workplace is the most relaxed place I've worked in, which is awesome for a company with 13224 employees.[/QUOTE] green with envy.
266,000 employees for my company. ;-)
Does anybody actually use UML - at uni they big it up a lot but I've never seen/heard of it being used.
Some probably do, but it shouldn't be the responsibility of the developer - rather, the responsibility of the product team that delivers requirements to the developer. It's more of the concept of "I can actually use UML to demonstrate I know what the fuck I'm doing" than anything.
[QUOTE=Protocol7;41840415]I recommend getting a fucking degree because going to university offers you a [I]lot[/I] more than education.[/QUOTE] I have seen this being said by a lot of people, but as a student one year from university, I have never really got exactly what they are talking about. Is it something like building important relationships with people, or what exactly are you talking about?
[QUOTE=thf;41860283]I have seen this being said by a lot of people, but as a student one year from university, I have never really got exactly what they are talking about. Is it something like building important relationships with people, or what exactly are you talking about?[/QUOTE] The most immediately obvious benefit is that employers respect a degree far more than they respect, well, any other method of learning how to program. The big thing about going off to university is socialization. A lot of people prioritize it over their classwork (and I'm horribly guilty about failing classes because I was too busy doing shit with friends) but socialization is kind of a necessary skill to being a functioning adult. There are often a lot of opportunities, too. My university hosts a lot of career fairs and internship opportunities, and they're honestly very great ways to reach out to businesses and get a job in the field you're interested in (and the sooner you are acclimated to a business environment, the better.) There are little things, for example I get deeply discounted public transportation year round for $77 a semester. You have access to a lot of resources for counseling, tutoring, what have you. It's a multitool in ways you probably haven't experienced.
[QUOTE=Protocol7;41860353]The most immediately obvious benefit is that employers respect a degree far more than they respect, well, any other method of learning how to program. The big thing about going off to university is socialization. A lot of people prioritize it over their classwork (and I'm horribly guilty about failing classes because I was too busy doing shit with friends) but socialization is kind of a necessary skill to being a functioning adult. There are often a lot of opportunities, too. My university hosts a lot of career fairs and internship opportunities, and they're honestly very great ways to reach out to businesses and get a job in the field you're interested in (and the sooner you are acclimated to a business environment, the better.) There are little things, for example I get deeply discounted public transportation year round for $77 a semester. You have access to a lot of resources for counseling, tutoring, what have you. It's a multitool in ways you probably haven't experienced.[/QUOTE] Socialization, you're right. That's actually one of the things I'm looking forward to with university, the ability to easier meet new people and socialize.
Degrees are great, but if you graduate with just a degree, best of luck to ya. Companies want a degree AND experience.
[QUOTE=QuikKill;41860945]Degrees are great, but if you graduate with just a degree, best of luck to ya. Companies want a degree AND experience.[/QUOTE] That's where the communication part comes in... internships during college are absolutely the best thing you can do to get your foot in the door.
Sorry, you need to Log In to post a reply to this thread.