Code Camp: Make Tech Your Next Step

Code Platoon & Deloitte Team Up to Present: “Code Camp: Make Tech Your Next Step”

If you are a veteran or military spouse who is interested in the exploding field of software development, Deloitte and Code Platoon have teamed up to offer a free, hands-on seminar designed just for you.

“Code Camp: Make Tech Your Next Step” features the team at Deloitte, a Top Four professional-services firm with more than 250,000 employees worldwide. Deloitte embraces a holistic approach when supporting veterans and military spouses, focusing on physical health and recovery, education, and employment.

No experience is required to attend the half-day event, which will begin at 11 a.m. Friday, Feb. 23, at Deloitte’s Chicago headquarters at 111 S. Wacker.

Jon Young, Code Platoon’s lead instructor, has put together an afternoon’s curriculum that will walk students through the fundamentals of coding as well as explore cutting-edge concepts such as cloud computing and the popular Ruby language.

The event also includes lunch, followed by ample time to ask questions of the panel members, who will share their experiences and offer advice on a successful career in technology.

The hands-on portion of the event will also position participants to apply for the upcoming cohort at Code Platoon, a nonprofit programming “bootcamp” that helps veterans and military spouses transition into the civilian workforce via 14 weeks of technical training followed by career placement. Significant tuition assistance is available, and veterans or military spouses who successfully complete the program are eligible for internship with sponsor companies.

“I decided to teach about AWS and Cloud9 because cloud computing is the direction that the industry is going toward,” Young said. “I chose Ruby because it’s an extremely high-level language that reads and writes a lot like regular English.”

Also on the agenda are tools that move developers from working on their own computer to collaborating on the Internet.

“I want to get them all set up on their coding skills, including Github and scripting basic algorithms that can get them past the initial phase of interviews,” Young said. “I’ll be teaching them an algorithm that 99 percent of developer candidates cannot solve, a fun problem called ‘fizzbuzz’ that can be tackled a number of ways.”

Rod Levy, Code Platoon’s founder, said he is eager to talk with participants about the bootcamp’s curriculum, success rates and unparalleled teacher-student ratio.

“We’re also pleased that the seminar’s participants will have access to experienced developers’ perspectives and Deloitte’s proven expertise in serving veterans and military spouses,” Levy said. “Their extensive hiring efforts produce great results, but they also are leading the way with the support they offer on the job.”

While the 5-hour event is free, only 20 seats are available. To sign up, visit this link, or call Rod Levy at 312-767-7673

Deja Baker’s Coding Journey

Deja Baker’s Coding Journey Leads the Way for Women and Veterans Alike

Despite the fact that the tech community is growing faster than ever, there are still two demographics that are often overlooked – women and veterans. However, the dearth of representation from both communities is quickly changing, especially when you have individuals like Deja Baker spearheading the effort. Baker, who enlisted in the Navy as an Analyst, eventually pursued her interest in technology as a Computer Science major at the Naval Academy.

Seeking to further her education in the coding industry, Baker applied for and received Code Platoon’s Women In Technology Scholarship, which fully covers her tuition, and is scheduled to attend the all-veteran coding bootcamp this fall. While there were a number of other bootcamps to choose from, Code Platoon was always the first choice for Baker.

“One reason why I chose to apply for Code Platoon is because its exclusively for veterans,” Baker said. “I feel that being around people from a similar background, who are working towards the same goals, will prove more beneficial to the process.”

In addition to providing a sense of community, Baker believes that an all-veteran bootcamp will likely be composed of the most highly motivated and disciplined students in the coding industry.

“Veterans have worked in a variety of different roles all over the world, and because of that, veterans have a wide array of experiences that allow them to adapt quickly when engaging in new projects,” Baker said. “I feel that a lot of veterans have the drive and the aptitude to work towards a role in tech.”

Although many of today’s veterans often have skillsets that translate well to coding and programming few choose to pursue a career path in the tech industry. Baker says that veterans who have given thought to a career in coding should, at the very least, give it a try.

“I know a lot of people that are interested in coding who are too worried to see what it’s all about, but there are abundant resources online to just dabble in it and see if coding is for you.”

It’s a sentiment that’s shared by leading tech giants such as Google, IBM, and Intel, all of whom have taken measures to help veterans gain a footing in the tech sector. And because there are plenty of opportunities waiting for veterans with strong programming skills, Baker says she’s eager to begin her first day at Code Platoon.

“I’m excited to have this opportunity to study and work towards becoming a developer; I’m looking forward to working in teams in a highly collaborative environment and to be challenged while solving difficult problems.”

3 Tracks for Veterans and Military Spouses

3 Tracks for Veterans and Military Spouses Interested in Becoming Software Developers

For people interested in becoming software developers, it may seem as if there are infinite ways to embark on that path. Which is great, because having so many options means anyone can learn to code, but this is also bad, because you can get seriously bogged down trying to figure out how to get there.

To simplify the choices, let’s take a look at the three major forks you can take, and how to navigate them. They vary in investment (think time AND money), expediency and outcome. (The goal here is to narrow your focus, not provide an overwhelming list of possibilities, so this is hardly an exhaustive list of options.)

Path #1: Traditional: Get a degree in Computer Science

This is the most traditional way to enter the world of software development, but it is also expensive and takes the most time. Bachelor’s degrees take four years, a master’s degree typically takes two. Fortunately, many veterans and military spouses have GI Bill funds that they can use at universities. If you go this route you may as well use the top ten programs as a starting point. This is most tried-and-true way to enter software development, and no hiring manager will thumb his or her nose at your background (although there is by no means a guarantee of a job). Moreover, if you do attend a prestigious program, you will also enjoy the benefits of having access to the alumni network, not to mention a thorough knowledge of, well, computer science that can take you in a lot of directions.

Despite its advantages, a CS degree can be a daunting and expensive undertaking. For people who are changing careers or with families to support, being out of the workforce for several years might not be practical. And these days companies often fault CS graduates for not having much practical experience.

Bonus tip — possibly the best deal on a CS degree is offered online by Georgia Tech, which happens to be a Top10 program, for $7,000.


Path #2: Nontraditional: Coding Bootcamp

The premise of ‘coding bootcamps’ is to take a deeply interested beginner and, in a matter of months, teach all of the practical skills to qualify as a junior software developer.  These schools are named bootcamps, because many follow an ‘immersive’ philosophy, which requires students to work 60- to 100-hour weeks. The cost, too, is usually under $20,000, and pales in comparison to the cost of traditional higher education, The bootcamp model is reasonably new, but has exploded in popularity as a way for career changers to learn the skills to fill the growing need for software developers. Today dozens (hundreds?) of coding bootcamps, in all shapes and sizes, dot the country, with some of the schools offered wholly online.

Some factors to consider while comparing these schools: technology stack, location, length, cost,  reported outcomes and curriculum. Course Report is a good starting point for this research. One simple guidepost: Look for coding boot camps that offer at least 1,000 hours of instruction/coding/project time.

For veterans and military spouses, there are a few additional points to consider. Some coding bootcamps are eligible to accept the GI Bill. Operation Code, a nonprofit organization whose mission is to help the military community learn software development and break into the tech industry, keeps a list of these coding bootcamps. Code Platoon (disclaimer, I’m the executive director), is a Chicago-based non-profit coding bootcamp exclusively for veterans and military spouses that offers its students $10,500 scholarships.

Other reasons to go to a coding bootcamp instead of college? The slide in this article says it all. Much less time spent out of the workforce, and, for the better bootcamps, pretty good employment outcomes. You’ll see a greater emphasis on building products, rather than theory (not unlike learning to be a carpenter versus studying to be an architect). The fast pace can’t accommodate the rigorous study of algorithms and problem solving that a CS program can, of course, and some employers are still skeptical about hiring bootcamp grads.  

Bonus tip — probably the best deal in coding bootcamps is online Free Code Camp. It’s rigorous. It’s long. It’s well designed. It’s FREE! Get through that and perhaps supplement with this algorithms class.

Path #3: Self-paced online learning

If you want to explore your options, to try as many different things as possible, and have the time, you can try to learn on your own. There are many, many ways to do this.

If you want to pursue this path, please:

  • Don’t stress about which language/framework is hot. Start with JavaScript (widely used), although Ruby on Rails (which we teach) and Python are great too. Nothing wrong with picking other big ones like C# or Java — they just have a longer learning curve.
  • Get on an online guide. Bento.io and The Odin Project are two examples of free sites that will guide you, step by curated step, down the road to learning web development. They gather lots of different resources to help you learn and remove the guesswork as to what you should learn, in what order, and from where.

