Tag Archives: programming

  • Web Development: Key Languages to Know

    shutterstock_252367738 (1)

    Web programming is a desirable skillset—and a lucrative one. Earlier this year, Dice reported that, when it comes to return on investment in education, Web developers rank among the top jobs, with the average annual salary hovering at around $77,000.

    Better yet, the Bureau of Labor Statistics believes the number of Web developer jobs will continue to grow through 2022. And according to a report issued late last year by Wanted Analytics, global demand for Web developers is high.

    That demand makes it harder and more expensive for companies to hire top talent. It also means that those skilled in Web development can demand a premium in salaries and perks.

    “In today’s professional world, it’s important to stay on the cutting edge,” said Zach Sims, CEO of Codeacademy. “Programmers who learn many Web languages are able to stay versatile and keep a pulse on the evolving professional needs within their field.”

    But which languages are essential for any Web developer to know, especially if they want to lock down a good salary?

    CSS Still Matters

    Cascading Style Sheets (CSS) is a style-sheet language that provides the backbone for how Websites should look and behave, and ensures proper spacing, alignment and the integrity of other key design elements.

    Those without in-depth CSS knowledge will have a hard time designing a Website, since the language dictates so much in terms of look and feel. Anyone who wants to develop for the Web can’t overlook it.

    PHP: The Basis of Key Platforms

    PHP is a server-side scripting language that acts as the foundation for many of the world’s most popular Web platforms, including WordPress. Although periodically dogged with security issues, PHP boasts a flexibility that makes it useful in everything from standalone graphics applications to generating HTML code.

    Anyone who learns PHP should do their best to become as familiar as possible with the platform’s open-source libraries, as well as how it interacts with database servers such as MySQL and PostgreSQL. If you’re interested in boning up on your PHP knowledge, check out these Dice articles about the difference between it and .NET, some programming basics, and how to answer job-interview questions related to it. From conditionals to arrays to loops, there are all kinds of things to learn about PHP, but once you know what you’re talking about and how to fix issues, you’ll be far ahead of competitors for many must-have jobs.

    JavaScript for the Masses

    JavaScript regularly tops the lists of most-popular programming languages, and with good reason: alongside CSS and HTML, it helps power the vast majority of Websites around the world.

    The interpreted programming language allows programmers to create critical workflows, apps, games, and just about everything else they can think up; it combines a series of items, including data structures, objects, and countless other elements, to help users build whatever they desire. So it’s a versatile platform, but also one with a lot of moving parts—programmers interested in learning more about it will need to explore everything from choosing the right frameworks to advanced tools such as strict mode.

    JavaScript knowledge can also be parlayed into mobile development. “We often encourage learners to start with JavaScript,” Sims said. “It’s one of the most versatile programming languages around. Learners can utilize their knowledge of JavaScript to build a wide-range of products for both web and mobile use.”

    HTML as the Basis of Understanding

    HTML has been around forever, and it’s arguably the easiest of any Web language to learn. It remains important as the Web’s standard markup language.

    Given its age, discussions on HTML and its importance are old and staid. That being said, any newbie getting into Web programming should learn the basics of HTML, understand how to create different tags, and design simple Websites for practice.

    Conclusion

    Focusing on just one of these languages is not enough to be a successful Web programmer. As Sims said: “A flexible mindset is the key to success.” The key is to not only learn thoroughly, but also put yourself in a flexible mindset that will allow you to adapt to the inevitable changes in languages and methodologies.

    As seasoned Web programmers know, there’s always something to learn, and no shortage of languages worth pursuing.

    The post Web Development: Key Languages to Know appeared first on Dice Insights.

  • Choosing a JavaScript Framework

    shutterstock_112692424

    In software development, choosing the right technology for the right job is (arguably) the most important decision a developer can make. But it’s also something easier said than done: For example, you can use many different general-purpose programming languages for the same job, and it’s not clear which one is the most suitable. At other times, a project has particular needs that only a handful of technologies or platforms can provide.

    With all that in mind, let’s talk about the differences between some JavaScript frameworks, focusing in particular on how to choose the right one for the right project.

    As JavaScript has grown, people have created different libraries to expand its utility in Web development. Some of those libraries, such as AngularJS and Ember, are incredibly popular. Unless you’ve actually built a few applications with each one, it’s hard to get a feel for their respective strengths and weaknesses. (I’ve met a lot of Web developers who picked what they thought was the best one, used it for a year, and then, while deep into their project with no turning back, decided they had made a mistake.)

    Know What the Features Mean

    Before you can really understand what the frameworks offer, you need to understand what the different features even mean. MVC? MVVC? One-way or two-way binding? And so on. We’ll get into those briefly, but before that, let’s consider a most important point:

    Focus on the Final Product

    When choosing a framework, focus on what you’re trying to accomplish. How sophisticated is your Web application’s front end? Will you be doing a lot of JavaScript number-crunching, and thus need easy access to the data? Or will you be creating a beautiful front end that is user-oriented but doesn’t have a lot of data manipulation?

    The strength of your coding skills is still another factor in framework selection. Different frameworks allow you more leeway and freedom—but with that freedom comes the need to do more actual coding.

    Some frameworks are considerably larger than others, and lock you into specific architectures. AngularJS is a good example; it’s difficult to stray outside of the suggested architecture, but the architecture comes with a long list of features that automatically take care of problems for you, which means less coding.

    Compare that to a framework such as Knockout, which gives you much more flexibility, but you also have to do a lot of rolling your own to figure out what works best for you. (Ember falls in the middle, although some people might disagree.)

    Models, Views, and Controllers

    Most of the frameworks take different approaches regarding models, views, and controllers. The model is your data. The view is what your users see on the screen; treat it as a representation of your data. The controller is the code that manages the data.

    Frameworks differ in how the models, views, and controllers are architected. A lot of developers have found a need to separate the model into two different types of data: one is the actual data stored in the database, and the other is the temporary data that assists in what the user sees on the screen. The “real” data exists in one format, but to be presented on screen, it needs to be in a slightly different “shape” in order to be manipulated by the user interface.

    This need has resulted in an addition to the Model-View-Controller (MVC) architecture, with a fourth component, the Viewmodel. I found some great explanations of the difference between MVC and Model View ViewModel (MVVM) on Stack Overflow and one blog. (I will usually put additional data inside the viewmodel that isn’t part of the main data, such as a list of countries needed to populate a dropdown list.)

    Data Binding

    Next comes data binding. Before these frameworks existed, you had to put your controls in your HTML, and then use jQuery to read the data out. If you wanted to gather up data to be sent to a server through AJAX, you had to gather the values from your different controls; or if you were reading data from the server, you had to go through the data and populate your controls. This was a headache.

    Data binding refers to copying the data values between your model and your controls on the screen. Thus, if your model has a user object containing a first name and last name, the framework will put the first name and last name on the screen automatically for you. With two-way binding, as the user modifies the first name and last name inside a control, your data automatically updates.

    People have differing opinions about whether two-way binding is a good thing or not, and whether a library should allow it. Regardless of those opinions, different libraries do allow it; and if you need it, you obviously want a library that supports it.

    Here’s a great video and slideshow that explains how our three libraries, Ember, knockout, and AngularJS compare on two-way binding. (Despite that support, developers have still found themselves in messy situations, particularly with AngularJS and Ember; consider carefully the implications of one- or two-way binding before going down either road.)

    Examples

    In all of these frameworks, you’re going to be writing code. (If you’re not comfortable writing JavaScript code, now is the time to start learning it.)

    With the below example, I’m focusing on Knockout because that’s the one I’ve been using lately (which is not to say it’s always the best one for the job). Suppose you have a model that includes first name, last name, and home country, like so:

    
    var model = {
    
    firstName: 'George',
    
    lastName: 'Washington',
    
    country: 'USA'
    
    }
    
    

    In order to use two-way binding, you have to wrap functions around each item, using what are called observables:

    
    var modelObs = {
    
    firstName: ko.observable('George'),
    
    lastName: ko.observable('Washington'),
    
    country: ko.observable('USA')
    
    }
    
    

    You can learn the details on how this works on the Knockout website. For now, I want to point out that if you bind each member to an input box on a page, the value will immediately change in your model in response to the user’s input. If the user types “Thomas” in the first name field, you’ll get a different value when you check the firstName function:

    
    console.log(modelObs.firstName());
    
    

    will show ‘Thomas’.

    Or, if you change model, like so:

    
    modelObs.firstName('Ben');
    
    

    then the input box on the screen will immediately change. That’s what two-way binding is all about. (As an exercise, think about why you need a function to set the value, rather than a simple assignment, as least with old versions of JavaScript.)

    Conclusion

    There are many more frameworks out there that you’ll want to explore. If you’re looking for work as a Web developer and trying to decide which framework to learn, you should look at the requirements of the jobs that interest you. If you’ve been focusing on Ember but seeing only AngularJS in job postings of note, then perhaps it’s a good idea to explore AngularJS. That’s what will ultimately help you decide which frameworks to learn.

    The post Choosing a JavaScript Framework appeared first on Dice Insights.

  • 5 Online Resources for Developer Woes

    shutterstock_284450024

    Programming something entirely new can be a fun and challenging experience. For many, it’s a career that both pays well and gives the individual the opportunity to do something meaningful for others.

    At other times, trying to get the job done isn’t a smooth process. While there’s a sense that developers will always know how to fix issues or address certain problems, there are times when they’re stumped and need help.

    “The biggest woe developers face: not knowing what we’re doing,” Art Gillespie, director of engineering at Udacity, which offers online programming classes, said in an interview. “The funny thing about being a software engineer is the unavoidable fact that, most of the time, your expertise and experience is irrelevant to what you’re working on. That thing you have to accomplish today requires some library or algorithm or language or technique that you just don’t know. Yet. ‘Woe’ doesn’t do it justice.”

    Considering all that, it’s perhaps no surprise that a slew of resources have cropped up on the Web to offer developers help in their times of need. Whether it’s a simple question or a detailed one, the following resources have helped Gillespie and others quickly get answers and solutions to some of the most vexing programming woes:

    Code Academy

    As Gillespie noted, it’s not always easy for software engineers to admit that they don’t necessarily know what they’re doing in every case. That’s where Code Academy comes in.

    Code Academy is a service for budding developers (or those who already know what they’re doing and want to beef up their skills) to learn coding basics across a range of languages. While Code Academy likely won’t help the seasoned expert who is intimately familiar with Rails, SQL, and other languages, it could assist those who need to improve to their basic skills or want to learn a new language they haven’t yet tried out. In any case, it’s worth having a Code Academy account and calling on it whenever it comes time to learn something new.

    Stack Overflow

    Stack Overflow has proven a savior for countless developers over the years. Structured as a community that allows developers and others to share what they’ve learned, Stack Overflow is a go-to resource for thousands of tech pros.

    Stack Overflow also allows developers to post their own code, ask questions, help resolve other developers’ issues, and more.

    Dash

    Dash is an option for any developer who would like to learn more about building websites. Built by General Assembly, the platform teaches HTML, CSS, and JavaScript through a series of interactive projects. In addition, it’s a nice repository for documentation.

    GitHub

    GitHub is a repository for programming projects, as well as a wide range of information on software development. Many developers find GitHub a good place for getting solid tips on building and maintaining their projects.

    As Gillespie pointed out, GitHub can save developers time, since its users regularly post solutions to what seems like millions of problems. Also, the thought of thousands of people struggling with the same issues will “make you feel better about your struggles,” he added.

    Code.org

    Code.org pitches its service toward kids and wet-behind-the-ears beginners, but it’s also useful for more experienced developers who want to quickly pick up on the basics of a new language. From there, those developers can head over to GitHub and other sites for more advanced advice and resources.

    For beginners just learning the very basics of programming, Code.org allows them to go through lessons at their own pace, which is a definite plus.

    The post 5 Online Resources for Developer Woes appeared first on Dice Insights.

  • Learning Enough Python to Land a Job

    shutterstock_244148398

    If you want a job programming in Python, prepare to do a lot of work beforehand. The language is easy to pick up, but you need to do more than just learn the basics; to get a job, you need to have a strong understanding of some pretty complex processes.

    Python is a general-purpose language, which means it isn’t used for just one purpose such as Web development. Rather, it’s used in many different industries, and the industry in which you choose to work will determine how you actually learn the language.

    For example, if you’re hired to write apps that interact with operating systems and monitor devices, you might not need to know how to use the Python modules for scientific and numerical programming. In a similar fashion, if you’re hired to write Python code that interacts with a MySQL database, then you won’t need to master how it works with CouchDB.

    Check out the latest Python-related jobs.

    Therefore, I’m going to suggest that there are three levels to learning the basics of Python:

    • Learn the core language itself, such as the syntax and basic types; learn the difference between Python 2 and Python 3.
    • Learn the commonly used modules, and familiarize yourself with other modules.
    • Learn the bigger picture of software development with Python, such as including Python in a build process, using the pip package manager, and so on. This involves learning about different databases and other technology, depending on where you want to work.

    True Beginners

    At a basic level, Python is an easy language to learn and use. You can quickly learn how to create variables and loops, for example, and expand beyond that to tuples, lists, and dictionaries. Any Python newbie needs to know which types are immutable, which means an object of that type can’t be changed (answer: tuples and strings). With immutable types, the object’s value itself can’t change, but the variable containing the object can:

    a = 'abc'
    
    a = a.upper()
    
    

    In the above example, the original string “abc” did not change, as strings can’t change; instead, we calculated a brand new string, “ABC,” and stored that back into the original variable. Knowing that sort of thing should be second nature to anyone who seeks to understand how Python works.

    In addition, anyone learning Python should know how the language deals with object-oriented programming, and how to create classes and instantiate objects. It’s also important to know how to use exceptions and exception handlers, and how modules interact. (For key insights, I recommend you read and understand the Python Language Reference; if you’re ever unsure about syntax or how the language works, or are arguing with a coworker, that website will have the final word.)

    The Python beginner must also know how Python 2 and Python 3 are different. Python 3 has been out for quite some time, but there are still a lot of projects that rely on Python 2. If you’re interviewing for a position, you’ll want to ask which Python they’re using; if you’re knowledgeable, you can then speak about the differences.

    Slightly More Advanced

    Once you’ve mastered some basic concepts, you can move on to slightly more advanced concepts. If you’re familiar with languages such as JavaScript, Python’s strong typing might surprise you; for example, you can’t just add “hello” to “10” to get “hello10.” (You’ll get an exception.) This is meant to prevent bugs in your code, and it means you’ll need to become very familiar with dynamic typing, strong typing, duck typing, and how Python implements all three.

    C++ programmers coming to Python might be surprised that you don’t need to provide an interface for a parameter in a function; if the object passed in has the required methods, you’re good to go. This makes polymorphism easy.

    From there, it’s important to know about closures and “first class objects.” Python supports both, which leads to a concept called decorators, which this article explains very well. Here’s an interesting example of closures, modified from one offered in the linked article; this is entered from the interactive shell:

    
    >>> def outer(x):
    
    ...     y = x * 2
    
    ...     def inner(z):
    
    ...         return y + z
    
    ...     return inner
    
    ...
    
    >>> q = outer(5)
    
    >>> r = outer(6)
    
    >>> q(2)
    
    12
    
    >>> q(3)
    
    13
    
    >>> r(2)
    
    14
    
    >>> r(3)
    
    15
    
    >>>
    
    

    The function outer creates a closure with the variable called y, and returns a new function that you can call. I called the outer function twice to create two such functions; then I called those two functions each twice.

    Last but certainly not least: Read “The Zen of Python,” which is funny and real, and check out this thread on Stack Overflow for some great suggestions about how to master the language. Go to GitHub and find any of the many popular Python projects; study the code as much as you can.

    Side Note: Learn the Modules

    The modules are your libraries, your helpers. Know what’s available in the standard library; you don’t have to memorize every member of every class, and every class of every module, but you do want to know what’s available so that when you need something, you don’t go rewrite one from scratch.

    Familiarize yourself with each module. Many, such as file I/O, have access in almost every application; know these inside and out. For example, know how to open a file with different access, how to read a file, how to write a file, and how to determine if a file or directory exists. Know how to use the os.path module for file-path joining and normalization, rather than writing your own string routines to handle file paths. Finally, understand the cross-platform implications.

    Next: Learn Software Development With Python

    There are many tools for integrating Python into a software development cycle. If you want to master the language in a real-world context, learn how to obtain Python packages using pip. You should also learn how to do unit testing, which is fundamental to software development in Python; many people get turned down for Python-related jobs because they can’t answer interview questions in this area. (The Hitchhiker’s Guide to Python includes some great information on unit testing.)

    You should also know how to package up Python programs for distribution, and know your way around both the Windows command prompt and Linux bash shell. Any developer worth their salt can use the tools for general software development, from editors and IDEs to git for source-code control.

    Targeting an Industry or Technology

    Once you’re familiar with all the above, you can begin to move into industry-specific knowledge.

    If writing C or C++ extensions to Python interests you, check out this resource. If Web development tickles your fancy, you’ll need to understand the difference between a Web server written in Python that you can extend, and a Web framework that allows you to write your own server software in Python. If you go the Web route, you’ll need to become proficient in Web technologies—not only other languages such as JavaScript, but how to develop Web-scalable software.

    There’s also some crossover between specializations. For example, if you’re building Web server software in Python that runs on a cloud, you might need to know how to build cloud-monitoring and management tools (possibly in Python as well). Those tools include Amazon AWS SDK for Python, or the OpenStack’s official clients, which are also written in Python.

    If you want to land a job in a scientific industry, you’ll need to know the various scientific and numerical modules inside and out, and have strong skills in writing tight algorithms. For jobs in high-performance computing, you need skills such as concurrent algorithms, SIMD vectorization and multicore programming. For a full list of how to use Python in a work context, check out the dedicated page for applications for the language.

    The post Learning Enough Python to Land a Job appeared first on Dice Insights.

  • JavaScript You Need to Know For a Job

    shutterstock_130719125

    JavaScript is a programming language that’s easy to pick up, but extremely difficult to master. Even some of its beginner-level functions are decidedly not beginner-friendly. When you land your first JavaScript job, you’re going to want to know as much as possible, if only so you can navigate through some of the language’s trickier aspects without needing to ask for help.

    Below is the bare minimum of what you’ll need to know to work with JavaScript (beyond the absolute basics such as variables, functions, the difference between null and undefined, and so on). For those who have some JavaScript knowledge, the following list might miss some specific elements you think belong there; but the idea here is that, if beginners are at a level where they understand the presented items, they probably understand the language enough to operate effectively.

    Check out the latest JavaScript-developer jobs.

    The Beginner’s List

    • Know what a prototype is, what the “this” variable does, and how to use both.
    • Know the difference between a list and an object (and how a list is technically both, and can be used as both).
    • Know that functions are objects that can be passed as parameters into other functions and returned from other functions.
    • Know what closures are and how to use them. This might seem like an advanced topic, but when working with functions returning functions, it’s easy to introduce bugs if you’re not careful.
    • Know how to use functions such as the list’s map and filter functions. With this in mind, I encourage you to read this specification and learn the methods available on all types of objects.
    • Know your way around the developer command line and debugger. All the major browsers provide these now.

    Slightly More Advanced (Document Object Model)

    The DOM (Document Object Model) is the browser’s representation of a Web page. The DOM isn’t technically part of JavaScript, but it’s a big part of browser programming with JavaScript. As such, most employers are going to expect you to know your way around the DOM if you’re applying for a JavaScript job. Vital aspects include:

    • Accessing the DOM directly from JavaScript. For example, know how to locate elements through calls such as getElementById, getElementsByClassName, getElementsByTagName, and so on. Also know how to use the newer selector methods: querySelector, querySelectorAll.
    • Accessing the DOM using jQuery. Again, jQuery isn’t part of JavaScript, but a lot of employers expect you to know it. Know the difference between $(‘a’) and $(‘.a’). A simple dot changes everything.
    • Understand the global object, how the browser provides the global object, and how you access it through your JavaScript programming. (Answer: The browser provides the window object (lowercase w) as the global object.) Understand why the browser is the service implementing the global object and what happens when you move JavaScript code outside of the browser, such as to Node.js.

    A lot of documentation presents the DOM API using what looks like C-language interfaces. That’s because under the hood, the objects likely are C objects. You access these objects through your JavaScript code. For example, when you call getElementById, you get back an element. But under the hood, that object is a C object with properties and methods.

    This page on the Mozilla Developer Network shows you the different properties and methods available. An element is descended from a node, which means, if you have an element, you can call any of the properties and methods available on this page for a node. Try it right now—press F12 and open up the console. Here’s how you get an element:

    
    e1 = document.getElementsByClassName('header-bar')[0]
    
    

    …and then a child of that element:

    
    e2 = e1.querySelector('.container')
    
    

    And then remove that second element. The interface for the node class tells us there’s a removeChild function, so here you go:

    
    e1.removeChild(e2)
    
    

    And watch the top bar on this page you’re reading disappear. Done. (Refresh the page to bring it back.)

    In addition to the DOM, there’s much more you’ll want to study regarding Web pages and how they fit together with JavaScript. You must know how to add events to elements and how to handle the events. Know both the pure JavaScript way,

    e1.addEventListener('click', function(e) {
    
       console.log('CLICK!'); }, false);
    
    

    as well as the jQuery way:

    
    $(e1).on('click', function() { console.log('CLICK 2!'); } )
    
    

    Spend some time exploring the HTML5 features, such as how to save to local storage and manipulate a canvas element. Again, these are not technically features of JavaScript; they’re APIs provided by the browser. But if you’re trying to land a job writing code that runs in the browser, you’ll want to know how they work.

    And then there’s the biggie, Ajax. You must know what Ajax is—a way to make calls back to the server—and how to use it.

    Even More Advanced

    Now take your JavaScript programming to the next level. The more you know, the better. As before, here’s a sampling of things to know:

    • Know how to call bind and apply on a function, what the differences are, and why you would need to use them.
    • Know the different ways to create objects, including Object.create, and when you’ll need the hasOwnProperty method:
    
    x = {a:1, b:2};
    
    x.toString(); // prints out [object Object]
    
    x.hasOwnProperty('a'); // returns true
    
    x.hasOwnProperty('toString'); // returns false
    
    

    compared to:

    
    x = Object.create(null);
    
    x.toString // is undefined
    
    
    • Know the different ways of implementing object-oriented programming, especially inheritance.
    • Know what promises are, and learn two important asynchronous libraries: async and Q. They’re used a great deal in server-side Node.js programming, but can also be a huge benefit in browser programming.
    • Learn server-side Node.js programming. It will really force you to become a JavaScript guru.

    Conclusion: Even Further

    If you know the material in the third section, you’re in great shape. But there’s always more to learn. Want to take it even further? Learn about ES5 and the newest features of JavaScript that might not be present in all browsers. Learn the different frameworks, such as Backbone, Ember, Angular, and Knockout. The more you know, the more likely you’ll land that job.

    The post JavaScript You Need to Know For a Job appeared first on Dice Insights.

  • Best Programming Languages for Linux Devs

    shutterstock_McIek

    Ask any knowledgeable developer to name the first programming language they would associate with Linux, and he or she would likely answer C, given the closely aligned history of Unix and C.

    But in the 24 years since it first appeared, Linux has probably been home to every programming language known to humankind: Not just obvious languages such as C, C++, Python and Java but also C# (Mono), Fortran, Pascal, COBOL and Lisp and many more.

    Check out the latest Linux jobs.

    In a December 2014 survey, readers of Linux Journal placed Python at the top of their list of best programming languages (30.2 percent), followed by C++ (17.8 percent), C (16.7 percent), Perl (7.1 percent), and Java (6.9 percent). Those rankings have remained largely unchanged over the past few years—unsurprising, considering the Linux world is a rather conservative place. (One language rapidly moving up Linux Journal’s list is Google Go: It jumped from 1.8 percent in 2013 to 2.4 percent last year.)

    Unlike Windows with its built-in GUI, Linux leverages whichever GUI toolkit you use (e.g., Ot, GTK+, wxWidgets) unless you limit yourself to terminal programming. Of course, not all Linux development requires a GUI: Think of servers or daemons, which are Linux’s equivalent of Windows services. So let’s look closer at each of Linux Journal’s top five languages in order to assess the strengths and weaknesses of each for Linux development.

    Python and C++

    Python just seems to get more and more popular, and is arguably the best general-purpose language currently around. It’s easy to learn, helped by having an interpreter (pypy) and compilers such as cpython, Jython (generates Java code) and others that take Python and produce il code (on .NET), or C, C++ or JavaScript.

    Developing AAA games and High Performance Computing (HPC) is where Python hasn’t done so well. C++ currently dominates those spaces, with Python having notably little impact on mobile development other than in open-source. I’m not sure we’ll ever see AAA games development switch to Python but it’s certainly making inroads into the HPC arena. (I like C++ but attaining expert programming knowledge in it seems to require being a full-time developer; compare that to Python, which can be picked up by young children.)

    C

    C is as close to the metal programming as you’ll ever get unless you code in assembler; Linus Torvalds lists this closeness as a reason why he likes it. It’s simple to learn, and once you master pointers, you can do pretty much anything. However, you have to write a lot of code to do things that come standard in other languages; string handling in particular is tedious and error-prone. For low-level coding, C is hard to beat and there’s lots of software written in it (probably much more so on Linux, which is largely written in C).

    Perl

    For many years Perl—described by many developers as the “Swiss Army chainsaw” of scripting languages—was the language for sophisticated text processing scripts, and came installed on Linux/Unix like systems by default. It’s been around since 1987, with a massive install base to match: According to the ever-reliable Wikipedia, the Comprehensive Perl Archive Network (CPAN) carries over 140,776 modules, by more than 11,804 authors, and is mirrored worldwide at more than 250 locations.

    Despite (or perhaps because of) Perl’s age, languages such as Python, PHP and Ruby have gradually come to replace it. But don’t expect it to go away anytime soon.

    Java

    Linux has always seemed like the natural home for Java, at least with regard to server-side technology. The pattern of client-side Windows applications talking to Linux Java servers is a common one and very popular in enterprises. The Java JSP Web server technology hasn’t come close to PHP or ASP.NET in terms of adoption rates, but you can find (often expensive and resource-intensive) JSP Web hosting. Java powers many Internet game servers, most notably Minecraft.

    Two other languages that work well on Linux are JavaScript and Go. After ten years of being lambasted for poor performance, JavaScript became seriously cool when popular websites such as Google Maps began to leverage it. JavaScript continued to improve; thanks to better engines, it’s now able to run graphically intense browser games.

    If that wasn’t enough, JavaScript has emerged as a serious server-side language, with Node.js being one of the best-known frameworks.

    Google Go

    At less than five years old, Google Go has gained its share of admirers; Google, Dropbox and other companies use it for their respective internal systems. With an easy-to-learn C-like syntax, it compiles and executes programs very rapidly and makes writing concurrent code a lot easier than a multithreaded approach. It comes with an extensive standard library that’s complemented by many third-party libraries. Although it’s a general-purpose programming language, it’s strong as a systems language, and useful for implementing Web servers.

    Conclusion

    All programming languages are just tools to help solve programming problems, and the choice of which to use is often determined not by the languages’ strengths but completely unrelated factors such as available hardware, internal politics, previous experiences and the like. Linux hardware varies from simple, low-cost systems to million-dollar “Big Iron” mainframes… But irrespective of the cost, it will run any of these languages.

    Related Articles

    Upload Your ResumeEmployers want candidates like you. Upload your resume. Show them you’re awesome.

    Image: Mclek/Shutterstock.com

    The post Best Programming Languages for Linux Devs appeared first on Dice News.

  • 5 Top Python GUI Frameworks for 2015

    pyGUI

    As a Python developer, sooner or later you’ll want to write an application with a graphical user interface. Fortunately, there are a lot of options on the tools front: The Python wiki on GUI programming lists over 30 cross-platform frameworks, as well as Pyjamas, a tool for cross-browser Web development based on a port of the Google Web Toolkit.

    How to choose between all these options for Python GUIs? I started by narrowing it down to those that included all three platforms (Windows, Mac, and Linux) and, where possible, Python 3. After that filtering, I found four toolkits (Gtk, Qt, Tk, and wxWidgets) and five frameworks (Kivy, PyQt, gui2Py, libavg and wxPython). Here’s why I like them.

    To find Python-related jobs, click here.

    Kivy

    One of the more interesting projects, the liberal MIT-licensed Kivy is based on OpenGL ES 2 and includes native multi-touch for each platform and Android/iOS. It’s an event-driven framework based around a main loop, and is thus very suitable for game development. Your application adds callbacks from the main loop at a scheduled frequency, or by one-off trigger. The Kivy framework is very powerful for handling everything from widgets to animation, and includes its own language for describing user interface and interactions.

    If you want to create cross-platform graphical applications, or just need a very powerful cross-platform GUI, Kivy is highly recommended.

    Upload Your ResumeEmployers want candidates like you. Upload your resume. Show them you’re awesome.

    PyQt

    Qt is a multi-licensed cross-platform framework written in C++. If your application is completely open source, you can use Qt for free under the community license; otherwise you’ll need a commercial license. Qt has been around for a long time and was owned by Nokia for a while; it’s a very comprehensive library of tools and APIs, widely used in many industries, and covers many platforms including mobile. If a gadget such as a SatNav has a GUI, there’s a good chance it’ll be Qt based.

    PyGUI

    Compared to Kivy and PyQt, PyGUI is considerably simpler and just for Unix, Macintosh and Windows platforms. Developed by Dr. Greg Ewing at the University of Canterbury in New Zealand, the MVC framework focuses on fitting into the Python ecosystem as easily as possible.

    One of the platform’s aims is to interpose as little code as possible between the Python application and the platform’s underlying GUI so the application’s display always reflects the native GUI of the platform. If you’re after a simple and quick way to learn GUI, start with this one.

    libavg

    This is another third-party library, written in C++ and scripted from Python, with properties of display elements as Python variables, a full-featured event handling system, timers (setTimeout, setInterval), support for logging and more. Like Kivy, libavg uses OpenGL and makes use of hardware acceleration.

    Libavg runs on Linux, Mac OS X and Windows, and is open source and licensed under the LGPL. It’s been used extensively for artistic exhibitions and has a wide range of features such as a layout engine that can deal with thousands of objects (images, text, videos and camera output), fast video output, and a markup system for displaying text, as well as GPU shader effects such as blur, Chromakery and more. Plugins written in C++ have access to all libavg internals.

    If you ever see many people playing a multi-touch game on a large flat display, you might be looking at a good example of libavg in action.

    wxPython

    There have already been two books written about wxPython, making it worth a mention even if it isn’t quite ready for Python 3. WxPython is based on wxWidgets, a cross-platform GUI library written in C++. In addition to the standard dialogs, it includes a 2D path drawing API, dockable windows, support for many file formats and both text-editing and word-processing widgets.

    There’s a great set of demos provided with wxPython, along with several sets of tutorials to help get you started. Given that wxWidgets has a 22-year development pedigree, this is one of the most popular frameworks. Make sure you read the wiki.

    Conclusion

    This is a great set of frameworks that should cover most needs. All except PyQt are completely free.

    Related Articles

    Image: pyGUI

    The post 5 Top Python GUI Frameworks for 2015 appeared first on Dice News.

  • Unpopular Programming Languages That Are Still Lucrative

    lenetstan Shutterstock

    In a previous article, I discussed the best programming languages to learn over the next year. Most of those were popular languages such as C#, JavaScript, PHP, and Swift. (I also did a follow-up that sang the virtues of Objective-C and Python.)

    But that’s not the final story on languages: Programmers can also benefit from learning other, less popular languages that could end up paying off big—provided the programmers who pursue them play their proverbial cards right. And as with any good card game, there’s a considerable element of chance involved: In order to land a great job, you need to become an expert in a language, which involves a considerable amount of work with no guarantee of a payoff.

    Click here to find a programming job.  

    Supply, Demand, and Negotiation Skills

    One factor in getting a high-paying job is analyzing the ratio between supply and demand. Some languages may not have many jobs available, but relatively few applicants compete for each job. Check job boards (such as Dice.com) and note the number of jobs, as well as how long those jobs have been open. If jobs are open an average of a few months, there’s a good chance that companies are having trouble finding suitable candidates—which creates a good opening for someone with the right qualifications to swoop in.

    Even in an excellent job market, however, locking down that high salary also requires good negotiation skills. If the job requires that you move to a new city, you’ll have to fold data about that city’s cost of living into your decision matrix.

    With that out of the way, let’s consider some languages.

    R

    R is a language that focuses primarily on statistics and data visualization. It’s not a general-purpose language; you wouldn’t use it, for example, to write for a Web server. Its syntax is quite unique, as it’s technically an implementation of an earlier language called S, and it’s quickly growing, surpassing older platforms such as SAS among statistics pros.

    Job listings for R often carry titles such as “data scientist” and “BI developer” and typically include the “Big Data” keyword. One industry where you find a lot of people using R is in pharmaceuticals, where the biggest firms employ a lot of statisticians. And indeed, a New York Times article from 2009 reported that back then Pfizer was seeing a great increase in interest and use in R.

    Note: Because the language is just a letter, it can be difficult to locate R jobs in the search engines. For Dice.com, use the advanced search and include an additional word; for example, you can put in R Programmer and choose the “Match all words” option.

    Here’s some sample R code, from the website R Examples.

    countdown <- function(from)

    {

      print(from)

      while(from!=0)

      {

        Sys.sleep(1)

        from <- from – 1

        print(from)

      }

    }

    countdown(5)

    This code does a simple countdown (sleeping briefly between each iteration) and prints out each step.

    Scala

    Scala is a language that runs atop the Java Virtual Machine (JVM). It was created as sort of a “better” Java. Because it targets the JVM, it works seamlessly with existing Java classes and platforms. The name is a shorthand for “Scalable Language,” and I’ve met people who assume this means it’s for writing scalable, distributed applications, but that’s not really what the word means in this context. According to the documentation, it means the language “grows with you,” from very simple programs to extremely complex systems.

    One interesting aspect of Scala is that it includes full functional support that’s totally optional. If you’re not into functional languages, or haven’t learned yet about functional programming, you don’t need to use the functional aspects of it.

    Here’s a sample “Hello World” program in Scala, from the samples on the main Scala site.

    object HelloWorld {

        def main(args: Array[String]) {

          println(“Hello, world!”)

        }

      }

    Haskell

    Haskell is a purely functional language that dates back to 1990. While it has slowly grown in popularity, it remains a bit of a niche language. The language includes an open standard that has been updated a few times over the years, and there are free compilers, including one that targets the Java Virtual Machine (JVM)—making it a good choice for projects that work together with Java libraries. There are many projects that use Haskell; one I encountered is the Xmonad windowing system for Linux. There’s also a nice building and packaging program for Haskell called Cabal. Alongside Cabal, Haskell includes a large packaging and distribution system that lets you search, download, and easily install Haskell packages in much the same was as you can with a Linux package installer such as aptitude. You can check it out at the Hackage (Haskell Package) site.

    Here’s some sample Haskell. This code comes from a site called School of Haskell:

    lst = [2,3,5,7,11]
    total = sum (map (3*) lst)
    main = print total

    This code calculates the sum of 3 times each number in the list. It shows the elegance of Haskell, as you don’t have to actually write a loop.

    F#

    F# is Microsoft’s answer to an older functional language called ML. Influenced by OCaml, itself a derivative of ML, F# was originally a .NET language, targeting the Microsoft CLR, and produced by Microsoft Research. (There is a separate group called the F# Foundation, which is an informal group that maintains a language specification.) The older ML language pioneered various aspects of functional programming, and F# also includes functional aspects. But unlike Haskell, F# is not a purely functional language.

    Jobs for F# are slowly growing, despite little reaction from the programming community when Microsoft released the language (with great fanfare) in 2005. (Note that if you know OCaml or ML, you will be able to learn F# quite easily, and vice versa; knowing F# you could easily learn and land a job in OCaml.)

    Here’s an example line of F#. (I borrowed this from the Wikipedia page.)

    let query1 = query { for customer in db.Customers do select customer }

    This line uses Microsoft’s LINQ technology to search the Customers table in a database.

    Clojure

    Lisp is a language that came out way back in 1958, and although the original language is pretty much dead and gone, several of its descendants live on. One in particular is Clojure, which is new by Lisp standards—it came out in 2007. Since its first release, over 800 people have helped contribute to it. The language is open source and built to target both the Java Virtual Machine (JVM) and Microsoft’s Common Language Runtime (CLR). As the language continues to grow in popularity, so do the jobs. (By the way, you sometimes see jobs for other descendants of Lisp, such as Common Lisp and Scheme.)

    Here’s an example line from Clojure’s getting started page:

    (javax.swing.JOptionPane/showMessageDialog nil “Hello World”)

    This looks just like Lisp syntax, with the statement inside parentheses, and the first item inside being a function name—in this case, one from the standard Java Swing library that shows a message box.

    Ancient Languages

    This might shock some people, but jobs still exist for languages such as COBOL and PL/1. I spoke with a recruiter who said that he has a position for COBOL that’s been open well over a year, and he simply can’t find anyone to do the job. If you’re brave, you could learn COBOL and take on jobs such as that one, usually offered by very large, well-established companies that have been around for decades (since new companies are unlikely to start new COBOL projects). The downside is that you would spend lots of time learning and using COBOL, which isn’t exactly a popular skill set.

    Another ancient language that refuses to die is Fortran. There are still many jobs in Fortran, most of which involve scientific applications or possibly even parallel applications, as Fortran supports the OpenMP parallel programming standard.

    Conclusion

    Just because a language isn’t the most popular anymore doesn’t mean you can’t profit from it, especially if employers are desperate for people skilled in that language. Be aware, though, that becoming a specialist in a little-used language also includes a certain element of risk, if only because the hours devoted to mastering that language could very well serve another (and equally lucrative) purpose.

    Upload Your ResumeEmployers want candidates like you. Upload your resume. Show them you’re awesome.

    Related Articles

    Image: lenetstan/Shutterstock.com

    The post Unpopular Programming Languages That Are Still Lucrative appeared first on Dice News.

  • How to Tell If an Employer Takes Training Seriously

    Software engineers , architects , programmers and project managers are often left to their own devices when it comes to training. If they’re interested in learning new programming languages or updating certifications, the work often gets done on their own time. But according to Edmond Freiermuth, a Los Angeles-based management consultant, there’s a link between training and corporate culture. Companies that want to train their people, he contends, generally pursue a longer-term commitment to their workers, one that translates to the employee’s emotional well-being and professional success. For tech professionals who often decry the lack of employer-backed training, that conclusion comes as no surprise. The problem, it seems, is that company training is the exception nowadays, though more businesses are using it as a retention tool. For candidates, the challenge becomes figuring out whether a prospective employer is serious about learning. After all, “all companies are not created equal,” observes Jeff Kagan, a technology industry analyst in Marietta, Ga. Some are purely focused on their investors and customers, while others give their employees much more consideration. “Some companies invest heavily in their technology and the training to better utilize this technology,” Kagan says. But since some don’t, candidates have to dig deep to find out exactly what the business’s approach might be. And that means you can’t rely on what hiring managers and others have to say. “Try to talk with the workers, if you can, and not just the managers to find out what kind of company it is,” Kagan suggests. Performance Counts Not surprisingly, the financial health of a company is one indicator for prospective employees to consider. If companies have cash, they’re more likely to think about technical training, Kagan says. He notes there’s usually a direct path from a company’s financial strength to education and training.   Larger companies, especially those in tech, generally have formalized programs for tuition reimbursement and certifications. For instance, Adobe kicks in the cost of fees, tuition and books for appropriate business courses and certifications up to a specified amount. It also offers on-site technical programs. Microsoft has a similar deal, providing business-related tuition assistance for undergraduate or graduate coursework and extensive internal training programs online or in classrooms.   At Smaller Companies Most smaller companies aren’t able to afford similar benefits, says Freiermuth. However, you shouldn’t overlook the value that a company or outside mentor can offer in the way of both direct hard skills and softer ones. Plus, if you hitch your wagon to a more entrepreneurial company, it’s possible that you’ll have more learning opportunities by holding greater responsibility, he says. “That’s especially true at tech companies.” It’s Still on You However, just because a company is concerned about keeping its technology staff current doesn’t mean that you can turn over your continuing education plans to your employer. Freiermuth argues that you can’t blame the company for a lack of learning new things. Whether it’s keeping up on your programming skills or learning how to blend business and tech knowledge, you need to be aware of how the wind is blowing at your company and sector. And, you may have to go out and pursue a training solution yourself. Simply put, complacency can be a job killer. The post How to Tell If an Employer Takes Training Seriously appeared first on Dice News .

  • What the Next 18 Months Holds for Software Careers

    It’s easy to put your head down and focus on the work that you have to do today. To think about the job you’re doing now. To think about the technology you know already. To understand the team structure you’re currently in. That’s what’s now. But what’s next? Let’s take a walk through the next 18 months and see where engineering is going. Focus on Learning H iring managers have figured out that tomorrow’s skills won’t be today’s skills, so they’re looking for learners. With the time and productivity crunch managers face — not to mention their desire to sweeten the pot for qualified talent — they’re going to be more inclined to support your ideas for training. More and more companies are creating training budgets that employees can use any way they want. What to Expect: In interviews and reviews, expect to start seeing more emphasis on how you learn, how quickly you learn and what you learn. The good news is that it means you’re also more likely to get an interview even if you only have 80 percent of the job’s matching skills. It also means that you’re going to be more responsible for identifying your own training opportunities such as online courses , podcast subscriptions and conferences to name a few. How to Handle It: Take charge of your own training, whether you’re working or between jobs. Ask your manager what projects are coming up, do some research and suggest training options that make sense. Make your learning projects public even if they’re for personal use, and don’t be afraid to ask for feedback. Write a summary of how you went about learning so you have a good story to tell at your next performance review or job interview. Mobile First and Mobile Only What’s Going On: Apps are everywhere. Smartphones are everywhere. According to IDC, PC sales are dropping and will continue to do so through 2018. At the same time, global smartphone sales are up 46 percent, a solid mix of Android and iOS . How to Handle It: Software developers and the companies they work for need to reach people where they are: on their phones. That means more apps, more mobile websites and more emphasis on semi-connected use. If you’re a PC application developer , it’s time to figure out how to build mobile apps . If you’re a Web developer , make sure you’re up to date on responsive design and mobile constraints. If you’re a server developer , there’s good news: All those apps still need servers. You’ll be building a lot of REST APIs . Focus any outside-of-work learning you do on technologies that are mobile-friendly. Volunteer for any mobile projects your company is starting so you can start to learn. Rise of JavaScript Frameworks What’s Going On: The pendulum is swinging back from thin clients to thick clients, but now the browser is the thick client. To support that, JavaScript is taking on characteristics of server-side programming: encapsulation, light object-orientation, MVC support. The odds are high that your next Web application will use Ember , Angular or something similar. Backbone — the granddaddy of the JavaScript frameworks — has lost momentum but will remain prevalent for a year or so. How to Handle It: If you’re a Web developer, get your hands on a JavaScript framework tutorial and start learning. It doesn’t matter which framework you choose, but this is a tool you’ll need in your arsenal soon. Testing Integration What’s going on: The future isn’t bright for manual testers. More and more teams are focusing on “whole team testing,” which usually translates to automated testing by developers and “acceptance” or light manual testing by business users or customers. Dedicated testers are turning into specialists, particularly in performance, load and security-related testing. How to handle it: If you’re a manual tester, you’ll need to find a niche ( automation , performance , security , etc.) or you’ll have an increasingly hard time finding a job. If you’re a developer, expect to start testing your own code, usually with existing test frameworks. All engineers should expect to spend more time with interested business users and to start explaining features and bugs to a wider audience. Conclusion Technologies, techniques, patterns and team dynamics are all places where today’s solutions won’t solve tomorrow’s problems. The onus is on you to keep up so that your career today is a career you can continue tomorrow. Fortunately, you have some notice, so you can be ready. The post What the Next 18 Months Holds for Software Careers appeared first on Dice News .

  • 5 Things Impacting Your IT Job Search Right Now

    The unemployment rate in technology is running well below the national average – 3.5 percent during 2013’s fourth quarter — and employers regularly complain that there are too few candidates available for too many IT jobs. That’s good. But it doesn’t mean you can approach your job search cavalierly. In any environment, it’s important to understand the dynamics at work so you can position yourself in the best way possible. Here are five dynamics of today’s tech job market you should understand. Companies Are Focusing on New Technologies for Growth It’s critical that tech professionals keep up with new technologies and update their skills appropriately. “The No. 1 thing that impacts a job search is having good experience with the newer technologies,” says Lincoln Stalnaker, director of technology recruiting for the Seattle Search Group. As examples, he cites Amazon’s AWS and Microsoft’s Azure . Businesses Need People Who Can Communicate Communication skill is another area that can impact your search, says Dino Grigorakakis, vice president of recruiting for Randstad Technologies’ Philadelphia, Pa., office. “Communication skills are important because business people have needs and IT people must be able to communicate so that they can fulfill the IT requirements of the given business,” he says. Experience in Multiple Languages is Expected Both Grigorakakis and Stalnaker point to the importance of knowing multiple programming languages and having a variety of up-to-date skills. “In the current job market, you need to do more than one thing. You can be systems engineer but also write SQL code,” says Stalnaker. “The more you can do, the more valuable you are. I had one person turned down from a job offer because he could not do middle-tier, so the company would have had to hire two people,” one to do front end, the other to handle middle tier. Personal Websites Are Used to Source Candidates Engineers and other tech professionals who fail to create a website with links to their coding projects, resume and social network profiles may be losing out to others who do, says Roger King, founder and CEO of IT recruiting firm Chief People in Sausalito, Calif. “I’m seeing more and more candidates who maintain a personal website with updates to their resume, links to their (social media) profiles, etc. These candidates often have an advantage over those who might send in a resume without so much as a cover letter.” King adds that in today’s market, employers are largely looking for people with very specific skill sets, and candidates sell themselves short if they haven’t included all of their relevant experience in their materials. Job Seekers Are Receiving Multiple Job Offers This one’s a great problem to have. While most of the trends recruiters list can hurt a candidate’s prospects, here’s the great exception. However, as great as multiple offers can be, they have to be managed properly. “When reviewing multiple job offers, ask yourself what you’re looking for,” says King. “Do you want advancement, a chance to learn new things, a shorter commute? Also, it’s important to consider what you enjoy and don’t enjoy about your current job.” Stalnaker advises candidates in this situation to look out five years and consider what they want their career to be at that point. Doing that will help you decide which offer is the most attractive. “Are you willing to work 40-, 50-, 60-hour work weeks?” he asks. “If not, the offer from a more mature company may be more appealing. It will have less fire drills.” On the other hand, he notes, “people who are starting off in their careers may want to work at smaller companies where there are more opportunities for growth, more impact and more visibility to grow their management skills and be more marketable for the next opportunity.” The post 5 Things Impacting Your IT Job Search Right Now appeared first on Dice News .