# Some thoughts on webdev/career stuff
ISTIN! Hey, good to finally meet you, Liz talks about you all the time.
I'd be glad to offer my take and I hope I can be helpful. I know everyone's opinions differ on this stuff, but I'll try to hit some general points.
Also, some (but hopefully not all) of the stuff I write out will be stuff you already know, I hope it doesn't come across as condescending - I'm not sure how much you do/don't know, so I'll just say it all.
Also, a few of my friends have asked me for tips in the past, so I already have a lot of stuff below saved, I'll just send it all to you :thumbsup:
#### 10 second summary about me cause context or whateva :chicken:
Hey so I'm a front-end developer and I've been working for about 5 years "professionally" but have been coding on/off for fun since 2012ish. Studied compsci at UMD but dropped out :wave: so no degree. At my current job, I work primarily with React and SCSS and some Go (aka Golang). At my last job at Nulab, I worked with VueJS, Go, WordPress, Hugo, and some other random stuff, but I won't go into it unless you're curious - let me know. I've helped to interview like 10+ candidates now, and have helped with both front-end questions and systems design rounds.
#### Overview
There's a ton of questions to answer when trying to get a job in this field:
- what tech do I learn?
- front-end? back-end? or more specialized "software engineer"?
- where should I apply?
- how do I prepare?
- what are interviews like?
- what can i expect in terms of salary?
- etc x 10000
## Here's my take:
A good first step, I think, is to decide whether you want to be a web-based engineer (aka front-end or back-end) or a more specialized engineer (machine learning, game development, app development, "dev ops", network security).
Your decision isn't final (you can always job hop later on) so don't stress too much on this, but I think it'll have a big impact on the rest of what your strategy should be, since the tech stack/salary/preparation looks fairly different for a front-end developer vs a game developer or mobile app dev.
For the rest of this I'll stick to covering front-end and back-end stuff, since I know those better than specialized development positions.
Front-end development has a massive visual component: you have to be mindful of how things behave on the browser's page, how the application's states change between user's clicks and hovers, how designs change based on screen layout. If you like being able to interact with what you're working on, and/or you love visually dealing with color and design, give front-end a try. Primary languages are Javascript, primary technologies are React, Vue, Angular, Node, HTML, SCSS.
Back-end development, at a very very high level, is largely concerned with managing data. You'll have to think about database modeling and normalization, scalability, data types, packaging data to send to the front-end. Common languages are Go, Java, Python, Ruby, and Javascript.
Both front-end and back-end have to think about basic software engineering principles, like DRY, APIs, REST, database considerations (to some level), security, optimization, scalability, testing, error handling, and more.
You know yourself best - I think you should pick one to start. From what Liz tells me, you are in uni for CS, which means that you likely have Java/C++/JS experience. I would Google the following back-end and "full-stack" technologies to see how they suit your interests. I'd also pick up [Go](https://golang.org/), the language by Google, which is on the rise (I used it at both my jobs.)
- [Spring MVC](https://spring.io/), a Java-based web framework that is used at Nulab
- [.NET](https://dotnet.microsoft.com/) a C# and C++ and Visual Basic based framework for building software applications
- [Express](https://expressjs.com/) a back-end Javascript based web framework.
If you want to explore some front-end things, I'd also start here with [React](https://reactjs.org/), the most popular front-end JS Framework, built by Facebook. You can also checkout [VueJS](https://vuejs.org/) which is what Nulab uses for Cacoo.com's dashboard.
There are plentiful jobs for both front-end and back-end roles, so definitely try to figure out which direction you lean towards.
## A big dump of things to do:
I didn't go the usual route of uni -> internship -> job, so I'm unfortunately probably not the best person to help you with internship advice. I imagine internships arent even available right now because of COVID, especially. But, there are still ways to make yourself stand out. I think you should do basically all of the following if you haven't already, regardless of what kind of software job you're pursuing:
- Make a LinkedIn and polish it if you haven't already.
- If you're going for a front-end job, I would absolutely try making your own website (by hand-coding it, not via Squarespace). Write a good bio, and have a "projects" page where you talk about your work, and maybe even write a blog post or two showing how you think through problems. This, to me, is VERY helpful. My site is here: https://kevinoh.me. It's not amazing or anything LOL but it gets the job done.
- Make a Github account, fill it out with a real photo and populate it with projects. The idea is to present a professional image everywhere you can.
- Do at least 1 "big" project in whatever language you can. Find some real problem and solve it to a non-trivial level. You can use an all-in-one framework like Django (Python-based), Angular(JS-based) or Laravel(PHP-based) or Ruby on Rails (Ruby-based) to make it easier. But having one big project is more impressive than having 15 baby projects which is what a lot of bootcamp grads do. Also, make this project ACCESSIBLE to employers. If you have a website, create a dedicated page discussing this project. If you have a LinkedIn, add this project's Github link (or web URL, if you actually launched it) as a "Project" on your LinkedIn profile. Market your work!
- Learn `git` through the CLI, not through a GUI.
- Learn terminal (bash or zsh is way more popular than Windows PowerShell unless you're going for .NET Framework work. I'd learn bash/zsh first.) If you don't have a Mac or Linux machine, I'd run Ubuntu inside of a Virtualbox.
## Resources
- [LOOK AT THIS RESOURCE FOR "ROADMAPS" ON BECOMING A DEVELOPER](https://roadmap.sh/) - It's opinionated but I think it's a good huge overview. Don't get discouraged by this btw, I don't know a ton of stuff on there but I've got a job :joy:
- For learning a new language's syntax, I first go to Codecademy
- For useful courses, check out Udemy.com. I am very serious when I say that the $15 courses I buy here far, far exceeded my college courses in terms of quality and material coverage. It's also more fun and up to date.
- For job boards, look at LinkedIn Jobs, Indeed, and Angel.co.
- I'm the mod of /r/webdev and r/web_design :sunglasses:! Come check us out [here](https://www.reddit.com/r/webdev) and [here](https://www.reddit.com/r/web_design).
- The subreddits above have a discord here: https://discordapp.com/channels/434487340535382016/640667408696344607 come chat! :frog:
- Regarding salary negotiation, [this single blog post](https://www.kalzumeus.com/2012/01/23/salary-negotiation/) is one of the most-linked articles on the topic. When I jumped from Nulab to my current work, I was able to more than double my very first entry-level starting salary and it's because I strictly followed a lot of the basic negotiating strategies outlined in that post. I highly advise giving it a read, even for your first job.
## Last notes
- A word of encouragement - hang in there, I know things can pile up, and COVID can slow your education right now, and it can all seem like a lot but you got this.
- I skimmed the surface of a ton of stuff here. I feel like I'm coming off as one of those buzzfeed "top 10 things you need to do" gurus, but it's only cause I'm trying to condense stuff down. I have plenty more to share: salary success stories, red flags with employers, beginner mistakes, specific advice on which tech to learn and not learn, and so much more, but I don't want to dump a 100-page essay on you out of nowhere so I'll leave it up to you to ask if you are in fact curious.
- This might come off as weird but you've got my word that whatever we talk about stays between us. I won't tell others (Liz / my own girlfriend because why would I / etc). I know career strategy isn't exactly confidential information and it's not some secret, but I just want you to know that just by default, I don't like sharing that information. In other words, if you want to discuss more sensitive stuff like salary requirements, or your personal fears and stresses about this stuff, my door is open. As a mod for around 4 years now, I talked to dozens and dozens of people about this stuff and I know we don't live in a vacuum. Real life gets in the way sometimes, and insofar as it relates to career stuff, I would be happy to hear you out or help.
# I hope this helps. Stay safe out there my friend. :thumbsup: