7 tips to work more efficiently 1. Have a definition of done for your tasks 2. Define their scope 3. Time estimates are hard 4. Have a rule to decide when to automate a task 5. Work incrementally 6. Premature optimization is the root of all evil 7. Get a rubber duck
Java in 1995 by James Gosling at Sun Microsystems - Originally called Oak - OOP language - Write Once Run Anywhere philosophy - Java applications run on JVMs (machine independent code) - 3 billion devices currently run Java System.out.println("Hello, World!");
"Intelligence is the ability to avoid doing work, yet getting the work done." - Linus Torvalds
ssh 101 - ssh stands for secure shell and is used to securely connect to remote hosts - ssh creates a TCP connection on port 22 - Syntax: ssh username@hostname (or ip address)
Design patterns in 1 tweet There are 3 main types of design patterns - Behavioural. How do objects interact. Ex: Template - Creational. How to create objects. Ex: Builder, Prototype - Structural. How objects are composed to form larger structures. Ex:Adapter, Proxy
Counting sort is applicable when each input is known to belong to a particular set, S, of possibilities.
"Walking on water and developing software from a specification are easy if both are frozen." - Edward V. Berard
5 Random coding tips Modularize your code Improve your communication skills Learn to learn Collaborate cross-team Learn to delegate
Ethereum is considered “the world computer.” Do you know what that means?
6 Common string interview questions 1. Reverse a string 2. Reverse all words in a string 3. Remove duplicates in a string 4. Print all permutations of a string 5. Check if two strings are anagrams 6. Check if a string is a palindrome Try to solve them (easily googable)
Sources of bugs: - Memory allocation char* ptr; cin >> ptr; - Off-by-one int v[5]; for (i=0; i<=5; i++) f(v[i]); - No base case in recursion int fib(int n) { return fib(n-1) + fib(n-2); } - Not updating index in while loop while(i>2){ f(); }
"It's OK to figure out murder mysteries, but you shouldn't need to figure out code. You should be able to read it." - Steve McConnell
Coding is not about learning programming languages. It is about analyzing a problem, considering different solutions, choosing the best one, and then implementing it in some programming language.
Benefits of Test Driven Development - Confidence to make changes: you've written a nice test suite - Documentation: tests show how to use the code - Force to think about good design: you need to decouple modules in order to unit test them However, it's no panacea
Think twice before you start programming or you will program twice before you start thinking
Things evaluated during a coding interview: - Analytical skills - Coding skills - Communication skills - Experience - Technical knowledge It's not just coding. But it doesn't mean coding skills are not essential.
Don't go blind when you want to optimize your code Profile it first. Execution time follows the 20/80 rule: "Most of the execution time will be spend in a small fraction of your codebase"
Do not reinvent the wheel. Use libraries. But also, do not think that libraries are ideal for everything. Only if they don't meet your needs, think about rewriting them.