Skip to content

Instantly share code, notes, and snippets.

@byhbt
Forked from SantiagoValdez/programming-achievements.md
Last active January 7, 2020 16:32
Show Gist options
  • Save byhbt/b1347a0e16353cad4385dcc8d31627ed to your computer and use it in GitHub Desktop.
Save byhbt/b1347a0e16353cad4385dcc8d31627ed to your computer and use it in GitHub Desktop.
Programming Achievements: How to Level Up as a Developer.

Current [-]. Completed [X]

Learn a variety of commonly-used programming languages:

  • [] Write a program in Ruby
  • [] Write a program in Python
  • [] Write a program in C
  • [] Write a program in C++
  • [] Write a program in Java
  • [] Write a program in Objective-C
  • [] Write a program in C#
  • Write a program in PHP 5
  • [] Write a program in Perl
  • [] Write a stand-alone program in Javascript
  • [] Write a program in Scala

Learn a variety of not commonly-used programming languages:

  • [] Write a non-trivial program in Haskell
  • [] Write a program in Lua

Learn a variety of frameworks:

  • [] Write a web application with Rails
  • [] Write a web application with Django
  • [] Write a web application with Node.js
  • [] Write a program with .Net
  • [] Write a program with OpenGL
  • [] Write a program with DirectX

Learn a variety of editors/IDEs:

  • [] Use vim exclusively for a month
  • [] Use sublime exclusively for a month
  • [] Use emacs exclusively for a month
  • [] Use netbeans exclusively for a month
  • [] Use Visual Studio exclusively for a month
  • [] Use eclipse exclusively for a month

Learn a variety of programming paradigms:

  • [] Write a program in assembly language
  • [] Write an application in a functional language
  • [] Write an application in an object-oriented language
  • [] Write an application in a prototype-based language
  • [] Write an application in a logic programming language
  • [] Write an application using the Actor model
  • [] Write an application in Forth
  • [] Write an application in a concatenative language (e.g. Joy)
  • [] Write an application in a strict design-by-contract language (e.g. Eiffel)

Get comfortable in multiple operating systems:

  • [] Use OSX exclusively for development for a month
  • [] Use Linux exclusively for development for a month
  • [] Use Windows exclusively for development for a month

Experience the ins and outs of programming in multiple fields:

  • [] Write a nontrivial web app
  • [] Write a nontrivial desktop app
  • [] Write a nontrivial mobile app
  • [] Write a nontrivial game
  • [] Write an embedded app
  • [] Write a realtime system

Enhance my understanding of the building blocks that we use as developers:

  • [] Write a networking client (e.g., HTTP, FTP)
  • [] Write a device driver
  • [] Write a B-tree database
  • [] Wrap an existing library to provide a better (more pleasant) user experience
  • [] Write an application or framework that provides a plugin model
  • [] Write a testing framework
  • [] Write a programming language
  • [] Write an operating system

Enlighten myself with koans, katas, and the wisdom of ages:

  • [] Complete five code katas
  • [] Complete the programming koans for a language that you want to learn
  • [] Read SICP and complete all the exercises

Program in the open:

  • [] Contribute to an open source project
  • [] Have a patch accepted
  • [] Earn commit rights on a significant open source project
  • [] Publish an open source project
  • [] Perform a Refactotum of on open source project

Learn by teaching others:

  • [] Present a lightning talk
  • [] Present at a local user group
  • [] Present at a conference
  • [] Deliver a training course
  • [] Publish a tutorial
  • [] Publish a constructive code review of an open source project
  • [] Write a programming book
@byhbt
Copy link
Author

byhbt commented Jan 7, 2020

(There are many reference cards available over internet. Type in 'language to learn' + 'reference card' in google.)

First of all, get familiar with Compiler, compiler option, editor shortcuts or integrated development environment (IDE). Start with a simple 'Hello World' program. Compile it. Use basic functionalities of debugger like setting break points, printing variable values, moving to the next or specific position, stopping debugger etc.

To grasp basics of a new language quickly, here are the exercises I use. Remember some programs may not good for beginners.

(1) Display series of numbers (1,2,3,4, 5....etc) in an infinite loop. The program should quit if someone hits a specific key (Say ESCAPE key).

(2) Fibonacci series, swapping two variables, finding maximum/minimum among a list of numbers.

(3) Accepting series of numbers, strings from keyboard and sorting them ascending, descending order.

(4) Reynolds number is calculated using formula (Dvrho)/mu Where D = Diameter, V= velocity, rho = density mu = viscosity

Write a program that will accept all values in appropriate units (Don't worry about unit conversion)

If number is < 2100, display Laminar flow,

If it’s between 2100 and 4000 display 'Transient flow' and

if more than '4000', display 'Turbulent Flow' (If, else, then...)

(5) Modify the above program such that it will ask for 'Do you want to calculate again (y/n),

If you say 'y', it'll again ask the parameters. If 'n', it'll exit. (Do while loop)

While running the program give value mu = 0. See what happens. Does it give 'DIVIDE BY ZERO' error?

Does it give 'Segmentation fault..core dump?'. How to handle this situation. Is there something built

in the language itself? (Exception Handling)

(6) Scientific calculator supporting addition, subtraction, multiplication, division, square-root, square, cube,

sin, cos, tan, Factorial, inverse, modulus

(7) Printing output in different formats (say rounding up to 5 decimal places, truncating after 4 decimal places,

padding zeros to the right and left, right and left justification)(Input output operations)

(8) Open a text file and convert it into HTML file. (File operations/Strings)

(9) Time and Date : Get system time and convert it in different formats 'DD-MON-YYYY', 'mm-dd-yyyy', 'dd/mm/yy' etc.

(10) Create files with date and time stamp appended to the name

(11) Input is HTML table, Remove all tags and put data in a comma/tab separated file.

(12) Extract uppercase words from a file, extract unique words

(13) Implement word wrapping feature (Observe how word wrap works in windows 'notepad')

(14) Adding/removing items in the beginning, middle and end of the array.

(15) Are these features supported by your language: Operator overloading, virtual functions, references, pointers etc.

Is there something called 'namespace / package / module' supported by your language? (Name mangling) - Read More on this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment