Finishing the two part episode on skills web developers need to know the guys tackle the skills needed to land a job along with advanced skills to set yourself apart. The episode closes with a list of honorable mentions that do not directly apply to web development but are interpersonal skills useful to a career in development.
You’ve got the basics down and this is what you need before you start submitting resumes.
The intermediate skills listed in the episode is the base needed to begin a career as a web developer. The concepts build upon the previous listed basic and fundamental skills. These include methodologies of the web, programming paradigms, maintaining a project, and testing and debugging.
Set yourself apart and above the crowd by learning and understanding the advanced skills. Knowledge of concepts such as data structure, algorithm development, modelling, and design shows more than a passing interest in the field and gives the basics to move up as a developer.
Many of these skills are deep enough topics to warrant their own episodes. Will and BJ provide an overview for further discussion.
10:56 Intermediate Knowledge To Get the Job
- 11:11 Core Concepts and Methodologies of the Web
Learn the basics of web methodologies such as model-view-controller (MVC) and model-view-viewmodel (MVVM). MVC is a pattern that divides software architecture into three parts: model, view and controller whereas the MVVM is a pattern that abstracts the view’s state and behavior. The model manages the logic and data whereas the view is the output. There can be multiple views for a set of data. The controller converts inputs into commands for the model and the view, it controls them.
Object Oriented Programming (OOP) is the predominant paradigm in the web development world. Functional programming is however gaining notoriety and many of the functional patterns have been integrated into OOP languages.
Take a moment to read the original papers that both waterfall and agile originated. You will see the intended use of each and how they are implemented differently in various companies.
- 13:57 How to Maintain a Project Over Time
“All code is legacy when it leaves the door.”
As a web developer you will need to know what it takes to put software out where you are the maintainer. Your choices as a developer will effect the extensibility and portability of your code base.
- 15:25 Unit Testing
Know why unit testing is valuable but avoid making heavy assertions about how it’s absolutely necessary and any project that doesn’t have it is bad. You will rule out 95% of the industry.
“Unit testing is code, it’s also part of the code base and has to be maintained.”
Unit tests are written for code that is especially painful to fix in production. The issue many development teams run into is that unit tests are not maintained along with the rest of the code base.
- 16:14 Task and Issue Management
Take the time now to learn the basics of issue tracking be it with JIRA, GitHub Issues, or Issue Tracker in BitBucket. Learn time savers such as linking and closing issues with commit messages.
Practice these skills on side-projects and use them even when it might be overkill. You will gain practical knowledge of how to use these that only comes from experience. Also, it will make your codebase easier to read and modify later when you haven’t been working on it in a few months.
- 17:51 Debugging
“The hardest problem to solve is the one where you don’t know where the problem is”
Debugging tools allow you to step through your code line by line watching how the variables changes. If debugging tools are not available simple logging statements or alerts inserted in the code to find where the problem occurs. Setting break points and planning for debugging will improve the way you write code. You won’t write complex one liners but change the shape to make adding break points easier.
- 20:42 Project Management
Effective estimations build into project management. Knowledge of how projects are managed and the various tools used is a critical job skill. Even if you are not a project manager understanding how it works is important to building a working relationship with the project manager and other members of the team.
- 11:11 Core Concepts and Methodologies of the Web
21:44 Advanced Knowledge Stand Out
“You can have the fastest CPU in the world but if it overheats and fails… you’d rather have several hundred million Raspberry Pis”
- 21:55 Data Structures
Higher level languages are excellent places to practice these skills. Understanding how data is structured, stored, and retrieved can greatly affect your code. For example arrays are quick when finding items but slow when adding whereas linked lists are fast for adding new items but slow in searching for items. Knowing this you are able to optimize your code based on what is important for your app. While you may not need to know the exact details of what it does, understand the overall structure and what to use where in your code. You are always optimizing, it’s a matter of what you are optimizing.
- 35:22 Modelling
“You have to take a problem that is too complex to understand in its entirety, extract a common set of elements from it, and represent it a different way.” ~ Jason Roell
The ability to abstract is key here. Modelling reduces complex problems in to a set of unambiguous procedures. It converts real world problems into a set of true false statements or logic gates.
Math can be a great ally here for describing and modeling complex problems. Your understanding of the problem however should be such that you can take the mathematical explanation and convert it to a visual spacial example.
- 39:52 Search Engine Optimization
“Some of your most important traffic is crawlers and bots”
An area that not all web developers understand or place their focus is search engine optimization. When working hard to get the app running optimizing for Google may not seem a high priority.
However there are many factors that need to be considered throughout the development process that will affect a site’s ranking. Create useful sitemaps and use permalinks so that your site is indexable. Otherwise you may be the leader in your field but not show up until the third page on a search result.
Gain a passing familiarity with Google Analyitics. Be able to tie into social networks and see where traffic is coming from to your site. Get to the point where you are first order ignorant.
- 43:31 Design Sense
Learning the basics of design principles not only helps in communication with designers but will allow you to offer suggestions when they ask the impossible or improbable. Learn the principles of layouts, how to use images, and best practices in typography. A great place to learn more about design is Smashing Magazine.
- 21:55 Data Structures
47:47 Honorable Mentions Nice to Know
- Empathy in Communication
- Customer Service Skills
- Proper Usage of Google
- Practice Questioning Assumptions
- A Native Mobile Platform
IoTease: March is for Makers
IoT in Space
Closing out March is for Makers we have a few projects that take the IoT world to the edges of Earth’s atmosphere or inner space. These projects use a weather balloon to send a Raspberry Pi, camera, and sensors into a brief low earth orbit. The images are amazing and the data collected fascinating.
Pegasus Mission: IoT from the Edge of Space
A couple of Microsoft employees sent a weather balloon with a Raspberry Pi, sensors, and a camera into the upper atmosphere. They streamed analyitics and video of the flight. Pegasus Mission II has been build and they are currently waiting on a launch window. The data can be tracked online or via their mobile app available for iOS, Android, and of course Windows Phone.
Project Icarus: MIT Students’ Affordable Project
MIT students Oliver Yeh, Justin Lee, and Eric Newton created a similar project to build you own mission to space for under $150. Their balloon lifted around 17 miles up.
Project Valkyrie: Complete Developer Podcast Mission to Space
Unlike the previous March is for Makers IoTease posts we are not listing out the components and how to build a space mission. Will and BJ in conjunction with BJ’s sister, a science teacher in Florida will be building their own mission with a planned launch date later this year. As this is a project in development be on the lookout for future updates on the progress, tests, and components used. For more information or to join the team email us at firstname.lastname@example.org, leave a comment in the shownotes, or send us a message on Twitter or Facebook.
Tricks of the Trade
“Assume that anything you are dependant on is run by psychopaths.”
Will discusses the issue with NPM and loss of certain packages. If your code is dependant on someone else’s code, you need to have a local cache. There are many failure modes that may cause you to not be able to access the packages. Package management should be immutable, distributed, and should have a failover. Everyone that was burned by what happened with NPM failed on one of those.