Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Lessons from the Real Word: Software Engineering

Julia Grace
November 15, 2014

Lessons from the Real Word: Software Engineering

In November 2014 I gave an Alumni Lecture at the University of North Carolina at Chapel Hill Computer Science Department about lessons learned when undergrad/grad school ended & I entered the "Real World".

Julia Grace

November 15, 2014
Tweet

More Decks by Julia Grace

Other Decks in Programming

Transcript

  1. L E S S O N S F R O

    M T H E R E A L W O R L D @ J E W E L I A J U L I A G R A C E
  2. • BS in 2003 —> MS in 2007 —> Moved

    to Silicon Valley • CTO of Tindie (tindie.com) • Previously at IBM Research, several other startups @ J E W E L I A
  3. Undergrad Rest of your working life This talk is all

    the stuff that didn’t tell you in undergrad but is applicable to the orange bar @ J E W E L I A
  4. • This talk is focused on what I know best:

    software engineering at big and small companies. • This isn’t about teaching or academia or if you should go to grad school. • YMMV (your miles may vary) @ J E W E L I A
  5. F I N D I N G Y O U

    R “ D R E A M J O B ” @ J E W E L I A
  6. • Now is a great time to be a SWE

    (software engineer) • So you just find the perfect job and … @ J E W E L I A
  7. • But now ppl change jobs often. • Tendency early

    in your career is for job/internship opportunities to just happen to you. • You let company drive the process instead of you. @ J E W E L I A
  8. • “Who is hiring” —> • “Where do I want

    to work” PA R A D I G M S H I F T @ J E W E L I A
  9. • Know what you want. Write it down. Make a

    list. • Caveat: It may take a few jobs to figure that out. And you may be wrong and it may change. @ J E W E L I A
  10. R E C R U I T E R S

    • How recruiters work. • More (fun) reading: http://www.ewherry.com/2012/06/ the-recruiter-honeypot/ @ J E W E L I A
  11. ! • Use LinkedIn as your resume. Srsly. • Don’t

    make someone open a Word document. Links are easier to click on. P L S U S E L I N K E D I N @ J E W E L I A
  12. ! • Understand how companies hire. • The only way

    to get in to many companies is to have a champion/advocate. • (This is true for many things in life.) H I R I N G @ J E W E L I A
  13. ! • New grads/early career SWEs have a tendency to

    talk about how the job will help them. —> • How will YOU help the company? @ J E W E L I A PA R A D I G M S H I F T
  14. ! ! • Companies are NOT trying to hire great

    ppl —> • Companies are trying to NOT hire bad ppl. • (Venture Capital works same way) PA R A D I G M S H I F T @ J E W E L I A
  15. • Many large companies are optimizing for lack of weakness

    rather than strength. PA R A D I G M S H I F T @ J E W E L I A
  16. • Study for them - there are many great books

    to help with this. T E C H N I C A L I N T E R V I E W S @ J E W E L I A
  17. ! • “If I do well in the interview I’ll

    do well at the job” —> • “If I do well in the interview then I do well at their interview” PA R A D I G M S H I F T @ J E W E L I A
  18. ! • “They (company) are interviewing me” —> • “I’m

    interviewing them (company)” PA R A D I G M S H I F T @ J E W E L I A
  19. ! • “What does success look like?” • “What are

    your expectations for the person in this role?” • “What don’t you like about working here?” Q U E S T I O N S F O R T H E I N T E R V I E W @ J E W E L I A
  20. ! • Look at the leaders of the organization. •

    People like people who remind them of themselves. They often promote people who have the same attributes as themselves. C U LT U R E F I T @ J E W E L I A
  21. ! ! • Negotiation is an important life skill, and

    people who do it come across as more senior and competent • Don’t disclose previous salary information. Companies want it to get data points about what other companies pay. S A L A RY N E G O T I AT I O N @ J E W E L I A
  22. ! ! • I have a great job/mgr/team. It will

    last forever! —> • The better it is the shorter it will last. • Great ppl are often on a rocket ship. Other ppl know they are great, so maximize the time you spend with them, and hopefully your paths will meet again. PA R A D I G M S H I F T @ J E W E L I A
  23. W H AT I D O ! • My job

    isn’t to be the Best Engineer but to make sure we are making the right technical decisions that are best for the business. • So what do I do everyday? @ J E W E L I A
  24. ! • Determining latencies and bottlenecks • “X is slow.

    What do we do?” W H Y I S X S L O W @ J E W E L I A
  25. • Skills from undergrad/grad school that I use everyday: •

    OS Fundamentals: processes, threads, CPU vs I/O bound, event based programming, caching algorithms. • Networking: TCP/IP, HTTP, DNS, sockets, • Databases: SQL, atomic transactions, latencies of queries, implications of write often vs read often applications. @ J E W E L I A
  26. W H Y I S X B R O K

    E N ! ! • Debugging. Logging. • If you want to really understand how something works, break it. • Pattern recognition from seeing similar problems in the past, developing good intuition. @ J E W E L I A
  27. • Skills from undergrad/grad school that I use everyday: •

    Distributed Systems: N processes and the execution order is non-deterministic. • Databases: Syncing data across large systems, backup, recovery. • “Someone unplugged the machine”: how to build fail-safe systems that rely on pieces of infrastructure that you don’t completely control (e.g. cloud) @ J E W E L I A
  28. ! ! • How are we going to build it?

    Why will it be hard? • “Rolling your own” vs using 3rd party, often OSS X F E AT U R E N E E D S T O B E B U I LT @ J E W E L I A
  29. • “You don’t know what you don’t know” • These

    are hard skills to learn in school. • Experience: Learned on the “streets”, building stuff that broke, then building stuff that didn’t break, repetition. Working newer, less mature technologies. • Networking: In the people sense - talking to people who have solved similar problems in the past. • General maturity from being burned: Urging the risk to start writing code before planning/thinking a feature through. @ J E W E L I A
  30. ! • Don’t be clever. • Optimize for readability not

    “I’ll fit this function on 1 line! But WTF is it doing? Who knows!” • You are likely not going to be the maintainer of your code forever. @ J E W E L I A
  31. PA R A D I G M S H I

    F T ! ! ! • “I become great through building stuff.” —> • You become great by understanding how great stuff was built. Then building. @ J E W E L I A
  32. • Always surround yourself with really smart people - people

    much smarter than you. • If you’re the smartest person in the room you’re in the wrong room. @ J E W E L I A
  33. • Thanks! • I’ve written more about these topics: bit.ly/EngHiring

    • You can always find me on Twitter: @jewelia @ J E W E L I A