Of course, to just get a feel for the business or explore its many facets, you’ll find a boggling array of resources.  Codewars.com, Hacker Rank and Codingbat have lots of free programming challenges, as well as some guidance on how to go through them. Alternatively, you could pick a project that you are interested in, either something you want to build (a website, app, etc.) or that someone else has suggested. And then go build it!

Additional resources

  • Operation Code — for all kinds of feedback for a veteran who wants to enter software development — join the Slack channel
  • Not necessarily free, but good resources include: TeamTreehouse, Codeschool, Udemy, Upcase, Flatiron, Thinkful, Coderbyte, Learn Code the Hard Way, https://automatetheboringstuff.com/

 

3 Tracks for Veterans and Military Spouses

Code Platoon Graduate Javier Revuelta:How a challenging experience became rewarding, and led to a dream job

Javier Revuelta: How a challenging experience became rewarding, and led to a dream job

Javier joined our very first cohort back in January 2016 and graduated in May 2016! We asked him to share a few answers with us over email about his experience with Code Platoon.

Javier Revuelta

Former title: Korean Cryptologic Linguist, United States Air Force
Current title: Ruby Developer Intern at PowerReviews

How did it feel when you transitioned out of the military? What would you say to others who are going through/will go through the same transition?

Transitioning out of the military was an interesting experience, because despite my eagerness to start a new phase, there was a long period of adjustment back to life beyond the uniform.  I went straight back to school to finish a Bachelor’s degree and, while certainly useful, at the end of the process I felt like I had just gone through the motions, somewhat.  Get out, go to school, get a degree, go find a job—that sort of thing.  Code platoon was frankly the turning point that made me feel like I was on a real career path, rather than simply having a decent job.

To anyone who is transitioning out of the military, I would simply suggest giving yourself the time to really consider where you want to be in a few years.  Ultimately, we are all looking to be happy and fulfilled in our lives, but that can take many forms and half the battle is being honest with yourself about what that means to YOU.  Whether your choice places you near or far from the skillset you developed in the military isn’t all that important.  Don’t be afraid of going way out of your element.  

What do you do on a typical day now in your civilian career? Is it different from your time in the military?

I am currently a software engineering intern at PowerReviews.  I support two Rails applications, and have had the opportunity to collaborate developing new features and seeing the entire process of bringing a new application to life.

A typical day starts around 8:00 or 9:00 am with arriving to work and checking for pull requests that have been submitted by the team.  I familiarize myself with the work that went on the previous day and ask any questions that might come up while I do code review before we merge the newest batch of changes.  I will then take a few minutes to prioritize the day in terms of outstanding tickets I might have, and will try to do some coding before our standup meeting at 10:30.

Once standup time arrives, the team gathers and explains the work each person has done since the previous day.  We are encouraged to bring up anything that could be blocking our progress so we can address that quickly.  I will generally give some idea of where I am with projected completion times for outstanding tickets, and mention whether any of my work is relevant or could impact any of the work that the others are doing.  Standup meetings tend to be fairly short, so I am usually back at my desk within 15 minutes.

Once standup is complete, I can get a good coding session in before lunch.  Work tends to have a wide range of flavors, but taking today as an example, I spent the morning writing some tests for Active Record models.  Lunch was going for a quick run to clear my mind, and then it was back to tackling a few bugs in the code for one of our apps, as well as re-visiting an API I had written to expand its features, since requirements for it had changed.

The work that I did in the military involved foreign languages, so there are certainly some parallels to be drawn.  The process of learning vocabulary and phrasing in Korean ties closely with working out the syntax of- and well as writing idiomatic Ruby, for example.    

Why did you join the military? What does the military instill in you?

I was unsure about what I wanted to do with my life, so I walked into a recruiter’s office almost as an afterthought.  As soon as I got the option to become a cryptologic linguist, I knew that I would be in for a very special experience and the rest was history.  The military will teach you many things, but the most important ones are leadership and teamwork, which go hand-in-hand.  Nobody is above the team, nobody is dead weight, and nobody gets left behind—lessons are taught quickly and effectively if you struggle with any of those concepts.  What comes from that is a strong sense of self and core values, along with a level of camaraderie with your peers that will, in all likelihood, never be matched in your civilian life.

Why did you decide to join Code Platoon?

Code Platoon opened a door that I had long ago considered to be closed.  Going back to the reasons I joined the military, one of the things that the recruiter asked me after I had completed all of my assessments was whether I had an interest in languages or programming.  Back then I said languages, but I spent the next ten years wondering what would have happened if I had answered differently.  Code Platoon gave me a chance to answer that question again and choose a new path.

One of the most important things that led to my decision to join Code Platoon was an early conversation I had with Rod while I was finishing up my application.  It was clear to me that the best intentions were in place with this program: non-profit, veteran focused, etc., but I knew that if the right person wasn’t at the helm this would be short-lived.  Rod instilled an immense amount of confidence in me, and his absolute frankness about the program, the challenges ahead, and his plans to really build something great made this an easy decision.

Take all of that and add a generous tuition-assistance program coupled with companies willing to grant internship slots to new graduates, and you have a package that is unmatched by any other boot camp.

What was your favorite and/or most memorable part of it?

I will always remember the camaraderie and dedication that everyone showed day in and day out.  Most of us have been out of the military for a while and were complete strangers when we first started the program, but I know that I have lifelong friendships here and that I could trust these guys with my life.

Memorable?  Many things stand out: hackathon night pairing with the guys at Enova, the surprise of getting our graduation coins after presenting our final projects, walks around the block to try to clear our minds and discuss a given project, or even the cheesy ‘Welcome Back’ CSS animations for the e-greeting card we built for Rod when he got back from a trip.  I’ll never forget having our instructor take on multiple accents/personas to play ‘client’ or ‘consultant extraordinaire’ when we were tackling our projects.  It’s the small things that made this whole experience amazing.  

How did you feel at the beginning of CP?

I was excited to take on this new challenge, proud of myself for making the leap of transitioning out of one career to pursue my real passion, and also slightly nervous about my ability to get through it all and succeed.  Would I be able to handle the curriculum? Could I really build a new career as a software developer?

I would eventually learn that the answer to both was a resounding yes, but those first days definitely put us all to the test.

What did you think of Code Platoon overall?

        Code platoon was an interesting experience; it was certainly rewarding but immensely challenging at the same time.  We were provided an incredibly capable instructor (rewarding!), but the teaching style – in having to compress so much information into such a small timeframe – was not for everyone (challenging!).  I don’t think I could have achieved what I did anywhere else, and in that I give full credit to Rod, Josh, and Brent for doing an outstanding job as we navigated this new process together.

        Ultimately, I think what brought Code Platoon to life was the camaraderie.  For all the happy years all of us have spent as civilians, there is something to be said for being in a group of people who have also served in the military.  There is no leaving anyone behind, or losing sight of the goal – and that is something that was proven time and time again as we struggled, came together, and overcame many of the challenges that we faced in those sixteen weeks.   

What advice would you give to people who want to get the most out of Code Platoon?

        The most important piece to getting the most out of Code Platoon actually needs to occur before ever stepping into the classroom: gaining a full understanding of what programs like these demand of you and arriving at the right mindset.  I can’t say that any of us can fully appreciate that until we are in the middle of it, but reflecting on and accepting the demands and stresses that this would place on my life certainly helped me when the pressure was on and everyone was starting to crack a bit.  This will be difficult.  This will demand more of you than any academic endeavor you’ve engaged in previously, and it will beat you into the ground if you’re not in 100%.

How has joining Code Platoon affected your life?

        It changed my perspective on learning and completely redefined what I now consider difficult or challenging.  From a confidence standpoint, I am fairly certain that – given enough time – I could learn just about anything, programming-related or not.

        I am currently finishing the second month of a six-month internship, and that is thanks to Rod’s efforts to get enough sponsor companies lined up for us.  So far, the support here has been outstanding, and I find myself at a company where people really  seem to enjoy their work.  You wouldn’t believe what a difference that makes every morning when I walk in!  

What do you want out of your career today?

I want the fulfillment of knowing that I am tackling and solving difficult and very different problems while working with a great group of people.  I know that my happiness is tied intrinsically to satisfying a high level of intellectual curiosity—so far the work that I am doing has delivered in spades.  

Why veterans are great in tech

1

The intersection between veterans and tech has been scrutinized in the past few years by important individuals like President Obama as well as important companies like Microsoft. Society is finally beginning to realize that veterans are ideal employees in the tech industry. Not only are veterans readily available, since they are a frequently untapped talent pool with a sadly high unemployment rate of 9.1% just late last year (20-35yr veterans, IVMF Sept. 2015), but also they possess the crucial skills that employers in tech want.

2

Discipline

One of the best skills that the military develops in all of its soldiers is discipline. During their tough years in the military, soldiers are forced to live very regimented lives that follow strict rules at all times. As pop culture and reality shows us, these rules are not always easy to follow (cough: 5am wake up time). Orders must be followed at all times, respect maintained, MREs eaten, and all without complaint or hesitation. True military discipline is an asset to any employee, and especially one working in the tech industry, which is known for being highly dynamic and fast-paced. Discipline is what gets you to work on time, all the time. Discipline is what forces you to tackle everything on the to-do list, without slacking. Discipline is what veterans have, and what every tech company needs in its employees to be successful.

3

Attention to Detail

Close attention to detail is another skill that is cultivated by military service. During deployments to dangerous countries where bombs and ambushes could be hidden at every turn, paying close attention to detail is key. As an air force engineer, any mistake you make could cause an aircraft to malfunction, so you always, always pay close attention to the details. Every veteran will be meticulous about their work thanks to the military, and that means they will only ever do and turn in top-notch work. Like this veteran-turned-iOS-developer states, “I learned quite a few things in the military that paid off in later years. The biggest was attention to detail. I worked in positions where a mistake could possibly cause an aircraft to go off course… So we checked and double-checked our work and then checked again, just for fun.” Meticulousness is required in technology, where even the smallest details can be paramount, so make sure your company has great employees who operate with military precision.

4

Perseverance

Few people outside the military are exposed to as many pressures as soldiers are, and even fewer would persevere through the pressures to accomplish mission objectives like soldiers always do. Veterans are clearly masters of perseverance because the military has taught them to never give up, regardless of how dangerous or unpleasant circumstances are. Since the tech industry is relatively new, it is facing new problems and challenges every day that no one necessarily knows how to solve. This makes perseverance key in any tech employee since most problems will therefore be challenging and difficult and only the truly persevering will manage to overcome frustration and continue giving their all.

5

Problem Solving

You can’t survive the military without becoming a problem solver. Throughout training, simulations, drills, and any kind of exercise, almost, the military challenges its recruits to be flexible and creative, and to solve problems in all kinds of situations. During deployments and time in hostile countries, soldiers similarly have to devise ways to make up for discrepancies between plan and reality so that the mission can still be fulfilled. If veterans have survived by solving problems and thinking creatively when bombs were raining down on them, they can probably solve most problems that face employees in the tech industry.

6


About Code Platoon:

Code Platoon is an immersive, beginner-friendly coding boot camp located in the heart of Chicago. Code Platoon offers to cover 80% of tuition costs if you are a veteran or a military spouse, so the total out-of-pocket cost is $2,500. Code Platoon provides instant leads internships, interview preparation, job counseling, employer matching. Join us today by signing up at codeplatoon.org/apply.

Application tips and how to make the most of your time when you’re at coding boot camp

Part II: You picked a school and decided to apply

Congratulations! Hopefully you’ve considered your answers to all of the questions in Part I carefully and are eyeing the school of your dreams (if you haven’t, here’s where you can read Part 1).
But don’t get too excited yet, you still need to get accepted into that dream school…

1 How do I get in?

Most coding boot camps have a fairly long application process. If there are short answer or essay questions be sure to answer all of them and try to reflect passion in your writing. If there is an interview or coding test, try to show your thought process and your amazing problem-solving skills rather than focusing on just getting the right answer. This gives boot camp recruiters a reason to accept you even if you’re answer was slightly off or if your code was a little buggy.

3

Recruiters will probably ask for a normal, paper resume as part of the application, but it would also be highly beneficial if you had a strong online presence. You can display any prior coding skills on GitHub, make a personal website, and perfect your LinkedIn page. These simple things will help you have a stronger personal brand and appear more professional when your application is being considered.

