Skills Every Web Developer Needs
Podcast: Play in new window | Download (51.8MB) | Embed
Subscribe: Apple Podcasts | Spotify | Email | RSS | More
The question was asked on Quora: What are the five essential skills every web developer should have? There were 91 different answers to this question, though most could be broken down into one of three categories: technical, personal, and interpersonal. Within each answer some similarities existed including basics of the web (HTML, CSS, JavaScript, HTTP(S), and server basics), security, testing, and a willingness to learn. A few of the unique responses included etiquette on sites such as StackOverflow and Github, how to handle criticism, and a pulse on the industry. In this episode BJ and Will list their necessary skills to be a web developer. Attempting to remain evergreen and language agnostic they cover the basics but leave deeper understanding to the listener or for later episodes.
The list is divided into fundamental knowledge or the absolute basics to get started, basic knowledge (what's needed for simple freelance or open source work), intermediate knowledge (the skills to get the job), and advanced knowledge (how to stand out).
Due to the length of the recording the episode was divided into two parts. This first part looks at the fundamental and basic knowledge needed to be a web developer. Next week will feature the intermediate and advanced knowledge to be a web developer as well as a brief list of the honorable mentions that did not make the list but are good to know to advance as a web developer.
Episode Breakdown
-
Fundamental Knowledge Web Development 101
- 21:50 Core Web Languages
- 23:57 JavaScript Libraries and Frameworks
- 27:25 A Serverside Language
- 31:33 APIs, AJAX, and Callbacks
- 34:31 Editors and IDEs
-
Basic Knowledge
- 37:20 Databases and Web Servers
- 43:21 Security
- 46:30 Source Control
- CVS
- Subversion
- Git
- Mercurial
- Bazaar
- LibraSource
- Monotone
- TFS
- 50:54 Effective Estimations
“By basing your skill set on learning the underlying languages of these frameworks and libraries you will future-proof yourself against this “fast-moving” industry to a point where it actually feels like things move incredibly slowly.” ~ Tim Wright
These are the absolute basics one must learn when starting out in web development. All of the future items on the list build upon these fundamentals.
These include HTML, CSS, vanilla JavaScript, and Markdown. You need to know the languages the web is written in. Learning basic JavaScript will help better understand libraries and frameworks and make switching from one to another easier. Finally the previous languages were written for the machine (browser) to interpret commands whereas Markdown is compiled and more for the human writing.
Know the differences between the libraries and frameworks in JavaScript. Learn jQuery and know when to use it or when to pick a smaller library. Choose a framework to learn and learn it thoroughly.
“This is a crucial element. If you are mainly a front-end developer, then you still need to have a cursory understanding of how things work on the back-end.” ~ David Tucker
PHP, Ruby, Python, Node.js, C++, ASP.NET, etc. Even front-end developers need a cursory knowledge of how data is transfered and how their code interacts with the back-end. A simple way to learn is via Node.js as you will already know JavaScript so that is one less hurdle to jump in learning. Being able to create the entire chain from the front-end user interface through the API layer to the database on the back-end is an important skill set.
Know the fundamentals of API calls and how to use HTTPS and OAuth. Learn how and be able to get data and parse JSON or XML.
“You want to get comfortable enough with editors that if you are asked to do something you can do it”
Starting out pick an editor or IDE and master it’s functionality. This is something that comes with time and practice. Learn the core of the editor and then explore plugins and extensions.
The next level up from the fundamentals. These are skills for getting started with simple freelance work or making open source contributions.
“At a beginning level you need to realize a little bit about relational database design and actually breaking things down so you don’t repeat yourself.”
Learn the differences in databases and languages talking to databases. Be able to take a chunk of data and break it in such a way that data isn’t repeated and able to be accessed in a performant manner. Many programmers struggle with SQL. Learning SQL will help to stand out from the programmers that do not know SQL. NoSQL is more key-value pairs or document databases.
You are not likely to keep your code locally. Learn about HyperText Transport Protocol and HTTP Web Servers. Knowing simple server tools will help troubleshooting your apps or when talking with server admins. Get practice logging in to remote servers via a pay-as-you-go service like AWS or Microsoft’s Azure.
“Basically you never, ever want to trust user inputs”
Take time to look at and read the OWASP Development Guide. At the very least know about SQL Injection and how to scrub user inputs. If you are taking user input and putting it in the code it is possible for users to shape input maliciously.
“You can have a secure conversation with the devil”
Learn how and when to use different SALTs to hash passwords. Do NOT store SALTs in the same table. Avoid using MD5 or SHA as these have been cracked. Know the protocols (SSL or HTTPS) for hangling sensitive data and keep informed on the latest attack techniques.
Know a few to understand the different paradigms. There are ones with checkout where you are the only developer with access to that code and others with a branching/merging system.
“Expecially with fixed bids because you’ll say oh this will only cost $1,000 and then work 90 hours for that $1,000”
A good deal of success is based on accuracy of estimations. The key is to learn from each project. Your abilities will change and time to code lessen as you learn better tools and techniques. Estimating ties hand in hand with the development process and your process developing as a developer.
IoTease: March is for Makers
March is for Makers is a movement started by Saron Yitbarek of Code Newbie and Scott Hanselman of HanselMinutes for their respective podcasts. All month long they will be interviewing makers and discussing hardware. Though not officially part of the movement to show our support we are dedicating IoTease this month to fun family projects that can be done each week.
Do It Yourself Smartwatch
With Smartwatches being the new thing in the realm of wearable technology this is a fun project for older kids to build their own smartwatch. It syncs with an Android or iPhone via bluetooth.
Drivers must be installed before creating any code.
Hardware
- TinyDuino Processor(Lithium Support)
- TinyScreen OLED TinyShield
- Lithium Ion Polymer Battery
- TinyShield USB
- TinyShield NRF 8001 BLE
- TinyScreen Smart Watch Kit
Software
Tricks of the Trade
When solving problems look at the data. It’s very easy to assume you know what the problem is when optimizing. Start collecting real data and getting stats on issues. Until you get real data you don’t know what the problem is and you can think it’s your app when it’s really something down in the stack. Get the data on a problem before setting out to solve it.
Links
Editor’s Notes:
A special thanks to Jason, our audio guy for staying up late for this week’s episode as we had some technical difficulties with BJ’s mike and in the editing of the episode.