Providing Feedback Blog

Thoughts on Giving and Receiving Feedback in Programming

As Code Platoon’s summer intern, I’ve been lucky to listen as my platoon-mates talk about their experiences inside and outside of the military. Learning how they stepped up as leaders and completed missions that often make my university projects look like coloring pages.

One of the things I’ve been struck by is how often their stories include recounting the criticism they received from a superior or teammate on their work. The story isn’t told with a tone of embarrassment or bitterness but in the context of what they learned and how they corrected their mistakes. This positive response to feedback is not what I’ve come to expect in a world full of griping about bossy bosses and nit-picky teachers. I believe it is part of what has made my platoon members so strong and adaptable.

But now they face a new challenge – how to take their ability to receive feedback and adapt it to a team environment in software engineering.

To thrive in tech, programmers must not only receive but also offer difficult constructive criticism. For most people, this doesn’t come naturally. While our ability to work in teams is often considered an innate characteristic, something a person either has or doesn’t, collaboration is a skill every programmer can and should develop.

Like almost everything in programming (and in life), the best way to improve is to practice over and over again. Students at Code Platoon work in pairs or small groups on many of their coding challenges and projects during the 14-week program. In the tech world, this is referred to as pair programming. Often “lone-wolves” like myself come to enjoy having a programming partner, but unlike shooting hoops or solving math equations, while we may enjoy pair-programming, it’s hard to know if we’re getting better. Code Platoon Feedback

After we engage in collaboration, receiving feedback from our teammates is key to understanding our areas of strength and what we can do to improve. The opportunity to learn and grow into a better team member is a privilege. I am grateful for anyone who has given me feedback, negative or positive, preventing me from making a much bigger mistake somewhere down-the-line and many of Code Platoon’s students feel the same way.

Unfortunately, not all critiques are helpful, and some are just hurtful. To avoid the “hurt” Code Platoon teaches that feedback in a programming team environment should focus on three things – being specific, being actionable, and being kind.

During a weekly meeting, a few students recently commented, while they were happy to receive feedback, they didn’t know what to look for or how to critique their partners. They didn’t want to critique their peers unless they really felt their feedback would help them.

For those students and members of the collaboration heavy tech world, I put together a checklist. I’ve included points to consider for giving productive feedback, drawing on insights from Code Platoon’s instructors, and a wonderful presentation by Kelly Cronin of ThoughtWorks.

When your team or pairing is in an appropriate mindset for offering and receiving feedback, try implementing some of the suggestions. As someone’s collaborator, you are the best judge of what went well or where there are opportunities for improvement. , Creating this open dialogue of feedback allows all team members to improve, ultimately creating a more successful coding challenge or project!

 

Merrill O’Shaughnessy is one of Code Platoon’s summer interns and a T.A. for the full-stack web development course. She is currently studying computer science and mechanical engineering at Duke University and is interested in UX /UI design. Follow Merrill on LinkedIn or find her on Dribbble.

The Best Paying and Most In Demand Programming Languages in 2019

The Best Paying and Most In Demand Programming Languages in 2019

At Code Platoon, we track national demand for programming languages so that our veterans and military spouses are trained with the best tools for a career in software development.

But whether you’ve never coded before or you’re a veteran looking to pivot, when you’re deciding which programming language to learn, the following demand-based insights can help inform your strategy.

This article attempts to answer which programming languages command the highest salaries and are most frequently targeted in job postings.

How we identified the current top programming languages

To answer our questions, we conducted simple searches on Indeed.com, one of the largest job listing sites.

For the question of compensation, we started by searching for the top 15 most popular languages in a recent Stack Overflow survey and mapped the average salary for job listings with those languages. For demand, we tracked the number of total job postings targeting those same languages.

Ranking programming languages by pay and number of openings

The Best Paying and Most In Demand Programming Languages in 2019

