Looking for your first Developer Job?

It’s been a while since I’ve posted on Rails Mama, and I want to let my readers know about my new site, Dev Ready.

The new site is all about the path to becoming a professional web developer. I’ll be sharing tips on interviewing, job search, surviving coding bootcamp, and finding the best online resources for learning.

Check out my first posts (all related to the Junior Developer job search):

I would love to hear your feedback on the site. Good, bad, or neutral, all feedback is appreciated!

Join me at Dev Ready!

Advertisements

Coding Bootcamps: A Fork in the Road for Tech Diversity

For years tech companies have lamented “The Pipeline Problem”: the shortage of female and other diverse candidates in the hiring pool.

The opportunity to change that dynamic may come from a surprising source: Coding Bootcamps.

Computer Science and other STEM majors consistently fail to attract female students. The reasons are complex, but 3 important factors are:

  1. The stereotypical profile of a Computer Science major does not meld easily with the average woman’s self-image. Young women recoil from Computer Science for the same reasons that men recoil from nursing. We simply cannot reconcile our self-image with the image we attach to that career.
  2. Computer Science programs involve intense competition between students. This feels very uncomfortable to women, who are taught to cooperate rather than to compete.
  3. Men get greater exposure to and encouragement in technology and math throughout childhood, meaning that female students arrive at CS101 already at a disadvantage. The teachers assume a certain level of knowledge from their students, and when a student does not have that base of knowledge on day one, she assumes she must be “less talented” or otherwise unsuited to the profession.

Examining the issue more closely, however, we see that girls are given less opportunities to explore computers. Subtle messages from parents, teachers, friends, and popular culture steer girls away from computer games, tech camp, and the joy of disassembling household electronics.

We may never know how much of the difference can be attributed to societal attitudes versus natural preferences, but ask any 3-year-old, and they can tell you what gender a construction worker or a nurse “should be”. The ideas about Software Developers evolve a bit later, but only because toddlers are not yet familiar with that career. Try asking a 10-year-old to draw a Software Developer. If you find one who draws a woman, $100 says her Mom’s a developer.


So, how do Coding Bootcamps factor into all of this?

Coding Bootcamps are in their infancy. There’s still time to mould them into the missing link for tech diversity. Mistakes were made at the inception of college-level Computer Science programs. Those mistakes can and should be remedied, but it will be an uphill battle. Coding Bootcamps have the opportunity to “do it right” from the beginning.

Another advantage for Coding Bootcamps it that their students are generally a few years older than college students. Those few extra years of maturity can make a world of difference. An 18-year-old college freshman still has a relatively unstable self-image and still feels the pressure to conform. A few years later, she will generally shed her desire to conform, accepting both the popular and unpopular facets of her personality.

Coding bootcamps come in at just the right time–late enough to give the student a chance to experience the work world, but early enough to leave years for a fruitful career.

By the time women gain the maturity level and motivation to buck the ideals of popular culture and fight the uphill battle to claim their place in the tech industry, they have often assumed enough family and work responsibilities that the traditional CS degree–with all its forays into interesting but impractical subjects–is so time-consuming as to be impractical.

Coding bootcamps, with their narrow focus on practical skills, give students the chance to learn the critical fundamentals in a short sprint, and then fill in the gaps on their own time.


How can Coding Bootcamps take an active role in changing the dynamic?

  1. Explicitly state all prerequisite knowledge, along with how to obtain it. Never assume knowledge, no matter how basic you believe it to be.
  2. Give added support to diverse students. Recognize that they may have unique challenges, such as the need to balance outside responsibilities and school, gaps in foundational knowledge, impostor syndrome, or feelings of social isolation.
  3. Implement Social Rules: Stepping outside of your socially-ordained role is taxing on the ego. Micro-aggressions, whether intentional or unintentional, can have devastating impacts on diverse students. Hacker School has a very impressive student manual with social rules that I would love to see implemented in every Coding Bootcamp.
  4. Partner with companies that are looking to improve diversity. Large companies can pay for bootcamp training for employees who are looking to switch from a non-technical career into a developer role, or simply hold their jobs while they retrain.
  5. Give up on the ideal of the Natural Super Genius Developer. Natural talent? It’s a myth. Talent does have a genetic component, but genes are expressed differently based on environment. Deliberate practice is the key to mastery of any subject, and propagating the myth that some people are born with the ability to write beautiful code only discourages budding talent.

We are at a fork in the road, and now we must choose: Will we continue with the status quo, checking the box for “minimum diversity level attained” or will we recognize this unique opportunity, and address the systemic issues that sustain our homogenous technical culture?

What Coding Bootcamp Doesn’t Teach

When I was going through Coding Bootcamp, I wondered if I would really learn the skills I needed to be a software developer.

The answer is that coding bootcamp is only a small piece of the journey. Learning to code is a marathon, and attending coding bootcamp is like sprinting 500 yards to get to the gigantic water station. By attending coding bootcamp, you’re able to dump that refreshing, icy water on your head much sooner than the steady joggers, but the race doesn’t suddenly end. You still have endless miles ahead of you after you reach the water station.

Here’s a snapshot of what you learn in each phase of the marathon:

The Stretch (Learning Before Bootcamp):

  • HTML and CSS: The Building Blocks of Basic Websites. (see General Assembly’s Dash or Codecademy HTML & CSS)
  • Basic Programming Concepts: Exposure to loops, control flow, data types, etc. (see Codecademy Ruby or Learn Ruby the Hard Way)
  • Basic Command Line Skills: changing directories, moving files, etc. (see Learn CLI the Hard Way)

The Warmup Laps (may be before or during bootcamp, depending on school)

  • Object Oriented Programming concepts: Classes, objects, encapsulation, polymorphism, etc. (Lynda.com, $25/month)
  • Basic Database Concepts (SQL / Relational Databases)
  • Model View Controller
  • REST

The Sprint (during Coding Bootcamp)

  • how to solve problems with code
  • how to make websites with code
  • how to get data from other websites through web services
  • practice making and breaking a lot of stuff

The Water Station (reaching your first job, where you get paid to learn and have more resources)

  • Practice coding all day without sacrificing the ability to support yourself
  • Have constant access to experienced developers for help
  • Get company-provided resources: libraries of programming books, Lunch and Learns, etc.
  • Get a clear picture of what specific skills you need to learn

The Rest of the Marathon

  • Learn about design patterns (see Principles of Object Oriented Design in Ruby)
  • Learn about Data Structures (Lynda.com, $25/month)
  • Deepen your knowledge of every subject you studied: databases, Ruby, Rails, web services, command line
  • Learn the operating systems, text editors or IDEs, monitoring apps, deployment and hosting apps, and other tools your work uses. (God help you if you have to learn Vim as a newbie.)
  • Learn Agile best practices. Learn to scream and claw your face if your company uses Waterfall-style development.
  • Learn other languages that give you a new perspective on code: C++, Java, Assembly, and Lisp are frequently mentioned as brain-stretching languages.

The hardest part of the journey is the beginning. It’s like running without water.

Things get easier once you reach your first job. Coding becomes a built-in part of your day, rather than an extra task that must be squeezed into the crevices of your life. Yet, once you start your job, you find that just learning on the job is not enough.

There’s still so much to learn, so you lace up your running shoes and get back on the track. If you’re like me, and you love the feel of the road beneath your feet*, this will be a joy rather than a burden. You never reach the finish line, you just learn to love the race.


 

*You might get the impression from this post that I love to run. HA! I wish. I love running about as much as I love drinking Clorox.

 

 

Is Coding Bootcamp Right for You?

I often hear from aspiring developers who wonder if a Coding Bootcamp will teach them enough to get a job as a Junior Developer.

Although I got a great result from Coding Bootcamp, I have seen others who have graduated from coding bootcamp, only to remain stuck in their old jobs.

From what I’ve seen, the main differences between Coding Bootcamp graduates who get jobs quickly after graduation and graduates who go long periods of time without any leads are:

  1. The quality of their job search skills,
  2. Their level of motivation, and
  3. Persistence

There is so much demand for software developers that, with the level of skill gained at a Coding Bootcamp, it is absolutely possible to find a job.

That being said, it is NOT easy. Breaking into a new career never is. Job hunting in general never is. It takes a massive amount of effort to find a job, and entry-level jobs are often the hardest to find. Getting an entry level job means convincing someone that, although you don’t know enough to be immediately useful, you are worth investing the time and money required to train you to be useful.

As in other jobs, employers want to see that you’re passionate about what you do, you’re eager to learn, you learn quickly, and you have a personality that they can handle being cooped up in an office with.

Junior Developers need to demonstrate 2 additional traits:

  1. problem-solving ability
  2. foundational coding skills that can be built upon

So…does Coding Bootcamp teach you what you need to know to get a job?

Partially.

Coding Bootcamp should give you enough foundational coding skills to meet the technical requirements of an entry-level position. My bootcamp also tried to address problem-solving skills and job search skills, but either one of those skills could consume an entire course on its own.

