8 Ways to Hone Your Programming Skills and Become a Better Coder [Infographic]

8-ways-to-hone-your-programming-skills-open-graph

As the world becomes more connected and technology continues to evolve, your success as a programmer depends on your ability to learn and adapt. Any seasoned developer knows you should always be looking for ways to improve your programming skills. On that note, whether you’re new to the industry, or a vet, we have you covered with timeless techniques for continuous improvement.

1. Know your learning style

We all learn differently. Some learn best by reading a book. Some prefer hands-on experience, or need the structure provided by a formal course. Fortunately, there are plenty of free or low-cost learning resources only a quick search away so you don’t have to waste your time on methods that don’t suit you. Whether you. Here are a few great sites to get you started.

2. Learn from others

One of the fastest ways to improve your skillset is to leverage the knowledge and experience of people who entered the field before you. While a formal mentor is a great asset, it’s not required. Seek out expert help from sources like your team lead, members of your local user group, or Stack Overflow. Show your code and ask for feedback. And don’t let fear of criticism or feeling like you’re bothering people prevent you from tapping into one of the most powerful resources available for leveling up your skillset. You’ll be surprised at how eager to help many people are to help. It’s flattering to be asked to share expertise.

3. Use the 15-minute rule

If you’ve been stuck on a problem for more than 15 minutes, ask for help! Turn around and ask a coworker how they would solve the problem, or describe your issue in detail on Stack Overflow. Regardless of whom you ask, the very act of describing your problem in detail puts you on the path toward the solution. Most problems are not unprecedented, and someone will be glad to share their experience or to team up on the issue.

4. Work on real projects

The surefire way to improve? Practice and challenging yourself. This means you should always be working on a coding project. Even if you have a full-time programming job, the work may not be challenging enough to build your skills—so find something that will. Some of the best developers always have a side project to work on. Not having an idea is not an excuse. Find an open source project to contribute to regularly, build web apps for charity, or tackle that silly app idea your buddy keeps pitching to you.

5. Look under the hood

Most programmers rely heavily on frameworks such as Spring, Rails, or Angular to get the job done. While these frameworks promote productivity, they are also a treasure trove of examples and inspiration you can apply to your own solutions. Check out their source code and study it. At first you may feel lost, but over time you will learn to navigate large codebases, identify design patterns, and quickly understand code.

6. Share what you learn

As the old saying goes, the best way to learn is by teaching. When you learn something new, don’t keep it to yourself. Share your new skill or finding in a blog post, record a screencast of yourself building a new feature, package your code into a library and put it on GitHub, or present new discoveries at a local meetup. Not only does sharing reinforce what you learn, but it demonstrates your skills to future employers and clients. It makes you feel good, too!

7. Make small, daily improvements

No one masters programming overnight. It takes consistent, deliberate practice. Take a few minutes to slow down, and make one small improvement every day. It could be learning a new language feature, reading a page out of the manual, or changing your editor configuration to add a shortcut for a common task. When compounded over time, these small, daily improvements add up to major breakthroughs.

8. Explore

Take a timeout every week to explore new languages, technologies, and outside forces that shape our world. Knowledge and skills don’t exist in a vacuum. Find two to three sources of new information to regularly tap into for inspiration. Follow coders you admire on Twitter. Browse Hacker News daily or weekly. Subscribe to newsletters like the Changelog Weekly.

Summary

There are no secrets to becoming a better programmer. It takes patience, practice, and perseverance. Stay curious, make it fun, and never be too proud to ask for help. The reward is in the journey and enjoying each stop along the way. Happy coding!

Share “8 Ways to Hone Your Programming Skills and Become a Better Coder” On Your Site

Code Compiled: A Short History of Programming – Part II

This is the story of software. The initial blog in this series was all about the structural formation of programming languages. We went all the way back to steampunk days to see how the framework for programming grew out of Charles Babbage’s Analytical Engine in the 1840s. We ended up with a list of the most active programming languages in use at the moment. Now we’ll take the next logical step to examine what programming has done for enterprises and SMBs. We’ll also trace the effects of shockwaves in the world of databases, communications, and mobility.

Technological Change Blindness

There’s a strange phenomenon known as change blindness that describes how normal people don’t notice massive, obvious changes in their environment. It can emerge from gradual shifts or very rapid transformations that are interrupted by a distraction. For example, a study by Cornell found that test subjects didn’t notice when a researcher, posing as a lost tourist, was replaced by someone else who looked completely different midway through the questioning.

Change blindness is happening right now on a societal level when you reflect on what programmable software has accomplished. Consider how radically our world has been transformed over the past two decades, partially due to hardware upgrades, but mostly due to programming.

In the last decade alone, we’ve seen society rebuilt due to the popularity of:

For anyone too young to have seen it or too busy to remember, here’s a recap of how business records and communications operated in the pre-software era.

Life Before Software

How many times per day do you use your computer? That question really doesn’t make sense for most workers today because they never stop using their computers. This goes beyond developers to every single person in the organization. Every time you check the time, write a note, or make a call you probably did it on the web or using a mobile device. Here are just a few of the jobs that didn’t exist in the recent past:

10 years ago

Global total app developers = roughly 0. There were the basics of social media, but no social media managers. There were no departments devoted to cloud engineering. Big data analysis was primarily academic. Development and operations didn’t become DevOps until 2009. Even the title “web developer” didn’t get a Bureau of Labor Statistics (BLS) designation until 2010.

20 years ago

There was no such thing as an online marketer. PPC didn’t exist before 1996, and the first keyword auction kicked off in 1998. In 1995, there were only 16 million internet users on the entire planet. Wireless engineers were battery specialists, because the 802.11 WiFi protocol came out in 1997 and widespread adoption would take another decade.

40 years ago

The late 1970s introduced personal computers to the business world, and the modern digital world as we know it can be traced back to that moment. Before that, computers were room-sized monsters like the IBM S/360. In 1976, there were no Apple computers, no Tandy TRS-80s, no Commodore 64s, and no Texas Instruments 99/4s — and IBM PCs were many years away. If you were a programmer, you might be working in UNIX, Pascal, COBOL, C, or Prolog and carrying around a suitcase full of punch cards. You might have a job switching reels of giant magnetic tapes that computers used as memory. There was no such thing as a reboot and crashes were common. You might spend the day pulling up floor tiles and looking for twisted cables. Perhaps the most astonishing fact about this picture is that some of the people you work with right now probably remember those days.

When Windows Were Only Glass

Before computers, offices tended to be loud and smoke-filled. Typewriters rattled everywhere and you could tell who was at work by the cigarette smoke curling above the desk.

Customer data, billing, legal documents, and other important records were made of paper and stored in boxes. The boxes were usually kept in a giant file room that had to be kept updated daily. Security was often non-existent and a disaster like a fire could wipe out a business in minutes. Contacts were often kept on paper rolodex files and everyone had their own.

With the arrival of personal computers, software fundamentally changed all business processes, making them repeatable, transferable, and vastly more productive.

The Database That Changed the World

You can spend endless hours arguing about which software has had the biggest impact on history, but every story has to start with 1974’s Relational Database Management System (RDBMS). There was no systematic way for storing and accessing data from the time electronic computers took off in the 1940s until the early 1970s. To find and retrieve information, you had to know where it was stored and how the program worked that did the data storage.

When IBM’s Ted Codd published his twelve rules for relational databases, it became the universal model for storing and structuring data. DB2 and its many children, like Percona and MariaDB, still underpin the global web. This led directly to Structured Query Language (SQL), Oracle, and the database wars of the 1980s. Today, software that has to manage the sheer volume and velocity of big data requires non-relational databases, but even these have their origins in Codd’s matrix.

The Grid and Cloud-Based Software

The history and impact of the internet are too large a subject to be discussed here, but cloud-based software is its latest expression. Software as a Service (SaaS) grew out of “The Grid,” a concept by Ian Foster and Carl Kesselman in the early 1990s, at the same time as the birth of the World Wide Web.

They imagined that software should be a metered utility, like electricity, where people just plugged into a grid of resources. Doing that depended on the development of effective cluster management and data residency. Clustered and networked computers used the rapidly developing internet protocols to fetch, process, and deliver data.

That meant that you had plenty of CPU capacity, but the actual machine doing the operations could be thousands of miles away. The connectivity speed of the communications channels hadn’t caught up to the network, generating delays in fetch and execution commands. Bottlenecks in I & O were common and cloud-based software started to gain a reputation for unreliability.

In terms of cloud security, the earliest threats are still the strongest: data breaches from malicious actors, data leakage from developer errors, identity blurring from insecure credentials, and APIs from untrusted sources. Today, whole industries are entirely reliant on cloud-based deployments despite the ongoing security challenges. SaaS was soon joined by Platform as a Service (PaaS) and Infrastructure as a Service (IaaS). The mobile workforce revolution would not have been possible without it.

Mobile Software for Working Remotely

Over the past 20 years, telecommuting has gone from a dream to a necessity. A Gallup poll showed that over a third (37 percent) of U.S. workers telecommute some of the time, compared with single digits before 1996. Of those who do telecommute, one in four work remotely more than ten days every month. In terms of effectiveness, 74 percent of those surveyed said that telecommuters are just as productive or much more productive than their co-workers.

The mobile workforce revolution is tied closely to the development of BYOD (“bring your own device”) and “workshifting,” which is the process of moving work to non-traditional times and locations. The three software trends that made this possible were the business app ecosystem, tighter security management tools for remote logins, and data center control panels that could handle all that network traffic. Put them together and the traditional office starts to look more like an unnecessary capital expense whose main function is serve as a backdrop for press conferences. The IDC now projects that 72 percent of the US workforce will be remote workers by 2020.

Industries Without Supply Chains

Arguably, the area that has seen the most dramatic changes due to recent software advances has been the finance industry. Finance has no logistics and no production supply chain to worry about. Information about money is what they sell and companies differentiate themselves on how well they manage that information. That’s why the expansion of internet access to more people and robust data analysis has meant so much to the industry. Unlike other information-driven industries, finance concerns every single individual alive today and each entity — whether it is a person or corporation — can have unlimited accounts.

The financial industry has been rocked by more disruptions than any other in terms of software created by SMBs as compared to other large enterprises. It has seen the introduction of new business models like crowdfunding, new forms of online currency like Bitcoin, data integrity disruptions like Blockchain, and new concepts in transactions like peer-to-peer lending.

We’ll go much deeper into these issues for the third and final blog in this series. We’ll look back at how programming changed banks and insurance companies with databases in the 1960s, then follow that through to the latest big data analytics driving capital markets today. You’ll see how programming and software advances have affected all business concerns, from precision marketing to risk management.

Learn More

In case you missed it, read about ‘Code Compiled: A Short History of Programming – Part I.’ Stay tuned for ‘Code Compiled: A Short History of Programming – Part III.’

The Most Popular Programming Languages for 2017 [Infographic]

It’s hard to believe that it’s already 2017. But with the new year comes new challenges, new opportunities—and, of course—new software projects. One of the most important questions beginner, intermediate, and advanced coders all have to answer before they begin their next project is which programming language to use. Instead of reaching for an old favorite, pause for a moment to consider the options.

There are no perfect languages, so it’s important to take the time to understand the tradeoffs. When you decide on a language, you also determine what libraries and tools youwhich-programming-language-will-reign-in-2017-header have at your disposal, the pool of candidates you can hire, the availability of documentation, and much more. In this article, we examine the top programming languages from leading industry sources to help you make an informed decision that best suits your needs.

Familiar faces

There are languages, like Java and the C-family (C, C++, and C#), that have dominated the programming language charts for years, and won’t be obsolete anytime soon. (Check out Github’s 2016 programming language rankings chart to see where the top 21 languages fell last year.) They may not be trendy, but they are battle tested, well understood, have active communities, and continue to evolve in response to new contenders, with features such as lambda expressions for Java 8 and coroutines for C++17.

JavaScript

If you are a developer in 2017, JavaScript is a fact of life. It ships with every major browser, powers server-side applications via Node.js, and even drives the development of desktop and mobile applications (with the help of frameworks like Electron and React Native). What started out as a simple scripting language to add dynamic elements to websites now powers full-blown applications in nearly every domain.

But it’s difficult to find anyone still using plain JavaScript. The language, which is officially standardized as ECMAScript, has evolved so rapidly that developers often use tools like Babel to transform modern JavaScript into cross-browser JavaScript. Languages that compile to JavaScript will also continue to gain traction in the coming year. For example, TypeScript adds classes and interfaces to plain JavaScript, and Elm brings the functional paradigm to the JavaScript ecosystem. While you may find it impossible to avoid JavaScript, you must exercise discipline when selecting your JavaScript toolset for projects with multi-year lifespans.

Dynamic languages still going strong

Python, PHP, and Ruby continue to rank among the most popular programming languages due to their newcomer user friendliness , suitability for rapid prototyping, availability of libraries to solve almost any problem, and vibrant developer communities. While less performant than their compiled and statically typed predecessors, dynamic languages remain the perfect choice for business applications where time to market is critical.

The rapid rise of Go

Open sourced in 2009, Go (or golang) quickly became one of the most popular programming languages. Designed by Google engineers as a practical replacement for large-scale systems development (where traditional languages including Java or C++ still reign supreme), Go has found a strong, emerging following among all kinds of developers.

Most notable for its simple syntax, built-in concurrency support, and feature-rich standard library (which includes a production-ready HTTP server), Go stirred up controversy over its deliberate omission of features, especially inheritance and generics. Despite its relative simplicity, people already use Go to ship popular, cutting-edge technologies such as Docker and Kubernetes.

Developing for mobile

Apple introduced Swift in 2014, and the language is already climbing the popularity charts. Objective-C still ranks higher, but Swift is rapidly replacing it as the preferred language for both beginners and pros to build iOS apps. The streamlined syntax, gentle learning curve, and powerful abstractions all contribute to Swift’s popularity. While Swift is open source and theoretically could be ported to other platforms, developers still need to rewrite mobile applications in Java or C# in order to run on Android or Windows phones.

Functional programming languages entering the mainstream

Functional programming languages such as Scala, Clojure, and Haskell are quietly growing in popularity. These languages offer expressive and concise syntax, exceptional compile-time error checking (meaning fewer bugs in production), and strong support for parallel operations. These benefits come at the cost of a comparatively steep learning curve and small hiring pool. However, as more developers explore functional programming in response to the unique demands of modern computing, functional languages will become more common for real-world projects.

The Most Popular Programming Languages for 2017

The Most Popular Programming Languages for 2017

Learn more

With so many great programming languages at your disposal, it can be difficult to decide on one. Fortunately, you do not have to decide on your own. Talk to your developers—they have well-informed opinions about the best language for your next project. Go to local tech meetups to discover what other companies choose and for what types of projects. Hit online job boards to see which languages and skills are in high demand. Ultimately, it’s up to you to choose which language features take top priority for each project you work on.

Share “The Most Popular Programming Languages for 2017” On Your Site