Learn a Little Network Engineering

This is a guest blog post from Allan Wintersieck. Enjoy.

Dear new developer,

I realize that just trying to learn basic programming principles can feel daunting enough, but if I may, I’d recommend adding one more task to your list: learn a little bit about network engineering.

Networking underpins everything web and app developers do, since almost every web app communicates from the frontend to the backend regularly. Most developers understand the basics of making API calls and how data flows over the internet, but taking a small dive deeper will help you debug issues for years to come.

The goal is to build your underlying knowledge so that when you encounter related issues in the future, you understand enough about how it all works to intelligently tackle the problem. For example: the reason everyone complains about CORS (Cross-Origin Resource Sharing) being confusing is because it doesn’t make sense without first understanding the basic principles of networking and security.

A quick list to get you started:

  1. Read up on the basics of routing. No need to dive into how the protocols work, but understand why it’s set up this way and how internet traffic gets to where it needs to go.
  2. Read the basics of DNS, and understand how a DNS request is resolved.
  3. Read a brief rundown of the OSI model. Focus on understanding one or two examples of things you’ve dealt with in the past that exist at each layer.
  4. Review the difference between TCP/IP and HTTP, and why they exist at different layers in the model.
  5. Read up on the basics of what a “proxy” is.

An overall analogy that I find helpful: networking is like sending mail via the postal service.

  • Routing is the process of putting mail in your mailbox, having a postal worker pick it up, and it eventually reaching its destination.
  • DNS is the process of looking up someone’s mailing address so you can send them mail.
  • The OSI model is a fancy name for making it clear that there’s a lot of details the postal service takes care of for us. Most people understand how addresses and mailboxes work (let’s call that the equivalent to the Application layer), but don’t really understand all the internal details of how the postal service gets your mail to its destination. All those details are the first 6 layers of the model.

With that background knowledge in place, tackle some of these additional questions to lead you to more learning:

  • How do CDNs (Content Delivery Networks) work?
  • What’s the difference between “regular” HTTP and WebSockets?
  • How does SSL (HTTPS vs. HTTP) work, at a high level?
  • What can nginx be used for?

And as a last exercise, sketch out a complete picture of a work app or side project: what DNS calls get made, what servers are involved, are there any proxies, what protocols are in use, what OSI layer those protocols exist on, etc.

I promise that spending the first few years of my career as a network engineer only slightly biases me towards learning this stuff.

Sincerely,
Allan Wintersieck

Allan Wintersieck is the CTO and co-founder of Devetry, a software consultancy in Denver that provides strategic partnership for software architecture and engineering.

 

Tips for Building Your Work Network

Dear new developer,

I talked previously about a technique to help you network with strangers.

But networking isn’t just about meeting strangers and starting up conversations easily. The easiest way to build your network is to foster it at work. Again, this will help you if you are looking to hire, learn more about an interesting company for a job or partnership, or want to ask someone about technology they’ve used or problems they’ve faced.

Here are some tips that will help you do so.

  • Use LinkedIn. I’ve already written about that, so I’ll just say that you should keep your profile up to date with your positions and accomplishments, as well as link to folks you have met in a professional context.
  • Never leave a job on bad terms. This means giving the requisite notice, running through the finish line by documenting your work and preparing for a handoff, and not speaking ill of your former employer (of course, I am not a lawyer and there are definitely grounds for speaking ill of your employer if they’ve violated laws). You may be very excited about the new job, but think about how you’re leaving your current position, and treat your teammates as you’d want to be treated. Doing so means that when you want to tap your network, they’ll respond.
  • Reach out periodically. This can be as simple as sending them a LinkedIn note when they have a work anniversary or have changed jobs. If you know they are interested in a technology or domain and have run across an interesting article (perhaps via your RSS feed or your online community) send it to them with a quick note. If you are going to be in the town where they live, suggest meeting up for a coffee to catch up.
  • If someone has a request for their network, try to help. Depending on how strong your relationship, you may want to reshare the request, think of someone who could help, or attempt to help yourself. Be wary of doing too much for the strength of the relationship. I was overly enthusiastic once and sent a bunch of intro emails for a new service an acquaintance was starting. The service didn’t go anywhere and I felt foolish for asking people I was relatively weakly connected to for their help.
  • If you ask for help, follow up if someone provides it. Thank them and let them know how you used their help. Nothing is less fun than helping someone in any way and then having them go dark on you. And don’t ask for help too often from the same person–this is more qualitative and you have to judge the strength of the relationship; the stronger the relationship, the more often you can ask.

I’ve used these tips in the past to keep my network alive and will do so in the future. Unlike in other professions, the bar for network activity in development is very low, so if you do even one of these, you’ll likely stand out.

Sincerely,

Dan

Tips from a recent bootcamp graduate

This is a guest blog post from Jesse Ling. Enjoy.

Dear new developer,

Be comfortable with being uncomfortable. You’ll never know all the things. And that’s ok.

Ask questions – at the right time. There’s a fine line between reaching out for help too early and too late. Struggling is imperative to growth, but reaching out for answers too soon significantly hinders it. You’ll better understand where that line lives over time.

“Stand on the shoulders of giants.” More than likely, your problem has already been solved. Don’t be afraid of trying other’s solutions if it makes sense for your implementation. But do take the time to fully understand why and how it works.

Be persistent. Programming is difficult and often times frustrating. Don’t give up. The feeling of figuring things out after a struggle is amazing.

Network. Talk to devs at, below, and above your skill level. Opportunities can present themselves in mysterious ways. Utilize your network to not only help yourself, but more importantly to help others.

Sincerely,

Jesse Ling

Jesse Ling is a motivated and relentless problem solver, and a recent Turing School graduate seeking web development opportunities.

Use a Conversational Hook When Networking With Strangers

Dear new developer,

Work on your network. It will help you in numerous ways as you progress in your career. Whatever you are looking for: a new job, to hire someone, to get a mentor, to learn about a new technology, having a list of people that you know and/or have worked with that you can reach out to will help you accomplish your goals.

But it can be tough, especially if you are awkward around people. I am awkward around people and learned how to be less awkward. My main technique is to both give and ask for a “hook” in any conversation I start.

Here’s a typical “networking” conversation of which I’ve had many:

Dan: Hi, I’m Dan.

Jan: Hi, I’m Jan.

Dan: Where do you work?

Jan: I work at Company X. Where do you work?

Dan: Company Y.

<crickets>

Compare that with this conversation:

Dan: Hi, I’m Dan.

Jan: Hi, I’m Jan.

Dan: Where do you work?

Jan: I work at Company X. Where do you work?

Dan: Company Y. We recently launched website Z and are evaluating technology ABC. What has your company recently rolled out?

See the difference? Dan has provided Jan with two avenues for conversation–one is asking further about technology ABC or website Z, and the other is talking about Company X. Jan can decide where to take the conversation, but Dan has provided the start of it.

Learning this trick, which comes naturally to many many people, changed the way I network. Another thing that mattered was my realization that everyone, every single person, has an interesting story or anecdote to tell, and that I can learn something. That understanding has made conversation much more fun.

Sincerely,

Dan

 

Use LinkedIn, and use it well

Dear new developer,

Set up a LinkedIn profile and keep it up to date. This will serve as a public resume. (Yes, a github is great too, but you might not always have time to keep code up to date or an interest in a maintaining a large project.) Once a year, at a minimum, document what you’ve done in your profile. This is a low effort way to showcase your skills. LinkedIn has a vested interest in being at the top of the search results when people search for your name. And hiring managers will.

Also, used LinkedIn to record connections to people that you meet (at jobs, conferences, meetups or randomly). Folks have different thresholds for connecting (some people connect to anyone, some people want to meet you, some people want to have worked with you). It doesn’t hurt to ask; just don’t be offended if someone says no thanks. My threshold is “have I met you in person or engaged with you online”. This means that my connections are of varying strength–some connections I’d hire (or work for) with no question, others I met once and have never talked to again.

Recruiters on LinkedIn tend to be low value keyword matchers, unfortunately. But you never know, someone might be able to place you. If you do talk to a recruiter, be honest about your desires. Take what they say with a grain of salt, as when they are talking to you, they are trying to make a sale. Also make sure you ask them about their view of the job market, salary ranges for people with your experience, and good skills to gain. If they aren’t willing to share such information, they probably won’t be much good to work with.

As a friend put it, LinkedIn is a rolodex that someone else keeps up to date. This can be helpful when you are looking for a job. Troll your connections’ companies, and then ask if your connection and intro you. A warm intro is far more likely to lead to a conversation and interview than submitting a resume via a website. I offer that up to many people as it’s a low effort way to add value to someone on the job hunt.

Sincerely,

Dan

Join a meetup

Dear new developer,

You are probably pretty overwhelmed right now. There is a lot on your plate and you probably are just trying to keep up with the job.

I hate to do this, but I am going to ask you for some extra curricular time.

You need to join a technology meetup. Go to meetup.com and search for one on your area, covering technology that you’d like to understand more about. Sign up and go to the next one. If there’s no meetup in the area, search for a virtual one, and join via video chat or audio chat.

When you are at the meetup, you might have a hard time chatting with people (I do!). I find the best way to do this is to be interested in them. Show up 15 minutes early. Find someone standing alone and walk up to them and introduce yourself. Then ask what brings them to the meetup and what they are working on. This will be awkward at first, but just like coding, gets easier the more you do it. (Not sure how to do this virtually, but try to chat with someone on the webinar.)

Then, sit down and enjoy the presentations. You’ll probably learn something.

Why should you do this?

  • It will expose you to new ideas that you can bring to your work
  • It will allow you to have professional conversations where the stakes don’t feel as high (you can admit ignorance to a total stranger more easily than to your boss).
  • It will allow you to practice networking and talking to strangers, but the topic will be something you know you are interested in.
  • You can make friends, or at least acquaintances in your industry.
  • When you are ready to hunt for a new job, you will have a network outside of your colleagues.
  • You will meet cool people.
  • You will learn new things.

You may, in time, choose to help organize or speak. These activities are valuable for your work life, but again are easier to practice outside of the work environment. But if all you do is attend a a single meetup regularly, you will still come out ahead.

Please, go sign up for a meetup today.

Sincerely,

Dan