My last Pluralsight course for this year is out!
I started out this year with the goal of creating 30 Pluralsight courses, this Beginning Lua course represents the completion of that goal.
It definitely feels great to accomplish what I had planned, even though the process may have been a bit painful at times. This is definitely the biggest single undertaking I’ve ever accomplished in my career.
Here is the official course description:
Lua is an extremely versatile and popular programming language that you’ll find embedded in many other applications like Adobe’s Lightroom or even World of Warcraft. Many developers are surprised to find that even very popular games like Angry Birds are written in Lua.
In this course, you’ll learn how to quickly get started writing programs and scripts with Lua. I’ll take you through the basics of Lua, show you some tricks that demonstrate the Lua’s flexibility and even show you how to use Lua in an object oriented way.
We’ll start off in this course by learning a bit about Lua itself and Lua’s history, as well as learn how to download Lua and use the popular SciTE IDE for creating and running Lua code.
After we are setup and ready to develop some Lua code, we’ll learn the basics of Lua as we jump right in and build our first application. We’ll go over Lua’s type system and learn how to assign variables, utilize operators, use conditional logic and create loops.
Once we’ve got the basics covered, we’ll explore two powerful concepts in Lua: functions and tables. We’ll learn how functions work in Lua and what makes them so powerful, and we’ll see how tables can be used for more than just storing simple data.
Even though Lua itself doesn’t have a class construct, we’ll learn how to do object oriented programming in Lua using tables and metatables.
Finally, we’ll wrap up the course by learning a little bit about the standard libraries that come with Lua. I’ll show you some examples of using some of the most useful functions in the standard libraries and show you where you can get more information about them.
I am super excited about my latest Pluralsight course:
Here is the official course description:
Game development is awesome! And it is actually much easier than you think, especially now that you can develop games completely using web technologies you probably are already familiar with.
Then, we’ll dive right in and start implementing the basics of a game. We’ll start off by actually creating the start of a game completely from scratch, implementing everything ourselves.
From there on we’ll expand our game little by little as we add features like moving a player around and firing shots in the game. We’ll also learn how to create enemies in the game and give them some intelligence.
So, if you are interested in game development or if you just want to see what is possible with HTML5, check out this course. You’ll be surprised how easily you can put together a real HTML5 game.
This course was lots of fun. Iris and I actually pair programmed over Skype using Join.me to share our screens for part of the course.
I really think devices like the Leap Motion have large amounts of potential and it is just a pretty cool technology. Not too hard to program for either.
Here is the official description:
In this course, you’ll learn how to create a complete WPF application with the Leap Motion controller. The Leap Motion is a new type of user interface device that allows for very precise tracking of up close motions. The Leap Motion opens up the possibility for creating completely different kinds of applications that are able to be controlled by fingers, hand gestures and even tools like a pencil.
This course will teach you everything you need to know to get started developing application for Leap Motion in C#. First you’ll learn a bit about motion tracking in general and how the Leap Motion works.
We’ll discuss how the Leap Motion device is unique from many other motion tracking technologies.
Then, we’ll go through the basics of the Leap Motion itself and you’ll learn how to get started and setup your development environment for developing a Leap Motion application.
After that, we’ll take you through the process of creating a real WPF application that uses the Leap Motion controller for tracking movement.
You’ll learn how to use the Leap Motion SDK to create code to track individual finger movements and gestures and how to map those movements to screen coordinates to control an object on the screen.
Finally, we’ll take you through the process of bringing your Leap Motion application to the masses as we show you how to deploy your application to the Leap Motion Airspace store.
By the end of this course, you’ll have built a complete application that can be controller with a Leap Motion controller.
It has been a while my first iOS course for Pluralsight. Several things have changed with iOS development using Objective-C. Perhaps, the biggest change is the use of storyboards instead of manually transitioning between views in iOS.
So, I created this new course, Beginning iOS 7 Development, to provide a fresh tutorial on getting started with iOS 7 development using Objective-C.
So, check it out if you are interested in iOS 7 development.
And here is the official course description:
Starting to learn iOS application development can be intimidating if you don’t have much experience with a Mac and haven’t used Objective-C. But, it doesn’t have to be a painful experience.
In this course, I’ll show you the basics of creating an iOS application as we build a complete iOS application learning what we need to know about Objective-C along the way.
We’ll start out by learning a little bit about iOS in general and the iOS development environment.
Then, we’ll jump right in and create out first Hello World iOS application as we set up our development environment and learn the basics of the IDE we use for iOS development, Xcode.
After that, I’ll show you the core things you need to know to build any application, how to build a user interface and interact with it. We’ll learn how to use Xcode’s Interface Builder tool to create a very basic IU and interact with it.
Once we’ve got the basics covered, we’ll start building our first real application. We’ll learn a few new concepts as we build our application, like how to use the iOS storyboarding feature to creating a multi-screen application and how to setup navigation in our application.
Finally, we’ll finish up our iOS application by learning how to add user settings to the app and how to show the user a simple notification through the use of alerts.
So, if you are looking to get started with iOS development and are looking for an easy and gentle way to get introduced to the environment and tools while building a real application, this course is exactly what you need. You won’t be an expert at iOS development after taking this course, but this course will definitely give you a head start in learning the platform and show you the basics you need to know before taking a more advanced course.
Quick side note: if you are stopping here reading this post, you are probably the kind of developer that cares about your career. I’m putting together a complete package full of information on how to really boost you software development career and increase your earning potential. It is only available for preorder right now. I’m only going to be selling it at this heavily discounted price for a short time. I’ll also have some exclusive interview with famous software developers like Bob Martin, Jon Skeet, and Jeff Atwood sharing their secrets to their success.
I have another new course on Pluralsight, check out:
I am very excited to finally get this course out. Many viewers have been asking me to make a comprehensive course that actually shows you how to build a real automation framework, and I finally did it in this course.
I reveal all my tricks and tips here and tell you exactly what I have done in the past to build successful automation frameworks. It was a lot of fun to create this course and it brought me back to the glory days of creating automated tests. (This is some serious fun!)
Anyway, check out the course and let me know what you think.
Here is the official course description:
Learning how to use a tool like Selenium to create automated tests is not enough to be successful with an automation effort. You also need to know how to build an automation framework that can support creating tests that are not so fragile that they constantly break. This is the real key to success in any automation effort.
In this course, I will reveal every secret I know from creating several successful automation frameworks and consulting on the creation of others. I will show you exactly, step-by-step how to create your own automation framework and I will explain to you the reasoning behind everything we are doing, so you can apply what you learn to your own framework.
We’ll start off this course by going over the basics of automation and talking about why it is so important as well as discuss some of the common reasons for success and failure.
Then, I’ll take you into the architecture of an automation framework and show you why you need to pay careful attention to the structure of any framework you build and give you some of the underlying design principles I use when creating an automation framework.
After that we’ll be ready to start creating a framework. In the next few modules, I’ll show you how to create a real automation framework capable of automating the WordPress blogging platform administrative console. We’ll start off by creating smoke tests and using those smoke tests to build out our initial framework.
Then, we’ll expand the capabilities of our framework as we create more tests and learn how to use techniques like dummy data generators to make our tests as simple and easy to read as possible.
Finally, I’ll take you through some best practices and tips that cover topics like scaling out, working in Agile environments and other important issues you are likely to face. If you are responsible for an automation project for a web application or you want to start using automation, you’ll definitely want to check this course out.
Really excited about this course. I’m a little late to publish this post. But, last week my Pluralsight course on creating a Chrome extension was published.
Here is the course description:
In this course, I’ll show you the basics of creating Chrome extensions as we create 3 different Chrome extensions. We’ll start off the course learning a little bit about the basics of Chrome extensions and how extensions work in Chrome and then we’ll dive right in and start creating our first extension.
Once we have the basics down, we’ll build a more powerful extension that has its own user interface and options page and is able to save data using the Chrome APIs and add its own entry to the right click menu for Chrome.
We’ll actually have our extension modify the Pluralsight website course listing page to make the course listing table sortable—so, you won’t want to miss this.
Finally, we’ll wrap up our tour of Chrome extensions by learning how to debug extensions as well as deploy them.
So, if you are interested in Chrome extensions, but have always thought it might be too difficult to create one for yourself, you definitely need to check out this course. Trust me, it is much easier than you probably think and this course will show you how to do it.
Just published my latest Pluralsight course: (IoC MVC 4)
I had many developers asking about a more practical IoC course that shows how to actually use IoC in a real application, so I created this course.
Here is the course description:
At first, Inversion of Control (IoC) is a difficult concept to understand. Even after understanding what IoC is, a developer must learn to apply the concepts of IoC and IoC containers to a real application in order to use it effectively.
In this course, John will show you how to use the Unity IoC container in an ASP.NET MVC 4 application to use dependency injection on controllers, filters, views and more. You’ll start off by learning the basics of IoC containers, how they work and why they are important. As well as, learning about how internally ASP.NET MVC 4 creates controllers and views.
In order to understand practically how dependency injection works (the core function of IoC containers) John will walk you through manually doing dependency injection in ASP.NET MVC 4 using your own custom controller factory.
After you have done things manually, you’ll see how to add the Microsoft Unity IoC container to your MVC 4 application to do dependency injection automatically. Essentially you’ll see how it is able to give us more flexibility and reduce the custom code we need to write.
John then takes things even further by exploring some advanced dependency injection techniques using Unity to inject views and filters. He’ll also cover some of the advanced features of the Unity IoC container.
Finally, you’ll take a tour through some other popular .NET IoC containers and see how to get them working in our ASP.NET MVC 4 application. After taking this course you will be equipped with the skills and knowledge you need to build real applications using Inversion of Control and dependency injection.
A bit late getting this out, but I published a new course for Pluralsight.
This course was really fun to create. I got to use several of my favorite technologies.
Here is the course description:
It can be very difficult to build a cross platform application that will work on the web as well as popular mobile platforms like Android and iOS.
In this course, I’ll take you through the complete process of creating an application that works on each of the platforms and uses a REST based backend API to share data and business logic—all using C#.
We’ll start off this course by learning how to build a REST based API using the popular open source framework ServiceStack. I’ll show you how easy it is to get ServiceStack set up and even how to store data for the API using a Redis database.
Next, I’ll show you how to create an ASP.NET MVC 4 application that uses the REST service we built to display it’s data and implement it’s logic. We’ll learn how to use JQuery to make AJAX calls to a REST based API from within our MVC 4 application.
Then, we’ll learn how we can use C# and the .NET framework to build an Android application using the Xamarin tools. We’ll use the same REST API, we created earlier and build a real native Android application that is able to consume that API for implementing its logic and displaying data.
Finally, I’ll show you how to do the same thing for an iOS application. We’ll again use C# to build a real native iOS application with the Xamarin tools and learn how to consume REST based web services from iOS.
So, if you are a C# developer and don’t want to have to learn several other programming languages to build cross platform applications; you’ll definitely want to check out this course. By the end of this course, you’ll have the skills you need to be able to implement an end-to-end cross platform solution complete with a REST based API backend all in C#.
I’ve just published a new Pluralsight course, Introduction to Hibernate.
This course was definitely a difficult one to produce. There is so much to cover in Hibernate, and there was no way I could cover it all.
Here is the course description:
In the world of Java one of the most popular and widely used frameworks is Hibernate.
Hibernate is an ORM or Object Relational Mapper that allows developers to map Java objects to relational database tables. It is a valuable tool that all Java developers should know how to use.The problem is, learning Hibernate can be difficult. Hibernate is a very large framework and there are many important concepts to understand to use it effectively.
Are you a developer who…
- has been wanting to learn how to use Hibernate
- struggles to use the application
- has never really understood Hibernate
This course is designed to give you the knowledge you need to feel confident about how Hibernate works and how to use it.
What this course offers:
This course is designed to make getting started with Hibernate as easy as possible and focus on the most important things you need to know. John starts off this course by teaching you a bit about Hibernate and how it works.
Then you will see how to get it setup with a real MySQL database installation. After that you will learn the very basics of mapping, which is one of the most important things to understand about Hibernate.
John will show you how to create a basic mapping for a Java object to a relational table and explain to you how the mapping works. He also covers some of the complex mapping situations like mapping collections and different relational mappings like one-to-many and many-to-one.
Once you’ve learned how to map you objects, you’ll want to know how to query them, so he’ll show you how to do this using Hibernate’s built-in HQL and using a more object-oriented approach with the Criteria API.
Finally, he wraps things up by taking a brief tour of some of the more advanced features like caching and interceptors.
There isn’t a large amount of advice out there on developer job interviews.
I’ve found that many talented developers have difficulty with job interviews, because they spend more of their time focusing on what they are truly passionate about, technology and development, and not much time prepping their interview skills.
It’s unfortunate, because having good job interview skills can really help you advance your career by giving you opportunities you wouldn’t be able to get without being skilled in this area
1. Hire an expert to create your resume
I’ve mentioned this idea before, but it is so important that I’ll say it again. Unless you write resumes for a living, you are not a professional resume writer.
There are people who write resumes for a living and those professional resume writers probably don’t try and write their own software to use on their computer.
So, if resume writers don’t write software, why would software developers try and write resumes?
Perhaps you can do a good job, but chances are a professional can do a better job.
My advice, if you want to get the largest number of possible opportunities for a job, bite the bullet and pay the dollars to have your resume written professionally. It is a relatively small investment for the potential gain of landing a much better job based on the large number of opportunities you are likely to have.
2. Research your interviewer
I’m always amazed when I conduct a developer interview and I’ve sent an email out to the developer I am interviewing ahead of time, which had my full name and my blog address, yet when I speak to them in the interview they seem to know nothing about me.
On the other hand, I’ve had interviews where I’ve interview someone and they worked into the interview a mention of a blog post I had written or a course of mine they had watched on Pluralsight.
Guess which developer I was more likely to recommend for a job?
We are all human, we like to know that someone is interested in us. Dale Carnegie taught me the easiest way to get someone interested in you is to show a genuine interest in them. (Yes, I’m recommending this book again for like the 8th time, and yes, that is an Amazon affiliate link.)
Whether this is fair and objective is besides the point. If you are interviewing for a job, it is just ludicrous not to research the company you are interviewing at and the interviewer, (if you know who it will be,) ahead of time.
Today it is easier than ever to find someone’s Facebook page, Twitter handle or blog. You can learn quite a bit with just a little bit of research and it shows that you actually are detail-oriented and care about your career.
3. Get an inside referral
Want to know the absolute easiest way to get a job? Get an inside referral.
Yeah, that’s right, it makes that much of an impact!
It isn’t even very difficult to do, if you are willing to plant a few seeds ahead of time to make sure there are plenty of apples on the tree, when you need to pick one.
A while back I found a company I wanted to work for. So, what did I do?
Well, I found a developer at that company that I felt had some common thoughts and ideas as my own and I started following his blog.
I commented on his blog and showed an interest in his work and the company he was working for, and eventually I had an opportunity from that situation to get an inside referral.
Many developers say, “well, I don’t know anyone in XYZ corp.” Ok, fine if you want to give up there, go ahead, but I bet, if you try, you can find a way to meet and befriend someone in just about any company.
But the secret is, you have to network before you need a job, so start doing it now!
4. Learn to solve algorithm based problems
I’ve got a 6 step process I use to solve algorithm based problems that often come up in developer interviews.
It is an important skill that every developer should have and it isn’t really that difficult to learn.
Many touch job interviews include 1 or more questions where you are asked to solve some programming problem, either on a whiteboard or at a computer, yet many developers, who are otherwise great programmers, become completely paralyzed when asked to do so and flub it.
If you take the time to learn how to solve these kinds of problems, you’ll easily put yourself in the top 10% of developers who interview for most jobs and you’ll be much less nervous about being asked to solve a problem on the spot.
The reason why we get nervous has nothing to do with performance anxiety, it has everything to do with familiarity and confidence in solving these types of problems.
For example, if someone asked you to do 10 jumping jacks, you probably wouldn’t get all nervous and flail around… why? Because you are confident you can do it.
Build your confidence in this area and you won’t be nervous either.
5. Answer questions with passion
One word answer to questions or one sentence textbook definitions may technically be correct, but if that is all you do, you are missing an opportunity to showcase one of the greatest assets a developer can bring to a team—passion.
If I ask you what polymorphism is, I am not just asking to find out if you can read a textbook and memorize a definition to repeat back to me later. I am trying to find out what you think about polymorphism. I want you to expound upon the subject and use it as an opportunity to have a conversation.
Now, not all interviewers think the same way, and you have to be a little cognizant of when it is time to shut-up, but the point is you should try and show some passion in your answers and expound upon them if possible.
6. Avoid “trap” questions
Why are you looking for a new opportunity?
Name your greatest strength and your greatest weakness.
What was the result the last time you and a coworker disagreed on a technical issue?
You should really know how you are going to answer these types of questions before you are asked them and what the interviewer is looking for when asking these questions.
I’ve got some recommendations on exactly how to answer these questions in my course, but you should at least consider these kinds of questions ahead of time and reason through some of the possible answers you can give.
For example, if we look at just that first question about why you are looking for a new opportunity…
In many cases interviewers are trying to find out if you are going to bad mouth your current or previous employers. It is a sure sign you will do the same to them, so don’t do it.
If you don’t think about this ahead of time, you can easily fall into the trap of saying something negative about your current job and severely hurting your chances of landing that new job.
7. Don’t ever lie!
One of the worst things to do in an interview is to lie.
If you don’t know something, don’t make up an answer. Don’t pretend like you worked with some technology if you haven’t or make up some story of how you used something in your last job.
Instead, either say, that you don’t know or that you aren’t 100% sure, but you can try and give an answer based on what you think. It also doesn’t hurt to follow up by asking the interviewer what the correct answer is, because you are genuinely interested.
There is a good chance whatever an interviewer is going to ask you about is something they are familiar with, because they don’t want to look like an idiot if you start talking about the subject. For that reason, even if you consider yourself a good BS’er, most of your BS will be instantly detected and you’ll immediately lose your integrity, which is very hard to ever gain back.
8. Don’t ever be brutally honest
Many developers go overboard the other direction and reveal too many personal details about themselves, thinking that honesty and complete transparency is the best policy.
While you shouldn’t lie, you also shouldn’t spill all the messy details of your life and all your personal flaws to your interviewer either.
People are drawn in by a bit of mystery and generally don’t like to gamble on whether or not your OCD or obsession with World of Warcraft will cause you to be a flop at your job.
Personality is good, character flaws are bad.
Don’t ever lie, but don’t volunteer up information that is going to paint you in a bad light. Not only will that information likely hurt you, but it also shows a lack of judgment as well.
9. Know your computer science basics
I also cover this in my Job Interview course, because it is so important and can be learned in less than an hour.
Yes, so many developers claim that they don’t know what linked lists and stacks are, because they don’t have a formal education in computer science or it was too long ago when they graduated college.
I agree that we don’t use deep computer science concepts in most programming jobs, but as a professional software developer, you should at least know the basics.
I seriously doubt you’d want an electrician to rewire your house, if that electrician didn’t know anything about the basics of electrical engineering, so don’t assume that someone wants to hire someone who can code, but doesn’t understand the fundamentals of their profession.
You don’t have to be a computer science professor, but you should at least know the basics that I am sure can be taught in an hour, because I do so in my Job Interview course.
10. Build experience creatively
Last but not least, many developers, especially developers starting out or moving from another career field, lack relevant work experience and have no idea how to get it.
How do you get experience if you don’t have any?
The answer is to be creative. There are many ways to get experience that doesn’t involve working directly for a company as a software developer.
Here are just a few ideas:
- Join an open source project
- Start an open source project
- Build a mobile app and put it in the app store
- Build a small web app
- Start a blog
- Present at code camps or other user groups
There are many ways you can get experience that will look good on your resume and give employers confidence in hiring you, you just may have to be a little creative.
Hopefully you’ve found these tips helpful. I’ve found that there isn’t a large amount of good information out there for developers looking for good job interview advice, so I actually ended up creating a Pluralsight course on the subject, which you should check out if you want to find more about the tips I mention here.
If you are astute, you may be thinking to yourself, ah, that John Sonmez character writes a blog post to secretly promote his Pluralsight video, pretending to give free advice.
Well, I definitely got the idea to write this blog post to help promote my Pluralsight video, because, hey that is what I do, I make Pluralsight videos— but I hope that you found these tips themselves to be useful as well.