Code Platoon’s application process only requires the DD-214 and Statement of Service forms for eligibility, and then 60-100 hours of pre-work on computing basics, for example.

2

2 What should I do to prepare myself for boot camp?

Frankly, a lot of things. And you thought applying was hard.

If the coding boot camp you want to attend doesn’t already stipulate a few tasks for you to do, to make that boot camp price tag pay off, you should first practice coding as much as possible, in whatever language it is that you will be learning. There are most definitely going to be online resources that you can use, such as the aforementioned Codecademy, Free Code Camp, and so many others that are accessible once you hit ‘enter’ on your favorite search engine. There’s also the all-around great resource Bento.io, which aggregates online resources that are available to learn coding.

3 What should I do while I’m at boot camp?

When you are in a coding boot camp, what ultimately matters is how hard you are willing to work. Perseverance and grit make the programmer, not how many languages they know. Working hard should be your number one priority if you want that ROI to be as high as possible. When you’re not in class, you should be studying or practicing what you covered in class. You need to put in all of your effort for those 10 or so weeks; again, the best boot camps tend to be immersive, which means plan on putting aside most of the rest of your life while you are going through the bootcamp.

Apart from working as hard as humanly possible, you should be asking questions. As many as you can. Try to answer your own questions first if possible, but don’t be afraid to ask for help. Your instructors are a great resource and your classmates will appreciate your engagement with the material.

Finally, network, network, network. Get to know your fellow developers-in-training. Talk with your instructors and attend events and career fairs. Connect with potential employers and companies that you would like to work for on social media by following them and replying to their posts.

1

4 What do I do after boot camp?

If you’ve graduated from coding boot camp, you should now have the skills you need to land a job as a developer if you’re boot camp was worth its salt. So what are you waiting for? Research companies! Apply to jobs! Maintain and hone your new skills! Start that new career in tech that you have always wanted and have worked so hard for.

 


About Code Platoon:

Code Platoon is an immersive, beginner-friendly coding boot camp located in the heart of Chicago. Code Platoon offers to cover 80% of tuition costs if you are a veteran, so the total out-of-pocket cost is $2,500. Code Platoon provides instant leads internships, interview preparation, job counseling, employer matching. Join us today by signing up at here.

Code Platoon Featured in TechRepublic Article

Code Platoon Featured in TechRepublic Article

TechRepublic features Code Platoon as a good education option for Veterans wanting to enter a career in software development. Read the full article

Table XI Helps Code Platoon Students

Table XI Helps Code Platoon Students Learn Modern Technologies

Table XI, a leading Chicago Software Development consultancy helped prepare Code Platoon students for the real world. Read the full article

Why I Chose Fish Over Bash

Why I Chose Fish Over Bash

Why I chose Fish over Bash for students

I’m currently the lead instructor at Code Platoon and an instructor/developer at the Turing School of Software and Design.

I’ve been advocating the Fish shell and when the choice is up to me, I choose that for my students. Enough people ask about the decision, particularly in relation to the preinstalled Bash shell, that I figured it’s worth laying out my reasoning.

TL;DR

Fish addresses many of bash’s shortcomings and is much kinder to newcomers, with only 3 or 4 new things to learn for people coming from Bash.

The decision give students my defaults

I used to let students choose whatever shell/editor/etc they wanted. But most students are not in a position to understand the tradeoffs, and they fear making changes. This would often lead to situations where students would defer all choices and 6 months into the program wouldn’t have so much as a coloured prompt. Why does a coloured prompt matter? It means that every command they type, they have to scrutinize carefully to see what the command was and what the output was. Add that to all the other costs of being new, and it gets expensive quickly!

The problem with being a beginner is that you get a lot of practice in staying a beginner. What a beginning tennis player does most of the time is chase the ball. They get to be really good at chasing the ball, but all other forms of tennis involve hitting the ball.

— Tim Gallwey

I eventually decided that letting them choose had little value because it meant inconsistent environments, most in some state of brokeness. Students were mostly overwhelmed by all the decisions they had to make, and were too ill-informed to understand the tradeoffs anyway. It turns out that overchoice leads to dissatisfaction, regret, and paralysis. I know the tradeoffs, and what they struggle with, so I’ll make those choices for them.

