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.


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.


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.


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


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.


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.


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

When is it Time to Learn a New Language?

If you want to advance your career as a developer you must learn another language. There’s no way around it. Knowing a single language simply won’t give you enough working language to produce anything of value. Being able to produce an app using a single language is highly unlikely.


For instance, what you’ll need to know on the backend will use different languages than what you’re producing on the front end, and that’s just one example. Being an expert developer today means understanding the complex interplay between multiple languages and frameworks. As well as being able to determine the best language for the job.

Below we dive into the importance of learning a new language, and why you must do it to advance your career.

[ Content upgrade with ID = 171 not found ]

When Should I Learn Another Language?

learn another language

Photo credit: Lee Campbell

Right this very moment!

We don’t say that to scare you, but instead to encourage you. There’s truly no better time than now to dive in and begin the process of deeply understanding another language. There are truly no drawbacks to upping your arsenal and learning more than one programming language.

The more languages you can understand the more knowledge you’ll have to draw from when you need to solve a complex problem, or build an app, website, or piece of software from scratch. Plus, the more languages you learn the easier it’ll be for you pick up other languages.

If you’re currently working on projects that are beyond your comfort zone and causing you to apply languages you’re just barely familiar with, then you’re in a good place. However, if you’re only using languages that you have complete familiarity with and are taking projects that you easily know how to complete. Then it’s probably time to push yourself to learn a new language.

Choosing the Right Programming Language

So,why do so many languages exist, that practically do the same thing?

Programming languages didn’t start out looking all the same. Most programming languages are designed for a very specific purpose. With time, they’ve grown and evolved, and now tend to more or less resemble one another.

If you want to choose a language that’s going to help your career evolve, then it can be useful to pick a language that has a high value in the marketplace, and will grow significantly into the future. You’d hate to pick a language that evolving technologies don’t seem to use and effectively position yourself out of the market.

For a breakdown of the current market rates of specific languages, check out this analysis from Code Mentor. It’s also important to take an overarching perspective when choosing a language as well.

For instance, if you’re looking to understand the entire app creation process, from maintenance, to deployment, to front-end and back-end. Then, choose a language to learn that will support you in this knowledge. Our professional web developer course, offers a complete step-by-step breakdown of this exact process.

What Happens When You Stop Learning

stopping learning

Photo credit: Luis Llerena

If you ever reach a point where you feel like your career is stagnating, and you’ve become stuck building the same things and solving the same problems, then ask yourself: what can I learn next? The more practical knowledge you have the further you’ll be able to take your career.

Book knowledge is important and can help you build the confidence and foundational knowledge to move forward. But, the moment you stop taking on projects that are just outside your skill level you put yourself in kind of a hole. Sure, you might be good for the next few years.

But, over time, you’ll become bored of the work you’re producing and you might even put yourself of a job. Embrace learning as a natural part of your career, and you’ll see your career grow in ways you never could have predicted.

[ Content upgrade with ID = 171 not found ]

How to Integrate Learning into Your Workday

As a developer, I’m sure your schedule is jam packed. If you work for a company, then chances are you’re busy programing from the moment you get there until the moment you leave. If you work for yourself, then you’re probably spending all of your time completing programming work, interfacing with clients and hunting down new projects.

How are you possibly going to squeeze any extra time out of the day to grow your skills and evolve your career?

Well, we’ve got you covered. Below we dive into a few strategies you can use to carve a little extra time out of your day to make room for education and growth. After all, your career can only grow as much as you do.

[ Content upgrade with ID = 163 not found ]

Why Education Should Be a Priority


Photo credit:

The quickest way for your career to stagnate is to stop learning. Your career as a developer depends on how much you know, and not just book knowledge either, but your ability to apply what you’ve learned to real-world problems.

Without creating a little extra time to learn every single day your career is going to stall. Or, you’ll be hoping and praying to get a promotion, instead of taking charge of your career. When you’re a beginner or intermediate developer, you’ll usually only be good at developing on one kind of language, or building a certain kind of app.

To grow beyond this, you need to be able to recognize holes in your knowledge and understanding, so you can fill them in and then move past them into an advanced development role. Advanced developers are fluent in multiple languages, have expertise in a certain process or method and have an overarching understanding of how every code and framework fits together to create the desired result.

Below we highlight a few ways you can create more time in the day to make room for additional learning.

How to Add More Hours to Your Day

add hours

Photo credit: Josh Felise

A lot of our habits don’t end up serving us in the long run. Are you the kind of person who hits snooze a few times, and barely has enough time to dress and eat breakfast before heading out the door? By letting your time control you, you end up being at the mercy of the clock.

Instead of operating on conditioned responses that seem to sap every minute of your time, we’re going to outline a few different ways you can inject learning into your day-today workday.

1. Take on Projects Above Your Current Level

The only way to expand your skills and current set of knowledge is to take on projects that are above your current skill level. Sure, you might not know exactly what to do, or you might be afraid of ruining the project; but often, it’s the biggest challenges that cause us to rapidly grow our skills. The added pressure of proving ourselves can help us learn and apply things at a rapid rate.

This doesn’t mean you should sign yourself up for a project that you have no idea how to do, but if something comes across your desk that is slightly outside of your comfort zone, you should absolutely say yes to the project.

2. Create Smaller Side Projects

If you’d prefer to learn on your own time, then you can’t underestimate the value of creating a small side project. If you’re trying to pick up a new language, learn how to design a database or utilize existing cloud technologies to deploy an app, you can design a smaller project to help you learn these things.

When creating a side project you need to define a goal you want to achieve that’ll actually keep you motivated. If you already have a full-time job, then you don’t want to give yourself another “job” to pursue during your downtime. Make it something fun, something that you’re passionate about and wouldn’t mind putting the additional hours into.

Learning is more fun when you don’t have to force yourself to do it, and are instead inspired to write additional lines of code every day.

3. An Extra Hour is All You Need

Creating a little extra time in your life to grow your skills doesn’t mean you have to pull all nighters, or give up your weekends. You’re welcome to invest as much time as you want. The more time you spend growing your skills, the faster your career will progress. Just make sure you’re learning the right things.

If your schedule is already packed, then you don’t have to stress about making a bunch of additional time. An hour of focused time is all you need to start. Think of it as the minimum effective dose. If you’re learning the right things, and have created a project that you’re actually inspired by, then finding an hour of additional time is going to be easy. We can all wake up an hour earlier in the morning, or cut down on TV watching or other hobbies.

[ Content upgrade with ID = 163 not found ]

Growing your development skills is the only way to ensure you actually reach your career goals. By taking projects that are outside your area of comfort, and creating exciting side projects that push you, you’ll begin to see your career evolve.

What ways have you found to grow your skills throughout the workday? Share in the comments below.

5 Common Development Challenges You’ll Face

Web development is a constantly evolving field. The only thing we can truly count on is the field will continue to change a rapid pace. But, hey, what can you expect from a field thoroughly embedded with technology.

The way we build web apps and websites is changing. New development libraries are being added on an almost daily basis. There are new jobs, new languages, new startups, new directions. How are we possibly going to keep up?

Instead of getting overwhelmed about the future and all the potential challenges you’ll face, it’s a more proactive position to look at the problems you’ll face and address them head-on.

Below we’re going to dive into the most common development challenges you’ll face today. Whether you’re a freelancer, working for a company, or are about to set off on your own, you’ll need to know how to hurdle these challenges and come up with effective solutions.

[ Content upgrade with ID = 153 not found ]

Let’s get to it!

1. Understanding Integration

Back in the day, everything used to be built in-house. It was rare for companies to integrate with other applications. However, nowadays applications are built on the backs of other successful applications.

This creates a unique challenge for you. On one hand, you no longer need to build things like subscriptions, payment processing, storage solutions, or a multitude of other features from the ground up. But, you now need to integrate with other solutions that are already providing these things.

This creates a whole new set of information and processes for you to understand and put to use. For instance, each integration brings things like, understanding a new API, a new set of code, and troubleshooting common problems.

It not only requires a deep understanding of your own code, but also the code from another company or developer. This is why being able to have a bird’s-eye perspective is much more valuable. You’ll be able to see how the different pieces of the puzzle fit together, so you can more easily build and ship reliable solutions.

2. Speed

Speed is becoming increasingly important. It seems that user attention spans are dropping and along with that their ability to wait for things to load. What does this mean for developers?

It means your code needs to be lightweight and fast. It means you can’t have any clunky elements cluttering up your code. This means you need to be able to create feature heavy applications that perform incredibly well.

This requires the ability to know how to code complex features that aren’t very resource heavy. In the future, we’re going to highlight common indicators of clunky code and what you can do to minimize them, but for the moment just know that the speed of your application is incredibly important.

3. Great User Experience

The point of any web app, website, or piece of software should be to enhance the lives of the user. It’s easy to lose track of this point when you’re neck deep in miles of code. But, it’s something you need to be proactively aware of on a regular basis.

Today it seems that most users have gotten a little spoiled. If your application doesn’t immediately line up with the user’s expectations, then they’re going to find another solution. We exist in a very crowded marketplace, chances are there are dozens of solutions to the same problem you’re solving.

Good design and great code must work together to provide the user with the best experience possible. Aside from the aspects of your app that interface with your clients and customers, you’ll also need to consider other developers.

Do you offer easy integration to extend the functionality of your app? Is your API easy to copy and expand upon?

Remember this mantra: don’t ship anything that doesn’t create a solid user experience.

4. Multi-Platform Use

These days creating for a single platform is no longer enough. Even if you’re serving a very small niche, the chances are high that they’re going to be suing a wide variety of access points. From desktop computers, to iPads, to smartphones, to devices in the future that haven’t even been released yet!

Without carefully thinking through the wide variety of environments you need to cater to you run the risk of providing a less-than-stellar user experience. Which, we know from above, is never a good thing.

Before you build out anything, think through what kinds of devices it’s going to be viewed upon, which browsers you’ll need functionality for, any existing APIs you’re going to need to rely on, and which screen sizes and resolutions you’ll need to support.

5. Security

Security is only going to play a bigger role into the future. With things like the NSA leaks, the FBI and Apple debate, and recent data leaks that have gotten mainstream attention, it seems that today’s web users are becoming more privacy savvy.

Security breaches are steady on the rise, but it seems that a lot of websites and web apps aren’t keeping with the ongoing threats. Patches are usually done after the fact, which means the software is patched only after the weak points are discovered. This isn’t necessarily bad, as long as the patch is implemented quickly.

Building a safe and secure app or website requires an entirely new set of questions and practices, all of which will help you to become a better developer.

  • How can you more effectively keep every area of your app secure?
  • Do you have a regular patching protocol?
  • Do you review your code on a regular basis as information about threats becomes known?
  • Do you monitor traffic for strange information requests?
  • Are you aware of the weak points in your code?
[ Content upgrade with ID = 153 not found ]

We could probably keep creating this list forever. But, there’s no need to overwhelm you. By keeping an eye out for the above challenges you’ll be able to quickly raise your skills and value as a developer.

What about you? Any common challenges you’d add to the list? Please share in the comments below.

Why Your Success as a Developer Depends on Finding Information (Not Just Skill)

The technology industry operates at a relentless pace. The moment you think you’ve attained mastery, or even a high level of understanding of any programming language, your skills might already be out date. Instead of clinging to your knowledge as a way to make you feel secure and competent, why not try another route?

The sheer amount of information available that’s related to any kind of modern programming language is quite intimidating to the uninitiated. You are probably thinking, “You mean I have to remember all that?” Well, not exactly.

Today, and especially into the future, your ability to quickly find the “right” information is going to be more important than any specific skill set. Yes, you do need to have certain basics nailed down. But, without developing the skill-set and mindset of an active researcher you’re going to be stuck tackling problems all on your own, instead of relying on other developers and extensive documentation to help you out.

Below we dive into the importance of knowing how to find the right information, rather than focusing on extensive skill building.

[ Content upgrade with ID = 147 not found ]

We Live in an Open Book World

open book world

Photo credit: Luis Llerena

Mark Cuban recently coined the term Open Book World, although not a programmer (at least not that we know!), this way of thinking is entirely useful. Instead of having to rely on information we’ve memorized we now have an entire world of knowledge to draw from.

Yes, it’s incredibly important that we develop our skills as developers, but if we spend too much time learning the ins and outs of a single language, or process, or method, we run the risk of putting ourselves in the box.

Solutions to our pressing development problems are often only a search away. Instead of spending an entire workday wracking our brains against a problem, we can piece together and test multiple solutions based upon our search abilities and intuition alone.

However, just having access to information isn’t enough. We now live in an age of information overload. In order to be effective at your work you must learn how to sort through all of this information. But, don’t worry, we’ll get to this in the final section.

Becoming a Research Enthusiast From a Hiring Perspective

Startup Stock Photos
Startup Stock Photos

Photo credit: Startup Stock Photos

Today, workforce is continuously evolving and the development space is no different.

1. Rapid Problem Solving

What do you think is more valuable to an employer, or to the rest of your team? Being stuck on a problem, but find your way through it though sheer force of will. Or, the ability to search and research and test rapidly until you find a solution.

Now, we’re not saying you should be doing a patchwork job with your development, but instead should be able to develop a great holistic understanding, so you can intuit what solutions are going to work.

2. No Ego in Development

When you begin to pride yourself on your ability to find and implement the right information you begin to realize that you can’t do everything on your own. In fact, your success is wholly dependent on the developers who came before you and those who are currently with you in the trenches.

No great code is created in a vacuum. Luckily, most of the development world is inherently very open. Acknowledge this in yourself and your work.

Another great way to cement your knowledge is to help and teach. Almost everything you’ve learned up to this point has been due to other people, or other resources. Even if you feel like you don’t have anything to offer, you’re always an expert to someone.

3. Faster Language Adoption

Today’s programming languages are so in-depth it’s nearly impossible to know how to use and understand every single detail. Older programming languages were much simpler to learn and master by design. But unfortunately, this old world doesn’t exist anymore.

Instead of approaching programming language acquisition from the point of total mastery and understanding, see if you can approach it from the point of usefulness.

This means taking the months to learn the syntax, the built-in operators, and the libraries. Use this knowledge to understand the practicality of the language and how you can apply it to solve various problems.

Build a toolkit that contains useful knowledge of multiple different languages and you’ll be better equipped to handle a wide range of development challenges. Becoming a generalist might truly be advantageous at this point in your career.

A Primer on Advanced Search Techniques

advanced search techniques

Photo credit: Tirza van Dijk

Your search bar is going to be your best friend as a developer. Most large development languages are simply too complex to remember most of them. For that reason, your ability to produce great code and get work done is going to depend upon your search abilities.

Now, this doesn’t mean you’re going to become a master of Google. There are a variety of sources you’ll need to scour in order to find practical and useful information.

[ Content upgrade with ID = 147 not found ]

Below we highlight a few things you’ll need to master to become an expert at finding information. Think of your quest as searching for the hidden treasure. The gems are out there, you just have to find them.

1. Advanced Search Operators

Knowing which search engines to use will help, but knowing how to use the right search operators in even better. Typing your error code into Google might bring you a few practical solutions.

But, sometimes you’ll want to exclude certain results from your search. Or, make sure you’re only given results from a specific website. Google offers a great resource for those just getting started. Getting your head around Boolean operators will be very beneficial as well.

2. The Manual (Shocker, Right?)

There’s something about developers in general–we hate reading manuals. We’d rather figure things out on our own by breaking and fixing things, than spending hours pouring over technical documentation.

But, I’ll let you in on a secret. Documentation can be your best friend. Whenever you’re stumped, consult the relevant manual and chances are your solution is staring you in the face.

3.Search Engine Choice

You’re going to need to develop the ability to choose the right search engine. Hint: Google isn’t always going to be your number one choice. There are a number of online resources that are going to be better suited to helping you solve your problem.

Some common places to find relevant coding information are Github, DuckDuckGo, DevX, Dogpile, Stack Overflow, SymbolHound and much more.

We hope that you’re on the same page as us, surrounding the importance of finding the right information to product great code and grow your career. How has becoming an information hound impacted your career? Please share in the comments below.

Software quality and agile

I want to share some thoughts based on recent discussions I've been having with developers around software quality and agile. I have seen many cases where development teams dogmatically following their view of an agile (mainly scrum) process has a negative effect on software quality. What do you think?



Please don’t rewrite your system from scratch

It seems there have been a lot of discussions online recently around rewriting software.

I think it’s a great discussion to have, as on many many different projects, I have seen developers clamouring to rewrite the software, to update to modern tooling, to fix large sets of issues as they see them in the codebase.

For the most part, prototypes of a newer, modern codebase can be created in a matter of hours. It can be very easy to assume that with modern tooling, and a prototype, rewriting a system is an easy job.

For the most part it is not.

I have personally seen a number of rewrite projects, and for the most part these rewrites are far from easy. With a rewrite, all of the necessary complexity of the system has to be addressed all at once.

Most of these recent discussions would also advocate incremental improvement over a rewrite, refactoring towards a target architecture. By all means, create a prototype of where you think the system should be. Then, armed with that information, work out how you can get there gradually.

The first part of this has to be understanding your existing technical debt.

Work out what is costing the business the most right now, and look at refactoring that towards your vision of where you should be. It might take a while to get there, and you will have to take many steps along that path, but you will be doing so in a much more controlled less risky way, providing more benefit up front.

In my new course, ‘Dealing With Technical Debt’, I go into this in more detail, and look at ways we can compare instances of technical debt in order to prioritise them. Once prioritised, we can look at improving the system in a deliberate way, tackling items that will bring the most benefit first.

Sometimes you do indeed NEED a rewrite. And sometimes you can even pull it off, but often it’s better for the business and all developers involved to put in place a strategy for dealing with your technical debt.

When done right, this can actually allow developers to use the languages, techniques and tools needed to develop as they should, but do so in a more gradual way, allowing results to be seen early.

What do you think about rewrite vs incremental improvement? Have you seen any cases where a rewrite was successful? How do you manage your technical debt?

On the value of not being busy

As part of teaching courses for developers online, in person, and through actually working as part of development teams, I receive many questions and am involved in many conversations around software development.

I want to start sharing some of the topics discussed and thoughts here in the hope that others will find this useful too.

I've just started using anchor, and think it's a very interesting platform for this kind of micro podcasting and discussion. The anchor is embedded below so you can listen here, but if you haven't heard of anchor, I would highly encourage you to check it out, and reply to my wave with your own audio!