This page may be out of date. Submit any pending changes before refreshing this page.
Hide this message.
Quora uses cookies to improve your experience. Read more

Answer Wiki

Technical

  • Version control:- Git, GitHub and SVN (Link: Git - Getting Started)
  • Regular expressions
  • AWK
  • sed
  • Grep
  • Learn how to do things with vim or emacs that you never knew could be done.
  • Set up a crawler that can scrape some webpages and parse some basic data.
  • Set up a bigger crawler that has to fill out a form or two.
  • Program a basic linear algebra library (matrices, vectors, multiplication)
  • Add SVD to this library.
  • Add matrix inversion to this library.
  • Add least squares regression to this library.
  • Make your library work efficiently with sparse data.
  • Learn how to use list comprehensions in Python.
  • Get a Stack Overflow account and learn to use the site. (Link: Stack Overflow)
  • Read the freaking manual for your favorite language.
  • Implement a simple machine learning algorithm on your own, with a whole pipeline.
  • Learn the how to make a simple line graph in Excel.
  • Get your eclipse installation fully pumped up.
  • Learn the basic functionality of a NoSQL database.
  • Learn the most basic functionality of SQL
  • Understand difference between SQL and NoSQL databases (strengths, weakness, limitations, where to use which and why etc.)
  • Getting comfortable with Linux. 
  • One or two sorting algorithms. (Perhaps Quicksort and Mergesort)
  • D3 (JavaScript library)
  • Learn how to effectively develop unit tests for your code.
  • Familiarize yourself with some of the AWS services and their API in the language of your choice
  • Basic graph theory
  • One algorithm a day
  • Understand need for distributed processing and distributed data storage and challenges in them (basics of CAP Theorem, MapReduce algorithm, clustered MySQL or PostgreSQL database)
  • Specific to Python
    • Read through the built-in functions in Python and understand what each one does by playing with it in the terminal.
    • Create a website by following and modifying the Flask tutorial or the Tornado demos
    • Study the itertools module.
    • Start playing CheckIO
  • Learn how to edit Wikipedia articles both syntactically and under wikimedia guidelines, such as neutral point of view.
  • Learn how to write in markdown
  • LaTeX, BibTex, and pgfplots
  • Learn how to work from the command line
  • Learn JavaScript (Link: Eloquent JavaScript)
  • If familiar with OOP, learn design patterns.
  • Grab a Raspberry Pi and dig in!


Non Technical

  • Learn to garden.
  • Brew beer.
  • Experience life away from the computer.
  • Learn how to weld.
  • Learn to type.
  • Go out with a girl/boy.
100+ Answers
Jacob Jensen
Awesome question: Promoted

I would suggest (each at most a day)

  • Learn how to use Git and GitHub
  • Learn how to use SVN
  • Learn simple linux regular expressions
  • Find a site with a few interview programming questions, and practice going through the full answer, with code, for some of them (a few a day should be good; do them in a language you don't know well if you already can ace most).
  • Set up a crawler that can scrape some webpages and parse some basic data.
  • Set up a bigger crawler that has to fill out a form or two.
  • Program a basic linear algebra library (matrices, vectors, multiplication)
  • Add SVD to this library
  • Add matrix inversion to this library
  • Add least squares regression to this library
  • Make your library work efficiently with sparse data.
  • Learn how to use list comprehensions in python.
Update 1:
  • Read the freaking manual for your favorite language. In the past I've wasted hours in Python because I didn't know that the Counter data structure existed, and kept getting the bugs from using Dicts as Counters. There are many examples like this.
  • Get a stackoverflow account and learn to use the site. If you don't at least know that StackOverflow is an available resource, and you're an english-speaking programmer, you're doing it wrong.
  • Implement a simple Machine learning algorithm on your own, with a whole pipeline. I.e. you read a simple input csv, split it into training and test set, run a simple algorithm with readily-tuneable or explorable hyperparameters, and a simple output of relevant statistics.
  • Learn the how to make a simple line graph in Excel, and make sure you can do it right; i.e. properly labeled axes and tick marks, title and legends.
  • Learn how to make a simple line graph in something other than Excel. Make sure you can do it right (same requirements).
  • Get your eclipse installation fully pumped up: python dev tools, c dev tools, any other language you could ever write in, and make sure you can write a hello world successfully in each perspective. It'll save you time some future day.
  • Learn the basic functionality of a NoSQL database; (you can learn a big chunk of mongoDB in a day)
  • Learn the most basic functionality of SQL (you don't need to be a query guru,  but have a small clue about it).
  • Learn a tool for in-depth parsing of HTML and XML
  • Implement a list-of-lists graph data structure
  • Implement random walk, PageRank, clustering coefficient finding (#triangles over possible triangles) and common neighbor number finding.
  • Implement BFS, DFS, Shortest Path, topological sort and Minimum Spanning Tree (bonus for union-find version). Take a couple days if you have no algorithms background.
  • Make a simple java applet that has at least some interaction with listeners and not just buttons and such.
Your response is private.
Is this answer still relevant and up to date?
Noam Lerner
1. Try a different build system other than make. For example, SCons (http://www.scons.org/).
2. Play with some of Google's awesome products (one a day is sufficient): Gtest (for unit tests in C++), protocol buffers, (I don't know more, but I'm sure they exist)
3. Learn how to make impressive presentations using Prezi (http://prezi.com/)

Great question!
Rohit Malshe

If you know how to use Python programming, what you can learn in a day that would be tremendously useful is to learn the module pyautogui.

Here is how it works. Using this module that I could easily learn in just a few hours, I created simple programs that click various things on the screens for me.

As soon as I got better with python, this module came in so handy, that it saved me tremendous amount of time.

The programs you can create will save you a lot of mouse clicking, after which you can do some more voice enabling that can save you from touching your keyboard, and will do things for you for set tasks.

I am an engineer, and I have lots of tasks to be done which follow a pattern on my computer screen, and I used to use my mouse heavily.

After I started pyautogui, my life changed. This is one thing that I learned in one day, that saves me enormous amount of efforts on a daily basis.

Unfortunately I cannot share my code with you, as it is somewhat IP, but in the examples below, you would get the idea.

Happy programming!

Purpose

The purpose of PyAutoGUI is to provide a cross-platform Python module for GUI automation for human beings. The API is designed to be as simple as possible with sensible defaults.

For example, here is the complete code to move the mouse to the middle of the screen on Windows, OS X, and Linux:

>>> import pyautogui
>>> screenWidth, screenHeight = pyautogui.size()
>>> pyautogui.moveTo(screenWidth / 2, screenHeight / 2)

And that is all.

PyAutoGUI can simulate moving the mouse, clicking the mouse, dragging with the mouse, pressing keys, pressing and holding keys, and pressing keyboard hotkey combinations.

Examples

>>> import pyautogui
>>> screenWidth, screenHeight = pyautogui.size()
>>> currentMouseX, currentMouseY = pyautogui.position()
>>> pyautogui.moveTo(100, 150)
>>> pyautogui.click()
>>> pyautogui.moveRel(None, 10)  # move mouse 10 pixels down
>>> pyautogui.doubleClick()
>>> pyautogui.moveTo(500, 500, duration=2, tween=pyautogui.tweens.easeInOutQuad)  # use tweening/easing function to move mouse over 2 seconds.
>>> pyautogui.typewrite('Hello world!', interval=0.25)  # type with quarter-second pause in between each key
>>> pyautogui.press('esc')
>>> pyautogui.keyDown('shift')
>>> pyautogui.press(['left', 'left', 'left', 'left', 'left', 'left'])
>>> pyautogui.keyUp('shift')
>>> pyautogui.hotkey('ctrl', 'c')

This example drags the mouse in a square spiral shape in MS Paint (or any graphics drawing program):

>>> distance = 200
>>> while distance > 0:
        pyautogui.dragRel(distance, 0, duration=0.5)   # move right
        distance -= 5
        pyautogui.dragRel(0, distance, duration=0.5)   # move down
        pyautogui.dragRel(-distance, 0, duration=0.5)  # move left
        distance -= 5
        pyautogui.dragRel(0, -distance, duration=0.5)  # move up

Dependencies

On Windows, PyAutoGUI has no dependencies (other than Pillow and some other modules, which are installed by pip along with PyAutoGUI). It does not need the pywin32 module installed since it uses Python’s own ctypes module.

On OS X, PyAutoGUI requires PyObjC installed for the AppKit and Quartz modules. The module names on PyPI to install are pyobjc-core and pyobjc (in that order).

On Linux, PyAutoGUI requires python-xlib (for Python 2) or python3-Xlib (for Python 3) module installed.

Fail-Safes

Like the enchanted brooms from the Sorcerer’s Apprentice programmed to keep filling (and then overfilling) the bath with water, your program could get out of control (even though it is following your instructions) and need to be stopped. This can be difficult to do if the mouse is moving around on its own, preventing you from clicking on the program’s window to close it down.

As a safety feature, a fail-safe feature is enabled by default. When pyautogui.FAILSAFE = TruePyAutoGUI functions will raise a pyautogui.FailSafeException if the mouse cursor is in the upper left corner of the screen. If you lose control and need to stop the current PyAutoGUI function, keep moving the mouse cursor up and to the left. To disable this feature, set FAILSAFE to False:

>>> import pyautogui
>>> pyautogui.FAILSAFE = False # disables the fail-safe

You can add delays after all of PyAutoGUI’s functions by setting the pyautogui.PAUSE variable to a float or integer value of the number of seconds to pause. By default, the pause is set to 0.1 seconds. This can be helpful when interacting with other applications so that PyAutoGUI doesn’t move too fast for them. For example:

>>> import pyautogui
>>> pyautogui.PAUSE = 2.5
>>> pyautogui.moveTo(100, 100); pyautogui.click()   # there will be a two and a half second pause after moving and another after the click

All PyAutoGUI functions will block until they complete. (It is on the roadmap to add an optional non-blocking way to call these functions.)

It is advised to use FAILSAFE along with setting PAUSE.

View More Answers