Python: Possibly the best coding language according to the data, Python is tied for #1 in Average Salary with Ruby, which ranks lower on total job listings available. Python, by contrast, takes the #2 position for Job Postings, and holds an enormous lead in that category before third place. Python is an interpreted, multi-purpose programming language. It is often used to build web applications, and seeing exploding growth due its use in data science, machine learning, cybersecurity, and dev ops.

Javascript: Often called ‘the language of the web,’ Javascript tied with C++ for #3 in Job Postings and #5 in Average Salary. Javascript is an indispensable language to know for writing web applications, as it works both in the browser and on the server side.

Ruby: Highly-valued, Ruby ties for #1 for Average Salary and #6 for Job Postings. Like Python, Ruby is an interpreted, multi-purpose language that is relatively easy to learn. Its popularity stems largely from its web development framework, Ruby on Rails, which is very powerful, widely used, and relatively easy to get up and running.

C++: This was once a premier top-level programming language and is now used primarily in gaming and high-performance applications. C++ stands at #4 in Average Salary and tied for #3 in Job Postings.  The common and useful language C++ was designed for application and systems programming. Since its creation, it’s often been used for office applications, games, and advanced graphics. C++ is very fast and stable, but difficult to learn relative to the other languages in this list (except possibly C).

Java: Integral to large-scale legacy business applications and gaining new relevance through its adoption by Google for Android, Java maintains #1 in Job Postings and #6 in Average Salary. Java’s rankings were an exact flip of Ruby’s in each category. Originally developed by Oracle, Java is extremely popular because it can be used for mobile, web, and desktop app development, and more. Reasonably stable and fast, it is very popular at the enterprise level.

C#:  Similar to Java with Android, C# maintains a solid user base through its adoption in the Unity gaming engine, standing at #5 in Job Postings, and #8 in Average Salary. C# was specifically designed by Microsoft as a competitor to Java. Often used to build desktop apps and video games, as well as web apps, C# remains very popular in the enterprise realm. It runs on Microsoft’s .NET platform.

Swift/iOS: The biggest jump in salary from 2018 to 2019, Swift owes its rankings of #3 in Average Salary, and #8 in Job Postings to its dominance in the mobile market. Created by Apple, Swift is now often the default language for writing iOS apps (Objective C preceded it). If you want to write apps for the iPhone, look no further.

PHP: The language that powers WordPress, PHP is #7 in Job Postings, and #9 in Average Salary. PHP is a general-purpose scripting language used for the development of web applications. One of the earliest languages for web development (released in 1995), it remains widely popular today.

C: C is one of the oldest and most widely used programming languages in the world, and holds #7 in Average Salary, and #9 in Job Postings. It is used to program everything from operating systems to hardware. What makes this language so difficult to learn is in part why it is so powerful: a lot of concepts that are hidden to users in scripting languages like Python, Ruby, and even Java are exposed in C, so that the programmer has more flexibility and complexity available.

What changed from 2018 to 2019?

changes-coding-salary-job-listings

For those making a career, the direction the market is going matters as much as where it is now, so we wanted to look at some of the changes from 2018 to 2019. Since we used the same methodology for similar research in 2018, it will be helpful for a comparison.

Python and Swift developers saw the largest increases in average salary ($9,000). Python climbed the most in number of jobs posted in 2019, posting an additional 3,000 jobs. Ruby saw the largest drop in popularity, posting 5,000 fewer jobs in 2019.

What will be the most popular programming language in 2020?

It’s difficult to speculate how these programming languages will fare in the future because the supply of qualified applicants affects the number of open positions. However, as the Stack Overflow survey points out: “Python has risen in the ranks of programming languages on our survey, surpassing C# in popularity this year, much like it surpassed PHP last year.”

Python now has the largest Google search traffic of any programming language, recently passing Java. Java and Javascript come next.

If you’re also looking for more information on the usefulness of various programming languages, the TIOBE Index and Stack Overflow provide two of the most authoritative reports. Both reports consider industry demand as well as additional perspectives, and incorporate different approaches in determining the usefulness of programming languages.

If you’re a military veteran or military spouse interested in learning to code, you can apply for one of our cohorts now.

Code Platoon Week Thirteen and Fourteen - Capstone Projects

Code Platoon Week Thirteen and Fourteen – Capstone Projects

This is what we’ve been building toward the last twelve weeks. Using Flask, React, and various third party libraries, students team up to create a capstone project that they will use to show off to employers during interviews.

Working in the Real World

Perhaps the most talked about part of Code Platoon is the final group capstone project. This project occurs over 2 weeks at a technology company’s office. The company provides students with work stations, project management support, and mentorship from senior developers. Students participate in the company’s stand up cadence and have access to the office’s amenities. Because they’re building their project alongside seasoned professionals, they’re also creating long-lasting connections within the tech ecosystem of Chicago.

Graduation

Graduation day is also presentation day. After two weeks of intense work, groups present their projects to friends, family and members of the tech community. We work with students to practice their presentations and help them hone their pitch for their new app. After the presentations, students take time to network and answer questions.

Code Platoon Week Eleven and Twelve – React

The latest and greatest front-end framework that the industry seems to agree on is ReactJS, created by Facebook. This framework is extremely fast and makes the user experience very rich.

React Components

React is a front-end framework based on the idea of components. Components are reusable pieces of code that programmers can nest together in different ways to create dynamic web pages. We’ve worked with different pieces of front-end frameworks before, but React is the latest way to bring together HTML, CSS and JavaScript a complete in one complete package that is super fast and easy to write and organize.

Project-Based Learning

Students will tackle React by creating one large application over two weeks. We’ll start by coding out some very basic functionality to get a feel for how React works and what some of its major benefits are. As we develop the app, we’ll learn how to make API calls in the background, add a search function that updates the page in real time without having to refresh, and add login and logout functionality. We’ll also take a look at some common React libraries like React Router which helps manage the different pages in our app, and Redux for when managing the state of our components becomes too cumbersome.

A Fast Framework at a Fast Pace

By now our students are not just more confident coders, they’re more confident independent learners. By the end of these two weeks, students are often amazed at how much they’ve learned in such a short amount of time. Stepping into our final project weeks, students will have two state-of-the-art frameworks at their disposal, but more importantly, they’ll have the confidence and knowledge to go out and learn more. This opens up possibilities for their capstone projects they could have only dreamed about on week one.

Student presenting to class

Code Platoon Week Ten – Personal Projects

Our aim at Code Platoon is to have students graduate with the tools they need to get a junior role in software development. An important landmark on our road toward that goal is the personal project. We recognize that classroom instruction and curated challenges can teach a lot, but there are still lessons that can only be learned by stepping into a unique project where you’ll need to adapt to the challenges that present themselves along the way. That’s why we dedicate an entire week to letting students develop and deploy their own projects.

Build Something Unique

By now students will have all the skills necessary to build their own projects. They’ll have HTML, CSS and JavaScript to help them build a dynamic and responsive User interface and they’ll have the ability to implement data storage with SQL and Flask on the back end. From there we set them free to create whatever they want. In the past, students have built blogs, e-commerce sites, mapping applications, and chat apps. This is a chance for our students to take what we’ve taught them and explore what interests them. Instructors and mentors will be on hand to provide guidance, but students will do the bulk of the work themselves. The goal is that by the end of the week our students will be able to add a whole new project to their resume.

Brag About Your Work

The last day of the week is presentation day. Students present their applications to the class. Building is a great skill, but knowing how to speak intelligently and clearly about what you’ve built is just as important, especially when hunting for a job. Students will get feedback from instructors and peers on their application and presentation skills. In the end, everyone will vote and awards will be given for the best applications.

Creating Web Apps with Flask

