New is software enginering? or want to prepare your carier in software enginering?
I hope this advice will help you.
First Advice is Master Your Tool
“Learn to use your tools And I don`t mean just enough to get by. I mean really learn how to use your tools”
Like :
- Know all menu available and functionality
- Remembering shortcut for the most used function
- Using debugger, profiler and version control integration
Just my share, when i first get job in Java (before that i using VS2005), i get job to fix bug in clinic system, my supervisor alocate 4 hours to fix the bug, just a minuete.. i`m new in Java, the program it self is new for me, then in reality, i spend 4 hours just to get the source from repository to my eclipse IDE, then i took 4 hour again to understand the flow of the code and 8 hour to fix the problem.. what an inefisient of time. Another bug, also took longer than i expected, i have to take another hours outside office hour to tackle it.
Then after a couple of days i got another bug-fixing job again, in this case, my supervisor trust me to estimate the time. He said, you have to know why the bug is appear after that you can estimate the time require to fix that bug.
After 2 hour of clicking the IDE, trying to find the bug, my supervisor and project manager came to me, then they ask me, how about the estimate time?… Then my supervisor look the editor screen and click-and cliking, then after 10 minuete he said, 6 hour would be fine..
What i learn here is, Eclipse (Tool) have very great tool for debuging, and i dont know how to use it (like watch, inspect,jump,jump into dll), that why i took more than 2 hour to look after the bug. So really get know your tool, it save you alot of time. Trust me.
Second Advice is Learn the platform APIs
(Dont Reinvent The Wheel)
” Make sure you have a good grasp of all the available functionality in the platform before you write your own code”
For example, you want to reverse something, but there`s no reverse() method in java.util.List . But not so fast –don`t write it yourself. There`s a collections class that contains a lot of utility methods that operate on collections, like List, and it provide a reverse() method.
Just my own share, when i have to enhance clinic system, i have to change the old format to new format of patient Id. The new format contain six digit fixed number (i.e. 000001). I searching in String class, and cannot find the function i need, the i create the function, well, it quite simple, but after my partner review it he say that you dont have to reinvented the wheel, because the function you create already in Java utilities(left()) If i know it before, it would save me for couple of hour.
The first and second advice is from Tor Norbye, he is a principal engineer at Sun Microsystem, where he has worked on development tool since 1996, most recently on Ruby and JavaScript editor in the NetBeans IDE, he has a master’s degree in computer science from stanford university.
Third Advice is Master The Programing Concept
“Don`t overwhelmed by the language or the platform”
if you breaking down, the basic of the language are based on object-oriented programming, threading, concurrency and event-driven programing. it`s necessary to become a master of these concepts since the rest of your careee will depend on this foundation
The third Advice is from Raghavan Srinivas he is Sun Technology Evangelist
Fourth advice is decide your general and special skill
Chunk-munn Lee said that you have to choose what are of your immediate need (special skill), and Scott guu said that you have to know what technology for what problem(general skill).
Both of them said that it`s hard to get deeper knowledge and skill in all the technology in software engginering, but its important to know what technology used in what situation.
Fourth advice is from Chunk-Munn Lee An Java Evangelist and Scott Gu`e an Techinical Leader from Microsoft
Last Advice is CANI (Continues and Never Ending Improvement) Skill
This advice come my favorite motivator, anthony robbins, i think this advice is applicable for all human life including software enginering to