Tech Ladies and The Job Search

I can’t go back to Pitt this semester as the funds ran dry. I had been planning to search for work after the semester. I’m still searching, just probably before I had planned. This is where Tech Ladies helps with my job search.

Enter Tech Ladies

I found a tweet on my Twitter feed about Ladies in Tech™. I found the tweet intriguing and checked it out.

Tech Ladies™ 1 is a site/company all about connecting women and WOC to tech jobs who are open to a diverse workforce.

You need to be approved but after that, you get access to their job board and the closed Facebook group 2.

I got approved to their Facebook group and lurked for three weeks. I felt a bit intimidated: here were highly educated women with more money than I’ve seen in my entire adult life 3. I have 3/4 of a BSc in Computer Science and am not employed. I felt a little out of place.

With some prodding some of my good friends I decided I’d speak up. I am so glad I did:

INTRO

Hi! I’m Tiffany. Been a part of the group for a couple weeks just lurking. Pretty damn shy.
I am a junior dev looking to break into tech. I am older than most in the techsphere so I feel like I am bound to the East Coast for positions though I’d like to go out West at some point.
I was a CS major at the University of Pittsburgh but funds ran out. I am worried about that as well.
I am steadily working on projects, posting them to GitHub, and hoping someone will take a chance on me eventually. I plan to start applying in the spring.
Nice to meet all of you.

The response I got was amazing. Several other Pittsburghers chimed in and wanted to meet up. I got some advice about attending meet ups 4. Being nervous about not finishing my degree, someone spoke up about moving to Pittsburgh and getting a dev job and not having a CS degree. She got in relatively easy, and to PM her. I added her on Facebook Messenger but have yet to question her, which I plan on doing tonight 5.

Job Search Starts Early 2018

I wanted to wait until Spring/Summer to start looking for work. I think I am almost ready. But I will probably start sometime in February.

Tech Ladies has a sh!t ton of jobs for us. Looking forward to the search!


  1. It’s free but for $99/3 mo. you get more features. 
  2. You need to answer some questions to get in similar to the questions to get into their job boards. 
  3. You don’t have to make much to get that distinction. 
  4. That’s on my to-do list for next month. I’ve lost a good bit of weight unintentionally so I will feel a bit more comfortable being at them. I’ve always felt weird in places like this as I am a really tall, just all around hulking human being. I scare little kids. Ha. No. I really do… 
  5. I’m such an introvert I need to mindmap emails to people. Ha. 

Gauging My Progress

As I step through The Web Developer Bootcamp, I am beginning to realize just how much I’ve learned the last two years and how it is beginning to codify in my brain.

I am coming from a Humanities background but I have always had technical chops, working with circuits was a thing I liked to do; improvising is fun.

I was, a long time ago, a Computer Networking major but decided that I wanted to build computers instead of administering them. Before class started I chose Electronics Engineering Tech at my local 2 year. I did very well. I got an A in my first class, being the only black person as well, by the middle of the semester, the only female. This was the early 2000s.

I’ve always had technical chops. In fact, I taught myself electronics over the course of two years and was competent enough that my physical science professor wanted me to help her teach the electronics section. She was a physicist and my hero.

I prefer being an autodidact, if you haven’t guessed by now.

Translating Hardware Chops into Software Chops

I just played around with circuits and diagrams of those circuits with basic logic structure knowledge. I had and have the ability to learn logically complex things. The fact that it has taken me two years and 5 CS classes as well as learning on my own makes me feel really silly. I have always been the smartest person in the room. It is quite humbling to struggle with something that you feel you should get right away.

Sometimes I look at other newbies and see they struggle with simpler concepts than I did. It makes me feel better 1 but I also want to help them become competent.

The Web Developer Bootcamp and Leveling Up

I have been studying for two weeks practically non-stop. I am seeing so much progress that it encourages me to keep going. I can ask relevant questions of the material, when I get stuck instead of running to Stack Overflow or Slack/Gitter first thing, I open up Dash Docs and read the MDN, which is beginning to make a lot more sense to me.

I can write simple algorithms much more easily than just a few months ago. I don’t know what happened or what switch flipped but I am really, really happy.

Being Happy For Other Developers Success, However…

I see developers all around me getting jobs. I am happy. I am really happy for them. This isn’t a fake happy. It is how things should work. You never begrudge another’s success.

I do, however, feel a pang of longing when I see the tweets and YouTube videos. I am waiting for my turn.

The helpful thing for me right now is knowing I am about a little over a half a year from being ready to apply for developer jobs. It is the solace I need to not get discouraged.

The Code

Some of the things I worked on.

Arrays

//Print Items in an Array in reverse //

function printReverse(arr) {
  return arr.reverse();
}
printReverse([1, 2, 3, 4]);

// Refactor to print on new line
function printReverse(arr) {
  for (var i = arr.length - 1; i >= 0; i--) {
console.log(arr[i]);
  }
}
printReverse([1, 2, 3, 4]);

// isUniform //

function isUniform(array) {
  for (var i = 0; i < array.length - 1; i) {
    if (array[i] !== array[i + 1]) {
  return false;
   }
 }
  return true;
}

// sumArray //

function sumArray(arr) {
  var sum = 0;
  arr.forEach(function(element) {
    sum += element;
 });
  return sum;
}

// max //

function max(arr) {
  var maxValue = 0;
  arr.forEach(function(element) {
    if (maxValue < element) {
  maxValue = element;
    }
  });
  return maxValue;
}

Objects

//Movie database for object practice

var movies = [
  {
title: "Taxi Driver",
hasWatched: true,
rating: 5
  },
  {
title: "The Social Network",
hasWatched: true,
rating: 5
  },
  {
title: "Steve Jobs",
hasWatched: true,
rating: 4.5
  }
];

function stringBuilder(movie) {
  var result = "You have ";
  if (movie.hasWatched) {
    result += "watched";
  } else {
    result += "has not seen";
  }
  result += '"' + movie.title + '" - ';
  result += movie.rating + " stars";
}

movies.forEach(function(movie) {
  console.log(stringBuilder(movie));
});


  1. The arrogant, competitive little snot I was still peeks through sometimes. 

Scope for Beginners

In JavaScript, lexical scope deals with where your variables are defined, and how they will be accessible — or not accessible — to the rest of your code.

There are two terms to think about when talking about scope: local and global. These two terms are important to understand, because one can be more dangerous than the other when declaring variables and executing your code.

A variable is globally scoped if you declare it outside of all of your functions. For example:

//global variable, i.e. global scope
var a = "foo";

function myFunction() {
    var b = "bar";
    console.log(a+b);
}

myFunction();

When a variable is in the global scope, it can be accessed by all the code in the same JavaScript file. In this example, I’m accessing the variable a in my console.log statement, inside the myFunction function.

Local Scope

Local variables only exist inside functions. They are scoped to that individual function.
You can think of local variables as as any variables that fall between an opening and closing curly brace.
These local variables can’t be accessed by code outside of the function to which they belong.

Take a look at this code:

//global variable, i.e. global scope
var a = "foo";

function myFunction() {
    //local variable, or local scope
    var b = "bar";
    console.log(a+b);
}

function yourFunction() {
    var c = "JavaScript is fun!";
    return c;
    console.log(c);
}

myFunction();
yourFunction();

Notice how the variables are each declared inside separate functions. They are both local variables, in local scope, and can’t be accessed by one other.

For instance, I can’t return b in yourFunction, because b belongs to myFunction. b can’t be accessed by yourFunction, and vice versa.

If I were to try to return the value of b when calling yourFunction, I’d get “error: b is not defined.” Why? Because b doesn’t belong to yourFunction. b is outside of yourFunction’s scope.

When adding nested conditionals, scope gets even more hairy. But I’ll leave that for another time.

But for now, remember the difference between global scope and local scope. And the next time you get a “is not defined” error, check the variable’s scope.

The Execution Stack and Scope

What is the Execution Stack? Before I answer that question, we’ll first have to take a look at the Global Execution Context

The Global Execution Context, in general terms, is the environment in which the function gets invoked, or the variable’s scope. The Global Execution Context, creates global object, a window object, and a this variable in its creation phase as well as storing any variables you’ve made stored in memory.

The first function gets created on the global execution context called an, as you probably guessed, execution context and has its own space for variables and functions. The global execution context reads line by line until it comes to the next function. Every function creates a new execution context. Once there are no more functions to execute the top function on the execution context gets popped off. Whatever is at the top is currently running.

The Global Execution Context, then, is the outer portion of the Execution Stack or Call Stack. The functions that are invoked in the Execution Stack are lexically sitting on top of one another and being called from top to bottom. JavaScript is a synchronous language, which means the code you write gets executed line by line, from top to bottom.

Talking About the Scope Chain

So how do the execution stack and the scope chain come together? It depends on where the function sits lexically. Take a look at this code:

function myFunction() {
console.log(myVar);
}

function yourFunction() {
var myVar = 68;
yourFunction();
}

var myVar = 37;
myFunction();

The execution stack has to search for the variables you defined and where you defined them, making references to the outer lexical environment. This is called the scope chain.

When this code is executed, since the scope chain can’t find myVar in function yourFunction() because it isn’t lexically in the local scope (remember your scopes) and the outer reference is in the global execution context, the console.log will display 37.

If we were to change where function yourFunction() sits lexically in the execution stack, for instance:

function myFunction() {
    function yourFunction() {
    console.log(myVar);
    }
    
    var myVar = 68;
    yourFunction();
}

var myVar = 37;
myFunction();

Everything is created along the same lines. The global execution context is created, myFunction() sits on top of the global execution context, yourFunction() sits on top of it. But when the scope chain looks for its outer reference lexical environment this time, yourFunction()’s outer reference lexical environment is myFunction() because yourFunction() sits lexically inside of it.

This is how, under the hood, local and global scope function. For further information see: ECMAScript Docs