Yes, most Coding Bootcamps offer job search assistance, but it is just that: assistance. They cannot sit in the interview room and force you to make eye contact. They cannot save you if you become despondent and give up the first time you apply for a job and are not taken seriously. They cannot light a fire under your rosy little cheeks to make you chase a job like your life depends on it.

What they can do is help you get the technical skills you need.

But wait–can’t I get those for free, by working through online resources?

Yes. Yes, you can.

Then why should you go to Coding Bootcamp?

That’s a great question, and maybe you shouldn’t. You can save some big bucks by teaching yourself or by doing FreeCodeCamp.

The benefits of Coding Bootcamp over teaching oneself are:

  1. It’s faster. You will be sprinting for a few months, learning faster than you would ever naturally push yourself to learn. You will be fighting to keep up, and as a result, you will cram more information into your skull in a shorter period of time.
  2. Focus. You will have a period of time that is fully dedicated to learning to code. Having deadlines will keep you pushing forward on days when you otherwise would have prioritized other things. You will also have an excuse to tell your family and friends when they want to distract you from studying.
  3. Live Help. You have access to your teachers and other students, so you spend less time fighting problems and more time moving forward and learning.
  4. Resume Fodder. You will have concrete proof of skill that you can list on your resume, and this could be the difference between getting and not getting an interview.

If you are highly motivated and have time to spare, Coding Bootcamp might not be the best option for you. You can learn the technical skills through FreeCodeCamp and other online resources, and attend meet-ups to get live help and make connections. The job search might take a little bit longer, but you will eventually find something.

The path to the finish line will be faster and easier with a Coding Bootcamp, but it’s not the only option. Whether or not it’s worth the price tag will depend on you: your personality, your timeline, and your finances.

Coding Bootcamp: The Good, The Bad & The Ugly

Looking back on my experience juggling a full-time coding bootcamp and a full-time family, there are things that I did well, and things I would definitely try to do better, if given the chance to relive the experience.

The Good:

  • I did a great job prepping my husband for the experience, explaining in detail how absent I would need to be, and what that would mean for him. I think it helped him (mostly) keep his sanity, and when all else failed, gave me an “I told you so” get-out-of-jail-free card to keep in my back pocket.
  • I said goodbye to my friends, telling them that over the next 3 months, I would be available if, and only if, their life caught fire. It allowed me to devote all my limited free time to my family, without feeling guilty about lapses in friendships.
  • I prepped heavily for the coursework, allowing me to start from a position of only-slightly-behind (as compared to the other students, from my own, self-critical point of view).
  • I prioritized networking events, attending only the ones that seemed likely to either: a) teach me something vital, b) significantly improve my chances of getting a job, or c) help me keep my sanity. (Rails Girls was the one event that addressed all 3 goals.)

The Bad:

  • I should have used “time blocking”. As ignorant as it makes me sound, I had never heard of it before attending The Iron Yard. I blame the fact that the majority of my friends belong to a fatalistic culture that does not believe in the importance and/or existence of time.
  • My default answer to all requests should have been “no”, because it is much easier to change a “no” to a “yes”, than a “yes” to a “no”. —> “No, I cannot attend that event. No I cannot go to your party. No, I do not see the poop smeared on the walls, and no I will not clean it up.”

The Ugly:

  • My biggest struggle was an internal one: Impostor Syndrome. I still don’t quite feel like a coder, despite the evidence on Github, and I spent an unhealthy amount of time worrying that I would fall behind in class, and no one would come back for me.

and one more….

The Beautiful:

  • I made it! And now I can help others make it, too.

If you’re considering joining a coding bootcamp or learning to code on your own, I’ve been there, and I’m happy to do anything I can to help.

Surviving Coding Bootcamp with Kids

You have to be a whole lot of crazy to join a full-time coding bootcamp with a family depending on you.

60-hour-workweeks + 12 weeks to learn 2 years worth of material + 3 hours of daily commute + 2 irrational, demanding, adorable balls of sweetness + 1 husband who is losing his mind being alone 24/7 with those adorable, irrational creatures equals:

……(trying to find a calculator)….

…..Ah, yes….insanity.

In an abstract sense, I knew what I was getting myself into. I knew it in much the same way that I know the Earth is round and the universe is infinite.

Am I proud to have survived this experience?

Not really.

Mostly I’m shell-shocked, with a loud ringing in one ear, disconcerting silence in the other, and a small trickle of blood coming from some location that I have yet to identify.

If I am proud of anything, it’s that no children were harmed in the making of this final project.

