What You Need to Know to Build the Next Great Mobile App

Mobile apps are everywhere.

Let’s be honest: There will be a demand for more mobile apps over the next few years, and if you’re a developer, you will probably be asked to build one at some point.

Whether you actually do build one is up to you, of course. You have the choice to remain a web-only dev.

But consider this: With the amount of front-end or web-only devs flooding the market, it will get harder to convince clients that you’re worth what you charge. Harsh, we know.

Unfortunately there are plenty of cheap, DIY options available for clients these days – WordPress, Wix, Squarespace, to name a few. You have to find ways to set yourself apart in the market and show that you have value beyond building pretty sites.

Enter: mobile app development.

[ Content upgrade with ID = 268 not found ]

Web Vs. Mobile Apps

If anyone can build a pretty site, the opposite is true of building a great mobile app. It takes skill to create the perfect app, and clients will pay hundreds of thousands to find the right developer.

So, if you’re thinking about adding “mobile app developer” to your skillset, here’s what you need to know…

Website and Web App Development

Web development is fairly flexible. You have more options when it comes to language and the device you build on is, generally speaking, irrelevant. Your main job is to make a website function, and while you may dabble in web apps that can also be used on mobile devices, you’re sticking with familiar territory that many devs have tread before.

Mobile App Development

On the other side of this is mobile-only app development. This requires a very specific knowledge base, and if you’re looking to develop the next big money making app, you will need to specialize and focus your skillset.

Your main focus as an app developer will be on user experience, because unlike generic websites, each app has a very targeted purpose and audience. You will also have the added pressure of keeping your audience engaged long enough to keep them from deleting your app.

Another big difference is that you can’t develop a broad app that works on multiple devices like you would when building a website. Mobile apps are device specific, so if you want to make one for Apple iOS you will have to learn a totally different language than you would for Android or Windows.

With that in mind, here is a breakdown of the languages you will want to familiarize yourself with should you choose to work with mobile apps…

Programming Languages for Mobile

Apple’s iPhone and Google’s Android platforms account for over 90% of the mobile market right now, and if you’re building for mobile, you will have to build for one or the other – or learn the languages required for both.

Android Java

androidjava

Over 9 million developers use Java worldwide, and while Android Java isn’t quite the same as regular Java, it’s pretty close. The good news is that Android currently runs around 60% of mobile devices, so if you were looking for the easiest way to start (and you already know java), this would be your first choice.

Key Features

  • Runs on nearly all platforms
  • Object Orientated Language
  • Rich Application Programming Interfaces (APIs) allow for tools for every imaginable task
  • Open Source Libraries
  • Strong community support for Java and Android
  • Easy to learn
  • Easy to read
  • Powerful Integrated Development Environments (IDE) reduces errors and gives clear explanations and suggestions

Swift

swiftios

Apple has a tendency to do things their own way, and keeping to that fashion, they released their own programming language for iOS and OS X called Swift.

While it’s a newer programming language, it has the potential to be invaluable. Like its similarly-named celebrity counterpart, if you know Swift, you’re in-demand. If you want a long-lasting career as a mobile developer, learn this language.

Key Features

  • Currently only compatible with iOS and OS X.
  • Simplified form of Objective C.
  • “Sugar” syntax allows for simplified code that’s easier to read and reduces errors.
  • It’s the future of Apple’s development framework.
  • Easy to extend and maintain with Dynamic Libraries.

 

HTML5 + JavaScript

html5

If this seems familiar, it should. While you can’t technically make apps with HTML, you can combine HTML5 with JavaScript to create both mobile and web apps.

HTML5 app development can be preferable to building native apps, however. You usually only have to code the app once, then you can bundle the code in different ways for for iOS or Android devices.

Key Features

  • Device agnostic
  • Can be used for apps and Web pages
  • Responsive design to fit any device or screen size
  • Built-in media playback that requires no third-party tools
  • Offline caching, which allows certain elements to be accessed offline

Once you’ve decided on a language (or let’s be honest, languages) you want to master, you will also have to know a bit about how the mobile app workflow works, since it’s a little different than a website workflow would be.

Embracing an App Workflow

There are five essential stages to an app workflow, from prototype creation to testing to launching and marketing your app. Some of these will feel familiar, as you probably do something similar for a live website. But the nuances of each step are important.

  1. Prototyping – This is where you create your mobile app screens in black and white to determine the best user experience. After the UX is validated, you will have to focus on the interface itself: effects, icons, transitions, and brand identity. If you are building an app for an ecommerce site, pay special attention to conversion screens like payment confirmations and shopping carts.
  2. Coding – Because there’s so much work that goes into creating a mobile app, the development doesn’t begin until after the prototype has been created and affirmed so that there’s less chance of re-doing the work. The use of agile methodology is recommended for this stage, as it can help you keep track of progress and meet deadlines.
  3. Testing – Once your app is built, it’s time to test for any bugs. Many developers create a beta app so that users can test out the features and find any bugs before the “official” launch of the app. This stage is about perfecting and correcting as much as possible.
  4. Launching – Publishing your app to the Android Play Store, Apple App Store, or Windows App Store is a big accomplishment. This means your app is in a good place, and it’s time to pay attention to things like listings, rankings, downloads, and user reviews.
  5. Iterating – Don’t stop with modest success. Introduce new features as often as demand requires, and watch for new demands made by your audience over time.

Continue and repeat this process until you’ve created the best app possible.

[ Content upgrade with ID = 268 not found ]

Final Thoughts

Mobile app development is a skill that will put you in demand in the years to come, and it should be something to consider for any developer who wants to be set apart from the competition.

With that in mind, if you are going to become a mobile app developer, you need to determine which apps and devices you want to build for, as well as choose the appropriate language to make the best app possible.

Don’t forget to create a good workflow to make sure your app is well received once you’ve started working on it, and remember, if you need help, there’s probably another app for that, too.

Do You Have the Right Skills for Your Job Description?

Skilled programmers are always in demand, and that probably won’t change anytime soon.

But whether or not you want to make a living as a professional programmer or you simply want to learn code for fun, there are certain proficiencies that will help further your goals and others that are simply less important.

This is especially true as technology continues to advance and roles shift over time.

And if you’re going to be putting any time into learning code, you want to make sure you’re learning the right skills for the job you want and have a foundation that will carry you through the future.

Here’s what you need to know about having the right skills for your dream programmer job…

[ Content upgrade with ID = 255 not found ]

fullstack-image

Key Jobs in Web Development

It used to be that the term “web developer” was a catchall for anyone that knew how to code, but now there are specialties that divide that term even further, like frontend developer, full stack developer, and UI developer (among others), each with their own unique and in-demand skill set.

relative-demand-trends-web-dev-roles-secondary

Frontend Developer

A frontend developer – sometimes called an HTML developer – focuses on the client side of a web application, including anything with which the user interacts.

The rise of the front-end dev comes from an increase in interactivity from the user’s perspective: they want clickable buttons, images that move, interactive videos, maps, illustrations, and infographics… It’s not just about sharing information; it’s about providing experience.

Skills needed: The three most coveted skills a front-end developer can have are JavaScript, CSS, and HTML, which are staples of the industry. Basically, almost any dev can work the front-end.

UI Developer

Also known as a UX developer or user interface designer, a UI developer also focuses on the client-side technologies to build the front end of a website.

But what sets them apart from a frontend dev, however, is that a UI/UX dev will put more emphasis on a website’s design and aesthetic (typography, iconography, design principles).

Skills needed: Apart from knowing the basics (JavaScript, CSS, and HTML), UI/UX devs should also be familiar with XML (AJAX), as AJAX is often in the top-ten most wanted UI development skills.

UX is also about intuitive design and understanding human interactions, so skills in design, layout, and even psychology can go a long way to improving your skills.

Backend Developer

Sometimes called backend engineers, backend developers are responsible for building the server-side, including the server, application, and database.

If a frontend developer cares about what the user can see, the backend dev is concerned with everything invisible. They focus on the “how” of coding – how to get something to load, how to implement an action, and how to power the frontend most effectively.

Skills needed: The best skillset for a backend developer is PHP, Python, and SQL. PHP, for example, is a server-side script that powers sites like Facebook, and you can build almost any WordPress or Drupal site using Python. SQL is essential for maintaining the all-important database.

Full Stack Developer

A full stack developer or full stack engineer is good at almost everything, and the demand for full stack devs has increased in the last few years.

Rather than specialize in one area, full stack devs are skilled in all stages of web development, and many employers – especially startups and small businesses who can’t afford to hire teams of workers – are recognizing the value in hiring one or two full stacks.

Skills needed: Unfortunately, this means that the full stack dev has to wear many, many hats. The best skills to learn if you want to embrace this role include the basics: JavaScript, CSS, and HTML, as well as a slew of others like jQuery, Java, and Python.

In fact, the more you know, the more you will set yourself apart as a valuable asset. It probably doesn’t hurt to learn something like XML, too. Throw in some design background and you’ll really set yourself apart.

Key Skills for the Future

Of course, knowing the fundamental skills that are required for your desired job isn’t the be-all-end-all. Skills change based on demand, and demands change over time.

skill-demand-trends-web-dev-secondary1

For example, studies show that HTML5 and CSS3 are two skills that have been in higher demand since 2013. Their rise in popularity is most likely due to advances in web technology, with CSS3 incorporating new elements like shadows, multi-columns, and grid layouts.

But that doesn’t mean every skill will be valuable in five years.

Here’s a breakdown of the skills that will continue to be in-demand and those that are quickly becoming obsolete:

HTML5 is the latest evolution of the markup language, and when it was released in October of 2014, it was mentioned in around 43% of web development job postings that year (and more since). It continues to be one of the most sought-after skills for any developer.

CSS3 is also the most recent variation of the CSS language, and was mentioned in 25% of web development job postings in 2014.

PHP, XML (AJAX) will probably be used to some degree, at least for the foreseeable future.

But PHP in particular isn’t as popular as it once was, with many programmers using alternatives like Python and Ruby instead.

AJAX has somewhat of a reputation as a poor language for data transfer, a practice which itself is rising in demand. This means that there may be a new language coming that will replace XML/AJAX with something better, though for now it’s still an important skill.

JavaScript remains one of the most valuable programming languages out there, at least according to employers (around 80% list it as a requirement in job postings).

Though CSS and HTML are still “heavy hitters”, they have become less popular in favor of HTML5 and CSS3, so developers should probably continue to focus on the updated versions to stay consistent with the times.

[ Content upgrade with ID = 255 not found ]

Final Thoughts

Employers are starting to hire developers with expertise in newer technologies, including devs with skills in HTML5 and CSS3. But that doesn’t mean that other skills aren’t valuable. It just depends on the job you want.

Frontend devs can get away with knowing the essentials, which is perfect for part-time devs or those who want to learn “for fun.” If you have a design background, you could also relay that into a UI/UX experience.

More serious devs will probably want to sharpen up their backend skills, including learning more about Python, Ruby, and SQL.

And if you can do everything, more power to you. Consider becoming a full stack developer and leveraging your skills to power the world’s next big startup.

How to Use Continuous Integration to Improve Your Workflow

Workflow is an essential component of any developer’s career.

Having a system in place that minimizes risk, reduces time and effort, and optimizes performance is paramount to success, and one of the best workflow practices a developer can have is using Continuous Integration (CI).

But for many devs, CI is a new concept, and it’s not totally clear how it works or how to use it to the best advantage.

That’s why we’re taking a look at some of the benefits and best practices of using CI during your daily tasks to maximize workflow and get the most out of your business.

Here’s what you need to know…

[ Content upgrade with ID = 246 not found ]

ic831068

What is Continuous Integration?

Continuous Integration is a practice that requires developers to integrate code into a shared repository several times a day. An automated build then checks the code (called a “check-in”) for any negative impact on your codebase, which allows the team to catch any problems much earlier on in the process.

You may have heard of CI in conjunction with other terms like Continuous Deployment or Continuous Delivery, which are similar but serve different functions.

Continuous Deployment, for example, is closely related to CI, but refers to keeping your applications deployable at any time, or automatically releasing them to a test or production level if all the CI tests were passed. It’s essentially the next step in the process. Similarly, Continuous Delivery is the practice of keeping your codebase deployable.

But CI is the place where it all starts – the foundation of any good workflow. The more often you can integrate and test your code (preferably daily, or as the name suggests, continuously) the less errors you’ll have overall, especially if you’re working with a team of other devs.

Benefits of CI

Early error detection is a key benefit of using CI, and it can prevent many headaches down the road. But that’s not the only reason you should consider using it. There are many workflow (and general business) related reasons to do it, including:

  • Reduced overhead across the development process
  • Reduced time and effort for integrating code changes
  • Quick and detailed feedback on every change
  • Early prevention of defects
  • Improved collaboration between team members sharing code
  • Less manual testing
  • Time saved debugging
  • Enables Continuous Deployment and other automated testing
  • Separate software builds from deployment
  • Eradication of manual FTP deployment
  • Prevention and reduction of production and staging errors
  • Frequent analysis and reporting on the health of the codebase
  • Enhanced reputation through Quality Assurance

Since your codebase is in a constant state of flux during the development stage, if you’re not using CI to build your software, you run the risk of overlooking minor errors that could lead to bigger problems post-deployment.

CI is the best way to stay on top of everything while still giving you the freedom to make changes before you test and launch your application. When it does come time to launch, you will have more confidence that your software will run the way you designed it to run. Why is this important to workflow?

Simply put, CI is the way to keep everything running smoothly before, during, and after launch. By minimizing errors before deployment, and allowing for automated testing during the initial stages of deployment, you’ll reduce any post-launch needs to make changes and keep production schedules on time.

Of course, you’re probably thinking that CI sounds great. But how do you get started? Well, here’s what you should know about implementing CI in your daily practice.

image-for-continuous-integration-and-devops_01262015

Source: SEI

CI Best Practices

While CI is something that ideally should be done several times a day, that doesn’t mean it has to be a complicated or overbearing process. Here are some of the best practices involved with using CI:

Take it in small steps. A common mistake for many first-time devs using CI is trying to do everything in one step – running tests, deploying code, running more tests, redeploying, and so on. But CI is about breaking things down into more manageable steps in order to achieve the best results.  Doing too much at once can lead to poor configurations and missed errors. So don’t worry about getting everything done at once. Take it one step at a time.

Use a single source repository. Devs should check out the code in their private workspaces and, when done, commit the changes to a single location. The configuration should be versioned alongside the application code, meaning your build should be easily reproducible at any time and live in the same source code repository as the application code itself. You shouldn’t be manually configuring the server.

Automate. Your CI server should automatically monitor that repository, do check-ins and run integration tests, and release deployable artifacts for testing. If the tests fail, the server will inform the team of any defects, or if successful it should let the team know that the build is ready for the next level. But the main goal is to have this process automated so your team doesn’t have to waste time doing those things. You can use a dedicated machine to do this, too.

Eliminate variables and retest. The earlier your team can fix any defects, the better. Some devs suggest running tests against a clone of the production environment to see any noticeable differences. Once everything is fixed, have everything retested until it is successful.

Encourage team communication. Make sure everyone knows where the latest build can be found, and it may be a good idea to email the team when builds start and finish. And again, make sure your builds can be found in a single location, so if a problem does occur, your team knows where to find it.

Many devs get in the habit of checking and rechecking when it comes to a workflow process like CI, which is good, and will save valuable time in the long run and minimize the errors coming from your builds. As they say, an ounce of prevention is worth a pound of cure, so make sure everyone is in the habit of fixing errors as soon as they’re detected.

[ Content upgrade with ID = 246 not found ]

Final Thoughts

Workflow is all about maximizing effort and minimizing errors, which is exactly what Continuous Integration is designed to do. CI is the process of having your team put their code into a single repository for automated testing, so that errors can be caught earlier in the building process.

The important things to remember (aside from doing it daily) are to make sure you take things step by step, keep everything in one location for easy access, automate the process as much as possible, test and retest, and continually encourage your team to stay in-the-know about what’s happening with their code.

And if you’re still lost, don’t worry. We can teach you all about CI through our Professional Web Developer Course.

What Every Developer Should Know About Cloud Technology

Cloud-based technology has become a mainstay for both web and mobile development in the 21st century, but its evolution has come a long way.

In the early days of computing, the most common model was central processing through public or private enterprises. That eventually grew into the client/server system that we know today, where the majority of data is housed on someone’s computer.

Cloud computing, on the other hand, works more like the central processing of yesteryear, though maybe with a fancier name (and much fancier tech). You can now access data over the Internet instead of needing to access a specific computer’s hard drive.

While “The Cloud” is a buzzword, there are plenty of reasons having data stored via the Internet is actually a good thing for developers.

Here’s why…

[ Content upgrade with ID = 237 not found ]

Pros and Cons of Cloud Tech

Cloud-computing-2

While there are many upsides to using cloud tech, that doesn’t mean the system is perfect.

Benefits of the Cloud

Cloud computing offers a number of features that are significantly more flexible than traditional computing, such as:

Global network access – Any user can access the cloud from any mobile device, laptop, or desktop, from anywhere in the world.

Added security – The user doesn’t know the exact location of the resources stored on the cloud, so no one will go poking around the hard drive. Users also have access through a series of secure IDs, preventing unwanted persons from accessing secure files.

Flexibility – As the user’s need expands, the cloud expands along with it. It can provide access and resources on demand, and can quickly scale to fill the needs. Unlike hard drives, which have space restrictions, the cloud can allocate nearly unlimited space for projects as needed.

Lower costs – There are many different cloud service providers that offer competitive prices on different services, so it’s easier to find exactly what you need in your price range. Many providers offer flat fees or metered services, too.

Scalability – It’s easier to scale your business when you’re not locked down to a single location. You can hire devs and other IT personnel from anywhere in the world, or run your business entirely online without needing a physical office.

Reliability – On the whole, cloud technology is far more reliable. You won’t have to worry about your servers crashing or uninterrupted service. Most cloud providers guarantee a certain percentage of availability (usually around 99.95%), which means that at most you will only see roughly 12 minutes of downtime per month.

Automated backups – Never forget to update your system and apps again! Most cloud providers offer automated backups for all your data.

Downsides of the Cloud

But even if all of those things sell you on using cloud tech, you should also know that some dev projects aren’t necessarily ideal for using cloud tech. Here are a few of the things to consider before making the switch:

Poor integrationsSome apps aren’t ideal for development using cloud computing. Eric Knipp, a principal research analyst at Gartner, says, “The more hard-to-access or hard-to-replicate systems an application integrates with, the more difficult it is to develop and test it on cloud computing resources.” Integration can also be more difficult in general, so if you have a high need for it, consider using a more robust cloud provider.

Metered charges – While cloud tech can save you quite a bit of money for the most part, if you’re using metered services, you can easily run up overage charges for leaving things running on the cloud for a long period of time. If you’re prone to forgetfulness, look for a provider that offers a flat fee.

Constant changes – Cloud tech will keep evolving, and while this isn’t a bad thing in itself, it can mean that devs will have to keep up with new technology and new tools on a yearly basis.

Best Practices for Using Cloud Tech

cloud-computing-elearning-path-cloud-r100

If you do decide to use the cloud for your development needs, there’s a few things you should keep in mind to get the most out of it.

Choose the right deployment option

There are essentially three different choices: Infrastructure as a Service (IaaS), Platform as a Service (PaaS), or Software as a Service (SaaS).

IaaS provides infrastructure, so you can host on a virtual machine with the operating system of your choice. The cloud provider will setup the space (and the OS) but you do the rest.

PaaS runs on top of IaaS and gives you everything except the code, users, and specific data. The provider maintains the application, databases, and OS, so you just have to worry about the code.

SaaS, everything is already provided except the users. The provider already has the code set up, and the developer has access to modify it as needed.

Most devs choose a PaaS, as it provides enough support with equal amounts of flexibility and control.

Make sure your cloud provider is global-friendly

While you want your applications to be accessible from anywhere in the world, you still want the application code as close to the end user as possible, so there is no delay in responsiveness.

You want to choose a cloud provider that will help you deploy your app in multiple geographical locations without compromising your target market’s experience.

Utilize continuous delivery and integration

When deploying applications to a cloud-based infrastructure, you should have workflows in place so that code can be deployed across different environments with as little complication as possible. Thankfully, many build systems already have plugins that integrate with the top cloud provider, so it’s easier to configure your code for specific markets.

Just be sure to choose a cloud provider that allows for continuous delivery and integration tools on their platform. They should allow you to deploy your own system or at the very least, help you integrate with existing systems outside the cloud platform for maximum results.

[ Content upgrade with ID = 237 not found ]

Final Thoughts

Even though “The Cloud” is still relatively new and growing every day, the benefits of using cloud tech can far outweigh traditional computing if the circumstances are right.

The cloud provides complete mobility and flexibility in terms of how you build a team and develop an app. It can even save you money, as long as you don’t forget to turn off your digital workspace at the end of the day.

While you should still make sure that your projects will be effective before you start using cloud tech (especially if you’re using integrations), you may find that it’s a lot easier to use and more helpful than you thought.

3 Keys to Moving Into a Technical Leadership Role

Imagine for a moment that you’ve been promoted.

You spent years working late nights, troubleshooting for customers, and getting all the training and certifications you need, and it all paid off. Your boss has recognized your efforts and wants to promote you to a technical leadership position.

Great! You never again have to ask the question, “Did you turn it off and turn it back on again?”

But what exactly does being in a leadership position require? Does it mean more late nights? Will you have to deal with people every day? Will you ever get the chance to code again?

And if you’re not there yet, how do you get there?

While moving into a new role can be exciting for many developers, it also comes with a price. Here’s what you need to know to make the transition from “just another employee” to a bona fide technical leader…

[ Content upgrade with ID = 228 not found ]

business-promotion

Understanding New Concepts

While being a leader or manager of a department may seem cool at first, remember that the grunt work is no longer your first priority. You won’t just be focused on code, but also on the issues driving your industry.

In Your Department

Think of your new role like the zoom feature of Google maps: At a 200 foot distance, you can clearly see your street name and even the colors of the roofs. From 2,000 feet, however, street names disappear and you’re left with a blurry view of the details. But you start to see the bigger picture. You notice that there are neighborhoods, and cities, and the more you zoom out, the more you see.

Your job is not only to be able to see the details – the “how” – but also the big picture – the “why” of a project. Allison Gross, vice president of staffing and consulting firm Comforce, notes, “The higher up in an organization you are, the broader your vision has to be.”

If you still struggle with JavaScript or putting together a cohesive line of CSS, you can probably rest easy knowing that it’s not really your job to do it. However, you’ll need to be able to help out other team members who are struggling, or explain those concepts to clients or other departments.

You will also need to understand how each individual piece fits into the larger project.

In Other Departments

There’s a difference between “doing” and “teaching”. When you transition into a leadership position, you can’t just do the work yourself. You also have to be able to explain it to others, especially those outside of your department.

According to Bruno Zerbib, director of product management at InfoVista, techies sometimes have a narrow worldview, but to move into management you need to “acknowledge the value and skills outside of your organization.”

Both before, during, and after transitioning into a leadership position, it’s important to translate your passion for problem solving into management context. You will be learning to guide others to solve problems instead of simply solving them yourself.

That’s why it becomes so important to learn how to work as a part of a team.

Flat design modern vector illustration concept of teamwork analyzing project on business meeting. Top view of desk background with laptop, mobile and digital devices, office objects and staff, papers and documents.

Working with a Team

Many times technical experts are promoted because of their individual skills, but they often don’t succeed because they fail to learn to work cooperatively. Their knowledge gets them promoted, but their lack of teamwork gets them fired.

Prepare for Relationship Shifts

When you’re working with other developers, it’s easy to fall into certain patterns of behavior. Techies tend to create their own special language for communication.

But after a promotion, you may find yourself struggling to relate to your peers the way you once did. Suddenly, habits you once found endearing become hindrances to your “big picture” perspective.

You notice your team members being late. You notice sloppy code. You notice snide remarks. While there may be a grief process in letting go of the old roles, it’s important to remember that this new relationship is a good thing.

Lisa Quast over at Forbes has some tips for helping you navigate the transition from co-worker to boss.

Focus on Motivating and Inspiring

While your job may not always be glamorous, there are positive aspects to being in a leadership role. Of those, motivation and inspiration will become your best friends.

It’s now your job to rally the troops. Here are a few ways to do that, according to Peter Economy over at Inc:

Offer opportunities for self-development – It’s important to provide opportunities for your team to be able to advance their careers. Just as you were once recognized for your skill and acumen, remember that your teammates want the same thing.

Foster collaboration within the team – Just because you were promoted doesn’t mean it’s all about you. Your role will involve collaboration, which requires listening and asking great questions.

Set clear goals – As a leader, it’s your job to communicate the big picture to the team and make sure that everyone stays on track. If you’re not super organized, you can always use tools like Slack or Trello to help you.

Peter also says don’t punish failure, and above all, don’t micromanage. The last thing your company needs is for your power to go to your head.

Business-illustration-FINAL-760x428

Improving Other Skills

Now, you may be asking yourself, “How in the world do I do all of that?”

Just like any other skill, leadership can be learned. It’s not always easy to learn how to manage a team, keep them motivated and happy, and keep projects on task… but the moral of the story is that it’s possible. It just takes some dedication to learning more skills than just coding.

Here are a few of the things you might want to spend time learning to do:

Delegation – You must now know how to pass off tasks to your team effectively. This will keep you from spending time doing things that should no longer be your responsibility.

Briefing – You need to keep your team up to date on their progress, what you expect from them, and what will happen in the future. Learning how to give good feedback is especially important.

Communication – In your previous role, good communication might have been helpful, but not critical to completing your goals. Now, however, communication is essential to your success.

Discipline – At some point, you’ll probably have to discipline someone on your team. Whether a team member is breaking rules, under-performing, or upsetting others, it’s up to you to restore peace. Knowing how to discipline effectively without punishing your team is key to earning their trust and respect.

Recruitment – If your team is changing or expanding, then you’ll have to hire new people. Learning to find new talent can be tricky, but thankfully, you’ve already done the job once, so you know the skills and temperament to look for.

[ Content upgrade with ID = 228 not found ]

Final Thoughts

Whether you’re looking to transition or you’ve already made the jump, taking on a new role can be scary.

Thankfully, the transition doesn’t have to throw you for a loop as long as you remember that your new role comes with new responsibilities.

You don’t have to worry about the grunt work of coding, but you do have to make sure your team stays happy and productive. Don’t be afraid of confrontation.

Use tools to help you communicate and stay organized, and focus on your “bigger vision” to keep everything moving forward.

And don’t worry… you’ll do great.

How Theory Can Trump Practice

Anyone can learn how to code, but not everyone becomes an expert.

There is a major difference between knowing how to do something and knowing why you should do something, and that difference matters when it comes to job performance.

Every web developer needs practice, but having a deeper understanding of the “why” behind why you place a certain lines of code where you do – essentially, code theory – is important for a number of reasons.

Here’s why taking the time to learn theory can actually do more for your career than simply practicing how to code…

[ Content upgrade with ID = 219 not found ]

Theory Helps You Problem Solve

Group of cartoon business people holding gears

Like we said, anyone can learn how to code. There are plenty of books out there that will show you how to build a website from scratch, or how to get your site to perform a specific function.

But books won’t tell you how to think strategically to solve unique problems. And trust us, unique problems happen with every project.

Steve Jobs once said, “I think everybody in this country should learn how to program a computer because it teaches you how to think.”

Knowing code is kind of like owning a car. Your Average Joe – or a basic developer – knows how to fill up the gas tank, put air in the tires, and hopefully check the oil and swap out a spare tire if needed.

But someone who cares about cars and has a deeper understanding of how they work may even know how to do minor repairs and bodywork, change their own oil, or swap out a spark plug or two. And then, of course, you have mechanics that have spent countless hours becoming experts that can do everything from A to Z.

Having a basic knowledge of coding will make you an Average Joe. You’ll know how to customize the CSS of your WordPress site or maybe even build an HTML site from scratch, but it won’t help you when you run into a complex error or when you want to add a function that you were never taught.

Coders who study theory, on the other hand, have a knowledgebase that allows them to experiment with code and try new things without having to waste countless hours on forums trying to find an expert that understands what they want to do.

Theory Gives Life to Your Imagination

web-developer-orange-county

Speaking of being able to do what you want to do, another benefit of understanding code theory is the freedom to not only implement creative strategies but also to come up with your own functionality and designs.

In this way, coding is less like a car and more like poetry: the programmer has a set of rules that should be followed, but the creative expression is virtually limitless.

As Jake Levine says, “Programming is a means to an end, not an end in itself. You should be trying to do as little of it as possible to make the thing that you want.”

He explains that at the end of the day, it’s not just about learning the code, it’s about equipping yourself with a tool that allows you to build anything that you can imagine as easily as possible, whether it’s a simple website, a complicated social network, or a web app.

This level of fluidity happens by understanding the theory behind what you do, so when you have a brilliant idea for something, you can build it without wasting too much time. Code theory gives you more control over the creative process.

You can also use your knowledge of code to automate tasks, allowing you to focus on high-level achievements, like building a successful business.

Theory Makes You an Expert

ideas-exchange

And when it comes to business, coding has quickly become a core skill to successfully growing almost any kind of business – especially one where development is the primary goal.

As technology advances, the world will become more dependent on programmers to help sort through messy code and build software that gets things done.

First, that means that the number of programming jobs will increase, giving greater flexibility to those seeking to remain in the field for the next 5 to 10 years. According to the U.S. Bureau of Labor Statistics, there were 913,000 computer programmer jobs in 2010. That number is expected to jump 30% from 2010 to 2020. Meanwhile, the average growth of all other U.S. jobs is predicted to be just 14%.

But learning code theory is important not just for getting jobs, but for creating your own business and setting yourself apart from your competitors as an expert in the field.

Whether you end up working as a freelancer or you decide to run an agency, learning code will help you better understand the people you work with – clients or team members alike.

Code theory gives you the ability to understand and explain things like cost to clients because you know how much work is involved. Code theory helps you know whether or not a piece of software is high quality or not.

Code theory will help you become an expert, which means you can run an expert-level (read: highly profitable) business.

[ Content upgrade with ID = 219 not found ]

Final Thoughts

So, why does learning code theory matter?

Having a deeper understanding of the “why” behind what you do not only helps you become a better developer for building websites or other projects, but allows you to expand your thinking, take the lead on complicated project, and solve problems that are otherwise unsolvable.

Code theory also makes you an expert, and whether or not you use that expertise to run a successful freelance business, develop your own software to sell, or run a creative agency, you’ll be able to improve your profit margin and set yourself apart from your competitors in big ways.

And before you know it, you’ll be the one all the newbie coders are coming to for help.

The Importance of Removing Features from Bloated Software

“Code bloat” is probably not something you hear about often, but it can wreak havoc on your websites and applications.

Many developers have different definitions of what constitutes bloated software or bloated code, but for the most part, bloating happens when too many features or too much code is included in a project, leading to adverse effects.

Bloating could include code that is perceived as unnecessarily long, slow, or otherwise wasteful, or inadequacies in the language in which the code is written.

Christian Heilmann, senior program manager at Microsoft, describes it like this: “Code bloat happens when you try to make your code do everything that is even remotely possible instead of allowing it to do one thing right.”

But is bloating really that big of a deal? And how do you prevent it?

Bloated software manifests itself in several ways, including slow websites, overloaded servers, and maintenance difficulties, which can cause serious headaches not only for the developer, but for the end user, too.

Let’s take a look at some of the causes of bloated software and code and what you can do to help prevent overload…

Don’t miss: 7 Performance Tools for Developers

Reasons for Bloated Software

web-development

While it may seem that having an overabundance of features is a good thing, both developers and end users often complain of the effects of bloating.

Having too many features in software that never get used, that makes the user interface overly complicated, or that prevents users from getting things done quickly can be a real problem. When the user has to spend too much time turning off automated tasks or searching to find their desired feature, it causes impediments in overall usability.

Bloat is also problematic for developers because as inflates the time it takes to build, add, or maintain that software or application. But sometimes bloat happens by accident due to neglectful practices on the developer’s side.

There are a few primary reasons you may be experiencing overloaded or bloated software, including:

  • Over-reliance on JavaScript frames
  • Inefficient HTML
  • Embedded CSS and JavaScript
  • Not using CSS cascades or shorthand notation
  • CMS using bloated themes

Another big area of bloating that slows things down is file size. According to Pingdom, total web page file sizes are continually increasing, with one of the main culprits being large JavaScript files.

But aside from the general annoyance of having to dig through extra code, is bloating really that big of a deal?

Why It’s a Problem

speed-653x435_c

There are a few main reasons you really don’t want to have bloated software, ranging from minor annoyances to serious hindrances. Here are a few of the top reasons bloated software is such a big deal:

  1. Slow loading speeds. The more effort your site takes to load, the less it will convert. Your SEO will also suffer, as search engines like Google place high importance on loading speeds for ranking purposes.
  2. Higher bandwidth usage. Bloated software means larger file sizes, which takes up more bandwidth, limiting your site and potentially costing you more money depending on your hosting services.
  3. Slow mobile speeds. Mobile usage is also increasing, and if users have to wait for several minutes while your 1MB site loads, that could lead to reduced conversions and an overall negative user experience.
  4. More development time. Sorting through extra code or unnecessary code can be a massive time-waster, and for clients paying by the hour, that can mean extra costs for them, or potentially less pay for the developers.
  5. User dissatisfaction. As mentioned before, having a complicated user interface with too many features that aren’t actually being used can cause confusion and frustration from an end user’s perspective. If you’re looking for a five-star rating for your site or software, you don’t want unnecessary features holding up the show.

So what are some of the ways you can prevent these things from happening?

What to Do About It

web-development-bangalore

Bloating often happens when you least expect it, and can be caused by poor coding habits or simply a lack of vigilance when it comes to monitoring your software’s performance.

Here are a few things you can do to correct any bloating and to prevent further issues from arising:

Use Performance Tools to Spot Problems

One of the biggest indicators of bloat is slow loading speeds, but performance is also one of the easiest things to monitor. Taking advantage of tools like Google Performance Tools can help optimize your code, while PageSpeed Insights can help monitor your site for any major performance roadblocks.

You also want to watch your overall memory usage and browser scrolling speeds, as they are each key aspects to performance. You can also use tools like Firefox’s Firebug extension to help highlight code that is either nonessential or being used inefficiently.

Remove Unnecessary Code or Features

Sometimes a client will ask you to include a feature in your project that you don’t feel is necessary, or perhaps another developer will have included something in the code that was helpful at the time but no longer remains.

While it can seem like a hassle to explain to clients why they may not want to use a feature, or to go through your code and look for elements that shouldn’t be there, both can be helpful in reducing performance issues associated with bloated software.

If you need to improve performance quickly and you either can’t remove features due to client request or time constraints, you can always use a tool like YUI Compressor to reduce your JavaScript files, or HTML cleaner to minify HTML files.

Remove Templates or Plugins from Your CMS

Templates and plugins can be extremely helpful for building websites quickly, but they can also potentially come riddled with unnecessary elements that cause further bloating.

The key it to use templates that are streamlined for performance and to delete any plugins or third-party applications that you aren’t using (don’t just deactivate… delete!).

Optimize Sites for Speed and Functionality

Finally, be sure that other areas of your site are optimized so you can spot any slowdowns that might be caused by code or software overload. Make sure your images are optimized, minimize HTTP requests, enable browser caching, and optimize your CSS delivery.

Check out our list of the best performance tools for developers

Final Thoughts

While it can be easy to overlook bloated software, it’s important to make sure that your code isn’t causing your site or application to be overloaded.

Overload can cause slow downs that result in lost conversions and dissatisfaction for end users as well as more obstacles for developers looking to get things done in a timely manner.

Some keys to minimizing bloat include removing anything that shouldn’t be in your code, compressing files and images, and using templates and hosting services that are designed to handle the needs of your project.

The Three Factors In Really Learning a Language

Learning a new programming language isn’t always easy, but to build a lucrative career, it is necessary.

Thankfully, learning code is a valuable skill that goes beyond being a programmer. Many employers look to hire people skilled in programming knowledge for a variety of fields. In fact, the US Bureau of Labor Statistics estimates that there will be about 488,500 new jobs in the computer and IT field between now and the year 2024.

So whether or not you decide to be a full-time programmer or you transfer your coding skills to another career field, it pays to know what you’re doing.

When it comes time to buckle down and actually learn a new language, however, there are a few key factors that can help make sure you maintain those valuable skills for the long haul.

Let’s take a look…

[ Content upgrade with ID = 192 not found ]

Learn the Right Language

The first thing you want to do when learning a new language is make sure you’re spending your time on the right one. There are many different programming languages to learn, so it’s easy to be distracted by what’s easiest or what’s “cool” in the programming world at the moment.

But successfully learning a language starts with understanding the end-goal of the types of projects you want to produce. Sure, maybe you want to code basic HTML websites now, but you dream of one day developing the newest and coolest mobile app…

Well, mobile apps require a whole different language from your standard fare. Here’s a breakdown of the different languages for your consideration.

Dynamic Languages

Dynamic languages are generally considered easier for beginners to learn because they’re more flexible and you can quickly build websites or apps with less lines of code.

However, dynamic languages are considered “high level” in that it takes more time to understand the concepts of the language itself (the syntax, documentation, etc.) than it does to actually build something with it. But if you’re motivated to learn at a deeper level and you want to build things quickly, dynamic languages are for you.

Dynamic languages: JavaScript, Ruby, Python, PHP

Static Languages

Static languages tend to be more scalable, stable, and maintainable, but they’re far more strict with errors, meaning that you have to pay more attention to details when using them. They can also be more complex in that they require more code to build a prototype, but they have the ability to handle larger projects like game engines, mobile apps, and enterprise level websites.

If you want to develop projects on a larger scale, you’re a stickler for details and you don’t mind spending more time on each individual project, then static languages are a great choice.

Static languages: Java, C, Objective-C / Swift, C++, C#

Other Languages

You may also want to consider learning SQL (Structured Query Language) if you plan on doing a lot of database work. Though it’s not designed to build apps, it does help you manage the data in those apps, so it’s worth having some knowledge about if you’re building on a larger scale.

Practice, Practice, Practice

Once you have a good idea of the language you want to learn, the next step is doing your research. There are many different coding language books you can pick up from the bookstore, the library, or online.

There are also plenty of tutorials you can find on sites like Code Academy, Code Avengers, and Code School.

Of course, books can only teach you so much, and many programmers find books to be slow, especially if they’re trying to learn more advanced skills and don’t want to “sit through the basics” of a tutorial or book for beginners. In which case, the best way to learn a new code language is by actually doing it.

Try starting with simple projects using your chosen language. If you’re used to playing with dynamic languages but you’re trying to switch to building apps, start simple.

At Stanford University, for example, they teach their CS students new languages by having them create simple games like Hangman using JavaScript, or new command prompts using Ruby and Python.

Websites to Help You Practice

There are plenty of different websites out there dedicated to helping you build smaller projects to learn code faster. Trying one (or all) may be helpful in sharpening your skills and putting your knowledge to practical use. Here are a few of the tops sites:

Dash – Learn JavaScript. Dash projects are short, incremental, and based on real-world needs, so you can easily learn skills that you would use in your day-to-day life as a programmer.

learning-code04

CodeWars – Learn JavaScript, Ruby, Python, etc. CodeWars is a community site with code challenges and solutions to which coders can contribute. There are also aspects of gamification and other more difficult elements that slightly more advanced coders may prefer.

learning-code07

CheckIO – Learn Python through gamification. CheckIO is a code gaming platform for coders that want to practice Python. You undertake programming challenges to move from one stage to the next.

learning-code06

Whether or not you invest in learning with a website like the above or you simply start messing around with building a site or app and learn as you go, the important part is that you don’t spend the entire time stuck in a book.

Learn from the Masters

Perhaps the most important key to truly learning a language is to pick up on tips and tricks from programmers who have been in the industry a lot longer.

One of the first stops for learning a new language should be a language forum like CodeGuru or Hack Forums, but if you can’t get your questions answered, you could always search for outside resources.

Resources for Programmers

If you’re looking for real people to connect with that can help you learn code faster or answer any questions you may have during the process, you can check out a few of these resources:

IRC (Internet Relay Chat) is a highly valuable and often underused resource full of active “gurus” who can answer almost any question.

Talent Buddy has three-month long paid mentorship programs with real expert developers, but you can also use it for free to help sharpen your skills.

Social media channels like Twitter are also great spur-of-the-moment resources for coders who want advice from other industry insiders. Simply add a few hashtags or tweet at other programmers who may have some further insight.

[ Content upgrade with ID = 192 not found ]

Final Thoughts

While learning a new programming language isn’t going to happen overnight, you can speed up the process by incorporating several strategies into the mix.

Make sure you’re using the right language for the types of projects you want to create, and then stock up on both books and resources that will help you learn the language on a daily basis. Use sites that let you practice building the projects you want, or put together your own simplified projects to practice on your own.

Don’t forget to go to the experts for advice, whether it’s through a mentorship or simply by tweeting at industry leaders you know will have the answers you need.

How to Clean Up Sloppy Code

Coding is the quintessential tool of the web developer.

Instead of a paintbrush, he uses keystrokes. Instead of poetic stanzas, she uses JavaScript. Instead of… well, you get the idea.

Like the many different habits of the artistic types, developers have their own habits when it comes to coding. And unfortunately, some of those coding habits are better than others.

But we know what you’re thinking: If you’re the only one who will be looking at your code, is it really that big of a deal if things get a little sloppy?

Kind of…

Don’t miss: Clean Code Checklist for Developers

Why Clean Code Matters

learn-to-code-free-online

Steve Jobs, late founder of Apple, had a reputation as a stickler for quality. He once infamously told Walter Isaacson, “For you to sleep well at night, the aesthetic, the quality, has to be carried all the way through.”

That same principle applies to having clean code.

Others Will Probably Need to Use It

You can’t have a “no one will ever see it” attitude, and that’s mostly because you’re probably not the only one who will be looking at your code.

In his book, Clean Code: A Handbook of Agile Software Craftsmanship, Robert C. Martin notes that the ratio of reading code to writing code is 10:1, meaning that the time it takes someone to write code is far less than the time it takes someone to read it.

Even if you’re not working with a team of other developers, at some point, someone else will need to read your code. If it’s confusing or unclear, it can make the job that much more difficult for them (or alternatively you, should you need to revisit something later on).

But that’s not the only problem messy coding habits can cause.

Sloppy Code Can Lead to Security Concerns

Plenty of non-commerce businesses assume that their websites are safe from cyber attackers because there’s nothing of value for attackers to access. They think, “We don’t have credit cards on file, so who would hack us?”

The reality is that most hackers aren’t actually after big dollars. The most common hacker is actually a simple spammer, and their goal is singular: they want access to your code so they can track email subscribers or other users that they can later spam.

One of the easiest ways to do this is to embed malicious links or specific lines of code (especially at the end of a .php file) that trigger certain actions. If your code is already messy, you may not catch these little “extras” and they can cause major problems down the road.

So while you might think that sloppy code only affects you, it can actually create plenty of additional problems, from slightly annoying other developers all the way to creating a genuine gap in security.

That’s why it’s important to follow coding best practices whenever possible. Here are a few things to do when you’re coding to keep things nice and tidy.

Clean Code Best Practices

A house is only as strong as its foundation, so the best thing you can do for your coding habits is to go back to the basics.

Use Strict DOCTYPE. It doesn’t really matter if you use HTML or XHTML, but you should (most preferably) use Strict DOCTYPE instead of Transitional.

Use proper indentation. Sure, it may not be as time effective to do things “the right way” but it saves plenty of headaches for yourself and others later on. Readability is key, so even if you’ve invented your own way of doing things, keep it consistent and make sure it’s understandable should you need to pass the code off to others.

img-cleancode-02

List your character set before your title. In the <head> section, make sure your <meta> is listed before your <title> so that browsers can read the content properly (and other developers don’t have to search for it to make changes).

Keep your CSS and JavaScript out of your <head> section. Putting CSS or JS into your header muddies your markup and also limits functionality.

Don’t copy and paste code. If you have a snippet of code that does one thing and you want to do it again with a different set of variables, don’t just copy and paste. Make a function or use a method instead. While copy and paste seems like a faster solution, it can make lines harder to read and may not always paste properly. Plus, functions and methods actually save more time in the long run.

Don’t mix coding language. Using inline CSS and JS mixed together can cause problems with style properties later on, especially if you’re using a CMS like WordPress or Joomla to upload the code into a theme.

Write explanatory comments. Explanatory comments can do wonders for messy code, especially if you’re including unusual elements or structures for a reason, so do include them. Just remember that you don’t need to explain everything. Basically, use, but don’t abuse.

img-cleancode-03

Nest your tags. Your anchor links (href=) should be inside your header tags, not floating about wherever they please. Think of your anchors like having a pet: If it accidentally finds its way outside, most it’ll probably be fine, but it’s could also be hit by a car. As in, most browsers will probably still read it, but you could run into readability issues on mobile or less advanced browsers. Optimal ordering is key.

Eliminate unnecessary elements. We’re thinking divs. You just don’t need all of those divs. Unless they serve a specific function, dump them.

Name your classes and ids consistently. Good class and id names include “mainNav,” “subNav,” “sidebar,” “footer,” “metaData.”

Don’t use all caps in a markup. That’s why CSS exists.

Capitalize SQL special words. Even though SQL names are case insensitive, you should still capitalize them to set them apart from table and column names.

Organize your files and folders. Keeping things organized by type and function not only helps you find something quicker when you need it, but it helps others who might need access to those files later on.

Final Thoughts

While some habits can be hard to break, it’s worth it in the long run to learn how to keep your code clean. If you follow these best practices as you go, you’ll save plenty of energy for yourself and anyone who reads your code later on.

Remember that ultimately no one is going to tell you how to code. After all, that’s what your clients pay you to do (so they don’t have to). So it’s up to you to make sure things are up to standard and, as Steve Jobs says, you sleep well at night because of it.

Be sure to check out our Clean Code Checklist for Developers