Ph.D. or Professional Programmer? | Henrik Warne's blog



Ph.D. or Professional Programmer? | Henrik Warne's blog

Narrow problems vs. broad problems. A researcher typically studies a very narrow problem. For example: what is the optimal congestion control strategy given a certain arrival distribution and goodness criteria? While these are important to study and understand, I am more interested in the broad problem of "what makes software successful". In the telephone switch example, it must perform acceptably well in many dimensions in order to be successful. It must have enough capacity, it must not crash, it must be easily configurable, it must be easy to trouble shoot etc. Congestion control is one part of many, but a rudimentary solution is probably good enough.

I realized that I enjoy the challenge of working on large software system that must work acceptably in every dimension, rather than studying a very narrow problem in detail.

Thrill of having users. I only discovered the importance of having users once I started the Ph.D. program. Doing research on a problem of my own choosing, without anybody eagerly awaiting the result really paled compared to the excitement of working on a system with lots of users. The features I added and bugs I fixed had an immediate impact on lots of people, and I really missed that feeling.

Value of options. Since I had worked in industry before starting the Ph.D. program, I knew what the alternative was. My sense is that most people who do a Ph.D. do it immediately after getting their M.Sc. This means they don't know what it is like working in the non-academic world. In most cases that probably doesn't matter, but sometimes it is important to know what you are missing.

Conclusion


Read full article from Ph.D. or Professional Programmer? | Henrik Warne's blog


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts