How to become a software engineer?

Hey there,

About me…I’m kind of burnt out from school. I am at the University of California Santa Cruz- GPA @ 3.5- Senior Standing. I have some questions if anyone who has made it to the industry as a SE can please guide me, but first some specs:

  1. I can opt-out to graduate a little bit early with a CS BA with only 3 classes indifference from the CS BS which would save me about 2 quarters and 10-15k worth of debt. I would miss out on Compilers (Operating Systems not offered here anymore) though: /, functional programming, and an elective of my choice. So my question does it matter if it is CS BA or CS BS given that our program is ranked 58 in the nation in terms of CS rankings. Now I know it doesn’t mean squat, and many will say that its what you know… I agree with this, but also I just want validation from someone who is in the industry.

  2. I learned a lot of theory, I have been spread out all over the place putting more emphasis on mathematics and research as a CS BS major. Hence, no time really for other things like projects, programming, and practicing Data Structures & Alg’s. Basically something I learned 2.5 years ago in my under div. courses and don’t remember squat despite getting an A somehow.

  3. Recently, I have some downtime because of easier classes and most of the summer off. I finally put together a portfolio within (three days… ).

Here is the link: https://cristian-c-castillo.now.sh/#/

-Please critique and give me feedback on how to make my portfolio better, if you have time.

The projects I listed on there are just team projects from the Software Engineering Series (3 quarters) here at my school, and I would rather display something than nothing. I did learn a lot from this series like Scrum, planning poker, working with a team, communicating effectively, Github, code reviews, merge/pulls, testing, documentation, design, presenting, etc…However, I deem the quality mediocre at best since these web applications (the projects) were built with various students, including myself who had little to no experience in web-dev stuff.

  1. However, from 3) I got a boost of motivation and have been practicing JavaScript more than any other language as of recent; building and learning things on my own with React.js but more of the learning phase (recalling syntax from memory) and revisiting FreeCodeCamp’s JS language tutorial (80% done), then moving onto ES6, Data Struct, etc. while working on the React.js library to brush up on programming and reinforcing what I learn with React.js. Yadadaya trying to build responsive 1 million dollar projects for my future potential employer to see… And not just copy and paste some tutorial but actually learn the stuff, and put a spin on some of those tutorials. All while being able to explain every moving piece.

My ?:

  • I didn’t realize how rusty I was at the programming and my Data Structures & Algorithm skills suck now. How do I get good or build-up to it (getting good) as I lose motivation rather quickly in terms of Algorithms? I am no longer the young lad that could stay up 3 nights in a row putting together a doubly-linked list with an abstract cursor on it, passing all edge conditions. Let alone I am 31 and tired from all the mental abuse that Math has given : /. I just want to focus on programming, projects, and learning things that actually interest me, hence React.js but keep getting pulled away with school. Oh btw make some money $.

So how do I land my first internship?
Does every company require Data Structures & Algorithms to get hired?
How do you improve on programming specifically Data Structures & Algorithms?

Work with your university’s career services. Your school probably has career fairs every semester (I know things are crazy now, but your school and recruiters will work on figuring something out if the campus is closed). They may even have a second career fair for STEM students. They will also have a history of hosting recruiters who are looking for prospective interns as well as prospective hires. The people who work in the department can tell you when these events are, help you prepare, review your resume, practice interview, and even put you directly in touch with recruiters. It’s common for companies to select their summer interns in the winter or early spring.

As I’m sure you know, programming really is all about data structures and algorithms. I’m guessing that you mean the material often covered in those courses (hash tables, tree traversals, etc). For better or worse those are extremely standard “technical interview” questions.

You practice. For practicing specifically the stuff that you can expect to be asked about, Cracking the Coding Interview is the most recommended resource on the subject. I suggest giving yourself a couple of months to work through it.

3 Likes

Thank you for the speedy response. This was my worst fear… Due to the pandemic things have been cancelled. I ll keep a look out on the virtual career fair meetings, and as far as the Data structures & Algorithms, yes I know of “The” bible you speak of… Time to buy a hard copy and put butt in chair this whole summer : ) ! I take it the CS BA or CS BS doesn’t matter and if thats the case I probably will just milk a quarter (that I pay for and grind it out along with Leet I suppose) and just devote my soul to this book. Once again, thank you Ariel Leslie for your time.

I can’t speak with any authority on BS/BA. BS is going to carry some amount more weight, I would assume, but TBH I wouldn’t be surprised if most recruiters don’t notice. Compilers, Operating Systems, and Functional Programming are all valuable courses, but not likely to be make-or-break unless you’re interested in specific fields.

Beyond keeping an eye out for virtual events, I cannot suggest strongly enough the value of personally contacting the career services/career center person. Like a lot of the university experience, there is a lot of value there, but you have to show up to ask for it and make the most of it. Finding yourself on a first name basis with the person running that office is a good sign.

I was also a non-traditional (“mature”) student and one of the benefits of that was that I didn’t dither around like the insecure 20 year olds. I was goal oriented, focused, and knew what I was there for. For the next few months you have free access to an experienced professional in job-getting; milk it for all it’s worth!

2 Likes

Thank you once again for such valuable feedback. I am truly hungry right now. I will contact my career center personally and get some dates hopefully. We also have a handshake website which connects us to companies and past alumni I have some free time coming up and will make the most of it. If I don’t start moving nothing will happen for me. I’ll keep you posted on the progress. As of now I will continue the grind! Have a good day.

1 Like

If you do miss out that (and the massive financial outlay you’d avoid if so is obviously extremely attractive & probably sensible), you should do something to understand FP [in particular]*. It’s not really a minor thing. Critically for web development, JS is heavily influenced by Scheme, lends itself very well to some FP techniques, and modern frameworks (React in particular), are heavily influenced by FP principles rather than OO. Virtually all newer languages exhibit or have absorbed FP traits to some extent. Of the popular ones that you may encounter: Swift (similar in many ways to OCaml), Kotlin, C# (has been absorbing Haskell features for a while), Rust (highly imperative but using a lot of FP idioms).

For self-study, I would strongly advise doing this course, it’s phenomenal. It will not be time wasted. It’s available direct on the University of Washington site as a series of screencasts (use the video links):

https://courses.cs.washington.edu/courses/cse341/19sp/

And on Coursera:



First part is the most important – teaches functional programming concepts using Standard ML as the language. Second part is building a simple programming language using Racket. Third part compares FP approaches with OO approaches using Ruby.


* I am really wishing, several years into being a developer, that I had at least a basic introduction to compilers. Not to build a compiler, but because of parsing, which IMO starts to become incredibly useful the more time you spend as a developer. I’m learning techniques, but it’s slow going without that basic taught introduction. YMMV

3 Likes