Now that it’s all said and done, I wipe the blood on the sleeve of my shirt, and ask myself:

Would I do it again?

Yes. Yes, I would.

 

Sanity is a Finite Resource

Sanity is a finite resource, and this weekend my tank hit empty. I’m talking about light-flashing, engine-choking, pull-over-on-the-side-of-a-six-lane-freeway empty.

We’re in week 10 of coding bootcamp, and somebody decided it would be a great idea to schedule a semi-mandatory internal Hackathon over the weekend.

A Hackathon, for those of you who have not experienced one, is an all-weekend event where coders get together in small groups, choose or get assigned a massive coding project, and attempt to tackle it in a single weekend by forgoing all sleep. Clearly a concept designed by someone who does not have children.

The timing was incredible–my class (Ruby on Rails) and the iOS class are at the beginning of a sprint to complete a final project in time for demo day. The third class (Front End) is only 2 weeks into their course, which presents an entirely different set of issues.

I had also volunteered to help out with a Rails Girls workshop the following weekend, giving me one less weekend to work on my final project. I had really, really been counting on this weekend. Unfortunately, I’m not good at knowing when to cry “Uncle”.

Which brings me to the “bat-shit-crazy” part…

….. Let’s just say I broke down in tears, and walked out a few hours before presentation time….

Yeah, that pretty much sums up the important points.

The long version of the story is that things started out pretty well. I got assigned a project I really liked: creating a “Panic Button” app that notifies family members of an emergency with a click of a single button. I also got an incredible team, packed with extra features like–gasp!—real, live social skills!!

I became leader-by-default, and we were able to agree on a beautiful, simple design. My teammates were even wise enough to understand that having the web app match the mobile app was more important than indulging their individual design preferences. The iOS app was especially impressive, with a simple interface and appealing colors. Things were looking up.

And then day 2 came.

Day 2 was when I realized that by some form of black magic, we had to link the web app with the iOS app–no super glue allowed. Neither of us had any clue what our side of that equation was supposed to look like, and half-way through a stressful, sleep-deprived weekend, in front of some theoretically potential employers, with the guidance of some programmers who did not know our particular technologies but knew enough about programming-in-general to make us feel like Special Edward, was not a comforting place to learn.

I went into complete brain-paralysis.

My teacher tried to help, but I kept thinking, “Your lips are moving, but no sound is coming out!”

By the morning of day 3, it was pretty clear this ship was sinking, and my teammates were smart enough to pull together a Power Point presentation showing what our app was supposed to look like (given 2 more weeks and / or a greater reserve of sanity).

I, on the other hand, was sitting on the sidelines thinking, “There is no freakin’ way I’m presenting a Power Point when other people have working apps to show.”

And that’s when I broke down and said, “I’m sorry, but I just can’t do this. I’m going home.”

Sanity is a finite resource, and you can only run on fumes for so long.

I went home and decided I would not even think about coding for the rest of the day. What I really wanted to do was tell my school, “You can shove my final project up a deep, dark hole. I’ll do it in my own time, and find my own job.”

There were just enough fumes-of-sanity to keep me from doing that…at least temporarily.

Since the start of this course, I have pretty much devoted every second of my time to learning to code, sitting in class and/or traffic, and trying to be a mother to my 2 children. I’m not exaggerating when I say that I haven’t so much as watched a 30-minute TV show (unless you count having cartoons on in the background.)

It was funny to see what happened when I gave myself permission to not code for one entire day.

For starters, my children, who — every five minutes — ping the Mommy Server with, “Can you pay attention to me now?” were shocked to get back a “Yes”.

They both spent the entire day in my lap, and my son told me about 100 times, “Mommy, I luh yoo”.

I enjoyed it so much that I decided to take Monday off too. I woke up at 8:30 a.m. (can’t believe I slept in so late!) and then went back to sleep at 9:30 a.m. and slept for another 3 hours. We then went out to eat with my brother, and on the 30-minute drive home, I fell asleep in the back seat like an old person / young child / motion-sick-Golden-Retriever.

Tomorrow I suppose I’ll drag myself back to school, even though that seems like an incredibly unproductive way to spend my time. I’d get a hell of a lot more actual coding done in my dark, cold, quiet basement, but I suppose I need to prove (or fake) that my sanity is still intact.

On a side note, we won the contest. Believe it or not, we took first place.

On another side note, WTF?

If all they wanted was a Power Point presentation, I could have knocked that out in an hour.

I’m beginning to think this is all a big government-funded social experiment to test the limits of human sanity. Oh sorry…that’s just the empty tank speaking, (psst…this place is bugged.)