So then, the question becomes “what environment should I give them?” I’ve tried 4 different editors now (Sublime, Atom, RubyMine, and Vim), and two different shells (bash, fish). In the end, I realized that most of the decisions I make for myself are better than the defaults, and due to my prioritization of feedback, my choices are generally good for learners. One of those decisions was the Fish shell, and this post is intended to explain why it is a better default than the Bash shell.

The case for Bash

Based on conversations I’ve had, there are 3 arguments for Bash:

  1. It is already installed.
  2. Most shell code is written for Bash.
  3. Most people that can help know Bash.

My perspective: We are installing many new things already, and don’t accept this as an argument that we should stick with many other defaults. Fish is mostly compatible with Bash. And there are only a small number of new things someone with Bash knowledge needs to learn in order to use Fish.

The case for Fish

Highlighting

Fish will highlight the command they are typing differently from the arguments they are giving, making it apparent that this first bit of text is different. If it is not made explicit like this, students can go months before they understand that the first thing they type is a program and the things after it are arguments.

highlighting args

If they type an incorrect command, it highlights this in red, so they immediately know, as opposed to knowing when they get an error message after running the completed command.

highlights incorrect commands

It highlights quoted args differently to let you know they are a single argument, and if you have incorrect syntax, it highlights this in red:

highlighting identifies command vs arg vs quoted arg vs incorrect quoting

Suggestions

Fish will suggest previously typed commands. What was that command to start postgresql? type pg and it will suggest whatever I put last time! This is even directory aware, so that suggestions will be be prioritized based on where I use them!

suggestions

It understands program options and lets you tab complete to see what the option is and a brief description of the option:

suggests option completion with summary

Highly compatible with bash

Syntax for common use cases is usually the same:

Wildcards are the same

wildcards are the same

Redirects are the same

redirects are the same

Pipes are the same

pipes are the same

Things Fish does much better than Bash

It correctly handles string escaping where bash completely falls down (Bash later added $'this kind of string' to compensate).

fish quotes correctly bash does not

It’s much easier to set up a prompt that changes based on the success of the previous command (bash can do this, too, it just took me several years to figure out the right way to do it — the PROMPT_COMMAND variable, if you’re curious)

success displays in the prompt

When you get to scripting it, the language syntax is dramatically more understandable. I tried to write a function just now, in bash it took me 2 tries, then I wrote it long-hand so I could press up to see how it translates to one line (5 tries in the recording because I messed up). Notice that even if the fish version wasn’t obvious, the autosuggestion from my previous success would let me know. And while defining it, I get syntax highlighting and proper indentation.

functions in bash vs fish

Fish handles string escaping and allows you to edit across lines. I’m not sure what library bash uses, but watch what happens when I try to go up to edit what I wrote (also notice I got the name wrong at first, but fish highlighted it in red, so I knew to go fix it). It’s good enough that I’ve written 30 line programs inside of strings in the shell!

editing in bash vs fish

Bash only recently got basic data structures like hashes and arrays, and the syntax to use them is both unintuitive, and forgiving of mistakes (meaning it is easy to do the wrong thing, and difficult to realize it). Here’s an example: setting arrays involves complex syntax, whereas in fish, it’s the same syntax you use for everything else (a command followed by args) and look how many ways there are to access it wrong in bash, many of which you wouldn’t realize you got wrong unless you knew to check it against an element with a space. And you have to opt into safe behaviour by quoting everything… I’m not even sure what the unquoted use case is!

arrays in bash vs fish

And here’s bash’s syntax for hashes: http://stackoverflow.com/questions/1494178/how-to-define-hash-tables-in-bash

Another thing about Bash

Also, the relationship between .bashrc, .bash_profile, and .profile is utterly confusing and leads to bugs when things get placed in the wrong file (I’m pretty sure this is because it’s inconsistent across operating systems). A very competent friend (maintainer of gems we all use, who prides himself in knowing everything) once confidently told me what they all did, and I tried it in front of them and it was incorrect.

Summary

So, Fish addresses many of bash’s shortcomings and is much kinder to newcomers, with only 3 or 4 new things to learn for people coming from bash. I documented most differences I could think of over here, and that document goes much further than even I actually need. In our material on the shell, there’s only one place we need to differentiate it from bash, which is in how environment variables get set (12). So the cost is low and the value is high.

Salutation

Hope that explains my motivations sufficiently