So You Want to Code a Thing for Money – Careers in Software Engineering



So You Want to Code a Thing for Money – Careers in Software Engineering

0 0


careerdayslides2015

Mills HS career day 2015

On Github llkats / careerdayslides2015

So You Want to Code a Thing for Money

Careers in Software Engineering

By Lydia Katsamberis / @llkats

who am I?

JavaScript Engineer at craigslist ☮

qualifications

HS Degree

Bachelor's Degree

Master's or PhD

Accelerators

HS Degree many of my friends and colleagues dropped out of or didn't even attend college - can't really recommend this because 1) they had been programming since they were little and already had established their reputations by releasing open-source software 2) they missed out on some stuff you only learn in college: how to study; how to collaborate and work in teams; how to communicate - yes they don't have debt, but they started really young. it's harder to start later and get going without a degree Bachelors the rest of my friends/colleages have at least a bachelor's degree, which is probably the best and easiest way to get your foot in the door. many big name companies like Google, Apple, and Facebook require a degree to even apply. master's/phd Some people further their studies of CS with a master's degree, which can help you go into research or academia. I personally came to programming late -- I didn't start until grad school. I graduated with a BA in English at the very start of the recession in 2007, and used my master's to change careers into programming. accelerators There are programs called accelerators that teach you to code in a matter of months. I'm a little suspicious of them because they are not accedited education programs and can be really expensive and time-consuming, while you don't get the benefit of student loans. Many are for-profit. However, I know people who successfully completed the programs and got jobs after, so they are another avenue as well. there are a lot of different paths once you've gotten your background in CS; server-side programming, front-end programming ("web development"), systems, data science, networking, IT, etc. I settled on web development, which means I mostly write websites using HTML, CSS, and JavaScript. Web dev wasn't really taught in my CS degree, but I used the foundations of knowledge that I acquired in my programming courses to teach myself what I needed to know to create webpages.

skills for programming

  • things you need
    • a capacity for critical, logical thought
    • detail-oriented, because spelling and punctuation really matters
    • a capacity for being really, really frustrated and ability to hunt down bugs
    • good writing and communication skills for working with others and documenting your code
  • things you don't
    • advanced calculus/algebra skills!!!
programming is a discipline all its own Things you don’t need calculus skills! unless you’re doing crazy 3D animation, you don’t really need to be fantastic at math. Programming is all about logic, so discrete mathematics come more into play -- sets, Boolean logic, etc.

skills for a successful career

contrary to popular belief, people skills are super important

software is written collaboratively and teamwork is essential

contribution, tutoring, and mentoring are also very important

Skills! Yes, you need to have good people skills. The stereotype of a software engineer is that they are nerdy social outcasts, but software depends on people. It isn’t written in a vacuum, you need to write it collaboratively, and so you need to be able to work with people. Things do get stressful, especially close to deadlines, but you have to keep your cool and get stuff done. You depend on your team and your team depends on you. The most successful engineers are also ones with good social skills -- which you can totally learn. Also, you learn the most by working with others; you teach and learn from each other.

finding a job

  • having an online portfolio (like Github) is super helpful
  • social networking: Twitter, meetups, word-of-mouth
I ended up getting recruited for the startup I worked for through Twitter, of all places. I also got my internship through Twitter, because that company valued having employees that they could relate to and they liked the stuff I tweeted about. Many developers love to network, and the more people you know and meet through meetups, conferences, and online, the better. There are also tons of job boards, LinkedIn, Stack Overflow, Github, and recruiters.

compensation

junior-level dev in the Bay Area: $60-90k

looked on glassdoor: depends on the type of engineering you pursue, the area you live in, and the company you work for

typical day

mornings: usually emails, meetings, planning

afternoons: programming hours

evenings: more programming

During a typical day, I’ll do some coding. I try to carve out a few consecutive hours for actual concentrated programming work. The rest of the time, I’m documenting or writing tests for coding, emailing, collaborating with others to organize how we’ll build features I also pitch in to interview candidates, write internal tools, and review other people's code for release

hours

10am-6pm

pros: pretty flexible w/r/t working from home, taking time off

cons: working nights? weekends? holidays? sometimes! ಠ_ಠ

not to mention meetups, classes, conferences, volunteering, side projects...

When I was with my startup, I would work late, through weekends. Especially at startups, the expectation is that you’re going to put in a lot of hours, while established companies have more regular hours. I used to take my work home a lot and work on the weekends when necessary. I did that for about three years. Now that I'm a little more established in my career, having a work-life balance is more important to me, so I'm lucky to have found a job with pretty regular hours. When I’m not working, I’m also often coding my own projects or contributing to my friends’. It’s a great way to learn new skills, programming languages, and technologies. And if you make something cool enough, you can put it on your online portfolio and use it to get a job!

advancement

  • management
  • architecture
  • entrepreneurship
  • research
There seem to be two tracks for advancement: one is to go into management, where you deal with more administrative tasks, or else to go into architecture, where you are in charge of the overall design of an application, managing the features and responsibilities of both ends. Some people stay engineers though, because they like to build. Some people found startups or go into research.

employment outlook and competition

competitive for top jobs, but plenty of jobs to fill too

ways to enter: internships, programming accelerators freelance, building a portfolio

The programming field is fairly competitive, especially when it comes to working at super-desirable companies like Google and Apple. However, there’s also huge demand for programmers, especially here in the Bay Area. It’s also competitive to work at startups, but in a different sense: what you’re competing for is the survival of your company, so you might compete against other companies for market share, and the best customer experience that you can deliver as a programmer might make all the difference. You get into programming by getting a CS degree or by teaching yourself how to code, making some cool things, and showing it to people. And so far, so good on the employment outlook!

not-so-awesome things

(i.e., challenges)

  • staying current
  • work/life balance
  • managing deadlines
  • doing my own projects
  • focusing interests in a broad field
There are a lot of challenges. Staying current on technology. Balancing life and work in a healthy manner. Dealing with expectations and ship dates. Fighting burnout. Trying to make time to work on my own ideas that I want to work on. Trying to focus my interests since software is a really broad field (server-side, browser-side, enterprise, networking, etc.)

awesome things

  • creating new things
  • puzzle solving
  • always learning
  • exciting to be in a growing, evolving industry
  • flexible work schedule
  • good perks
  • can work remotely and live almost anywhere
  • YOU CAN START RIGHT NOW OMG
I love creating things that have never existed before, things that real people use and interact with. I love problem-solving and the mental challenge of my profession. I love that I will never stop learning however long I stick with it.

would I do it again?

If I could do it over again, I would start programming in undergrad, make English my minor, and graduate with a CS degree.

ladies

please join me

I don't want to get late into my career and only ever be surrounded by dudes. An amazing thing about programming as a career is how empowering it is to create things. Men will tell you all sorts of stupid things like how women are biologically inferior for coding, or just "don't like it". They're full of shit. There's so much opportunity here for everyone to contribute, so don't let people tell you you can't.

to learn more

these slides: my career day slides!(http://bit.ly/CodeCareer2015)

big list of learning resources

learn javascript: JS the Right Way

learn node: Node School

learn HTML: Dive Into HTML5

?