5 things I learned from GameLoft summer internship

So my training course at Gameloft will end soon. To be honest, this makes me busy as hell. I didn’t even have time to research my own subjects that I planned before the summer. But it doesn’t matter anymore when I realize the values that this course gave to me.
I’m just going to take note really important things I’ve never ever had before. “Keep it simple, stupid ” right ?

1. Debugging
Debug is not a new word for me, I know what debug is, but how to use it ? and when ?. I’m feeling really stupid right now when have to say that I couldn’t answer that questions. Before I came to this internship, I only wrote algorithms ( not a whole program that uses algorithm ) and one small game, and I used log to find bugs. I also tried to debug once but it didn’t help much.

The point here is in the small programs, print log is really useful, but debug. And otherwise, in the bigger programs ( like the game I’ve coded in GL ), debug is very strong to help you find danger bugs like leak memory, un-handle exceptions, un-defined behaviors… You can also print log to solve that, but I believe it will cost so many time and your health too.

Debug is clearly one of the aspect I’m missing. After the course, I need to find books, tutorials to learn it more

2. How to learn effectively
I have to admit that this 2 months at GL brought to me the amount of knowledge more than I learn in maybe 5 ~ 6 months at home. How can it be ? I’m thinking of 2 reasons’s below:
+ In GL, I work about 6,5 to 7 hours a day ( the same at home ), but that 7 hours is really work: no Facebook, no music, no online newspaper etc…
+ The 3rd thing I’m gonna write

I mean, I used to read so many advices about hard-work, but never had the chance to know how effectively i will bring. And it all depend on your will.

3. Never expect available source-code(s) on the internet
Thanks to C, although we rarely talked to each other but I still learned many things from you. I noticed the way you read carefully every responses to one question on stack overflow, ( I’ve never did that before ).
I used to fear that if I learn something not fast enough, I won’t have time for the remaining one. That’s why, when I met a new technique, new knowledge… I always search for the source-code first, and after that, based on the source, I’ll find out how to implement that technique. All that thinking and action just make me waste more time, not fully understand, and depend on other people.
The correct way here is: many hard techniques don’t have available source, you have to read the idea, have deep understanding about it. Don’t worry about the time, try hard and you will realize that it wastes less than you think. It’s a good practice for programmers.

4. Every programmer should have their own coding guide line ( coding style )
You not only have to write right code, but also clean code !
Not only for computer to understand, but also for people !
The coding guide line is focus on formatting code, you also have to figure out the way to write code shorter, more understandable.

5. Whenever you have the chance to study ( convenient )  new knowledge, take it and training that new thing instead of re-study old stuffs

Happy coding 🙂

MUST-READ BOOKS PART 1

1. The C++ programming language (4th edition )

2. Jumping into C++

3. Effective modern C++: 42 specific ways to improve your use of C++ 11 and C++ 14

4. Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition)

5. Programming: Principles and Practice Using C++ (2nd edition )

6. Effective STL

7. C++ Primer  ( 5th edition )

8. Accelerated C++: Practical Programming by Example

9. Clean Code

10. Code complete

Important courses 2015- 2016 and sources

August 23-2015:
+ add Android NDK to 37. Mobile/ Android
August 24-2015:
+ add new reference to 6. Computer vision
August 26-2015:
+ add OpenCV to 6. Computer vision
+ add a tutorial 6. Computer vision
September 1, 2015:
+ add 40. Database
September 2, 2015:
+ add Qt to 0. C/C++
September 5, 2015:
+ add a lecture to 24.Machine Learning
+ add a video playlist to 24. Machine Learning
+ add a blog page to 28. Algorithms and Complexity
+ add list problem to 28. Algorithms and Complexity
September 10, 2015:
+ add a video playlist to 39. Network
September 11, 2015:
+ add a blog page to 28. Algorithms and Complexity

0. C/C++
http://www.learncpp.com
http://newcodec.blogspot.com/2015/03/c-cac-project-lien-quan-toi-bluetooth.html
https://drive.google.com/folderview?id=0B0GaRyvEX5Q3WjJnTEkydk10M0k&usp=sharing
http://diendan.congdongcviet.com/threads/t42977::tim-hieu-ban-chat-cua-con-tro-tu-co-ban-den-nang-cao.cpp
* Qt:
http://qmlbook.github.io

1. Introduction to Computer Science
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computer-science-and-programming-fall-2008/

2. Programming Systems

3. Computational Structures
Youtube playlist
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-004-computation-structures-spring-2009/

4. Computer Hardware

5. Introduction to Database Systems

6. Computer Vision
Youtube playlist
http://szeliski.org/Book/
http://www.cs.unc.edu/~lazebnik/spring11/
OpenCV
http://www.pages.drexel.edu/~nk752/tutorials.html

7. Web Application Development

8. Wireless Networks

9. Logical Structures

10. Software Engineering Capstone

11. Mobile Device Application Development

12. Introduction to Operating Systems
Youtube playlist

13. Languages and Compiler Design
https://class.coursera.org/compilers-004/lecture

14. Introduction Software Engineering

15. Discrete Structures

16. Computer Systems Programming

17. Group Theory

18. Software Analysis and Design

19. Computer Graphics
OpenGL 2.0 es
http://ogldev.atspace.co.uk

20. Internetworking Protocols

21. Data Structures

22. Technical Writing

23. Introduction to Optimization

24. Machine Learning
https://www.coursera.org/learn/machine-learning/home/week/1
http://work.caltech.edu/telecourse.html

25. Computer System Programing

26. Introduction to Programming and Problem-solving

27. Computer Security

28. Algorithms and Complexity
vn.spoj.com
codeforces.com
https://sites.google.com/site/kc97ble/
https://docs.google.com/spreadsheets/d/1M5qlrNuPP7gEb5MbeSwOgGFa0RSxWaVjNfUiIdUV6Bw/edit#gid=0
https://onlylove97.wordpress.com

29. Software Testing

30. Number Theory

31. Technology – based Innovation

32. Optimization Methods

33. Data Modeling and Integration

34. Introduction to Information Retrieval

35. Human-Computer Interaction
https://www.coursera.org/course/hciucsd

36. Mining on Big Data

37. Mobile/ Android
https://duythanhcse.wordpress.com/
Android NDK

38. Artificial intelligence

39. Network
http://www.linuxhowtos.org/C_C++/socket.htm
http://johnnie.jerrata.com/winsocktutorial/
http://www.madwizard.org/programming/tutorials/netcpp/
http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html

40. Database
http://www.w3schools.com/sql/default.asp