Jump to content

I'm Looking to Get Into Software Engineering, Seek Advice

Hello. First post here.

I'm looking to change career paths and enter a field in computing. I have been considering going into software engineering. I already have an unrelated Bachelors, so I was planning on entering a Masters program in this field.

For those of you with experience and knowledge in this and other related fields, what would you advise that I know before I begin applying? What would be the basic requirements for someone wanting to enter the field of software engineering cold? Assume that I only know the rudiments of computing.

I took a programming course in high school which I enjoyed very much and excelled in. I was planning on going for a computer science degree but, although I was one of the best in my programming class, I could not comprehend my elementary linear algebra course, so I switched majors. Now, I feel confident enough (now that a decade has passed) to try to re-enter that world again.

Thanks for any advice.

Link to comment
Share on other sites

Link to post
Share on other sites

Do you mean you consider going to university? If yes then computer science programming, computer technology and mathematics or system analysis and design may be the courses of your choice.

My personal advice is that even before you start your course, learn and keep studying about boolean logic and of course - maths. When programming you will need to be able to have logical approach to problem solving to write efficient code. The better logical understanding of mathematics/arithmetics you have, the better and efficient code you will write.

Link to comment
Share on other sites

Link to post
Share on other sites

1 hour ago, StuffWriter said:

Hello. First post here.

I'm looking to change career paths and enter a field in computing. I have been considering going into software engineering. I already have an unrelated Bachelors, so I was planning on entering a Masters program in this field.

For those of you with experience and knowledge in this and other related fields, what would you advise that I know before I begin applying? What would be the basic requirements for someone wanting to enter the field of software engineering cold? Assume that I only know the rudiments of computing.

I took a programming course in high school which I enjoyed very much and excelled in. I was planning on going for a computer science degree but, although I was one of the best in my programming class, I could not comprehend my elementary linear algebra course, so I switched majors. Now, I feel confident enough (now that a decade has passed) to try to re-enter that world again.

Thanks for any advice.