Code Platoon Weeks Seven, Eight, and Nine – Creating Web Apps with Flask

After 6 longs weeks, we finally get to Flask, a microframework written in Python. We will use this framework to develop basic CRUD (Create, Read, Update, Destroy) apps with authentication and integrate with other web services, commonly known as APIs (Application Programming Interface).

CRUD

Most apps on the web are what developers refer to as CRUD apps. These apps are so common that there are hundreds of frameworks that exist to help speed up development. One of the most popular for the Python language is Flask. Students will start to dive deep into Flask. We’ll come back to lessons we learned in week 4 about Python’s object relational mapper Alchemy and learn to hook our Flask apps up with SQL databases. This will also be our first look at how the front-end and back-end come together to create a complete application.

Keeping Apps Secure

Once our apps are up and running, we’ll need a way to keep our users’ data safe. Security on the internet has become an enormous topic with lots of complicated ins and outs to keep track of. Thankfully, there are third party APIs that can help. Code Platoon students will learn how to use these libraries to make their Flask apps less vulnerable to attack. We’ll talk about the different kinds of attacks hackers use to get control of a site and steal data and what industry tools and best practices are commonly used to combat them.

Adding Third Party Functionality

These days, bringing in third party functionality is essential. No one writes their own mapping program – they use Google Maps API. If you want to send a text message from your app, there are services like Twillio. Need to set up a payment system? You’ll probably want to use something like Paypal or Braintree. Applications these days are breaking up into microservices: a bunch of smaller applications that do one thing well. Code Platoon students will learn how to incorporate these services into existing apps.

Adding Behavior and Creating a Personal Website

Code Platoon Week Six – Adding Behavior and Creating a Personal Website

Continuing with our front-end curriculum from last week, we’ll dig into running JavaScript in the browser. Adding Behavior and Creating a Personal Website using JavaScript allows developers to add behavior to their websites: slideshows, more advanced animation, and reacting to user events like moving the mouse or entering text.

JavaScript and the Browser

The Document Object Model, more commonly referred to as the DOM is how the browser understands your web page. We’ll break down how the browser constructs the DOM, why it’s so important, and how we can use JavaScript to traverse it. Students will use technologies like AJAX  and JQuery as well as newer ES6 features like fetch to make HTTP requests in the background.

Building a Portfolio Site

At Code Platoon, we work to make sure that when our students graduate have all the tools necessary to enter the job market as junior developers, which is why we put heavy emphasis on projects to build their portfolios. We’ll have several of these opportunities throughout the cohort and the personal site / blog is just the first. Students will spend the end of this week utilizing their new found HTML, CSS, and JavaScript skills to build and deploy their own personal portfolio site where they will be able to showcase projects and accomplishments as well as host their resumes or any other information they want.

 

 

Learning the web development with code platoon

Code Platoon Week Five – Learning the Web: Structure, Style, Function.

Code Platoon offers a complete full-stack curriculum. In week five we take our first look at front-end web development. Students learn the basics of HTML and CSS, how to implement third-party libraries that will help them create dynamic and visually appealing websites, and will finally see their code run in the browser.

Rules of the Road

In order to build anything for the web, it is essential to understand how it works under the hood. The Hypertext Transfer Protocol (HTTP) is the foundation for communicating on the web. It’s how web browsers like Chrome, Safari, Internet Explorer, and Edge talk to servers and vice versa. Students will get hands-on with HTTP by creating several small applications designed to teach the ins and outs of server-to-client communication. This is an exciting week because students start to see how all that data they have been creating and saving in databases on the server side finally gets into a browser and becomes a web application that a user can interact with.

All About Structure – HTML

Hyper Text Markup Language (HTML) is the foundation for every web page on the internet. It’s what gives web content structure and provides it with meaning, and it is a need-to-know for programmers of any kind. Students will learn how to properly structure an HTML document and how to create common content tags for things like images, links, lists and forms. We’ll discuss how the browser reads and renders the HTML we write, learn the basics of the box model, and best practices to make the code we write readable and the content we create highly accessible.

Adding Style with CSS

HTML may be the nuts and bolts of any web page, but Cascading Style Sheets (CSS) is what gives a website character. Everything about a website’s appearance has CSS code behind it. Students will practice adding color, fonts, and animations to website. We’ll look at the principles behind responsive web design and see how frameworks like Bootstrap can make creating professional looking websites easier.

SQL and Working With Databases

Code Platoon Week Four – SQL and Working With Databases

Programming languages come and go. Frameworks come and go. SQL (structured query language) is forever. Students will spend week four learning how to read and write data to Postres, a modern database, using SQL. Students will learn the basics of database design and how to incorporate a database into their app.

Working With a Database

Saving data to a file is fine for small applications that have limited functionality, but most modern web applications use a relational database. We’ll spend all of week four learning the tools and practices that will allow students to interact with data in much more dynamic and complex ways. The first step will be learning how to create and talk to a database. Databases have their own languages for accessing and manipulating the information they hold. By far the most popular, and the one students will focus on throughout their time at Code Platoon, is SQL. Students will learn how to set up a Postgres database from scratch. They’ll work on building out a schema and start to read and write data, all using SQL.

Database Design

The design and structure of a database can have a huge impact on an application’s performance. Databases need to be adaptable, scalable as an application grows, and changeable as new features get added. They also need to be secure. At Code Platoon, we teach all the skills students will need to build a database that is effective and efficient, and we’ll discuss best practices when it comes to how to store sensitive data like passwords and other personal user information. The highlight of this week will be a day-long database workshop hosted by Hashrocket. Hashrocket is a web consultancy in Chicago / Jacksonville Beach known for creating quality software. One of the presenters will be Jake Worth, a US Army veteran-turned-programmer.

ORM

SQL is a powerful tool but it can get tedious to write. Most languages have something called an object relational mapper or ORM. Python’s ORM is called Alchemy. Think of it as a way to talk to your database using the Python programming language. ORMs help developers read and write to the database more quickly and efficiently. They also cut down on code you have to write.

By the end of week four, students will have most of the nuts and bolts necessary to build their own web applications. We’ll spend week five looking at how to structure and style web pages before jumping into our first framework, Django, where all of the pieces from prior weeks will finally come together.

code platoon objects and data

Code Platoon Week Three – Objects and Data

Week Three is all about data and industry best practices. Students learn the ins and outs of Object Oriented Programming and why it’s such an effective model for writing code and handling data.

Reading and Writing Data

You can’t get too far into programming without eventually having to deal with data. As students develop their skills, they’ll begin to create larger applications. As these apps grow, they will need to consume and create more and more data. We’ll look at ways to organize and save data to files using popular formats like comma separated values (CSV) and javascript object notation (JSON). The latter is one of the most popular ways of passing data around on the web, and working with each will provide a solid foundation for students when we finally get to storing large amounts of information in databases.

Working With Objects

Once students are comfortable reading and storing data, we’ll teach them how to use Python and Javascript to build something useful with that data. One of the most popular ways programmers represent and handle data in their applications is with a paradigm called Object Oriented Programming. OOP allows programmers to easily model and manipulate data in their applications. It’s at the heart of many web applications, and it will be the foundation on which students will create their own programs moving forward.

Code Style

Great code doesn’t just have to be performative, it also has to be readable to other developers. Large applications usually have many hands poking into many parts of the code base. Even on small teams, messy code can lead to large problems. Things like naming conventions, indentation, and where and when to add comments can all affect how code is read and understood by other programmers. We’ll walk students through best practices so that the code they write will always be easy to understand and live up to industry standards.  

We’ll also explore some tools (remember those outside third-party libraries from week two?) which will ensure that by the end of week three, Code Platoon students are writing squeaky-clean code.

Week Two