Well it depends on what you want to do in the field. For example, if you want to go in the financial sector, health, or be researcher of some kind (although you will prob need a PhD degree at this point) as a software developers, you want high grades, very high grades will benefit you most in getting a job. If you want gaming, than you want to focus on making a game by yourself over fancy grades (not a university project, companies don't really care about school projects, they want PERSONAL projects). They are many other fields than what I just mentioned, such as: Simulation (simulating models, to working on a graphical engine in a simulator of some kind), you have application developer, mobile app developer, web dev, communication, networking, security, hardware drivers and more, all have their preferences on if they prefer personal projects or grades, and this can vary between companies in the same field. And then you need to decide if you want to be software developer itself, or a program manager or a project manager. If you want to be a software developer, do you want to be a back-end dev (doing the core stuff that no one really sees), front dev (mostly GUI work (code wise not designing or drawing), and implement feature that affects the user directly), or full stack dev (both).

And if you wonder, there is no distinction between computer science and software engineers (assuming both taking at College/University), not even salary wise in most companies.

What will hurt you (depending on the field you go), is your Master degree. Companies will see that you have a Master degree, and that is fine (some companies marks it as a requirement, but end up hiring Bachelor mostly, as the requirement is more a preference than anything) except that they will see that you would want/expect a higher wage, and if your resume doesn't backup something to say that you have the experience justifying the increased expected salary, then you won't get the job, or even an interview. I am not sure how to pass this block, to be honest, beside going into a field that might not interest you but favor grades/degree over experience.

And to make you face reality sooner, most (not all) courses in your computer science/software engineer degree will be useless is most fields as a software dev.聽 It must be noted, that in many fields, you need to show on your resume a lot of initiatives. For example, going "I did a C++ class at University" is not good on a resume. But going and say "Well I did that Java and C++ class at University, but I went beyond to highlight my understanding and my passion by making this project in C++/Java, and I also setup a website using Rubby on Rails as a backend for it, and made this mobile app on Android in Java that connects to the site and desktop software, and all I learned this myself" which is super hyper impressive.

In an interview, beside the junior position typical programming question and whiteboard coding questions to see if you know your stuff, and how you think, popular questions on on talking about your personal project or previous work experience challenges you faced, and how did you figure it out.

Once you have have decided on what you do, then you can focus on a strategy on how to get there.

Link to comment
Share on other sites

Link to post
Share on other sites

well, you can go to school, such as a CC or a university setting and get a BS in CS. i'm currently at CC and transferring out to complete said degree. if you choose this, do make sure you can secure an internship

another option is a coding bootcamp. though a lot of them decided on web development track, which may not be for you. there are also iOS / android development tracks, but uncommon.聽

third option is self-teaching. a helpful skill as you'll constantly learn both in and out the job

Link to comment
Share on other sites

Link to post
Share on other sites

4 hours ago, GoodBytes said:

And to make you face reality sooner, most (not all) courses in your computer science/software engineer degree will be useless is most fields as a software dev.聽 It must be noted, that in many fields, you need to show on your resume a lot of initiatives. For example, going "I did a C++ class at University" is not good on a resume. But going and say "Well I did that Java and C++ class at University, but I went beyond to highlight my understanding and my passion by making this project in C++/Java, and I also setup a website using Rubby on Rails as a backend for it, and made this mobile app on Android in Java that connects to the site and desktop software, and all I learned this myself" which is super hyper impressive

This is a great point, thanks. I definitely need to get started on a project, even pro-bono or unsolicited, to gain some hands-on experience. I just feel a little overwhelmed and lost. I'm going through a tutorial on C++ from beginner to advanced. What languages would you recommend would serve someone like me best? I think I'd like to immerse myself in small-to-medium business and help them run more efficiently. I'm not really a gamer.

Thanks again.

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, StuffWriter said:

What languages would you recommend would serve someone like me best? I think I'd like to immerse myself in small-to-medium business and help them run more efficiently. I'm not really a gamer.

It really depends on which field you want to go as a developer.

Link to comment
Share on other sites

Link to post
Share on other sites

3 hours ago, GoodBytes said:

It really depends on which field you want to go as a developer.

I'm really a beginner when it comes to this. Could you elaborate a little if you have time? Thamls

Link to comment
Share on other sites

Link to post
Share on other sites

17 minutes ago, StuffWriter said:

I'm really a beginner when it comes to this. Could you elaborate a little if you have time? Thamls

What I mean, is that, when you'll get your degree, you'll realize that the tech world moves really fast, and if you want a job contentiously, you need to be always at the forefront of technology. Technology can be new programming languages, new type of devices, new things... for example:

Back in 2007-08-09'ish years to recently.. maybe 2015-16, even some say currently, lots of changes happened in the web space. Before we were talking about PHP, HTML, CSS and basic JavaScript to do small things on a page, now we talking about with powerful Java-Script frameworks like Node.JS, PHP is almost off the map, and now its Ruby on Rails.

Another example: A few years back all the rage was VR (and still is some extend, but has diminished), to now AI, every company is jumping on AI.

So you need to find a field to focus on, because you can't do it, so that you can focus on what is changing in the field, so that you learn and always be on top of things, so that you are a generalist in your field so that you can adapt to any market shifts that the company wants to go with, and you don't lose your job. In order words, being a specialist in something, is difficult to keep your job, as very few spaces are needed and are available. Companies likes specialist as it brings expertise on the table, but they prefer a team that can move, be agile, and adapt to changes. And also for your own sake, if the company fails to adapt to doesn't change, and you lose your job, staying up to date and have experience to some level, even personal, will make you find another job quickly.

Hypothetical example: Say, you are mobile app developer for Android. You know Java a lot and C++. Great! Now Microsoft releases its "Surface Phone", one day, running Windows 10, with some adaptive interface, and it out of nowhere it becomes instance success. Now the focus is changed to making Windows 10 UWP apps. That means you need to know C#. If you don't know, the company is shrinking its Android team to get a Windows 10 UWP team up and running. So you may be part of the cuts. If you are top of things, you would have an eye on it, and start learning or refreshing your memory on C#, so that you can raise attention to your managers saying "Hey! I know C#, I know UWP! I can get started as soon as a team is setup!'

Although, a more probably situation is PWA taking over. PWA or Progressive Web Apps, is a new model introduced by Google, and pushed by Google now, and also Microsoft, which allows to make apps, which are web wrappers on steroids. In other words, an app that loads a webpage using the phone include web browser embedded in the app like what any web wrapper app is. The probably for apps that does this, is that it is exactly like opening a website on your phone. But where PWA comes in, and why I said it was on steroid is that now:

  • These apps can now send notifications to the device without having the app open. It can register itself as a push notification service to the phone, and the phone can fetch notifications as a traditional app does.
  • These apps can now run offline, or requires little internet (say for example, you have a messaging PWA app. The messaging "app" is all web based, but on your device, it can have the program interface already downloaded, as well as emojis and other images, and so only text needs to be transferred, unless an image is sent, diminishing data usage, as would a normal app)
  • These apps can access sensor information from your device: GPS, accelerate, compass, and more
  • These apps fall into the same privacy options/restrictions as a normal dedicated app.
  • These apps can use additional OS specific features, for example, in the case of Windows 10 with PWA which the coming up update of the OS will support, the PWA app can now provide Live Tile data if the app is pinned on the Start Menu.

So you can see, that this would make app developer no longer need to make an app specific for Android, another one specific for Microsoft, and one specific for iOS. They can have 1 app that they support, and that one runs on all devices with only some API calls changes example (pseudo code, not actual APIs, just giving the idea for clarification of explanation):

if (OS == "Android O") {
  pos = getLastKnownLocation()
} else if (OS == "Windows 10 1803") {
  getCurrentGPSLocation(pos);
} else if (OS == "iOS 13") {
  pos.x = GetCurrentGPSLocation(X);
  pos.y = GetCurrentGPSLocation(Y);
  pos.z = GetCurrentGPSLocation(Z);
}

You want to go in gaming or say plane simulator and you want to code shaders for awesome visuals and performance, then you need to be on top on things with as strong math background (mostly linear algebra), know and understand the GPU architectures as they come out, know the latest version of OpenGL/Vulkan and DirectX.

I know what I just said, might sound scary...聽 like "OMG I don't know where to start...so many things!!!! How does one expect to know all this!!! GoodBytes, how you know all this!!! This is madness!!!!" Calm down. :D

I know this because on contacts from friends who are in different fields. I have my own which I focus on. You cannot know everything, and you are not expected to. Not a Junior Dev, which will be your roles when you enter the field. The rest will just come with time. If it is your passion, you'll have the energy and time to read up on all this.

You need you pick a field of focus. I don't know what you like. So I can't tell you what to do. I can only be very broad, which is, all by itself scary, when you read all this, but it isn't. The moment you have a focus, then you can declutter everything, trash everything you don't care about, and now you have a few things to stay on top, which is FAR more manageable, and actually easy... you'll go "Hey, let me learn C# by myself when I get home after work or weekend.. I know its close to C++ and Java, so already a good head start... ", and there you go. You just started to focus on something, then you might want to jump on something else after, and read on a new language version from work... say you use C++ at work, well then you'll start reading about C++11, C++14, C++17, C++20, etc that might be coming forward.

So yea, you need to find a focus.

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now